[Mémo] Filtrage de base iptables
Dans ce petit mémo, nous allons voir comment offrir une protection de base à vos serveurs dédiés grâce à iptables.
Pour ce faire, voici un script permettant d'offrir une protection avec quelques bonus :
#!/bin/bash ### BEGIN INIT INFO # Provides: iptables # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO case $1 in start) # On vide toutes les règles existantes : iptables -F # On accepte tout en entrée et en sortie sur localhost (en local) #INPUT iptables -A INPUT -i lo -j ACCEPT #OUPUT iptables -A OUTPUT -o lo -j ACCEPT # Dans le cas d'un serveur WEB et pour administrer votre serveur en ssh : On autorise de taper le serveur depuis le WAN #INPUT iptables -A INPUT -i venet0 -p tcp -m multiport --dports http,ssh -m state --state NEW,ESTABLISHED -j ACCEPT #OUPUT iptables -A OUTPUT -o venet0 -p tcp -m multiport --sports http,ssh -m state --state ESTABLISHED -j ACCEPT # Dans mon cas, je sors de mon dédié sur IRC,SNMP,DNS,HTTP donc j'autorise tout ce traffic vers le WAN # Pour rappel : # 53 : DNS permettant de résoudre les noms de domaine # 161 : SNMP #INPUT iptables -A INPUT -i venet0 -p tcp -m multiport --sports http,ircd -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i venet0 -p udp -m multiport --sports 53,161 -m state --state ESTABLISHED -j ACCEPT #OUPUT iptables -A OUTPUT -o venet0 -p tcp -m multiport --dports http,ircd -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o venet0 -p udp -m multiport --dports 53,161 -m state --state NEW,ESTABLISHED -j ACCEPT # Permettre de ping une IP (utilisé dans mon cas pour du monitoring via CACTI) sur le WAN et permettre à cette dernière de ping le serveur #INPUT iptables -A INPUT -p icmp -s 1.1.1.1 -m state --state NEW,ESTABLISHED -j ACCEPT #OUPUT iptables -A OUTPUT -p icmp -d 1.1.1.1 -m state --state NEW,ESTABLISHED -j ACCEPT # Par défaut : AUCUNE ENTREE, AUCUNE SORTIE, AUCUN FORWARD d'une if à une autre iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # Liste les règles par défaut iptables -L -v -n #Log le trafic entrée et sortie rejeté (logs dispo dans /var/log/messages) /sbin/iptables -A INPUT -j LOG /sbin/iptables -A OUTPUT -j LOG # Dans mon cas, j'utilise fail2ban pour bloquer les zombies, le redémarrer va permettre de replacer sa règle iptables précédemment supprimé /etc/init.d/fail2ban restart ;; esac
Le mieux est par la suite de le placer dans /etc/init.d/ et de faire un petit update-rc.d "nom du script" defaults pour permettre la maj automatique des règles iptables au démarrage de votre serveur.
Voilà tout !
Un script simple et vraiment pratique pour une conf par défaut ! Il est bien-sûr possible de pousser plus loin le filtrage via IP par exemple pour le trafic en sortie snmp(pas possible dans mon cas car dyndns pour quelques serveurs) ou http(si ce dernier n'est utilisé que pour les MAJ de la distribution).
Par la même occasion, je profite de ce post pour vous souhaiter à tous et à toutes bonne années 2013 !
D'autres questions ? N'hésitez pas à poster un commentaire !
Aucun trackbacks pour l'instant
Leave a comment