Digression Installation parefeu (iptables & ip6tables) "pour les nuls"

Merci pour vos précisions a tous les deux je n’avais pas fais attention que le port 80 en entrée était destinné au serveur web en plus c’est marqué sur le tuto .
Vos corrections sur mes erreurs de compréhensions sont les bienvenues comme celles sur les port 443 et 53 car je manque de culture en la matière .Merci de me reprendre .
Je vais faire quelques lectures sur la syntaxe des règles et je vais essayer d’en faire .
Je vous les présenterais en esperant une correction de votre part …où pas sait on jamais :bulb:

Merci de votre aide messieurs .

Bonjour,
Quelques lectures apres me revoilà avec des règles un peu différentes , comme dit précedement je suis plus partisant pour fermer le traffic complètement et de ne laisser sortie que ce dont j’ai réellement besoin dans la mesure du réalisable biensûr .
Je me suis inspiré de différents tutos que j’ai pu trouver .Ne sachant si le tout est cohérent et si les regles sont correctes , j’aimerai si possible que vous corrigiez mes erreurs (aussi bien des règles que les lignes commentées ) .
Merci a vous

[code]# stratégies par défaut : bloquer tout le traffic
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

Reseau local

iptables -A INPUT -i lo -j ACCEPT

Accepter les connexions déjà etablies

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

Laisser certains types ICMP

iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Autoriser le port 80 en sortie pour le surfer

iptables -A OUPOUT -p tcp -m tcp --dport 80 -j ACCEPT

Autoriser le port 443 en sortie pour le https

iptables -A OUPOUT -p tcp -m tcp --dport 443 -j ACCEPT

Autoriser le port 6667 en sortie pour xchat

iptables -A OUPOUT -p tcp -m tcp --dport 6667 -j ACCEPT

Autoriser le port 51413 en sortie pour Transmission

iptables -A OUPOUT -p tcp -m tcp --dport 6667 -j ACCEPT
iptables -A OUPOUT -p udp -m udp --dport 6667 -j ACCEPT

Autoriser le port 51413 en entrée pour Transmission

#iptables -A input -p tcp -m tcp --dport 6667 -j ACCEPT
#iptables -A input -p udp -m udp --dport 6667 -j ACCEPT[/code]

ps : J’ai ajouter ICMP car j’ai cru comprendre qu’il était conseillé mais je n’en suis pas certains .

# Reseau local
iptables -A INPUT -i lo -j ACCEPT

Il ne s’agit pas du réseau local mais de l’hôte local.
Il manque une règle similaire en sortie (OUTPUT).

# Accepter les connexions déjà etablies
iptables -A INPUT -m state --state RELATED,ETABLISHED -j ACCEPT

Là aussi il manque une règle similaire en sortie.

# Laisser certains types ICMP
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT

Ces quatre types ICMP, quand ils sont valides, sont dans l’état RELATED et donc déjà acceptés par la règle précédente. Ces règles sont donc redondantes.

#iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Ça peut servir pour tester la connectivité IP avec un ping depuis une autre machine. J’ajouterai une règle similaire en sortie pour pouvoir envoyer un ping depuis la machine elle-même.

# Autoriser le port 80 en sortie pour le surfer
iptables -A OUPOUT -p tcp -m tcp --dport 80 -j ACCEPT

Ce n’est pas OUPOUT mais OUTPUT.

# Autoriser le port 51413 en sortie pour Transmission
iptables -A OUPOUT -p tcp -m tcp --dport 6667 -j ACCEPT
iptables -A OUPOUT -p udp -m udp --dport 6667 -j ACCEPT

Le port dans le commentaire ne correspond pas au port dans les règles.

# Autoriser le port 51413 en entrée pour Transmission
#iptables -A input -p tcp -m tcp --dport 6667 -j ACCEPT
#iptables -A input -p udp -m udp --dport 6667 -j ACCEPT

Même remarque que ci-dessus concernant le port.
Ce n’est pas input mais INPUT. Le nom des chaînes, correspondances et cibles d’iptables est sensible à la casse.

Pour finir, il manque des règles pour accepter les requêtes DNS (port 53 en TCP et UDP) en sortie.

Merci pour les corrections apportées ainsi que les commentaires qui sont les bienvenus , j’ai modifié le tout et voici le résultat en espérant n’avoir rien oublié :

[code] # Stratégies par défaut : bloquer tout le traffic
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

Hôte local

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

Accepter les connexions déjà etablies

iptables -A INPUT -m state --state RELATED,ETABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ETABLISHED -j ACCEPT

Autoriser les requêtes DNS port 53 en sortie.

iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

Tester la connectivité IP avec un ping depuis une autre machine

#iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

Autoriser le port 80 en sortie pour le surfer

iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Autoriser le port 443 en sortie pour le https

iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Autoriser le port 6667 en sortie pour xchat

iptables -A OUTPUT -p tcp -m tcp --dport 6667 -j ACCEPT

Autoriser le port 51413 en sortie pour Transmission

iptables -A OUTPUT -p tcp -m tcp --dport 51413 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 51413 -j ACCEPT

Autoriser le port 51413 en entrée pour Transmission

#iptables -A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
#iptables -A INPUT -p udp -m udp --dport 51413 -j ACCEPT[/code]

Merci pour vos remarques et conseils.

Tout ça me semble correct.

J’apporterai deux remarques secondaires sur la présentation :
# Autoriser le port 80 en sortie pour le surfer
Je supprimerai 'le’
Un meilleur rangement des règles selon l’établissement du début :
INPUT
FORWARD
OUTPUT
serait plus agréable, AMA.
En fait, il suffit de baisser celle-là d’un cran :
# Autoriser les requêtes DNS port 53 en sortie.
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

et de remonter la dernière tout en haut, après les règles générales.
Mais tout ça n’est que chipotage de ma part :laughing:

[quote=“ricardo”]Un meilleur rangement des règles selon l’établissement du début :
INPUT
FORWARD
OUTPUT
serait plus agréable, AMA.[/quote]
C’est très subjectif. La disposition “thématique” regroupant les règles relatives à un même service me semble tout aussi valable.

[quote=ricardo]# Autoriser le port 80 en sortie pour le surfer
Je supprimerai ‘le’[/quote]

Oui c’est clair que c’est plus correct.
Je vais changer l’ordre aussi , on ne sait jamais , je préfère agir comme tout le monde pour l’instant ,les fantaisies je verrai plus tard…

Alors j’ai supprimer mes anciennes règles avec :

Ensuite j’ai rentrée les nouvelles, j’ai sauvegardé avec :

J’active le pare-feu avec :

j’obtiens cette erreur :

update-rc.d: using dependency based boot sequencing update-rc.d: warning: mon_parefeu start runlevel arguments (S) do not match LSB Default-Start values (2 3 4 5) update-rc.d: warning: mon_parefeu stop runlevel arguments (0 6) do not match LSB Default-Stop values (0 1 6)

j’ai trouvé un topic dans le forum a ce sujet mais la solution n’y est pas clairement expliquée ,il y a un renvoi a une page wiki (en) mais je n’ai pas saisi pour dire la vérité .
Si quelqu’un a une solution… je suis pas contre .

voici le début de mon script j’ai cru comprendre qu’il y avait un rapport :

[code]### BEGIN INIT INFO

Provides: iptables

Required-Start:

Should-Start:

Required-Stop:

Should-Stop:

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-description: iptables

Description: Firewall

END INIT INFO[/code]

Ton ‘13’ et ton ‘08’, sont bien le résultat de cette partie du tuto :

(Remplacez XX par le nombre immédiatement inférieur à celui qui indique la priorité de 'networking' dans /etc/rcS.d. ($ ls /etc/rcS.d | grep S**networking (renvoie chez moi "S15networking". Il conviendra donc de remplacer XX par 14 (Remplacez YY par le nombre immédiatement supérieur à celui qui indique la priorité de 'networking' dans /etc/rc0.d ($ ls /etc/rc0.d | grep K**networking (renvoie chez moi "K07networking". Il conviendra donc de remplacer YY par 08

:question:

oui le resultat semble etre bon :
S14networking ==>-1=13
K07networking ==>+1=8

Je dois partir mais je serai de retour ce soir très tard.
en attendant, jette un coup d’oeil là :
http://www.debian-fr.org/lsb-tags-iptables-et-runlevel-t26319.html

Merci pour le lien et pour ton aide !
On a tout le temps necessaire devant nous pas de souci :wink:

J’avoue que je ne comprends pas ces “warnings”.
Il faut attendre l’avis de Pascal.
Maintenant, ce ne sont que des mises en garde, pas des erreurs.

Non, il ne faut pas m’attendre. Je n’utilise pas encore le système de démarrage basé sur les dépendances.

En fouillant un peu partout, j’ai vu que ces alertes arrivaient suite à un bug mais ça remonte à 2009, donc je suppose que ça a été réparé.
Je ne sais pas quoi te dire d eplus mais je ne pense pas que ça altère la fonction du parefeu.

De mon coté j’ai également trouvé pas mal de topics ou l’erreur est relatée aussi, mais malheureusement 9 fois sur 10 le probleme est resté en suspend ou bien l’explication est inbuvable pour mon niveau aussi bien en anglais qu’en info.
J’éspere effectivement que cela n’altère pas le fonctionnement du pare-feu , j’ai fais un sudo sysv-rc-conf --list et le pare feu se lance au démarrage :

mon_parefeu 0:off 1:off 2:on 3:on 4:on 5:on 6:off
J’espere qu’il fonctionne correctement , je n’est pas encore effectuer de test via le site “Shield !..” mais je vais m’y coller cette semaine .
En tout les cas je vous remercie ricardo & PascalHambourg pour votre aide , vos conseils et votre patience c’est très appréciable :wink:

Le meilleur moyen de savoir s’il fonctionne, c’est

iptables-save

Bien le bonsoir chez vous … :006

Pour ma part j’ai un souci similaire à Garfoon ici message317680.html#p317680

Je viens d’installer squeeze sur une autre machine, (Géant, bravo … que du bonheur … :049 :041 ) puis j’ai lancé ces quelques régles iptables afin d’accéder au web pour mes installations pare-feu IDS et j’ai rencontré se problème.

loreleil@debian-pc2:~$ ls /etc/rcS.d | grep S**networking S15networking loreleil@debian-pc2:~$ ls /etc/rc0.d | grep K**networking K07networking loreleil@debian-pc2:~$

root@debian-pc2:/home/loreleil# update-rc.d mon_parefeu start 14 S . stop 08 0 6 . update-rc.d: using dependency based boot sequencing insserv: warning: script 'K01mon_parefeu' missing LSB tags and overrides insserv: warning: script 'mon_parefeu' missing LSB tags and overrides root@debian-pc2:/home/loreleil#
Puis-je être rassuré … :017

[code]root@debian-pc2:/home/loreleil# iptables-save

Generated by iptables-save v1.4.8 on Mon Feb 7 17:01:39 2011

*raw
:PREROUTING ACCEPT [20163]
:OUTPUT ACCEPT [13637:1196549]
COMMIT

Completed on Mon Feb 7 17:01:39 2011

Generated by iptables-save v1.4.8 on Mon Feb 7 17:01:39 2011

*mangle
:PREROUTING ACCEPT [20163]
:INPUT ACCEPT [20161]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [13637:1196549]
:POSTROUTING ACCEPT [13658:1200960]
COMMIT

Completed on Mon Feb 7 17:01:39 2011

Generated by iptables-save v1.4.8 on Mon Feb 7 17:01:39 2011

*nat
:PREROUTING ACCEPT [184:11864]
:POSTROUTING ACCEPT [1484:93860]
:OUTPUT ACCEPT [1484:93860]
COMMIT

Completed on Mon Feb 7 17:01:39 2011

Generated by iptables-save v1.4.8 on Mon Feb 7 17:01:39 2011

*filter
:INPUT DROP [203:15611]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [13637:1196549]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A fail2ban-ssh -j RETURN
COMMIT

Completed on Mon Feb 7 17:01:39 2011

root@debian-pc2:/home/loreleil#
[/code]
:116 sur mes installations précédentes je n’ai jamais était inquiété.

Une idée sur ce phénomène … ?

[quote=“loreleil.747”]root@debian-pc2:/home/loreleil# update-rc.d mon_parefeu start 14 S . stop 08 0 6 . update-rc.d: using dependency based boot sequencing insserv: warning: script 'K01mon_parefeu' [color=#0000FF][b]missing LSB tags and overrides[/b][/color] insserv: warning: script 'mon_parefeu' missing LSB tags and overrides root@debian-pc2:/home/loreleil#
Puis-je être rassuré … :017
[/quote]
Il faut que tu ajoutes dans le script, ce que j’ai placé sur le tuto, aussitôt après la première ligne :

[code]### BEGIN INIT INFO

Provides: iptables

Required-Start:

Should-Start:

Required-Stop:

Should-Stop:

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-description: iptables

Description: Firewall

END INIT INFO[/code]

En principe, ça devrait résoudre le problème.

Re,

Bonsoir à toi ricardo, :wink:

Ma foi, j’avais effectivement un souci à la base, mes fiches techniques que j’utilise pour mes ré-installations étaient obsolètes, tout au moins celles concernant mon_parefeu.

Cela est rétablit. Cependant j’obtiens une autre alerte.

root@debian-pc2:/home/loreleil# update-rc.d mon_parefeu start 14 S . stop 08 0 6 . update-rc.d: using dependency based boot sequencing update-rc.d: warning: mon_parefeu start runlevel arguments (S) do not match LSB Default-Start values (2 3 4 5) update-rc.d: warning: mon_parefeu stop runlevel arguments (0 6) do not match LSB Default-Stop values (0 1 6) root@debian-pc2:/home/loreleil#

[code]root@debian-pc2:/home/loreleil# iptables-save

Generated by iptables-save v1.4.8 on Mon Feb 7 21:21:17 2011

*nat
:PREROUTING ACCEPT [9:1080]
:POSTROUTING ACCEPT [9:681]
:OUTPUT ACCEPT [9:681]
COMMIT

Completed on Mon Feb 7 21:21:17 2011

Generated by iptables-save v1.4.8 on Mon Feb 7 21:21:17 2011

*mangle
:PREROUTING ACCEPT [773:1035809]
:INPUT ACCEPT [773:1035809]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [607:42674]
:POSTROUTING ACCEPT [627:43910]
COMMIT

Completed on Mon Feb 7 21:21:17 2011

Generated by iptables-save v1.4.8 on Mon Feb 7 21:21:17 2011

*raw
:PREROUTING ACCEPT [773:1035809]
:OUTPUT ACCEPT [607:42674]
COMMIT

Completed on Mon Feb 7 21:21:17 2011

Generated by iptables-save v1.4.8 on Mon Feb 7 21:21:17 2011

*filter
:INPUT DROP [3:96]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5:278]
:fail2ban-ssh - [0:0]
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT

Completed on Mon Feb 7 21:21:17 2011

root@debian-pc2:/home/loreleil#
[/code]
Sais tu de quoi il s’agit … ?
Merci.