[firewall6] Lisibilité

Ignore-this: f731deeafe8c377076893bfd108ebf75

darcs-hash:20110507164030-ffbb2-31cc00e9b596456a5f0be7d15b466ff2b4973c91.gz
This commit is contained in:
Nicolas Dandrimont 2011-05-07 18:40:30 +02:00
parent 7b206af71c
commit 3cb768bfaf

View file

@ -33,7 +33,7 @@ from ipt import *
ip6tables = Ip6tables() ip6tables = Ip6tables()
def aide(): def aide():
''' Affiche l'aide pour utiliser le script''' """ Affiche l'aide pour utiliser le script"""
print """ print """
Usage: Usage:
%(script)s start : Démarrage du firewall %(script)s start : Démarrage du firewall
@ -63,14 +63,12 @@ def ports(dev_ip6, dev_crans):
# ip6tables.filter.forward('-i %s -p tcp --dport ssh -m state --state NEW \ # ip6tables.filter.forward('-i %s -p tcp --dport ssh -m state --state NEW \
#-j ACCEPT' % dev_ip6) #-j ACCEPT' % dev_ip6)
for proto in open_ports.keys(): for proto in open_ports.keys():
ip6tables.filter.forward('-i %s -p %s -m multiport --dports %s -j \ ip6tables.filter.forward('-i %s -p %s -m multiport --dports %s -j ACCEPT' % (dev_ip6, proto, open_ports[proto]))
ACCEPT' % (dev_ip6, proto, open_ports[proto]))
for type_machine in ['fil', 'fil-v6', 'wifi', 'wifi-v6']: for type_machine in ['fil', 'fil-v6', 'wifi', 'wifi-v6']:
ip6tables.filter.forward('-i %s -d %s -j %s' % (dev_ip6, ip6tables.filter.forward('-i %s -d %s -j %s' % (dev_ip6,
prefix[dprefix[type_machine]][0], 'EXT' + re.sub('-', '', prefix[dprefix[type_machine]][0], 'EXT' + re.sub('-', '',
type_machine.upper()))) type_machine.upper())))
eval('ip6tables.filter.ext' + re.sub('-', '', type_machine))('-j \ eval('ip6tables.filter.ext' + re.sub('-', '', type_machine))('-j REJECT --reject-with icmp6-port-unreachable')
REJECT --reject-with icmp6-port-unreachable')
# Port ouvert CRANS->EXT # Port ouvert CRANS->EXT
ip6tables.filter.forward('-i %s -p udp -m multiport --dports 0:136,140:65535 -j ACCEPT' % dev_crans) ip6tables.filter.forward('-i %s -p udp -m multiport --dports 0:136,140:65535 -j ACCEPT' % dev_crans)
@ -81,8 +79,7 @@ REJECT --reject-with icmp6-port-unreachable')
ip6tables.filter.forward('-i %s -s %s -j %s' % (dev_crans, ip6tables.filter.forward('-i %s -s %s -j %s' % (dev_crans,
prefix[dprefix[type_machine]][0], 'CRANS' + re.sub('-', '', prefix[dprefix[type_machine]][0], 'CRANS' + re.sub('-', '',
type_machine.upper()))) type_machine.upper())))
eval('ip6tables.filter.crans' + re.sub('-', '', type_machine))('-j \ eval('ip6tables.filter.crans' + re.sub('-', '', type_machine))('-j REJECT --reject-with icmp6-port-unreachable')
REJECT --reject-with icmp6-port-unreachable')
@ -90,8 +87,7 @@ REJECT --reject-with icmp6-port-unreachable')
def basic_fw(): def basic_fw():
''' Met en place un firewall de base commun à tous les serveurs''' ''' Met en place un firewall de base commun à tous les serveurs'''
# On rejete les ra. # On rejete les ra.
ip6tables.filter.input('-p icmpv6 -m icmp6 --icmpv6-type \ ip6tables.filter.input('-p icmpv6 -m icmp6 --icmpv6-type router-advertisement -j DROP')
router-advertisement -j DROP')
# On ne vérifie rien sur les ip qui ne sont pas dans notre prefix # On ne vérifie rien sur les ip qui ne sont pas dans notre prefix
ip6tables.filter.ieui64('! -s %s -j RETURN' % prefix['subnet'][0]) ip6tables.filter.ieui64('! -s %s -j RETURN' % prefix['subnet'][0])
@ -137,8 +133,7 @@ def main_router():
ip6tables.filter.forward('-o %s -j BLACKLIST_SRC' % dev_ip6) ip6tables.filter.forward('-o %s -j BLACKLIST_SRC' % dev_ip6)
ip6tables.filter.forward('-i %s -j BLACKLIST_DST' % dev_ip6) ip6tables.filter.forward('-i %s -j BLACKLIST_DST' % dev_ip6)
ip6tables.filter.forward('-m conntrack --ctstate RELATED,ESTABLISHED -j \ ip6tables.filter.forward('-m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT')
ACCEPT')
# On filtre les réseaux non routable et aussi on accepte en entrée # On filtre les réseaux non routable et aussi on accepte en entrée
# que les paquets dont la source n'est pas notre plage, pour éviter # que les paquets dont la source n'est pas notre plage, pour éviter
@ -159,13 +154,11 @@ ACCEPT')
# Rien ne passe vers adm # Rien ne passe vers adm
# est ce que du local est gêné par le règle ? # est ce que du local est gêné par le règle ?
ip6tables.filter.forward('-d %s -j REJECT --reject-with \ ip6tables.filter.forward('-d %s -j REJECT --reject-with icmp6-addr-unreachable' % (prefix['adm'][0]))
icmp6-addr-unreachable' % (prefix['adm'][0]))
# on accepte les ping # on accepte les ping
for icmpv6 in authorized_icmpv6: for icmpv6 in authorized_icmpv6:
ip6tables.filter.forward('-p icmpv6 -m icmp6 --icmpv6-type %s -j \ ip6tables.filter.forward('-p icmpv6 -m icmp6 --icmpv6-type %s -j ACCEPT' % icmpv6)
ACCEPT' % icmpv6)
ip6tables.filter.forward('-p icmpv6 -j DROP') ip6tables.filter.forward('-p icmpv6 -j DROP')
# cf https://www.sixxs.net/faq/connectivity/?faq=filters # cf https://www.sixxs.net/faq/connectivity/?faq=filters
@ -188,8 +181,7 @@ def wifi_router():
dev_wifi = iface6('wifi') dev_wifi = iface6('wifi')
# Stop aux RA # Stop aux RA
ip6tables.filter.forward('-p icmpv6 -m icmp6 --icmpv6-type \ ip6tables.filter.forward('-p icmpv6 -m icmp6 --icmpv6-type router-advertisement -j DROP')
router-advertisement -j DROP')
# Un peu moche, mais il faut supprimer les dernière règles dans IEUI64 # Un peu moche, mais il faut supprimer les dernière règles dans IEUI64
# avant de rajouter la règle pour les machines wifi. # avant de rajouter la règle pour les machines wifi.
@ -206,8 +198,7 @@ router-advertisement -j DROP')
% prefix[type_m][0]) % prefix[type_m][0])
ip6tables.filter.feui64('-j DROP') ip6tables.filter.feui64('-j DROP')
ip6tables.filter.forward('-m conntrack --ctstate RELATED,ESTABLISHED -j \ ip6tables.filter.forward('-m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT')
ACCEPT')
ip6tables.filter.forward('-j MAC') ip6tables.filter.forward('-j MAC')
ip6tables.filter.forward('-j FEUI64') ip6tables.filter.forward('-j FEUI64')
@ -224,8 +215,7 @@ def adherents_server():
dev_adm = iface6('adm') dev_adm = iface6('adm')
# On fait attention à ce qui sort # On fait attention à ce qui sort
ip6tables.filter.output('-i lo -j ACCEPT') ip6tables.filter.output('-i lo -j ACCEPT')
ip6tables.filter.output('-m conntrack --ctstate RELATED,ESTABLISHED -j \ ip6tables.filter.output('-m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT')
ACCEPT')
ip6tables.filter.output('-i %s -j SRV_OUT_ADM', dev_adm) ip6tables.filter.output('-i %s -j SRV_OUT_ADM', dev_adm)
# Chaîne SRV_OUT_ADM # Chaîne SRV_OUT_ADM