[RESOLU] "Autoriser" les ping / script Iptables

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

[RESOLU] "Autoriser" les ping / script Iptables

Messagepar lembal » 06 Oct 2004 10:12

Bonjour,

Alors que beaucoup souhaiteraient empêcher les requêtes ICMP de type echo-request... dans mon cas je veux les autoriser ! J'ai créer un script Iptables pour un serveur GNU/Linux Debian stable et tout fonctionne sauf cette fonction... qu'est ce qui ne va pas dans mon script :

Code: Tout sélectionner
#!/bin/sh

# nettoyage de printemps...
iptables -F
iptables -X

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


iptables -t nat -F
iptables -t nat -X

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# loopback est mon ami
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Mon serveur n'est pas autiste
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# Le retour de flamme...
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Les VIP : FTP, SSH, SMB, HTTP, SQUID, WEBMIN, DNS et DHCP
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 10000 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT

iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp --dport 67 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp --dport 137 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp --dport 138 -j ACCEPT

# On autorise les ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# On rejette tout le reste
iptables -A INPUT -m state --state NEW -j REJECT

# On redirige les requêtes HTTP vers le port 3128 de Squid
iptables -t nat -A PREROUTING -s 192.168.x.0/255.255.255.0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128

# That's all Folks...


Merci...


:cry:
Dernière édition par lembal le 07 Oct 2004 16:35, édité 1 fois au total.
lembal
Vice-Amiral
Vice-Amiral
 
Messages: 880
Inscrit le: 13 Jan 2003 01:00
Localisation: Paris

Messagepar tomtom » 06 Oct 2004 10:51

la tout de suite je vois pas...

mets un log avant le drop, tu verras tout de suite ce qui va pas....


t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar antolien » 06 Oct 2004 10:57

Bonjour, il ne manquerait pas iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT ?

(l'echo reply)
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar lembal » 06 Oct 2004 12:47

tomtom a écrit:la tout de suite je vois pas...

mets un log avant le drop, tu verras tout de suite ce qui va pas....


t.


Merci j'essaie !

antolien a écrit:Bonjour, il ne manquerait pas iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT ?

(l'echo reply)


Je viens d'essayer mais toujours pareil ! Merci quand même Anto...

:wink:
lembal
Vice-Amiral
Vice-Amiral
 
Messages: 880
Inscrit le: 13 Jan 2003 01:00
Localisation: Paris

Messagepar korosv » 06 Oct 2004 14:05

Ce ne serait pas cette ligne qui pose un soucis pour la suite :
# Le retour de flamme...
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Là tu n'acceptes AUCUNE nouvelle connexion ... sauf pour les VIP défini par la suite ...
Il faudrait peu-être ajouter :

# On autorise les ping
iptables -A INPUT -m state --state NEW -p icmp --icmp-type 8 -j ACCEPT

Puisque sinon c'est filtrer par la première règle ...

Sinon pour : iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT ... je ne pense pas que cela soit nécessaire puisque
tout ce qui sort du serveur est accepter :
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT ... pas autiste le serveur, il est plutôt
volontiers communicatif :-)

@ +
Avatar de l’utilisateur
korosv
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 256
Inscrit le: 02 Juil 2003 00:00
Localisation: Saturne

Messagepar lembal » 06 Oct 2004 14:27

korosv a écrit:# On autorise les ping
iptables -A INPUT -m state --state NEW -p icmp --icmp-type 8 -j ACCEPT

Puisque sinon c'est filtrer par la première règle ...


Haaa non ! Désolé Korosv, ça veut toujours pas ! Mais je persiste... merci !
lembal
Vice-Amiral
Vice-Amiral
 
Messages: 880
Inscrit le: 13 Jan 2003 01:00
Localisation: Paris

Messagepar korosv » 06 Oct 2004 17:04

Bon de toute manière c'est un peu des bêtises ce que j'ai raconté ... :roll:

Antolien a tout juste en fait ... re-vérifies tes règles, cela devrait ressembler à :

#On autorise les ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT

.. je viens de le tester sur un vmware.
Avatar de l’utilisateur
korosv
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 256
Inscrit le: 02 Juil 2003 00:00
Localisation: Saturne

Messagepar braouazou » 06 Oct 2004 17:23

Je viens de tester, et cela fonctionne très bien avec
Code: Tout sélectionner
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT


Pour le OUTPUT, tout est autorisé en sortie, comme tu l'avais fait remarqué dans ton message précédent, donc pas de souci de ce coté !

As-tu vérifié ton fichier proc/sys/net/ipv4/icmp_echo_ignore_all (s'il contient 0, c'est que tu refuses tous les paquets icmp) ??

EDIT : c'est l'inverse, 0 = acceptation des requêtes icmp !! :oops:

@+
Avatar de l’utilisateur
braouazou
Amiral
Amiral
 
Messages: 1290
Inscrit le: 26 Fév 2003 01:00
Localisation: Dans les Vosges, au milieu des sapins!

Messagepar antolien » 06 Oct 2004 19:53

ce qui me parraît louche c'est surtout cette ligne :

iptables -A INPUT -m state --state NEW -j REJECT

En fait , si tu fais un syn scan de l'exterieur; tes ports seront en close; et non en stealth, ce qui est gênant car ton firewall répondra pour chaque demande de connexion (typiquement un icmp destination unreachable)

Et tu n'as pas à t'en faire , ta policy est en DROP; donc tout ce que tu n'as pas autorisé explicitement sera dropé; ce qui est mieux.
Avatar de l’utilisateur
antolien
Amiral
Amiral
 
Messages: 3134
Inscrit le: 31 Août 2002 00:00

Messagepar tomtom » 06 Oct 2004 20:00

antolien a écrit:Pour moi le --state NEW regroupe plusieurs flags tcp et en général ce qui correspond à une connection non encore établie.

Donc ça m'a toujours parru bizarre les scripts qui gère l'icmp avec le state new, related et established.

Tomtom à raison, tu devrait ajouter les logs, et regarder ce qui se passe.


bien malheureusement, new ne correspond pas forcemment du tout à une nouvelle connexion tcp.... c'est d'ailleurs parfois un peu problématique, car un paquet tcp sans syn peut etre considéré comme new par netfilter. Personnellement, je n'utilise JAMAIS le state NEW....

Dans tous les cas, ton OUTPUT etant entiérement autorisé, les paquets devraient repartir. De plus, je suis quasi sur qu'un echo-reply sera considéré comme established par netfilter s'il a recu le echo-request...

Le problème peut venir du icmp_echo_ignore_all. Normalement, il est à 0 sur debian, mais tu pourrais y avoir touché auparavent, ou etre dans une config speciale.

avant ton drop à la fin, ajoute :

iptables -A INPUT -j LOG --log-prefix '[INPUT-DROP] '
iptables -A OUTPUT -j LOG --log-prefix '[OUTPUT DROP] '

tu verras tout de suite ce qui bloque (si c'est netfilter... :p )

Sinon, on est bien d'accord : Tu veux pouvoir pingure ta debian (pas une machine sur internet depuis le reseau local.....) ???

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar tomtom » 06 Oct 2004 20:09

Heu j'ai révé la ??? :lol:



AU fait, c'est la première fois que je vois

Code: Tout sélectionner
-m tcp



c'est pas un module tcp à ma connaissance ?

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar lembal » 07 Oct 2004 12:22

antolien a écrit:ce qui me parraît louche c'est surtout cette ligne :

iptables -A INPUT -m state --state NEW -j REJECT

En fait , si tu fais un syn scan de l'exterieur; tes ports seront en close; et non en stealth, ce qui est gênant car ton firewall répondra pour chaque demande de connexion (typiquement un icmp destination unreachable)

Et tu n'as pas à t'en faire , ta policy est en DROP; donc tout ce que tu n'as pas autorisé explicitement sera dropé; ce qui est mieux.


Ok je vais "droper"...

tomtom a écrit:Heu j'ai révé la ???



AU fait, c'est la première fois que je vois

Code:

-m tcp




c'est pas un module tcp à ma connaissance ?


Bah en fait je cherchais la ligne pour pouvoir utiliser ma machine comme proxy transparent... et je l'ai trouvé ici : http://christian.caleca.free.fr/squid/p ... _squid.htm sur le site de Christian Caleca (je fais pleinement confiance aux compétences de ce Monsieur)

Pour le proc/sys/net/ipv4/icmp_echo_ignore_all le problème c'est que j'en ai pas !! J'ai bien modifié mon /etc/sysctl.conf avec ça dedans :


Code: Tout sélectionner
net/ipv4/icmp_echo_ignore_broadcasts = 0
net/ipv4/icmp_echo_ignore_all = 0
net/ipv4/ip_forward=1


Seulement quand je fais ensuite un sysctl -a | grep icmp : les paramètres n'ont pas changés (ils sont à 1...) !

Je vais suivre tes conseils Tomtom, je vais logger...

PS : le fait que je n'ai pas ce répertoire proc/sys/net/ipv4/ peut être lié avec le fait que je sois passé en noyau 2.6 via apt (donc en binaire j'entends) ? Parce que j'ai l'IPv6 d'activé... en atteste min adresse IP v6 quand je tape un ifconfig !
lembal
Vice-Amiral
Vice-Amiral
 
Messages: 880
Inscrit le: 13 Jan 2003 01:00
Localisation: Paris

Messagepar tomtom » 07 Oct 2004 13:37

il faut faire sysctl -p pour appliquer les serttings positionnés dans /etc/sysctl.conf, ou sysctl -p /etc/sysctl.conf

si la valeur est à 1, c'est sur que c'est ca qui bloque le ping.

Par contre, tu devrais tout de meme avoir les paramètres dans /proc/sys/net/ipv4


Pour le pproxy transparent, ok, mais je vois toujours pas l'interet du -m tcp.. pas tres grave

par contre, ce serait bien que tu detailles ton architecture : Ta debian est connectée au net et sert de passerelle (via proxy), ou elle est sur une dmz avec un ipcop ou autre ?


t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar lembal » 07 Oct 2004 15:46

tomtom a écrit:il faut faire sysctl -p pour appliquer les serttings positionnés dans /etc/sysctl.conf, ou sysctl -p /etc/sysctl.conf

si la valeur est à 1, c'est sur que c'est ca qui bloque le ping.

Par contre, tu devrais tout de meme avoir les paramètres dans /proc/sys/net/ipv4


Pour le pproxy transparent, ok, mais je vois toujours pas l'interet du -m tcp.. pas tres grave

par contre, ce serait bien que tu detailles ton architecture : Ta debian est connectée au net et sert de passerelle (via proxy), ou elle est sur une dmz avec un ipcop ou autre ?


t.


Toutes mes excuses ! C'était bien cela !!! D'autant plus que j'ai ce chemin /proc/sys/net/ipv4 et les fichiers qui vont dedans... quelle honte :oops: ! Je pensais que locate pourrait rechercher dans ce file system... haaaa la bêtise humaine ! Merci à tous, c'est sysctl -p qui m'a sauvé, le script IPTables était bon ! Pour le proxy transparent, bah, j'ai viré le "-m tcp" et ça fonctionne aussi bien !
L'architecture est simple, le serveur protégé par ce script n'est pas une passerelle, juste un serveur interne à mon réseau. Serveur multifonction j'en conviens (Samba, Bind, DHCPd, ProFTPd, Squid transparent et SSH)... Pour le reste ce serveur n'est pas dans une DMZ... mais le proxy n'est là que dans le but de faire des tests... Pour le reste je suis derrière une MNF... Merci encore !
lembal
Vice-Amiral
Vice-Amiral
 
Messages: 880
Inscrit le: 13 Jan 2003 01:00
Localisation: Paris

Messagepar tomtom » 07 Oct 2004 16:11

ouep..

mais une question que je me pose :

si ta debian n'est pas passerelle.. alors tu dois avoir sur ton mnf une redirection de port 80 vers le port 3128 de la debian, non ? C'est ca le proxy transparent.

Par contre, je vois pas l'interet de mettre la redirection que tu indiques en prerouting de 80 local vers 3128 local ??


c'est pas tres grave, juste une petite pointe de curiosité...

a+

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Suivant

Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité