Script Firewall IPv6 pour un serveur
Voici un petit script pour configurer un Firewall IPv6 sur un serveur :
#!/bin/bash #-----------------------------------------------------------------------# # # # Description : Firewal avec ip6tables # # OS : Linux # # Requires : ip6tables - ip_conntrack* - modprobe # # Licence : GPL # # Author : Benoît Pourre <benoitpourre AT rt74.eu> # # Web site : http://www.rt74.eu/ # # # #-----------------------------------------------------------------------# # Variables export IF_RESEAU="eth0" start_fw() { # On efface toutes les regles existantes /sbin/ip6tables -F # On supprime d'eventuelles regles personnelles /sbin/ip6tables -X # Mise en place des regles par defaut (on refuse tout par default) /sbin/ip6tables -P INPUT DROP /sbin/ip6tables -P FORWARD DROP /sbin/ip6tables -P OUTPUT DROP # On accepte les connexions sur la boucle locale (sur lo == 127.0.0.1) /sbin/ip6tables -A INPUT -i lo -j ACCEPT /sbin/ip6tables -A OUTPUT -o lo -j ACCEPT # On accepte la sortie de certain protocoles (commenter les lignes selon le besoin) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p UDP --dport domain -j ACCEPT # Port 53 (Windows udp) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport domain -j ACCEPT # Port 53 (Windows tcp) #/sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport netbios-ssn -j ACCEPT # Port 139 (smb or windows share) #/sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport microsoft-ds -j ACCEPT # Port 445 (smb or windows share) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport http -j ACCEPT # Port 80 (Http) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport https -j ACCEPT # Port 443 (Https) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport imap -j ACCEPT # Port 143 (Imap) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport imaps -j ACCEPT # Port 993 (Imaps) #/sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport smtps -j ACCEPT # Port 465 (Smtps) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport ssh -j ACCEPT # Port 22 (Ssh) #/sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport ldap -j ACCEPT # Port 389 (ldap) #/sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport ldaps -j ACCEPT # Port 636 (ldaps) /sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport 5222 -j ACCEPT # Port 5222 (Jabber) #/sbin/ip6tables -A INPUT -i $IF_RESEAU -p TCP --dport 6881:6889 -j ACCEPT # Port 6881 a 6889 (Bittorrent) # On autorise les connexions deja etablies ou relatives a une autre connexion a sortir /sbin/ip6tables -A OUTPUT -o $IF_RESEAU --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT # On autorise les connexions deja etablies a entrer /sbin/ip6tables -A INPUT -i $IF_RESEAU --match state --state ESTABLISHED,RELATED -j ACCEPT # On autorise le PC a faire des ping sur des IP exterieur /sbin/ip6tables -A OUTPUT -p icmpv6 -j ACCEPT # On interdit les PC a l'exterieur de faire des ping /sbin/ip6tables -A INPUT -p icmpv6 -j ACCEPT # Ecriture de la politique de log # Ici on affiche [ip6tables DROP] dans /var/log/message a chaque paquet rejette par ip6tables /sbin/ip6tables -N LOG_DROP /sbin/ip6tables -A LOG_DROP -j LOG --log-level 1 --log-prefix '[ip6tables DROP]:' /sbin/ip6tables -A LOG_DROP -j DROP # On met en place les logs en entree, sortie et routage selon la politique LOG_DROP ecrit avant /sbin/ip6tables -A FORWARD -j LOG_DROP /sbin/ip6tables -A INPUT -j LOG_DROP /sbin/ip6tables -A OUTPUT -j LOG_DROP # Chargement du module de gestion des connexion state (autorisation des connexions deja etablies a passer le firewall) /sbin/modprobe ip_conntrack # Chargement du module special pour palier au probleme de connexion FTP passive /sbin/modprobe ip_conntrack_ftp } stop_fw() { # Vidage des règles pour toutes les tables : ip6tables -F # permet l'effacement de toutes les chaînes qui ne sont pas par défaut dans la # table filter notamment LOG_ACCEPT ip6tables -X # On remet la politique par défaut à ACCEPT dans les trois tables par défaut ip6tables -P INPUT ACCEPT ip6tables -P OUTPUT ACCEPT ip6tables -P FORWARD ACCEPT } case "$1" in start) start_fw echo "firewall started" ;; stop) stop_fw echo "firewall stopped" ;; restart) stop_fw echo "firewall stopped" start_fw echo "firewall restarted" ;; *) echo "usage: $0 [start|stop|restart]" >&2 exit 1 esac exit 0
Vous pouvez le télécharger Script firewall IPv6 ip6tables ici.
Il faut ensuite le placer dans /etc/init.d. Pour qu'il soit exécuté au démarrage :
sudo update-rc.d script-ip6tables start 99 2 . stop 00 2 0 1 6 .