Iptables, Synflood, tcpflags, etc...

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

Iptables, Synflood, tcpflags, etc...

Messagepar Fredish » 03 Mai 2004 20:41

Bonsoir à tous.

Encore une question...

Après avoir parcouru les posts à ce sujet, j'ai vu differentes choses pour empecher le scan de ports. Donc, j'ai repris quelque peu les lignes que j'ai trouvées à ce sujet pour les inserer dans mon script, et c'est là que le problème se pose. Voici les lignes en question:

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

Alors, j'ai bien les logs, mais apparemment tout est droppé. J'envois mais je ne recois rien. J'ai essayé de changer la limite de temps d'acces. J'ai une ligne isdn 64K; ca a peut-être un rapport. Par contre, quand je mets juste ces lignes-là:

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

ca fonctionne. Mais le fait est que je me demande si elles sont bien utiles en fait... Et j'ai bien peur, en plus de faire n'importe quoi avec la première méthode aussi. Bref, qu'est-ce qui ne va pas dans les premieres lignes? Si vous voulez mon script complet, je peux le mettre, mais j'ai préféré éviter vu qu'il est tout ce qu'il y a de plus classique, et que je ne voulais pas surcharger le post. Voilà.

P.S.: Je mets le lien que j'ai utilisé comme source, ca peut toujours servir: viewtopic.php?t=5271
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Fredish » 04 Mai 2004 16:26

Je dois poser des questions de noobie... trop technique pour le néophyte et agacante pour les experts... lol.

Pour le deuxième exemple, j'ai compris; contrairement à ce qu'on pourrait penser, l'accept introduit une restriction de plus, enfin je crois que c'est ca... Pour le premier, je vois toujours pas. Ca me semble être exactement la même chose, pourtant(à part le log).
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Fredish » 09 Mai 2004 12:43

N'ayant pas de réponses, je mets mon fichier complet. Si vous avez des commentaires ou des conseils dessus n'hésitez pas. Et puis j'espere que ca en aidera quelques-uns à faire leurs iptables de la façon la plus simple:

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

#Clean des règles de filtrage
iptables -F
iptables -X

#Connexions entrantes ignorées
iptables -P INPUT DROP

#Forward ignoré
iptables -P FORWARD DROP

#Connexions sortantes ignorées
iptables -P OUTPUT DROP

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

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

#Accepter le protocole ICMP
iptables -N ICMP
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 echo-request -m limit --limit 1/second -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-reply -m limit --limit 1/second -j ACCEPT

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

        #Mais accepter le ping sortant
iptables -A OUTPUT -p icmp -m state --state NEW -j ACCEPT

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

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

#Détection des Scans furtifs (en cours)
#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

#msn
iptables -A OUTPUT --protocol tcp --dport 1863 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 1863 -m state --state ESTABLISHED -j ACCEPT

#jabber
iptables -A OUTPUT --protocol tcp --dport 5222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 5222 -m state --state ESTABLISHED -j ACCEPT

#icq
iptables -A OUTPUT --protocol tcp --dport 5190 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 5190 -m state --state ESTABLISHED -j ACCEPT

#irc
iptables -A OUTPUT --protocol tcp --dport 6667 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 6667 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT

#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 -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

        #Mode passif
iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Mail
iptables -A OUTPUT -o ppp0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

#Log des paquets refusés
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

Entre parenthèse, je remercie tomtom pour l'icmp.

Pour le dns, il faut bien entendu y mettre ses propres serveurs. Eventuellemment, on peut faire la même chose pour les mails, amsi ce n'est pas vraiment necessaire vu qu'il y a la mention new. Je reviendrai, lorsque j'aurai le temps, y apporter des modifications, notamment pour pouvoir parler sur irc, et icq. Voilà :)
Dernière édition par Fredish le 07 Juin 2004 14:40, édité 5 fois au total.
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Fredish » 23 Mai 2004 01:28

J'ai rajouté quelques regles pour le chat et l'irc. Quant au dcc, j'ai pas encore essayé. Je verrai ca.
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Fredish » 31 Mai 2004 21:20

Le dcc fonctionne maintenant. :)

(enfin, en cas de non-utilisation du dcc ou du ftp , perso, je commente ces règles un peu trop permissives)
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Bismuth » 01 Juin 2004 11:18

Merci pour ton script fredish ca m'a bien aidé. Clair, commenté, tout ce qu'il faut !

Quant à ton problème de syn flood, je ne sais pas te répondre...
Avatar de l’utilisateur
Bismuth
Quartier Maître
Quartier Maître
 
Messages: 16
Inscrit le: 19 Juil 2003 00:00

Messagepar Fredish » 01 Juin 2004 15:16

Ben, en fait, il concentre toute la doc qu'on peut trouver sur le net pour les utilisations les plus courantes sur un poste de travail, donc c'est sympa, oui. :)

Sinon, on m'a un peu expliqué, c'etait évident que ca marchait pas pour le premier exemple, quelqu'un qui s'y connait en tcpt/ip voit tout de suite l'énorme erreur... Rien ne passe sauf les syn et les reset, pas de ack, etc (si je savais ce que c'etait... lol). Voilà quoi. Donc, pour faire un truc un peu plus poussé comme je voulais le faire, il faut beaucoup plus s'y connaître, et c'est dangereux de recopier ce type de script si on ne sait pas trop ce que ca fait, alors je laisse comme ca. :)
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Fredish » 05 Juin 2004 18:35

Bon, ben, j'ai compris finalement l'utilité des deux lignes dont je donne le lien dans mon premier post, là:

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

En fait, ca permet d'ouvrir un tout petit peu sans que ce soit dangereux, de sorte à ce qu'on puisse détecter effectivement les scans furtifs; mais le problème, c'est que là, comme il est, il n'a aucune utilité vu que je ne logge pas les paquets acceptés. C'est ce que j'avais essayé de faire avec la nouvelle valeur créée, bien maladroitement, il faut l'avouer... Mais bon, je suis sans connaissance de tout ca, alors, c'est pardonnable.

Donc, mon soucis serait de savoir comment loguer ces paquets-là sans loguer tout les paquets acceptés. Là, j'ai besoin d'aide, s'il-vous-plaît... :)
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Franck78 » 06 Juin 2004 00:31

Fredisk roi de l'autopost...!

Tu crées une nouvelle chaines qui ne fait que logguer mais pas trop!

iptables -N logging
iptables -A logging une limite qui fini par -J RETURN
iptables -A logging log --log-prfix "je log ce paquet:"

...

iptables -A INPUT condition -J logging



En gros tu balances dans 'logging' les paquets qui répondent à tes conditions. Logging logue ou pas selon la limite, si tu veux éviter d'inonder ton disque.


Bon la syntaxe n'est pas correcte, il est tard, mais la solution doit fonctionner.
Ne fait pas de -J ACCEPT dans 'logging'. C'est pas son rôle.
Dernière édition par Franck78 le 07 Juin 2004 00:21, édité 1 fois au total.
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar iraysyvalo » 06 Juin 2004 01:15

Ou est ta regle dcc, Fredish ?

Franck, pourquoi un -j RETURN ??
Bottom line
Avatar de l’utilisateur
iraysyvalo
Major
Major
 
Messages: 81
Inscrit le: 21 Déc 2003 01:00

Messagepar iraysyvalo » 06 Juin 2004 01:21

Fredish, je vois pas tres bien ce que tu veux faire reellement finalement ? Que veux-tu logger exactement et comment reconnaitre informellement mais clairement ;) ce que tu veux logguer (caracteristiques) ?
Bottom line
Avatar de l’utilisateur
iraysyvalo
Major
Major
 
Messages: 81
Inscrit le: 21 Déc 2003 01:00

Re: Iptables, Synflood, tcpflags, etc...

Messagepar iraysyvalo » 06 Juin 2004 01:24

Fredish a écrit: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

Alors, j'ai bien les logs, mais apparemment tout est droppé.


C'est normal si tout est droppé apres que tu les ais logges ... mais vois ma question precedente car je sais plus ce que tu veux vraiment faire ....
Bottom line
Avatar de l’utilisateur
iraysyvalo
Major
Major
 
Messages: 81
Inscrit le: 21 Déc 2003 01:00

Messagepar Fredish » 06 Juin 2004 01:42

Tout d'abord, je te remercie Franck, bien que je n'aie pas bien compris, je vais me pencher sur tes indications.

Sinon, que de questions iraysyvalo... Ben, ma foi, je voudrais logguer exactement les lignes que j'ai données mais sans logguer tout les paquets acceptés, parce que j'ai pas que ca à faire.

Les lignes pour le dcc:

iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Les deux dernieres lignes servent aussi à l'ftp passif. En fait, c'est tiré du tuto sur le site de léa, seulement chez moi, ca marchait pas, j'ai dû rajouter un related. Voilà quoi.

Donc, je regarde ta solution franck, mais si tu as le temps d'expliciter un peu ca demain, avec plaisir... :)
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Franck78 » 06 Juin 2004 01:52

prends ça comme un sous programme!

Lire:
http://www.faqs.org/docs/iptables/targe ... TURNTARGET
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar iraysyvalo » 06 Juin 2004 02:45

En termes plus clairs, Fred :D -> Ce que je veux dire, ton premier exemple du premier post fait ce qu'il est cense faire : il detecte ceratins evenements et il les droppe .... donc je vois pas trop ton probleme des posts suivants (dsl d'etre aussi lent :()


Merci Franck :)
Bottom line
Avatar de l’utilisateur
iraysyvalo
Major
Major
 
Messages: 81
Inscrit le: 21 Déc 2003 01:00

Suivant

Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Google [Bot] et 1 invité

cron