Firewall sur iptables
Script bash
#!/bin/bash
IPTABLES=/sbin/iptables
# Nous vidons les chaines
$IPTABLES -F
# Nous supprimons d'eventuelles chaines personnelles
$IPTABLES -X
# Par defaut, on interdit tout
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Definition d'un logger sur le drop
$IPTABLES -N LOGDROP
$IPTABLES -A LOGDROP -j LOG --log-prefix '[IPTABLES DROP] : '
$IPTABLES -A LOGDROP -j DROP
# Accepter ce qu'il se passe en local
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Accepter la resolution DNS
$IPTABLES -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
# On autorise tout en sortie
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT
# On autorise en entree
# http
$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
# https
$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p tcp --dport 443 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 443 -j ACCEPT
#ssh (autorisé par knock)
#$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j LOGACCEPT
#$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 22 -j LOGACCEPT
# ftp
$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p tcp --dport 21 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 21 -j ACCEPT
# ftp actif
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --dport 20 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 20 -j ACCEPT
# ftp passif
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --sport 1024: --dport 1024: -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 1024: --dport 1024: -j ACCEPT
# freeplayer
$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p tcp --dport 8080 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 8080 -j ACCEPT
# Multiposte
# Puis une adresse multicast qui 'doit' venir de http://www.live555.com/ apparement
$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p udp --dport 31336:31337 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p udp --sport 31336:31337 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p udp --sport 15947 --dport 15947 -d 228.67.43.91 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -m state --state ESTABLISHED -p udp --sport 15947 --dport 15947 -s 228.67.43.91 -j ACCEPT
# Enfin, on refuse tout le reste et on le log
$IPTABLES -A INPUT -j LOGDROP
$IPTABLES -A OUTPUT -j LOGDROP
$IPTABLES -A FORWARD -j LOGDROP