|
new file 100644
|
|
|
# Django imports.
|
|
|
from django.test import TestCase
|
|
|
|
|
|
# Application imports.
|
|
|
from conntrackt.models import Entity
|
|
|
from conntrackt import utils
|
|
|
|
|
|
|
|
|
class GenerateEntityIptablesTest(TestCase):
|
|
|
|
|
|
fixtures = ['test-data.json']
|
|
|
|
|
|
def test_generated_iptables(self):
|
|
|
"""
|
|
|
Tests if the entity's iptables are generated properly or not.
|
|
|
"""
|
|
|
|
|
|
entity = Entity.objects.get(pk=1)
|
|
|
generated = utils.generate_entity_iptables(entity)
|
|
|
|
|
|
expected = """*filter
|
|
|
:INPUT DROP [0:0]
|
|
|
# Accept all incoming related traffic.
|
|
|
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
|
|
|
|
# Accept all incoming traffic on loopback interface.
|
|
|
-A INPUT -i lo -j ACCEPT
|
|
|
|
|
|
# MySQL.
|
|
|
-A INPUT -s 192.168.1.3/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 3306 -j ACCEPT
|
|
|
|
|
|
# Ping.
|
|
|
-A INPUT -s 192.168.1.2/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p icmp -m icmp --icmp-type 8 -j ACCEPT
|
|
|
|
|
|
# SSH.
|
|
|
-A INPUT -s 192.168.1.2/255.255.255.255 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 22 -j ACCEPT
|
|
|
-A INPUT -s 192.168.2.0/255.255.255.0 -d 192.168.1.1/255.255.255.255 -p tcp -m tcp --dport 22 -j ACCEPT
|
|
|
|
|
|
:OUTPUT ACCEPT [0:0]
|
|
|
:FORWARD DROP [0:0]
|
|
|
COMMIT
|
|
|
*nat
|
|
|
:PREROUTING ACCEPT [0:0]
|
|
|
:INPUT ACCEPT [0:0]
|
|
|
:OUTPUT ACCEPT [0:0]
|
|
|
:POSTROUTING ACCEPT [0:0]
|
|
|
COMMIT
|
|
|
"""
|
|
|
self.assertEqual(generated, expected)
|
|
|
|