Un petit firewall cool
- "Je veux un firewall, mais chais pas comment faire??"
- "Easy, iptables est là pour toi"
Certains vont de suite commenter et dire "iptables pue, c'est pas lisible".
je répondrai "retournez faire du ruby" :P
Pour revenir à nos moutons, voici en 2-3 lignes de quoi vous faire un firewall efficace et cool avec iptables :
Et Voilà! un petit firewall monté en deux minutes. J'ai mis deux règles pour filtrer les scans, au cas où un petit malin voudrait monter les temps entre les requêtes. Mais en l'occurence, la majorité s'écrasent déjà au niveau de SCAN1...
Simple, efficace...
Enjoy :->
- "Easy, iptables est là pour toi"
Certains vont de suite commenter et dire "iptables pue, c'est pas lisible".
je répondrai "retournez faire du ruby" :P
Pour revenir à nos moutons, voici en 2-3 lignes de quoi vous faire un firewall efficace et cool avec iptables :
#!/bin/bash ipt=$(which iptables) #### on commence par cleaner complètement les règles existantes $ipt -F $ipt -X $ipt -P INPUT ACCEPT $ipt -P OUTPUT ACCEPT #### On laisse les connexions établies $ipt -A INPUT -m state --state established,related -j ACCEPT #### On va être cool et mettre 2-3 trucs en whitelist $ipt -N SCAN_WHITELIST $ipt -A SCAN_WHITELIST -m iprange --src-range xx.xx.xx.xx-yy.yy.yy.yy -j ACCEPT $ipt -A SCAN_WHITELIST -s zz.zz.zz.zz -j ACCEPT #### Filtre des packets : on veut du propre uniquement $ipt -N badPacks ## on fait passer dans la whitelist... $ipt -A badPacks -j SCAN_WHITELIST $ipt -A badPacks -p tcp -m state --state NEW -m tcp ! --tcp-flags \ SYN,RST,ACK SYN -j REJECT --reject-with tcp-reset $ipt -A badPacks -m state --state invalid -j REJECT $ipt -A badPacks -j RETURN #### De quoi ralentir les scan #### (radical contre la majorité des scriptkiddies) $ipt -N scanning ## on fait passer dans la whitelist... $ipt -A scanning -j SCAN_WHITELIST $ipt -A scanning -i eth0 -m state --state NEW -m recent --set --name SCAN1 $ipt -A scanning -i eth0 -m state --state NEW -m recent --update \ --seconds 90 --hitcount 10 --rttl --name SCAN1 -j REJECT $ipt -A scanning -i eth0 -m state --state NEW -m recent --set --name SCAN2 $ipt -A scanning -i eth0 -m state --state NEW -m recent --update \ --seconds 180 --hitcount 10 --rttl --name SCAN2 -j REJECT $ipt -A scanning -j RETURN #### Et on applique $ipt -A INPUT -j scanning $ipt -A INPUT -j badPacks #### Tout ce qui vient de localhost : Ok $ipt -A INPUT -i lo -j ACCEPT $ipt -A OUTPUT -o lo -j ACCEPT $ipt -A INPUT -i 127.0.0.1 -j ACCEPT $ipt -A OUTPUT -o 127.0.0.1 -j ACCEPT #### On ouvre quelques ports $ipt -A INPUT -p tcp --dport 22 -j ACCEPT $ipt -A INPUT -p tcp --dport 53 -j ACCEPT $ipt -A INPUT -p tcp --dport 80 -j ACCEPT
Et Voilà! un petit firewall monté en deux minutes. J'ai mis deux règles pour filtrer les scans, au cas où un petit malin voudrait monter les temps entre les requêtes. Mais en l'occurence, la majorité s'écrasent déjà au niveau de SCAN1...
Simple, efficace...
Enjoy :->