Problème étrange avec iptables -HELP NEEDED - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 25-07-2002 à 11:41:55
Je peux te mettre mon script si tu veux. Chez moi j'ai un serveur Samba aussi, le meme que le serveur Web et FTp. Si ca peut t'aider. TOut marche nickel en tout cas.
Marsh Posté le 25-07-2002 à 11:48:35
Dis je vois pas de regles concernant les nouvelles connexions aux ports 25 et 110 ? C'est normal ?
Marsh Posté le 25-07-2002 à 11:53:15
Et pour tes paquets Samba je vois ps de regles sur OUTPUT seulement sur INPUT c'est normal aussi ?
Marsh Posté le 25-07-2002 à 12:53:05
Effectivement, je ne vois pas non plus de règle de sortie pour le samba. Etrange, d'autant plus qe ça marche comme ça.
Pour le mail j'accepte en sortie le port 110 (pop). Faut-il rajouter le 25? Je test.
Sinon, oui je veux bien zieuter ton script, en particulier pour samba.
Donc peut-être ai-je oublié des règles, mais alors c'est comme le dhcp, c'est accepté sans ouvrir les ports...C'est une vraie passoire ce firewall!!!
Marsh Posté le 25-07-2002 à 13:07:18
Bon j'ai testé en rajoutant un -sport 25 sur la chaine OUTPUT du LAN. Aucun changement. C'était d'ailleurs prévisible puisque le problème vient certainement de la chaine INPUT. Si je la mets sur ACCEPT, tout se déroule normalement.
C'est sûrement une broutille, mais je suis incapable de la voir car cela fait 2 jours que je relis ce script toutes les 10 minutes. J'ai donc besoin de votre recul pour trouver la gaffe.
Marsh Posté le 25-07-2002 à 13:13:33
bobor a écrit a écrit : Bon j'ai testé en rajoutant un -sport 25 sur la chaine OUTPUT du LAN. Aucun changement. C'était d'ailleurs prévisible puisque le problème vient certainement de la chaine INPUT. Si je la mets sur ACCEPT, tout se déroule normalement. C'est sûrement une broutille, mais je suis incapable de la voir car cela fait 2 jours que je relis ce script toutes les 10 minutes. J'ai donc besoin de votre recul pour trouver la gaffe. |
Voila mon script. Je n'ai rien fait de particulier pour Samba car il est sur le serveur et non pas sur le Firewll qui est une machine a part et qui ne fait que Firewall/Routeur mais si ca peut t'aider.
|
Marsh Posté le 25-07-2002 à 14:28:54
je te remercie beaucoup. Cependant qq chose m'étonne. Tu laisses l'accès à ton DNS depuis l'extérieur? Alors que tu fais du DNAT?
Par ailleurs comment récupères-tu tes mails car je ne vois pas ouverts les ports pop3.
Ou alors c'est requête sur port 25 et retour sur 110?
Marsh Posté le 25-07-2002 à 15:04:59
J'ai pas de serveur DNS. Mais apparemment le serveur FTP a besooin de se connecter a mon seerveur DNS distant (celui de mon FAI ) pour la resolution de nom. Et il faut bien que ma passerelle puisse se connecter au serveur DNS de mon FAI.
Je n'ai pas de soft pour les mails sur mon serveur. J'ai une machine avec Windows 2000 et une autre connection cable sur laquelle je fais tout le reste. Le serveur ne fait que serveur et le Firewall que Firewall (et routeur aussi ). Mais ca vas pas durer, je ne vais garder que la connection ADSL, le cable s'arrete dans deux mois. Je serais donc oblige de configurer l'acces pop3 a ce moment la.
Parcontre dans ton cas, je pense que tu n'as meme pas besoin de t'en occuper puisque c'est le forwarding qui va faire transiter les infos. Quand tu voudras retirer tes mails c'est la machine derriere le firewall qui va initier la connection, il suffit donc que dans ta chaine forward tu autorises les connections avec pour source l'adresse IP de ta machine (ou l'adressage du reseau genre 192.168.0.0/24 pour que ca fonctionne avec n'importe quelle machine dans cette tranche d'adresse), comme interface (-i) la carte reseau par laquelle entre la demande de connection et l'interface parlaquelle ca sort, sans rien de plus ni port ni rien. Normalement tout ce qui vient du reseau local et qui va vers l'exterieur est sur. Apres la connection sera geree par la regle ESTABLISHED,RELATED. En gros ca donne :
iptables -A FORWARD -s $LAN_IP -i $LAN_IFACEX -o $NET_IFACE -j ACCEPT
En ne precisant ni les ports ni le protocole tout sera honore (:jap et sera ensuite relaye par ESTABLISHED,RELATED.
Regarde bien dans tes regles, tu ne traites jamais tes ports 25 et 110 dans la chaine FORWARD, hors vu que tu utilises le Forwarding, c'est par cette chaine la que tes demandes de connection a ton serveur de mail passent. Les chaine INPUT et OUTPUT ne concernent que la machine elle meme.
Ca ca marche si tu as une machine derriere un Firewalll. Je t'avouerai que je viens de relire ta configuration et je ne comprends pas tres bien. Tu peux faire un schema ?
Marsh Posté le 25-07-2002 à 15:55:08
Tout d'abord, c'est le serveur qui se connecte au FAI, et pas le LAN. Le LAN se connecte ensuite au serveur (postfix/fetchmail) donc c'est dans la chaine INPUT/OUTPUT et non FORWARD.
Mon intention première étant de faire un firewall classique sur les ports. J'avoue ne pas connaitre la fiabilité/vulnérabilité de ne se fier qu'au ESTABLISHED,RELATED. D'autant plus que cela demande pas mal de ressources à la machine. Donc si toute la sécurité est fondée dessus, j'avoue être un peu douteux. (mais mon expérience en la matière est...vraiment minime ).
Deuxièmement, j'ai refait entièrement mon script pour faire qq chose de plus logique. Je me suis donc fortement inspiré du tien. Par contre, peux tu m'expliquer les règles de type:
Code :
|
J'ai essayé de les appliquer, mais cela bloque mon accès au net.
Et pour finir qu'est-ce que le syn flood???
Bon je fignole le tout et je posterai une version intermédiaire sur le forum.
PS: dans le premier post j'expliquais les objectifs à atteindre sur les 4 sous-réseaux. Et cela ne peux passer que par le filtrage de ports. D'où ma quête de règles qui fonctionnent sur les ports.
Marsh Posté le 25-07-2002 à 16:04:26
Bon autant pour moi, cela ne bloque pas internet. J'avais oublié un sens sur le forward. Mais tu peux quand même m'expliquer
Marsh Posté le 25-07-2002 à 17:54:25
Bon je touche au but. Ce qui plantait tout était le protocole auth. J'ai trouvé l'astuce en observant le traffic réseau sous etherape.
Je vous livre donc mon script qui commence à être assez abouti. Cependant pas moyen de faire du ftp. Là faudrait qu'on m'indique la voie à suivre. J'ai tout ouvert sur les ports 20 et 21 et rien. Le seul moyen est d'accepter en forward toutes les entrées et sorties.
Code :
|
Marsh Posté le 25-07-2002 à 19:23:23
bobor a écrit a écrit : Tout d'abord, c'est le serveur qui se connecte au FAI, et pas le LAN. Le LAN se connecte ensuite au serveur (postfix/fetchmail) donc c'est dans la chaine INPUT/OUTPUT et non FORWARD. Mon intention première étant de faire un firewall classique sur les ports. J'avoue ne pas connaitre la fiabilité/vulnérabilité de ne se fier qu'au ESTABLISHED,RELATED. D'autant plus que cela demande pas mal de ressources à la machine. Donc si toute la sécurité est fondée dessus, j'avoue être un peu douteux. (mais mon expérience en la matière est...vraiment minime ). Deuxièmement, j'ai refait entièrement mon script pour faire qq chose de plus logique. Je me suis donc fortement inspiré du tien. Par contre, peux tu m'expliquer les règles de type:
|
Desole j'me suis endomi devant le PC .
Pour les premieres regles, j'ai trouve ca dans le hors serie numero 9 de Linux Mag, apparement si tous les flags ou aucun flag n'est active c'est pas normal et c'est tres certainement du a un scan de port.
Pour le syn-flood, j'ai trouve ca dans le how-to netfilter.
PS : J'ai toujours rien compris a la configuration de ton reseau ??? T'as 4 interfaces reseau sur le meme PC ou quoi ?
Marsh Posté le 25-07-2002 à 20:44:33
oui 4 interfaces:
- eth0 de confiance: accès extérieur et aux ressources internes
- eth1 de confiance: accès aux ressources internes et rien à l'extérieur
- eth2: accès extérieur et accès limité aux ressources internes
- eth3 non sûr (WIFI): accès à certaines ressources internes
D'où la nécessité de faire un filtrage sur les ports. Maintenant, DNS, smtp, pop, http, ...marchent sauf le ftp. Là je vois pas, surtout que je ne maîtrise pas trop l'astuce avec le mode passif, les modules contrack...Donc là HELP.
Marsh Posté le 25-07-2002 à 21:01:44
Iptables est dans le noyau ou en modules ?
Marsh Posté le 25-07-2002 à 22:19:50
Faut que tu lod le module pour le FTP alors je crois. Y'en a deux ip_nat_ftp et ip_conntrack_ftp je sais pas lequelk c'est, moi j'ai tout mis dans le noyau, il conseillait ca dans Linux Mag pour etre sur dans le cas ou un module se moad mal et te cree un trou de securite. En plus t'as pas a te faire chier avec les modules du coup.
Marsh Posté le 25-07-2002 à 22:53:56
ils sont bien chargés cf script. Mais le ftp il veut pas marcher...
Marsh Posté le 25-07-2002 à 23:47:54
Je vois pas ou tu charges les modules dans ton script ?
Parcontre juste un detail. Dans Linux Mag, ils conseillaient de n'activer la passerelle (le forwarding) qu'une fois toutes les regles etablies.
Marsh Posté le 25-07-2002 à 23:50:09
j'ai coupé dans ma copie corrigée, mais tu peux les voir à l'ouverture du post sur le premier script
Marsh Posté le 25-07-2002 à 23:52:58
Ha ouais OK. Je vais essayer de regarder pourquoi ton FTP marche pas.
Parcontre tu loggues rien, ca va pas etre facile de touver ce qui va pas
Marsh Posté le 25-07-2002 à 23:55:22
le ftp se logue en anonymous, passe en PASV puis plus rien. Donc c'est les réponses qui ne doivent pas venir je pense
En tout cas merci pour ton investissement!
Marsh Posté le 26-07-2002 à 00:00:29
je crois que demain, le sujet du jour sera SQUID. Je pensais trouver plus facilement de l'info dessus mais c'est pas évident...
Marsh Posté le 26-07-2002 à 00:40:45
bobor a écrit a écrit : le ftp se logue en anonymous, passe en PASV puis plus rien. Donc c'est les réponses qui ne doivent pas venir je pense En tout cas merci pour ton investissement! |
Y'a pas de quoi Zzozo a fait la meme chose pour moi hier jusqu'a 4 heures du amtin, parceque j'arrivais pas non plus a acceder a mon FTP. A 4 heures je me suis apercu que j'avais mis 198.168.0.1 dans la chaine PREROUTING pour le DNAT des ports FTP a la place de 192.168.0.1. On a passe la nuit a chercher pourquoi ca marchait pas alors que c'etait juste une faute dans l'IP, sinon les regles marchaient nickel .
A mon tour maintenant de te filer un coup de main, en plus c'est tout frais
Marsh Posté le 26-07-2002 à 00:44:30
bobor a écrit a écrit : oui 4 interfaces: - eth0 de confiance: accès extérieur et aux ressources internes - eth1 de confiance: accès aux ressources internes et rien à l'extérieur - eth2: accès extérieur et accès limité aux ressources internes - eth3 non sûr (WIFI): accès à certaines ressources internes D'où la nécessité de faire un filtrage sur les ports. Maintenant, DNS, smtp, pop, http, ...marchent sauf le ftp. Là je vois pas, surtout que je ne maîtrise pas trop l'astuce avec le mode passif, les modules contrack...Donc là HELP. |
Tu peux essayer de PREROUTER les connections qui arrivent sur l'interface externe (-s $INET_IP -i $INET_IFACE -p tcp -dport 20:21) sur les ports 20 et 21 de l'interface sur laquelle ton serveur FTP ecoute, comme ca tu n'auras pas de problemes pour le passif ou l'actif normalement c'est le forwarding qui va s'en osccuper (dixit Zzozo hier )
Par exemple si ton serveur FTP attend les connections sur eth1 ca donne
$IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 20 -j DNAT --to $LAN_IP1:20
$IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 21 -j DNAT --to $LAN_IP1:21
Essaies ca
Marsh Posté le 26-07-2002 à 01:08:39
Gaellick a écrit a écrit : Tu peux essayer de PREROUTER les connections qui arrivent sur l'interface externe (-s $INET_IP -i $INET_IFACE -p tcp -dport 20:21) sur les ports 20 et 21 de l'interface sur laquelle ton serveur FTP ecoute, comme ca tu n'auras pas de problemes pour le passif ou l'actif normalement c'est le forwarding qui va s'en osccuper (dixit Zzozo hier ) Par exemple si ton serveur FTP attend les connections sur eth1 ca donne $IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 20 -j DNAT --to $LAN_IP1:20 $IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 21 -j DNAT --to $LAN_IP1:21 Essaies ca |
Le forwarding ET SURTOUT les règles ESTABLISHED, RELATED ... très très importantes ces règles pour tous ces protocoles qui renégocient leurs ports de travail à un moment donné ... d'ailleurs vaut mieux les mettre en première .. juste après l'antispoofing et autres joyeusetés du même genre ...
Comme ca les paquets de ces connexions là sont traitées rapidement (forwardés rapidement notament) car ils n'ont pas bpp de règles à matcher ...
Ca simplifie bcp le travail avec les fw ...
Marsh Posté le 26-07-2002 à 01:49:32
Tu vois tes conseils me permettent d'aider les autres maintenant
D'alleurs tu peux m'expiquer ce qu'est le spoofing et le syn-flood ?
Marsh Posté le 26-07-2002 à 01:51:05
Gaellick a écrit a écrit : Tu vois tes conseils me permettent d'aider les autres maintenant |
Ben cé le but du jeu ...
Si chaque personne que j'aide en aide une, au moins, à son tour ... y'aura plus que des cracks sous linux ...
Marsh Posté le 26-07-2002 à 01:52:35
C'est clair.
Bon bah moi pas encore ete me coucher depuis qu'on s'est quitte hier
Marsh Posté le 26-07-2002 à 01:55:47
Gaellick a écrit a écrit : C'est clair. Bon bah moi pas encore ete me coucher depuis qu'on s'est quitte hier |
Heink ???
Mé té fou ... cé important le sommeil ...
Marsh Posté le 26-07-2002 à 01:59:29
Yaisse j'y cours la
Marsh Posté le 26-07-2002 à 07:33:40
Gaellick a écrit a écrit : Tu vois tes conseils me permettent d'aider les autres maintenant D'alleurs tu peux m'expiquer ce qu'est le spoofing et le syn-flood ? |
Rapidement alors ... :
- l'IP spoofing ca consite à fabriquer des paquets IP avec une fausse adresse source (un adresse différente de celle de l'expéditeur en tout cas...) ... Ca peut être utilisé dans pas mal de techniques, c'est surtout un "outil" au service d'autres types d'attaques, comme le SYN flooding par exemple ...
- le SYN Flooding, c'est une attaque du type DoS (Denial of Service, qui vise à interdire l'accès à un service voire une machine entière via un le réseau et le protocole TCP/IP ...).
Ca tire parti d'une caractéristique de TCP/IP ainsi que de son implémentation existante dans les différents OS existants ...
En gros, un OS ne peut avoir à un moment donné qu'un nombre de connections "semi-ouvertes" (cé limité par les ressources de la machine cible mais surtout par le paramétrage de l'implémentation de TCP/IP dans l'OS). Le SYN Flooding consiste à saturer la machine cible en connections "semi-ouvertes" afin qu'elle ne puisse plus accepter d'autre connexions ... et donc interdire le fonctionnement des services normaux tels que les serveurs Web, ftp, etc ... qu'héberge la machine cible. La plupart (je dis bien la plupart ... ) des OS ont maintenant une implémentation de TCP/IP corrigée pour éviter le SYN flooding (notamment Linux mais je me rappelle plus à partir de quel noyau cé, 2.0.30 je crois ... cé l'option TCP SYN COOKIES pour ceux qui compilent leurs noyaux ) ... et généralement les firewalls sont configurés pour dropper les paquets utilisés dans le SYN flooding (enfin les paquets les plus "grossiers", on peut pas tous hélas ... ) ....
Marsh Posté le 26-07-2002 à 10:17:49
bojour à tous mais j'avais également fait une nuit blanche la nuit précédente donc me revoilà.
Alors pour le ftp, actuellement, je ne me suis pas occupé de la partie serveur interne donc du DNAT. Je cherche seulement à accéder aux serveurs externes. Tu peux voir dans le script quelles sont les régles mises en places. Mais cela ne marche pas.
merci de vos réponses!
Marsh Posté le 26-07-2002 à 10:24:22
bobor a écrit a écrit : bojour à tous mais j'avais également fait une nuit blanche la nuit précédente donc me revoilà. Alors pour le ftp, actuellement, je ne me suis pas occupé de la partie serveur interne donc du DNAT. Je cherche seulement à accéder aux serveurs externes. Tu peux voir dans le script quelles sont les régles mises en places. Mais cela ne marche pas. merci de vos réponses! |
Changes ca :
#lan vers inet
$IPTABLES -A tcp_lan_inet -p TCP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A tcp_lan_inet -p TCP --dport 21 -j ACCEPT #ftp
par ca :
#lan vers inet
$IPTABLES -A tcp_lan_inet -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A tcp_lan_inet -p TCP -m multiport --dport 80,21 -m state --state NEW -j ACCEPT #Ftp,Http
Marsh Posté le 26-07-2002 à 10:55:18
j'ai essayé mais cela ne marche pas. Ma station est bien configuré en mode passif.
Marsh Posté le 26-07-2002 à 10:56:47
bobor a écrit a écrit : j'ai essayé mais cela ne marche pas. Ma station est bien configuré en mode passif. |
T'as des logs du fw ?
EDIT : Quels sont les modules que tu charges avant l'activation des règles via iptables ?
Marsh Posté le 26-07-2002 à 11:17:20
A quoi elle sert cette règle ? :
$IPTABLES -t nat -A POSTROUTING -s $LO_IP --o $INET_IFACE -j MASQUERADE
Marsh Posté le 26-07-2002 à 11:26:01
bah c'est pour NATé le serveur lorsqu'il est utilisé comme station. C'est pas bon? En tout cas ça marche
J'ai rien trouvé dans les logs kernel. Où je peux trouver les logs spécifiques iptables, sachant que je n'ai pas de règles dans mon script? (Mandrake)
Marsh Posté le 26-07-2002 à 11:27:07
je charge pratiquement tous les modules cf script début du post. An particulier ip_nat_ftp et contrack_ftp
Marsh Posté le 26-07-2002 à 11:53:47
bobor a écrit a écrit : bah c'est pour NATé le serveur lorsqu'il est utilisé comme station. C'est pas bon? En tout cas ça marche J'ai rien trouvé dans les logs kernel. Où je peux trouver les logs spécifiques iptables, sachant que je n'ai pas de règles dans mon script? (Mandrake) |
Ben rajoutes ca pour logger, sinon ca va etre emmerdant pour savoir ce qui va pas :
- à la fin des chaines INPUT :
iptables -A INPUT -j CatchAll
- à la fin des chaines OUTPUT :
$IPTABLES -A OUTPUT -j CatchAll
- à la fin des chaines FORWARD :
$IPTABLES -A FORWARD -j CatchAll
- Au moment de la création des chaines personalisée, rajoute ca:
$IPTABLES -N CatchAll
- Et juste après la création des chaines personnalisées :
$IPTABLES -A CatchAll -j LOG --log-level info --log-prefix "FW DROP " -m limit --limit 40/minute
$IPTABLES -A CatchAll -j DROP
Marsh Posté le 25-07-2002 à 11:34:29
J'avais déjà posté pour un problème sur iptables. Je refais un post pour partir sur des bases neuves.
Problèmes constatés:
- lorsque je fais un send/receive depuis mon client mail de ma station vers les serveurs pop et smtp de mon serveur, cela fonctionne mais cela prends près d'une minute. Donc quelques fois il y a un échec en raison du time out. Je ne vois pas d'où viens le problème. Je sais seulement que cela vient de la chaine INPUT car lorsque je mets la politique ACCEPT par défaut sur cette chaine, tout fonctionne normalement (send/receive en moins d'une seconde). Je constate le même effet pervers lorsque j'accède aux ressources samba. Au moment de l'authentification, cela prend beaucoup de temps.
- le DHCP fonctionne alors que les ports ne sont pas ouverts...pourquoi?
Voici le script:
EDIT:
j'ai retiré: $IPTABLES -A OUTPUT -p ALL -j ACCEPT que j'avais mis pour faire des tests.
Message édité par bobor le 25-07-2002 à 13:01:08