mercredi 20 janvier 2010

firewall iptables script

#!/bin/bash
#
# /etc/rc.local: Local multi-user startup script.
#

##on remet a zero le firewall
iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

###
# Polices par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

###
# Boucle locale

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


###
# Création d’une cible local anti xmas et null scan
iptables -N SCANS
iptables -A SCANS -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
iptables -A SCANS -p tcp --tcp-flags ALL ALL -j DROP
iptables -A SCANS -p tcp --tcp-flags ALL NONE -j DROP
iptables -A SCANS -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

iptables -A INPUT -j SCANS

###
# Création d’une cible personnalisée pour accepter les connexions établies
iptables -N KEEP_STATE
iptables -A KEEP_STATE -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A KEEP_STATE -m state --state INVALID -j DROP

iptables -A INPUT -j KEEP_STATE
iptables -A OUTPUT -j KEEP_STATE

###
# Services sur la machine locale (FTP, SSH, HTTP)

#iptables -A INPUT -m state --state NEW -p tcp --dport 20-21 -j ACCEPT
#iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

#CUPS
iptables -A INPUT -p TCP --dport 631 -m state --state NEW -j ACCEPT
#smb
# EPMAP => définit toutes les RPC !
iptables -A INPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT
# NetBios-NS
iptables -A INPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT
# NetBios-DGM => exploration du réseau (basé sur SMB browser service)
iptables -A INPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT
# NetBios-SSN => partage fichiers, imprimantes par Microsoft
iptables -A INPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT
# SMB/IP => partage fichiers, imprimantes par SaMBa
iptables -A INPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT

###
# Connexions vers l’extérieur (FTP, SSH, DNS, HTTP, MSN, POP, IMAP, SMTP)



iptables -A OUTPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 1863 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 995 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

iptables -A OUTPUT -m state --state NEW -p udp --dport 6891 -j ACCEPT

#vnccleint
iptables -A OUTPUT -m state --state NEW -p tcp --dport 5900 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p udp --dport 5900 -j ACCEPT


##jabber
iptables -A OUTPUT --protocol tcp --dport 5222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 5222 -m state --state ESTABLISHED -j ACCEPT

dimanche 17 janvier 2010

iptables archlinux

Voulant avoir une série de règles simples et puissantes pour iptables, je suis tombé sur cet article du Brakablog.
Même si le tutoriel est à l’origine pour Ubuntu, je l’adapte, pour ArchLinux. Je précise qu’est pour le cas le plus simple, une machine seule connectée à une « box » ou un modem en connexion directe à l’internet.
On commence par installer iptables :
yaourt -S iptables
Ensuite, en mode root, on rentre les règles suivantes, merci à Brakbabord pour les infos :

##On remet le firewall à Zéro ##
iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Le loopback (boucle locale) est indispensable pour des logiciels qui refusent de démarrer sinon, comme Miro

## On accepte loopback ##
iptables -A INPUT -i lo -j ACCEPT

Et le reste des règles :
## On accepte uniquement les connexion désirées ##
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

## On refuse le reste ##
iptables -A INPUT -j drop
Si l’on a pas besoin de l’IP forwarding, dans le fichier /etc/conf.d/iptables, il faut dans la ligne IPTABLES_FORWARD mettre la valeur 0 qui désactive le Forwarding d’IP
Enfin, on sauve les règles, puis on lance le service du pare-feu, soit en root, soit via sudo :

/etc/rc.d/iptables save
/etc/rc.d/iptables start

Et pour lancer iptables au démarrage, il faut rajouter iptables à la ligne DAEMONS du fichier /etc/rc.conf, bien entendu après le daemon qui lance la connexion réseau.
De quoi avoir une protection « parfaite » sur les sites de tests de pare-feux