jeudi 12 mars 2009

Protections réseaux sous Linux

Exemple de fichier de protection réseau utilisant iptables et les fonctions reseau du noyau

======DEBUT FICHIER==========

#suppression des regles
iptables -F

#suppression des regles non standards
iptables -X

#par defaut tout est fermé sauf en sortie
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#la machine locale est sure
iptables -A INPUT -i lo -j ACCEPT

#DNS
#on autorise les connexion pour tous
#attention doit resoudre seulement pour les zones du DNS
iptables -A INPUT -i eth0 --protocol udp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 --protocol tcp --dport 53 -j ACCEPT

#NTP
iptables -A INPUT -i eth0 --protocol udp --sport 123 -j ACCEPT

#APACHE
#on autorise les connexions pour tous
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#POP3 ET POP3S
#pour que les utilisateurs relevent leurs comptes
iptables -A INPUT -p tcp --dport 110 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#IMAP ET IMAPS
#pour que les utilisateurs relevent leurs comptes
iptables -A INPUT -p tcp --dport 143 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 993 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#SMTP et SMTPS
#on est serveur de courrier, doit etre ouvert à tous
iptables -A INPUT -p tcp --dport 25 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 465 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#SSH
#on l'ouvre aux visiteurs autorisés seulement
iptables -A INPUT -p tcp -s 192.168.1.250 --dport 666 -i eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#VSFTPD (se renseigner sur ftp et ftp-data)
#on l'ouvre aux visiteurs autorisés seulement
iptables -t filter -A INPUT -p tcp -s 192.168.1.250 --dport 20 -i eth0 -j ACCEPT
iptables -t filter -A INPUT -p tcp -s 192.168.1.250 --dport 21 -i eth0 -j ACCEPT

#ON AUTORISE TOUTE CONNECTION DEJA ETABLIE, NECESSAIRE AU FTP
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#PING
#on l'ouvre à quelques privilégiés seulement
iptables -A INPUT -p icmp -s 192.168.1.250 -i eth0 -m limit --limit 1/s -j ACCEPT

#INTERDIRE L'IPV6
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP
ip6tables --flush
ip6tables --flush INPUT
ip6tables --flush OUTPUT
ip6tables --flush FORWARD
ip6tables --flush -t mangle
ip6tables --delete-chain

#LES PROTECTIONS NOYAUX

#interdire le source routing (evite le spoofing)
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

#pour enregistrer les paquets avec adresses falsifiées
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

#contre le spoofing
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

#se proteger contre le syn packet flooding
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

#Emule une reponse windows
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#interdit les redirections / forwardings
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects

#FAIL2BAN
/etc/init.d/fail2ban restart

#on affiche tout
iptables -L

=====FIN DU FICHIER========

Pour executer ce fichier au demarrage
ln -s monfichier /etc/init.d/firewall
update-rc.d firewall defaults

Pour le retirer, vous pouvez utiliser la commande suivante :
update-rc.d -f firewall remove

Il vous suffira de redémarrez, ou exécutez /etc/init.d/firewall pour activer le filtrage.

Pour verifier une valeur de protection noyau
sysctl -A | grep tcp_syncookies

devra afficher
net.ipv4.tcp_syncookies=1

Pour afficher toutes les regles de iptables
iptables -L ou iptables -nL

Pour retablir les regles de iptables par defaut (tout autoriser)
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Pour aller plus loin:
http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/
http://reseau.erasme.org/static/serveurs_linux/sect_02_03.html
http://ipsysctl-tutorial.frozentux.net/chunkyhtml/tcpvariables.html

Aucun commentaire:

Enregistrer un commentaire