iptables

Pàgina inicial

Reply to this message
Autor: Patrice Karatchentzeff
Data:  
A: GUILDE
Assumpte: iptables
Salut,

L'ADSL se rapprochant, je commence sérieusement à me mettre à
iptables... mais du coup, certains trucs m'échappent un peu : j'ai
commencé par un script bien compliqué mais c'est une mauvaise idée :-(

Donc, commençons simplement : je veux protéger un simple poste
connecté par un modem RTC sur l'interface ppp0. Je passe pour le
moment tous les services à activer (ssh, DNS, smtp, pop, nntp, etc
sauf nut (Arnaud, c'est pour toi !) qui doit absolument continuer à
tourner). Ce qui m'intéresse pour le moment est le script iptables :
l'intégration dans le système proprement est trivial sous Debian.

Voilà un truc de départ :

# Politique de base : on refuse tout

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Pour journaliser tout ce qu'on jette :

iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPtables DROP] '
iptables -A LOG_DROP -j DROP

# et ce que l'on garde aussi

iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPtables ACCEPT]'
iptables -A LOG_ACCEPT -j ACCEPT

# mettre ensuite -j DROP en -j LOG_DROP

iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP

(jusque là, pas de soucis : on bloque tout et on journalise avec
l'en-tête de son choix)

# Accepte tout sur l'interface lo

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

(le lancement d'un navigateur me prouve que cette règle ne fonctionne
pas... ou pas bien )

# Accepte les résolutions de nom (DNS) :

iptables -A INPUT -i ppp0 --protocol udp --source-port 53 -j LOG_ACCEPT
iptables -A OUTPUT -o ppp0 --protocol udp --destination-port 53 -j LOG_ACCEPT
iptables -A INPUT -i ppp0 --protocol tcp --source-port 53 -j LOG_ACCEPT
iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 53 -j LOG_ACCEPT

(entorse à la première règle pour le confort de test sous un navigateur)

# Accepte le trafic http :

iptables -A INPUT -i ppp0 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j LOG_ACCEPT
iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j LOG_ACCEPT

Maintenant, une fois connecté, j'ai dans mes logs en cas de connexion
à 127.0.0.1

Jan 8 10:03:56 belledonne kernel: [IPtables DROP] IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=1536 PROTO=TCP SPT=33412 DPT=3493 WINDOW=32767 RES=0x00 SYN URGP=0
Jan 8 10:04:00 belledonne kernel: [IPtables DROP] IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=8224 PROTO=TCP SPT=33413 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0
Jan 8 10:04:03 belledonne kernel: [IPtables DROP] IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=8224 PROTO=TCP SPT=33413 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0

Le renommage fonctionne bien mais le firewall m'arrête tout (alors que
le loopback est sensé passser).

Pour une adresse externe, la résolution de nom ne passe même pas.

Je dois avoir oublier quelque chose mais quoi ?

Merci

PK

--
      |\      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentzeff@free.fr
     |,4-  ) )-,_. ,\ (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'\_)