#!/bin/sh # Chemin vers iptables IPTABLES=/usr/sbin/iptables MODPROBE=/sbin/modprobe # Loading modules $MODPROBE ip_conntrack_ftp #$MODPROBE ip_conntrack_irc #################################################### # On vide la table # #################################################### $IPTABLES -F #################################################### # Log des paquets rejettés # #################################################### $IPTABLES -N LOG_DROP $IPTABLES -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ' $IPTABLES -A LOG_DROP -j DROP #################################################### # Log des paquets acceptés # #################################################### $IPTABLES -N LOG_ACCEPT $IPTABLES -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : ' $IPTABLES -A LOG_ACCEPT -j ACCEPT #################################################### # Log des paquets rejetés par protection # #################################################### $IPTABLES -N LOG_PROTECT $IPTABLES -A LOG_PROTECT -j LOG --log-prefix '[IPTABLES PROTECT] : ' $IPTABLES -A LOG_PROTECT -j DROP #################################################### # Quelques protections de base # #################################################### $IPTABLES -N PROTECT # Syn flood $IPTABLES -A PROTECT -p tcp ! --syn -m state --state NEW,INVALID -j LOG_PROTECT # Spoofing $IPTABLES -A PROTECT -s 127.0.0.0/8 -j LOG_PROTECT $IPTABLES -A PROTECT -s 10.0.0.0/8 -j LOG_PROTECT $IPTABLES -A PROTECT -s 169.254.0.0/12 -j LOG_PROTECT $IPTABLES -A PROTECT -s 172.16.0.0/12 -j LOG_PROTECT #################################################### # Autoriser la connexion sur les services hébergés # #################################################### $IPTABLES -N SERVICES # Acces FTP $IPTABLES -A SERVICES -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p tcp --dport 60000:60050 -m state --state RELATED,ESTABLISHED -j ACCEPT # Serveur web ( tcp 80 ) $IPTABLES -A SERVICES -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # Accès CVS ( tcp 2401 ) $IPTABLES -A SERVICES -p tcp --dport 2401 -m state --state NEW,ESTABLISHED -j ACCEPT # Accès BitTorrent (tcp/udp 6881/6885) $IPTABLES -A SERVICES -p tcp --dport 6881:6885 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p udp --dport 6881:6885 -m state --state NEW,ESTABLISHED -j ACCEPT # Échange direct de fichier jabber (tcp 6886) $IPTABLES -A SERVICES -p tcp --dport 6886 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p udp --dport 6886 -m state --state NEW,ESTABLISHED -j ACCEPT #################################################### # Autorisation pour certaines IP # #################################################### $IPTABLES -N SAFE_IPS $IPTABLES -A SAFE_IPS -s xxx.xxx.xxx.xxx -j ACCEPT $IPTABLES -A SAFE_IPS -s xxx.xxx.xxx.xxx -j ACCEPT $IPTABLES -A SAFE_IPS -s xxx.xxx.xxx.xxx -j ACCEPT #################################################### # politique par défaut: On rejette tout # # qui entre, on accepte tout ce qui sort # #################################################### $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD DROP #################################################### # On laisse tout passer sur le looppback # #################################################### $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT #################################################### # On laisse passer les ping # #################################################### $IPTABLES -A INPUT -p icmp -j ACCEPT #################################################### # Résolution DNS # #################################################### # Résolution DNS ( udp 53 ) $IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT #################################################### # Connexion Sortantes autorisées # #################################################### # On laisse rentrer toute les connections établie $IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT #################################################### # Mise en ouvre du firewall # #################################################### $IPTABLES -A INPUT -j PROTECT $IPTABLES -A INPUT -j SAFE_IPS $IPTABLES -A INPUT -j SERVICES #################################################### # Puit pour les paquets non traités # #################################################### $IPTABLES -A INPUT -j LOG_DROP # $IPTABLES -A OUTPUT -j LOG_ACCEPT $IPTABLES -A FORWARD -j LOG_DROP