Aller au contenu

Ce script iptables est-il fonctionnel ?


Messages recommandés

Bonjour à tous ,

Je suis comme mon pseudo l'indique une néophyte et nouvellement inscrite sur ce forum. Je n'ai connu linux qu'à travers les différents forums et pour tout vous dire je ne savais pas ce que c'était le shell, le bash etc il y a de celà 1 mois.

Avant de me décider à migrer je me suis pas mal documentée. J'ai même acheté linux initiation et utilisation cours et exercices en plus du cours shell Unix comandes & progammation de Sébastien Rohaut pour m'aider.

Avec tout cela j'ai réussi à installer le speedtouch usb (la raie), configurer le réseau et rendre tout cela fonctionnel.

Une petite remarque cepandant : on a l'impression d'être un peu largué quand on décide de passer à linux car sur certains forums lorsque vous demandez de l'aide on vous renvoie vers de la doc ou on vous balance un lien où là encore vous être confronté à de la théorie. Il faut vraiment être persévérant, tenace, curieux avoir un niveau qui permette de déchiffrer les hiérogliphes des docs en ligne, pour ne pas tout balancer par la fenètre. Ce n'est qu'une constatation au parcours de différents forums et j'insiste sur le fait que ce n'est pas à but de polémiques.

Cela étant, je voudrais vous exposer mon problème et je remercie d'avance tous ceux qui voudront bien m'aider de leurs pertinentes remarques.

J'ai deux pc en réseau :

PC A sous Power Pack de mandrakelinux 10.0 , kernel 2.6.3 modem speedtouch usb adsl

PC B sous XP avec pare-feux ZA pro et McAfee

J'ai rédigé un petit script iptables que je joins ci-après mais je ne sais pas s'il est en mesure de fonctionner, ni quels sont les erreurs ou autres aberrations que j'ai pu commettre aussi soyez indulgents

# ! /bin/sh

IPTABLES=/sbin/iptables

iptables_start () {

echo "[démarrage de iptables]

EXTERNAL_IF="ppp0"

INTERNAL_IF="eth0"

#########################################################REGLES PAR DEFAUT########################################################

#echo "[initialisation de la table filter]"

iptables -t filter -F

iptables -t filter -X

iptables -t filter -P INPUT DROP

iptables -t filter -P OUTPUT DROP

iptables -t filter -P FORWARD DROP

#echo "[initialisation des tables nat et mangle]"

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

iptables -t mangle -F

iptables -t mangle -X

iptables -t mangle -P PREROUTING ACCEPT

iptables -t mangle -P INPUT ACCEPT

iptables -t mangle -P OUTPUT ACCEPT

iptables -t mangle -P FORWARD ACCEPT

iptables -t mangle -P POSTROUTING ACCEPT

#echo "[politique par défaut]"

# Accepter les connections sortantes par défaut

iptables -A OUTPUT ACCEPT

# Autoriser la loopback

iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

iptables -t filter -A FORWARD -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

iptables -t filter -A FORWARD -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

#echo "[autoriser la connection entre le firewall et le reseau sans limites]"

iptables -t filter -A OUTPUT -o eth0 -s 192.168.00/255.255.255.0 -d 192.168.0.0/255.255.255.0 -j ACCEPT

iptables -f filter -A INPUT -i eth0 -s 192.168.0.0/255.255.255.0 -d 192.168.0.0/255.255.255.0 -j ACCEPT

#Loguer les packets DROPés

iptables -A LOG_DROP -j LOG --log-prefix "[iPT]"

iptables -A LOG-DROP -j DROP

#echo "[autorisation des machines du réseau à accéder a internet]"

iptables -A OUTPUT -o $EXTERNAL_IF -p tcp --dport WWW -m state --state NEW ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i $EXTERNAL_IF -p tcp --sport -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -o $EXTERNAL_IF -p tcp -m multiport --sports www,https -m state --state ESTABLISHED,RELATED -j ACCEPT/td>

iptables -A INPUT -i $EXTERNAL_IF -p tcp -m multiport --dports www,https -m state --state ESTABLISHED,RELATED -j ACCEPT

#echo "[activation de la passrelle]"

echo 1 > /proc/sys/net/ipv4/ip_forward

#echo "[mise en place du masquerading]"

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.2 -o ppp0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.1 -o ppp0 -j MASQUERADE

#echo "[autoriser les connexions santantes du réseau-net]"

iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#echo "[autorisation du serveur ftp (21 et 20) ...]"

Modprobe ip_conntrack_ftp

iptables -A INPUT -i $EXTERNAL_IF -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o $EXTERNAL_IF -p tcp --dport 21 -m stater --state NEW ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i $EXTERNAL_IF -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUPTUT -o $ESTERNAL_IF -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT

#echo "[autorisation du serveur DNS (53) ...]"

iptables -A OUTPUT -o $EXTERNAL_IF --protocol udp --dport 53 -j ACCEPT

iptables -A INPUT -i $EXTERNAL_IF --protocol udp --sport 53 -j ACCEPT

iptables -A OUTPUT -o $EXTERNAL_IF --protocol tcp --dport 53 -j ACCEPT

iptables -A INPUT -i $EXTERNAL_IF--protocol tcp --sport 53 -j ACCEPT

#echo "[autorisation du serveur smtp (25) ...]"

iptables -A INPUT -o ppp0-p tcp --dport 25 -j ACCEPT

iptables -A OUTPUT -o ppp0 -p tcp --sport 25 -j ACCEPT

#echo "[autorisation du serveur pop (110) ...]"

iptables -A output -p tcp --dport 110 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -J ACCEPT

iptables -A INPUT -p tcp --sport 110 -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Autoriser les pings

iptables -A OUTPUT -p icmp -m state --state NEWN RELATED,ESTABLISHED -j ACCEPT

#Eviter le flood

iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -p icmp -m state --state NEW -m limit --limit 2/min -j ACCEPT

Merci à tous

:francais:

Lien vers le commentaire
Partager sur d’autres sites

Hey, globablement c'est pas mal pour un début ! bravo miss :)

quelques petites corrections sur la forme, en supposant que sur le fond (ce qui doit rentrer et sortir) tu es en cohérence avec tes besoins.

préliminairement, tu pourrais utiliser $IPTABLES que tu définis au début, à la place de juste "iptables"

# Accepter les connections sortantes par défaut

iptables -A OUTPUT ACCEPT

=>

# Accepter les connections sortantes par défaut
iptables -P OUTPUT ACCEPT

après quoi tes règles en -A OUTPUT ... -j ACCEPT sont implicites

iptables -t filter -A OUTPUT -o eth0 -s 192.168.00/255.255.255.0 -d 192.168.0.0/255.255.255.0 -j ACCEPT

iptables -f filter -A INPUT -i eth0 -s 192.168.0.0/255.255.255.0 -d 192.168.0.0/255.255.255.0 -j ACCEPT

ici tu as un peu de redondance, dans la logique de ces règles et si tu précise l'interface, tu n'as pas besoin de sépcifier les IP : Puis suite à ma remarque ci-dessus, tu peux juste écrire

iptables -f filter -A INPUT -i eth0 -j ACCEPT

oups :oups: réunion à 14h je reviens je continue, promis ...

Lien vers le commentaire
Partager sur d’autres sites

#Loguer les packets DROPés

iptables -A LOG_DROP -j LOG --log-prefix "[iPT]"

iptables -A LOG-DROP -j DROP

Ici, il doit y avoir un petit problème d'autant que tu n'initialise jamais tes tables LOG?DROP et que tu ne les lies pas (via un -j) aux tables de base

quand tu écris

#echo "[autoriser les connexions santantes du réseau-net]"

iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

ça permet toutes les sorties vers l'extérieur, donc tu peux supprimer les règles avant ([autorisation des machines du réseau à accéder a internet]) qui sont d'ailleurs un peu confuses

pour la masquerading, pareil, tu simplifie en enlevant les 2 dernières lignes, puisque celle du dessus correspond ...

pour DNS, SMTP et POP tes règles en OUTPUT sont inutiles (toujours à cause du -P ACCEPT de mon premier post)

pour le FTP (ta machien sera bien serveur FTP ?), ça ne va pas marcher, car tu autorise à entrer les ports 20 et 21 (OK) mais seulement pour des connexions déjà établies (RELATED, ESTABLISHED) alors que tu dois permettre l'initialisation de connexions, donc il faut virer le -state et ce qui suit

En parlant de choses à virer, quand tout sera OK pour tu pourras virer tes firewalls sur XP, sauf qi tu t'en sers pour contrôler ce que tentent de faire tes applis en sortant ...

Pour finir, tes 3 lignes de ping :

la 2 est redondante avec la 1, et la 3 devrait être placée en premier ...

Voilà ça devrait te faire un script un peu plus clair en plus.

Si tu as le temps il y a une discussion assez longue avec des exemples de scripts ...

(Note pour Remy et Sandeman pour la rédaction du topic iptables :

expliciter :

"je veux faire ça"

"il faut que je fasse ça"

"ce qui se traduit comme ça"

->

"je veux rendre mon serveur Web interne accessible"

"je dois donc autoriser le port 80 à entrer sur le firewall, et les requêtes doivent être redirigées vers la destination web interne"

"iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT

iptables -t nat -A POSTROUTING ..."

)

Lien vers le commentaire
Partager sur d’autres sites

oui en fait ce qui serait bien c'est vrai, c'est un exemple rapide et concret pour chaque truc , et ensuite il suffit de faire son marché :chinois:

sachant que 90 % des gens on jsute un accès au net ( ppp0 ?) et une care réseaux locale ( eth0)

sinon l'exemple de sandeman était super interessant :pleure:

Lien vers le commentaire
Partager sur d’autres sites

Re,

Je te remercie Sandeman, d'avoir pris la peine de te pencher sur mon script. Je vais de ce pas revoir tous les points relevés et tâcher de les corriger. Par ailleurs, merci de l'info ce topic m'aidera certainement à mieux assimiler les scripts. Rien ne vaut une bonne explication même virtuelle

Encore une fois merci

Neophite

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...