Iptables, j'y arrive pas...

Fredish Messages postés 373 Statut Membre -  
Fredish Messages postés 373 Statut Membre -
Bonsoir à tous.

Suite à l'installation d'une debian sur mon pc, j'ai décidé de me pencher quelque peu sur le formidable firewall qu'est iptables. Donc, après avoir regardé des tutos par-ci, par-là, je crée mes propres règles. Mais malheureusement rien ne marche, je comprends pas. Si ca ne vous dérange pas, je mets mon fichier, pour me dire qu'est-ce qui ne va pas:
# REMISE à ZERO des règles de filtrage
iptables -F
iptables -X

#Tout accepter en local
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Connexions entrantes ignorées
iptables -P INPUT DROP

#Forward ignoré
iptables -P FORWARD DROP

#Connexions sortantes ignorées
iptables -P OUTPUT DROP

#Accepter le DNS
iptables -A INPUT -s 195.170.0.2 --protocol udp --source-port 53 -j ACCEPT
iptables -A INPUT -s 195.170.2.1 --protocol udp --source-port 53 -j ACCEPT
iptables -A OUTPUT -s 195.170.0.2 --protocol udp --destination-port 53 -j ACCEPT
iptables -A OUTPUT -s 195.170.2.1 --protocol udp --destination-port 53 -j ACCEPT

#Accepter le protocole ICMP
iptables -N ICMP
iptables -A ICMP -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-request -j ACCEPT
iptables -A ICMP -p icmp --icmp-type source-quench -j ACCEPT
iptables -A ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT 
iptables -A ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A ICMP -p icmp --icmp-type parameter-problem -j ACCEPT

	#Virer le reste
iptables -A ICMP -j DROP
iptables -A INPUT -p icmp -j ICMP

#Ignorer le protocole IGMP
iptables -A INPUT -p igmp -j DROP

#Ignorer le protocole PIM
iptables -A INPUT -p pim -j DROP

#http
iptables -A INPUT --protocol tcp --source-port 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT --protocol tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#ftp
iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
	#Mode passif
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT


J'ai compris que l'ordre des regles est très important; est-ce parce que je bloque tout d'abord? Faut-il mettre les polices après? J'ai déjà essayé, mais ca marche pas. Bref, j'aimerais un avis exterieur. Merci.

P.S.: je précise quand même que la connexion marche bien, le firewall désactivé,je n'ai aucun problème pour surfer.

12 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut Fredish :)

Bon qu'est ce qui ne fonctionne pas exactement ?

PS: pout le DNS, je pense qu'il y a un soucis, ce qui pourai effectivement faire que rien ne fonctionne :)
195.170.0.2 et 195.170.2.1 sont sont des adresse à toi ?, ou se sont les DNS de ton FAI ?
En tout les cas, il doit y avoir un probleme au niveau des adresses source et destination.
De plus, le protocole pour dns, c'est UDP et TCP :)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
Fredish Messages postés 373 Statut Membre 19
 
Je ne peux pas acceder au web; quand je demande google, mozilla me dit qu'il ne peut pas le trouver. Suffit de stopper le firewall pour que ca remarche. J'ai pas essayé le ftp.

Les adresses citées plus haut sont bien celles de mon fai. J'avais pas pensé au tcp. Le fait est que sur la mandrake, je l'ai bloqué le dns en tcp, car je crois bien que ce n'est que pour les serveurs. Je vais essayer. Merci bien asevere.

Mais sinon, tout est bon à part ca?
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
D'un premier coup d'oeil rapide comme ça, ça semble correct...
Mais le symptomes que tu indique correspond bien au soucis de DNS :)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
essayes ça pour le DNS:
#Accepter le DNS
iptables -A INPUT -s 195.170.0.2 --protocol udp --source-port 53 -j ACCEPT
iptables -A INPUT -s 195.170.2.1 --protocol udp --source-port 53 -j ACCEPT
iptables -A OUTPUT -d 195.170.0.2 --protocol udp --destination-port 53 -j ACCEPT
iptables -A OUTPUT -d 195.170.2.1 --protocol udp --destination-port 53 -j ACCEPT

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Pour http, tu peux suprimmer les deux premiere lignes,

En fait non, tu enleves bien les deux premiere ligne, mais tu conserve le -m multiport dans les suivant, c'est bien deux ports que tu ouvres, pas un interval :)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fredish
 
Bon, ben, c'etait bien un soucis de dns, je comprends pas, c'est pourtant bien les adresses de mon fai. Ca évite d'ouvrir des ports un peu à n'importe qui, mais bon. Par contre, je confirme, pas besoin de tcp pour les requetes dns.

J'ai bien viré les deux premieres lignes en http, elles etaient de trop.

Je mets le fichier complet, pour ceux qui s'y essayent aussi; de toute facon, c'est tiré de divers tuto, lea, etc, et puis c'est encore à peaufiner; je veux mettre les serveurs dns de mon fai. et puis d'autres regles, pour le chat notamment:

# REMISE à ZERO des règles de filtrage
iptables -F
iptables -X

#Tout accepter en local
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Connexions entrantes ignorées
iptables -P INPUT DROP

#Forward ignoré
iptables -P FORWARD DROP

#Connexions sortantes ignorées
iptables -P OUTPUT DROP

#Accepter le DNS
iptables -A INPUT --protocol udp --source-port 53 -j ACCEPT
iptables -A OUTPUT--protocol udp --destination-port 53 -j ACCEPT

#Accepter le protocole ICMP
iptables -N ICMP
iptables -A ICMP -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-request -j ACCEPT
iptables -A ICMP -p icmp --icmp-type source-quench -j ACCEPT
iptables -A ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT 
iptables -A ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A ICMP -p icmp --icmp-type parameter-problem -j ACCEPT

	#Virer le reste
iptables -A ICMP -j DROP
iptables -A INPUT -p icmp -j ICMP

#Ignorer le protocole IGMP
iptables -A INPUT -p igmp -j DROP

#Ignorer le protocole PIM
iptables -A INPUT -p pim -j DROP

#http
iptables -A INPUT --protocol tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#ftp
iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
	#Mode passif
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT


Par contre, je comprends pas trop comment iptables lit le fichier, de bas en haut ou de haut en bas? Parce que si c'est le cas, il bloquerait tout depuis le début, non?

En tout cas, je te remercie bien asevere; quand est-ce que je pourrais te rendre la pareille moi aussi?

:)
0
Fredish Messages postés 373 Statut Membre 19
 
Il y a un espace pour le dns, là "OUTPUT --protocol".

C'est bien de haut en bas. Donc ca doit se lire, "tout refuser sauf...". Mais je croyais qu'iptables appliquait à un paquet la premiere regle qu'il rencontrait.
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut,
En fait, une fois les tables chargée,
un paquet arrive, il passe par la table INPUT, il passe par toute les chaines, dés qu'il y a corresspondance, il applique la politique corresspondante, et s'il n'y en a aucune, il applique la politique par défaut. :o)

Pour les DNS, tu autorisait bien ce qui venait des serveurs, mais tu bloquai l'envoie de requete de ton PC, vers ces serveurs. Dans les deux chaines OUPUT du DNS, il fallait metre le IP en tant que destination (-d) et non sources (-s)

voii voilou! @++
"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
Fredish Messages postés 373 Statut Membre 19 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
Donc, on peut à peu près mettre les regles dans l'ordre qu'on veut, dans ce cas; je me trompe?
0
Fredish Messages postés 373 Statut Membre 19
 
Bon, ben, ca marche avec le "-d". J'avais essayé hier et marchait pas; je devais être fatigué...

Plus qu'à logger les paquets refusés, deux ou trois règles encore pour les mails, et tout le bazar, et j'aurais un firewall efficace normalement. Merci de l'aide :)
0
Fredish Messages postés 373 Statut Membre 19
 
Bonjour.

Il faudrait peut-être changer le titre de ce post; maintenant, ce serait plus, "iptables, j'y arrive mais j'ai des questions"...

Bref, j'ai ajouté deux lignes à mon fichier en relation avec les flags tcp:

iptables -A INPUT -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/second -j ACCEPT

et j'aimerais savoir si ca cohabite bien avec les regles d'acceptations normales pour le surf que j'ai mises plus haut, c'est-à-dire:

iptables -A INPUT --protocol tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Le fait que je n'ai pas précisé de limites pour le surf est en contradiction avec les deux lignes que j'ai ajoutées, ou ca n'a rien à voir et ajoute une restriction?

J'ai peur de pas être très très clair mais c'est que j'ai un peu de mal avec iptables. Enfin, même si vous n'avez pas compris (ou toi, asevere; parce que c'est bien souvent toi qui m'explique), pouvez-vous me dire au moins si ces deux lignes ont leur utilité... lol.
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut Fredish!

Ben ça cohabitte oui...
Enfin, dison que la premiere des novelles regle, tu autorise les conexion a ta machine dans la limite de une connexion par seconde.
La deuxieme, tu autorises les tcp-reset, toujours 1/seconde, la j'ai un doute quand à l'utilitée de la régle, ou du moins de la limite de 'débit' sur la regle.

Etant donné que quand tu surf, c'est toi qui te connecte, et non quelqu'un qui se connecte chez toi, ce n'est pas contradictoire, mais est-ce bien ce que tu veux ?

++
"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
Fredish Messages postés 373 Statut Membre 19
 
Salut asevere.

Bon, ben ca va alors, j'ai pas fait trop n'importe quoi :)

En fait, j'aimerais limiter les scans depuis l'internet. C'est bien ce que je me disais, la seconde n'est peut-être pas très utile.

Et si je mets," iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/second -j ACCEPT", ce sera exactement la même chose que la premiere règle mais en plus développé, non?

Tiens, je te mets la source de mes interrogations, tu comprendras:
http://forums.ixus.net/viewtopic.php?t=5271
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
HA ? oui effectivement vu sous cet angle là, la seconde regle peut servir :o)

Sinon, --syn et un raccourcis pour --tcp-flags SYN,ACK,FIN,RST SYN donc les deux on exactement le même effet...
Aprés pour des questions de lisibilité, la premiere forme peut-etre discutable :)


"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
Fredish Messages postés 373 Statut Membre 19
 
Bon, ben ca va, j'ai compris alors.

Une dernière question sur les logs. Voilà, j'ai mis ça, à la fin de mon script:

iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES:tout:IGNORE] : '
iptables -A LOG_DROP -j DROP
iptables -A INPUT -p tcp -j LOG_DROP
iptables -A OUTPUT -p tcp -j LOG_DROP

en m'aidant de ce que j'ai trouvé sur le net. Mais je ne suis pas sûr de comprendre les 3 dernières lignes; quoique les deux dernières doivent servir à relier la valeur LOG_DROP à INPUT et OUTPUT. En tout cas, les logs ont l'air de fonctionner. Mais je me demande, parce que les scripts que j'ai pu voir ailleurs ne finissent pas pareil que le mien mais finissent par droper encore une fois les paquets avec un -A(je vois pas trop l'interêt vu que c'est précisé dans la police).
0
Fredish Messages postés 373 Statut Membre 19
 
Bon, en fait, j'ai compris, enfin je crois.

Le "-j DROP" doit servir à montrer qu'on ne veut loguer que les paquets droppés.

Bon, problème résolu.

Autre question relative aux lignes précédentes. Est-ce que ca:
iptables -N SYN
iptables -A SYN -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A SYN -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/second -j ACCEPT
iptables -A SYN -j LOG --log-prefix "IPTABLES:SYN:DROP"
iptables -A SYN -j DROP
iptables -A INPUT -p tcp -j SYN 


est pareil à ceci(à part les logs, bien sûr):
iptables -A INPUT -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/second -j ACCEPT 


? Parce qu'en fait, il n'y a que la deuxième solution qui fonctionne chez moi. Et je comprends pas, parce que ca me semble exactement la même chose. Enfin, bref.
0
Fredish Messages postés 373 Statut Membre 19
 
Bon, ben, j'ai compris finalement... Pour celui qui s'y connait un tant soit peu en tcp/ip, on voit tout de suite que les ack et tout le tralala ne peuvent pas passer donc, c'etait nul. Quand à la réelle fonction des deux règles dans ce script, ca me laisse perplexe, quand même.; bien que je soupconne une toute petite ouverture qui sert à détecter justement les scans furtifs, sans que cela soit dangereux.

En attendant, je mets mon script complet dans un nouveau sujet pour qu'il soit tout beau, tout propre, et que ca puisse aider ceux qui commence. :)
0
Fredish Messages postés 373 Statut Membre 19
 
Bon, c'est pas tout d'avoir compris, mais encore il faut que ces petites lignes aient une utilité. Car elles n'en ont pas si on ne logue pas ce qui passe par là, vu que c'est pour effectivement détecter les scans furtifs.

Donc, je pose la question à toute personne qui pourrait m'aider: comment loguer ces paquets-là, sans loguer tout les paquets acceptés(parce que ca prend trop de place)?
0