#Gnu/Linux
Script Firewall iptables
27 juillet 2011 Rédigé par bartounet
Je met en ligne un petit script me permettant de mettre en place un firewall sur mes serveur linux histoire que je le perde pas...
#!/bin/bash # #Antony MARTINEAU 2007 #Firewall script "BAD PACKETS STOP HERE" ipmaboite=$(ping -c1 maboite.dnsalias.net | grep time | sed -n 1p | cut -d"(" -f2 | cut -d")" -f1) echo "ip de maboite $ipmaboite" firewall_start() { # Nous vidons les chaînes : iptables -F # Nous supprimons d'éventuelles chaînes personnelles : iptables -X # Nous les faisons pointer par défaut sur DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Nous faisons de même avec toutes les autres tables, # à savoir "nat" et "mangle", mais en les faisant pointer # par défaut sur ACCEPT. Ca ne pose pas de problèmes # puisque tout est bloqué au niveau "filter" iptables -t nat -F iptables -t nat -X iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -F iptables -t mangle -X iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P POSTROUTING ACCEPT ##AUTORISATION DES SERVICES FONDAMENTAUX # Autoriser TOUT pour ma Freebox differents client SSH #Attention apres differents test il faut toujours indiquer le protocole quand on specifie un port de destination iptables -A INPUT -s 82.122.232.222 -j ACCEPT iptables -A INPUT -s $ipmaboite -j ACCEPT iptables -A INPUT -p tcp -s $ipmaboite --dport 3128 -j ACCEPT iptables -A INPUT -p tcp -s $ipmaboite --dport 22 -j ACCEPT #iptables -A INPUT -p tcp -s 200.200.200.200 --dport 22 -j ACCEPT # Autoriser SSH #iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT #echo - Autoriser SSH : [OK] # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT echo - Ne pas casser les connexions établies : [OK] ################ Priorisation de la bande passante et des connections ###################### echo "[priorisation des connections ssh ...]"; iptables -A PREROUTING -t mangle -p tcp --sport 443 -j TOS --set-tos Minimize-Delay echo "[priorisation des connections http ...]"; iptables -A PREROUTING -t mangle -p tcp --sport http -j TOS --set-tos Maximize-throughput ###### Fin Inialisation ###### ##### Debut Regles ###### # Autoriser les requetes DNS, FTP, HTTP, NTP iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK] # Autoriser le serveur DNS # Les 4 règles suivantes acceptent le rôle de serveur DNS iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -p udp --sport 53 -j ACCEPT iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT # Les 4 règles suivantes acceptent notre rôle de client DNS # Autorisation de la sortie de la requète iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT # Autorisation du retour de la réponse iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A INPUT -p tcp --sport 53 -j ACCEPT echo - Autoriser serveur DNS : [OK] # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo - Autoriser loopback : [OK] # Autoriser ping #iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -A INPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Limite de 10 pings par seconde iptables -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT echo - Autoriser ping : [OK] # HTTP iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport https -j ACCEPT iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --sport https -j ACCEPT echo - Autoriser serveur Apache : [OK] # FTP #modprobe ip_conntrack_ftp iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT echo - Autoriser serveur FTP : [OK] #Serveur Teamspeak iptables -t filter -A INPUT -p udp --dport 8767 -j ACCEPT echo - Autoriser serveur TS : [OK] #Mail iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT echo - Autoriser serveur Mail : [OK] #Log iptables (je log tout sauf les paquets de broadcast) iptables -t filter -A INPUT -j ULOG -d ! 91.121.31.255 --ulog-prefix="[IPTABLES BLOCKED]" } firewall_stop() { iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -F iptables -t nat -X iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -F iptables -t mangle -X iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P OUTPUT ACCEPT echo " [firewall desactive]" } firewall_restart() { firewall_stop sleep 2 firewall_start } case "$1" in 'start') firewall_start ;; 'stop') firewall_stop ;; 'restart') firewall_restart ;; 'status') iptables -L iptables -t nat -L iptables -t mangle -L ;; *) echo "Usage: firewall {start|stop|restart|status}" esac
Information sur bartounet auteur de l'article
Les commentaires sont fermés.