Besoin d'aide pour iptables

Salut à tous,

En glanant quelques infos sur iptables j’ai essayé de mettre au point une config (sommaire pour l’instant) de mon firewall sous lenny.

Voici donc le fichier actuel :

[code]#!/bin/bash

accepte le trafic des connexions deja etablies

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

accepte le trafic pour SSH

iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i wlan0 --dport 22 -j ACCEPT

##autorise la navigation web
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -i wlan0 --dport 80 -j ACCEPT

autorise Jabber

iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

accepte le trafic du reseau local (interface loopback)

iptables -I INPUT,OUTPUT 2 -i lo -j ACCEPT

bloque toutes les connexions non explicitements ##autorisees

iptables -P INPUT DROP

autorise à recevoir, envoyer, répondre a un ping

iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT[/code]

Je voudrais déjà savoir si c’est correct et que rien n’est contradictoire, superflue, etc…

J’ai ensuite un souci à propos de l’exécution au boot de ce script :
Avant de lire ce tuto (un peu rudimentaire mais clair) j’avais déjà fais un

Et quand j’entre :

J’ai comme retour :

update-rc.d: warning: /etc/init.d/myIpTables missing LSB information update-rc.d: see <http://wiki.debian.org/LSBInitScripts> System startup links for /etc/init.d/myIpTables already exist.

Quelqu’un peut-il m’éclairer sur comment modifier ce lien de démarrage vers /etc/init.d/myIpTables pour qu’il prenne en compte la priorité et pour ne plus avoir le warning ?

Merci d’avance,
Block

Tu as un serveur web, pour ouvrir le port 80 ?
Je crois qu’il est préférable de “dropper” INPUT et FORWARD, avant d’entrer les ports autorisés et non, comme tu as fait, après.
Pascal confirmera ou infirmera.

le code deviendrait donc

[code]#!/bin/bash

bloque toutes les connexions non explicitements autorisees

iptables -P INPUT,FORWARD DROP

accepte le trafic des connexions deja etablies

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

accepte le trafic pour SSH

iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i wlan0 --dport 22 -j ACCEPT

autorise Jabber

iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

accepte le trafic du reseau local (interface loopback)

iptables -I INPUT,OUTPUT 2 -i lo -j ACCEPT

autorise à recevoir, envoyer, répondre a un ping

iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT[/code]

Je n’ai en effet pas besoin d’ouvrir le port 80 en y réfléchissant.
J’ai toujours le retour quand j’essaie de faire s’exécuter les paramétrages au démarrage avec les priorités :

update-rc.d: warning: /etc/init.d/myIpTables missing LSB information update-rc.d: see <http://wiki.debian.org/LSBInitScripts> System startup links for /etc/init.d/myIpTables already exist.

Et j’ai remarqué en essayant d’enregistrer les modifications que

renvoie

iptables: Bad built-in chain name iptables: No chain/target/match by that name

(c’est nouveau, tout à l’heure ça fonctionnait…)

Le message vient de ce que tu ne respectes pas les entêtes d’un fichier de démarrage de service (va voir par exemple la fin du fil «parefeu sommaire» ou équivalent dans Trucs et Astuces. Le deuixème message d’erreur vient de -P INPUT,FORWARD qu’il faut mettre sur deux lignes je pense.

La question est de savoir ce que fait cette machine? Est ce une passerelle ou juste une station de travail? Quels services veux tu utiliser, y-a-t-il des machines virtuelles dessus, etc notamment pour savoir si tu dois te préoccuper de la chaine FORWARD ou non.

Ici tu aurais un serveur SSH sur ta machine par exemple.

Va voir là http://www.debian-fr.org/installation-parefeu-iptables-pour-les-nuls-t1901.html

Rajoute ça en début de fichier:

[code]### BEGIN INIT INFO

Provides: iptables

Required-Start: mountkernfs ifupdown $local_fs

X-Start-Before: networking

Default-Start: 2 3 4 5

Required-Stop:

Default-Stop: 0 1 6

Short-Description: Configuration du pare-feu iptables.

Description: Configuration du pare-feu iptables.

END INIT INFO[/code]

(@ Ricardo : on vient, on vient… poussez pas)

  • Inutile de dupliquer les règles pour chaque interface si le comportement doit être le même pour toutes les interfaces ; il suffit de ne pas spécifier d’interface dans les règles.

  • Il faudrait réinitialiser les chaînes (-F, -X, -P) au début avant d’ajouter des règles.

  • Les règles dans INPUT avec --dport sont pour les connexions entrantes (quand la machine est serveur), pas sortantes (quand la machine est cliente).

  • Si la machine n’est pas configurée pour fonctionner en routeur IP, il ne peut pas y avoir de trafic dans la chaîne FORWARD.

iptables -I INPUT,OUTPUT 2 -i lo -j ACCEPT

  • Une commande iptables ne peut spécifier qu’une et une seule chaîne.
  • Eviter d’utiliser -I autant que possible (surtout dans un script de démarrage), on finit par se perdre dans l’ordre des règles.

## autorise à recevoir, envoyer, répondre a un ping
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

  • Le commentaire ne correspond pas au règles : -p icmp est bien plus large que le seul ping.
  • Requête ping : “-p icmp --icmp-type echo-request”, état NEW, parfois ESTABLISHED dans certains cas particuliers.
  • Réponse ping : “-p icmp --icmp-type echo-reply”, état ESTABLISHED sauf dans certains cas non pris en charge par le suivi de connexion (broadcast, multicast) INVALID.
  • Tout ce qui est ESTABLISHED ou RELATED en entrée a déjà été accepté par la première règle du script, donc plus besoin de s’en occuper ensuite. Cela concerne notamment tous les types d’erreurs ICMP utiles (destination unreachable, time exceeded…).
  • Si la politique par défaut de la chaîne OUTPUT est ACCEPT, inutile d’y ajouter des règles ACCEPT superflues.

Merci pour vos réponses, j’ai une journée un peu chargée j’essaye ça et vous tiens au courant ce soir ou demain.