#!/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 20:21 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p tcp --dport 5000:5050 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Accès FTP actif $IPTABLES -A SERVICES -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT # Accès SSH ( tcp 22 ) $IPTABLES -A SERVICES -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT # Accès telnet ( tcp 23 | local network ) #$IPTABLES -A SERVICES -p tcp --dport 23 -s 192.168.1.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT #$IPTABLES -A SERVICES -p tcp --dport 23 -s 192.168.2.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT # Serveur web ( tcp 80 ) $IPTABLES -A SERVICES -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # Accès CUPS ( tcp/udp 631 | local network ) $IPTABLES -A SERVICES -p tcp --dport 631 -s 192.168.0.0/16 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p udp --dport 631 -s 192.168.0.0/16 -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 MySQL (tcp 3306) $IPTABLES -A SERVICES -p tcp --dport 3306 -s 192.168.0.0/16 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p udp --dport 3306 -s 192.168.0.0/16 -m state --state NEW,ESTABLISHED -j ACCEPT # Accès VNC ( tc p5800 et 5900 ) #$IPTABLES -A SERVICES -p tcp --dport 5800 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A SERVICES -p tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT # Acces MPD (tcp 6600 ) $IPTABLES -A SERVICES -p tcp --dport 6600 -s 192.168.0.0/16 -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 # Échang 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 #################################################### # Masquage de l'adresse IP # #################################################### #################################################### # 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 $IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT #################################################### # Connexion Sortantes autorisées # #################################################### # On laisse rentrer toute les connections établie $IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED -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 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