Skip to content

Commit 237e0e4

Browse files
Merge pull request #765 from schubergphilis/fix/default_policies
CLOUDSTACK-8688 - default policies for INPUT and FORWARD should be set to DROP instead of ACCEPT - In order to be able to access the routers via the link local interface, we have to add a rules with NEW and ESTABLISHED state * pr/765: CLOUDSTACK-8688 - Adding Marvin tests in order to cover the fixes applied CLOUDSTACK-8688 - default policies for INPUT and FORWARD should be set to DROP instead of ACCEPT Signed-off-by: wilderrodrigues <wrodrigues@schubergphilis.com>
2 parents 3079253 + 1742b10 commit 237e0e4

6 files changed

Lines changed: 722 additions & 40 deletions

File tree

systemvm/patches/debian/config/etc/iptables/iptables-router

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ COMMIT
3636
-A INPUT -i eth0 -p udp -m udp --dport 67 -j ACCEPT
3737
-A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT
3838
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
39-
-A INPUT -i eth1 -p tcp -m tcp -m state --state NEW --dport 3922 -j ACCEPT
39+
-A INPUT -i eth1 -p tcp -m tcp -m state --state NEW,ESTABLISHED --dport 3922 -j ACCEPT
4040
-A INPUT -i eth0 -p tcp -m tcp -m state --state NEW --dport 80 -j ACCEPT
4141
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
4242
-A FORWARD -i eth2 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

systemvm/patches/debian/config/etc/iptables/iptables-vpcrouter

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ COMMIT
2828
-A INPUT -d 225.0.0.50/32 -j ACCEPT
2929
-A INPUT -p icmp -j ACCEPT
3030
-A INPUT -i lo -j ACCEPT
31-
-A INPUT -i eth0 -p tcp -m tcp -m state --state NEW --dport 3922 -j ACCEPT
31+
-A INPUT -i eth0 -p tcp -m tcp -m state --state NEW,ESTABLISHED --dport 3922 -j ACCEPT
3232
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
3333
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
3434
COMMIT

systemvm/patches/debian/config/opt/cloud/bin/configure.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ def forward_vr(self, rule):
585585
rule['protocol'],
586586
self.portsToString(rule['public_ports'], ':'),
587587
)
588-
fw7 = "-A FORWARD -i %s -o %s -p %s -m %s --dport %s -m state --state NEW -j ACCEPT" % \
588+
fw7 = "-A FORWARD -i %s -o %s -p %s -m %s --dport %s -m state --state NEW,ESTABLISHED -j ACCEPT" % \
589589
(
590590
self.getDeviceByIp(rule['public_ip']),
591591
self.getDeviceByIp(rule['internal_ip']),
@@ -599,7 +599,7 @@ def forward_vr(self, rule):
599599
self.fw.append(["nat", "", fw4])
600600
self.fw.append(["nat", "", fw5])
601601
self.fw.append(["nat", "", fw6])
602-
self.fw.append(["", "", fw7])
602+
self.fw.append(["filter", "", fw7])
603603

604604
def forward_vpc(self, rule):
605605
fw_prerout_rule = "-A PREROUTING -d %s/32 -i %s" % (rule["public_ip"], self.getDeviceByIp(rule['public_ip']))

systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,10 @@ def post_configure(self):
299299
CsRpsrfs(self.dev).enable()
300300
self.post_config_change("add")
301301

302+
'''For isolated/redundant and dhcpsrvr routers, call this method after the post_config is complete '''
303+
if not self.config.is_vpc():
304+
self.setup_router_control()
305+
302306
def check_is_up(self):
303307
""" Ensure device is up """
304308
cmd = "ip link show %s | grep 'state DOWN'" % self.getDevice()
@@ -336,6 +340,19 @@ def get_ip_address(self):
336340
return self.address['public_ip']
337341
return "unknown"
338342

343+
def setup_router_control(self):
344+
if self.config.is_vpc():
345+
return
346+
347+
self.fw.append(
348+
["filter", "", "-A FW_OUTBOUND -m state --state RELATED,ESTABLISHED -j ACCEPT"])
349+
self.fw.append(
350+
["filter", "", "-A INPUT -i eth1 -p tcp -m tcp --dport 3922 -m state --state NEW,ESTABLISHED -j ACCEPT"])
351+
352+
self.fw.append(["filter", "", "-P INPUT DROP"])
353+
self.fw.append(["filter", "", "-P FORWARD DROP"])
354+
355+
339356
def fw_router(self):
340357
if self.config.is_vpc():
341358
return
@@ -402,19 +419,14 @@ def fw_router(self):
402419
"-A PREROUTING -i %s -m state --state NEW " % self.dev +
403420
"-j CONNMARK --set-xmark %s/0xffffffff" % self.dnum])
404421

405-
if self.get_type() in ["control"]:
406-
self.fw.append(
407-
["filter", "", "-A FW_OUTBOUND -m state --state RELATED,ESTABLISHED -j ACCEPT"])
408-
self.fw.append(
409-
["filter", "", "-A INPUT -i %s -p tcp -m tcp --dport 3922 -m state --state NEW -j ACCEPT" % self.dev])
410422
self.fw.append(['', 'front', '-A FORWARD -j NETWORK_STATS'])
411423
self.fw.append(['', 'front', '-A INPUT -j NETWORK_STATS'])
412424
self.fw.append(['', 'front', '-A OUTPUT -j NETWORK_STATS'])
413425
self.fw.append(['', '', '-A NETWORK_STATS -i eth0 -o eth2'])
414426
self.fw.append(['', '', '-A NETWORK_STATS -i eth2 -o eth0'])
415427
self.fw.append(['', '', '-A NETWORK_STATS -o eth2 ! -i eth0 -p tcp'])
416428
self.fw.append(['', '', '-A NETWORK_STATS -i eth2 ! -o eth0 -p tcp'])
417-
429+
418430
def fw_vpcrouter(self):
419431
if not self.config.is_vpc():
420432
return
@@ -480,6 +492,11 @@ def fw_vpcrouter(self):
480492
self.fw.append(["", "", "-A NETWORK_STATS -i eth2 -o eth0 -p tcp"])
481493
self.fw.append(["", "", "-A NETWORK_STATS ! -i eth0 -o eth2 -p tcp"])
482494
self.fw.append(["", "", "-A NETWORK_STATS -i eth2 ! -o eth0 -p tcp"])
495+
496+
self.fw.append(["filter", "", "-A INPUT -i eth0 -p tcp -m tcp --dport 3922 -m state --state NEW,ESTABLISHED -j ACCEPT"])
497+
498+
self.fw.append(["filter", "", "-P INPUT DROP"])
499+
self.fw.append(["filter", "", "-P FORWARD DROP"])
483500

484501
def post_config_change(self, method):
485502
route = CsRoute()
@@ -491,6 +508,7 @@ def post_config_change(self, method):
491508

492509
self.fw_router()
493510
self.fw_vpcrouter()
511+
494512
# On deletion nw_type will no longer be known
495513
if self.get_type() in ["guest"] and self.config.is_vpc():
496514

0 commit comments

Comments
 (0)