11 août 2011

Configuration minimaliste de firewall sur un serveur web Centos

Lorsque l'on prépare un serveur destiné à héberger un site web, on s'apperçoit bien vite que le réseau mondial grouille de menaces en tout genre (scanners, bruteforce SSH...), bref un minimum de protection s'impose si vous voulez garantir l'intégrité de votre machine.
Voici donc une petite note au cas où : un fichier de configuration minimaliste de firewall.
# Place this content in /etc/iptables.up
# then run: iptables-restore < /etc/iptables.up
# to load these rules
*filter

#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
Notez que le port 22 est fermé et que le service SSH de mon serveur passe par le port 30000, ce qui est bien moins commun donc évite de retrouver le secure log remplie de tentatives douteuses de connection.

Voila, c'est bien pratique, vue que j'ai une mauvaise mémoire, je met ca ici au cas ou j'oublie... L'excelent article original dont est issue ce fichier de configuration : http://articles.slicehost.com/2010/5/15/centos-5-5-setup-part-1

Merci a l'excelent hebergeur slicehost pour leurs articles.