Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/08/2006, à 19:13

Saiyan

Question règles IPTables - Syn-flood et Spoofing ?

Bonjour à tous,

Depuis quelques jours, je tente de me faire mes règles IPTables pour mon serveur (sur une ubuntu 5.1).

J'ai a peu près terminé, cependant il me reste une question... à propos du Syn-flood et du Spoofing.

J'ai fait quelques recherches, mais je ne suis pas du tout sûr que ce que j'ai mis soit bon.

Peut être que quelqu'un pourra me renseigner ?

Voici mes règles :

# Vider les tables
iptables -t filter -F
iptables -t filter -X

# Autoriser SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP 

# Autoriser toute connexion sortante
iptables -t filter -P OUTPUT ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT

# Refuser ping
iptables -t filter -A INPUT -p icmp -j DROP

# Autoriser ping monitoring et monitoring HTTP
iptables -t filter -A INPUT -p icmp -s 88.191.254.20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -s 88.191.254.20 -j ACCEPT

# HTTP, HTTPS, Webmin, VHCS
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport xxxx -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport xxxx -j ACCEPT

# FTP
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT

# FTP passif
iptables -A INPUT -i eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT

# Input restants : Mails et DNS
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT

# A vérifier... pas sûr !

# Syn-flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -J ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -J ACCEPT

# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP

Merci de votre aide !

Dernière modification par Saiyan (Le 01/08/2006, à 19:13)

Hors ligne

#2 Le 01/08/2006, à 22:13

dexinou

Re : Question règles IPTables - Syn-flood et Spoofing ?

Voici une sorte de 'tuto' destiné à l'installation primaire d'un pare-feu (ou parefeu) sous Debian.
Ce qui suit n'a pas pour objectif de renseigner les utilisateurs accomplis, qui n'y apprendront rien de plus que ce qu'ils savent mais est plutôt dirigé vers les débutants, avec un maximum d'explications.
Préambule :
En principe, le paquet 'iptables' est installé d'origine sous Debian mais si ce n'était pas le cas, rien de plus simple à faire :
apt-get install iptables
Dans ce 'tuto', la majeure partie des commandes se feront à partir de la console (petite télé noire qui sert, entre-autres, à entrer ces commandes).
Ces commandes seront entrées sous la forme :
login@nom_machine:~$ sudo la_commande_à_taper
mais par la suite, je n'écrirai que la commande proprement dite, il vous appartiendra donc de la faire précéder par 'sudo'.
Il est préférable d'utiliser 'sudo' plutôt que de taper en tant que 'root', pour des raisons de sécurité mais il est possible que certaines commandes ne soient pas prises en compte de cette façon. Il vous faudra alors taper en tant que 'root' ( su et mot de passe = # au lieu de $ )
Si vous n'avez pas installé 'sudo', faites une recherche sur le forum d'aide ou posez la question.

(1) Installation :

A l'origine, le pare-feu est installé mais il est ouvert à toutes les communications, c'est en quelque sorte, une 'passoire' et de ce fait, il ne rempli pas ses objectifs.
Dans un premier temps, il va nous falloir installer un 'script' qui sera le "donneur d'ordre"
Créez le fichier 'mon_parefeu' :
touch /etc/init.d/mon_parefeu
Rendez ce fichier (pour l'instant, vide) exécutable avec :
chmod +x /etc/init.d/mon_parefeu
Ouvrez kedit (ou tout autre traitement de texte) à partir de la console pour être 'root' :
kedit
Dans kedit, ouvrez le fichier /etc/init.d/mon_parefeu
Collez-y le code ci-dessous :

Code:

#!/bin/sh
# chargement/déchargement d'iptables

case "$1" in
'start')
/sbin/iptables-restore < /etc/config_parefeu
RETVAL=$?
;;
'stop')
/sbin/iptables-save > /etc/config_parefeu
RETVAL=$?
;;
'clean')
# clean le parefeu pendant que la machine tourne
# ça peut être une faille de sécurite si on l'exécute lors de l'extinction avant l'arrêt des interfaces
# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l'extinction
/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
'restart')
$0 stop && $0 start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop | restart | clean}"
RETVAL=1
;;
esac
exit $RETVAL

Sauvegardez et fermez kedit
Retournez à la console pour réinitialiser le pare-feu à blanc avec :
/etc/init.d/mon_parefeu clean

(2) Configuration :

Tapez les séquences suivantes (une ligne à la fois suivi de 'Entrée')

iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Sauvegardez le pare-feu une première fois (simulation d'un signal d'arrêt) avec :
/etc/init.d/mon_parefeu stop
Activez 'mon_parefeu' pour les différents runlevel avec :
update-rc.d mon_parefeu defaults 19 21

(3) Modifications

Nous allons aborder maintenant la façon de modifier notre pare-feu
-- Ajouter une règle :
- on connaît le nom du port à autoriser, taper :
iptables -A INPUT -p tcp -m tcp --dport www -J ACCEPT (où 'www' est le nom du serveur http)
- on connaît le numéro du port, taper :
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT (où '80' est le N° de ce même http)
Pour connaître le numéro d'un grand nombre de port, tapez :
less /etc/services

Pour les explications des différentes options, vous pourrez avantageusement consulter :
man iptables
ou
iptables --help

-- Enlever une règle :
taper ce qui suit pour connaître le numéro de ligne de cette règle
iptables -L --line-numbers
puis taper
iptables -D INPUT N° (où 'N°' doit être le chiffre ou nombre en tête de la ligne à supprimer)

Vous pourrez modifier l'exemple présenté plus haut à votre convenance (ajouter ou retirer ce que vous voudrez).
Toutefois, il convient de ne pas supprimer les trois lignes suivantes :

-A INPUT -i lo -j ACCEPT ((C'est la communication du noyau avec les services réseau éventuels, et c'est critique)).
-A INPUT -p icmp -j DROP ((Ça permet d'éviter d'être detectable par un ping, face aux attaques, mais ce n'est pas critique)).
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ((ça permet le retour vers la machine des infos demandées auprès des sites web. En l'absence de cette règle, la navigation deviendrait difficile. C'est relativement important )).

Après chaque modification, il vous faudra sauvegarder de nouveau votre pare-feu avec :
/etc/init.d/mon_parefeu stop
ou attendre un redémarrage qui fera la même chose automatiquement.
Si vous voulez revenir à l'état que vous aviez au présent démarrage, vous tapez :
/etc/init.d/mon_parefeu start
Si vous voulez revenir à un pare-feu vierge, vous tapez :
/etc/init.d/mon_parefeu clean

Ce qui précède concerne la partie 'Filter' d'un pare-feu. Ça assure un minimum de protection mais c'est loin d'être exhaustif.
Je laisse à d'autres, plus 'pointus' que moi, le soin d'expliquer les parties plus complexes, telles que Raw, Mangle et Nat.
J'espère que ce 'tuto', encore une fois réservé aux débutants, vous aura permis de mieux appréhender le pare-feu sous Debian.
L'aide de tous les amis de ce forum et particulièrement celle du Papa de Lillo, a été indispensable à sa rédaction. Merci à eux !


Ubuntu 9.10 64bits ext4 ® Core 2 Duo
Unix..... il y a moins bien mais c'est plus cher.
Si t'as pas compris la réponse, pose mieux ta question.
Tutoriaux Linux, apache, pure-ftpd, bind, mysql, qmail...

Hors ligne

#3 Le 02/08/2006, à 14:29

Saiyan

Re : Question règles IPTables - Syn-flood et Spoofing ?

Merci, mais ça ne m'avance pas trop question sécurité avec le spoofing et le syn-flood.

Bref, j'ai fini les règles, je me suis basé sur des tuto afin d'avoir les protection syn-flood, udp-flood et spoofing.

Voici mes règles :

# Vider les tables
iptables -t filter -F
iptables -t filter -X

# Autoriser SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP 

# Autoriser toute connexion sortante
iptables -t filter -P OUTPUT ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i lo -o lo -j ACCEPT

# Autoriser ping monitoring et monitoring HTTP
iptables -t filter -A INPUT -p icmp -s 88.191.254.20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -s 88.191.254.20 -j ACCEPT

# HTTP, HTTPS, Webmin, VHCS
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport xxxx -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport xxxx -j ACCEPT

# FTP
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT

# FTP passif
iptables -A INPUT -i eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT

# Input restants : Mails et DNS
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT

# REJECT les fausses connex pretendues s'initialiser et sans syn
iptables -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT

# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
iptables -A INPUT -j SPOOFED

# Syn-floof et UDP flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT

Quelqu'un peut me dire si c'est correct ?

Hors ligne

#4 Le 02/08/2006, à 15:45

chapi

Re : Question règles IPTables - Syn-flood et Spoofing ?

Bonjour,

voilà un lien vers "IpTables par l'exemple" de Léa-Linux si ça eut t'aider : http://lea-linux.org/cached/index/Resea … ables.html

En général, la politique du firewall est d'interdire tout avec quelque chose du genre :

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

et ensuite autoriser au goute à goute.

Je vois au contraire que tu autorises SSH dès la 3ème rêgle, c'est voulu ou c'est une non conprehention de ma part ?

Hors ligne

#5 Le 02/08/2006, à 15:53

Saiyan

Re : Question règles IPTables - Syn-flood et Spoofing ?

J'autorise SSH, mais juste après je fait :

# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP

Ce qui met INPUT et FORWARD en DROP.

Donc le résultat est le même normalement.

Hors ligne