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 11/04/2007, à 08:50

boogy

Créer un par-feu en ligne de commande

Voilà un astuce d'un livre que je suis en train de lire et qui vous permet de créer un par-feu en ligne de commande.

Le par-feu netfilter (disponible depuis Linux 2.4) peut être manipulé de manière très souple en ligne de commande.L'utilisation d'iptable peut demander un certain temps d'adaptation mais offre une syntaxe très expressive pour céer des régles de par-feu complexe ( et je l'espère utile).

Même si votre machine n'est pas un par-feu "réel" (en d'autre termes, si elle n'a qu'une interface réseau et ne protège pas d'autre machines), la fonctionnalité de filtrage peut être très précieuse.Supposez que vous souhaitiez autoriser l'accsès à cette machine telnet (simplement au cas ou quelque chose arriverait à ssh ou à ses bibliotèques), mais que vous ne vouliez simplement pas le permetre depuis tout endroit du Net.Vous pourriez faire un appel à une enveloppe tcp (wrapper) en remplissant /etc/hosts.allow et /etc/hosts.deny, puis en configurant convenablement /etc/inetd.conf.Ou bien vous pourriez employer iptables ainsi:

iptables -A INPUT -t filter -s ! 208.201.239.36 -p tcp --dport 23 -j DROP

La plupart des utilisateurs veulent, en général, permetre un accès complet depuis des hôtes de confiance, bloquer tout accès depuis des hôtes ayant des problèmes connu et autoriser tout ce qui est intermédiaire pour les autres.
Voici une méthode permetant d'utiliser simultanément une liste blanche, une liste noire et une politique de restriction de port.

#!/bin/sh
#
#Un script simple d'initialisation de par-feu
#
WHITELIST=/usr/local/etc/liste_blanche.txt
BLACKLIST=/usr/local/etc/liste_noir.txt
ALLOWED="22 25 80 443"

#
#Ecarter toutes les règles de filtrage existantes
#
iptables -F

#
#Commencer par parcourir $WHITELIST, en acceptant tout le trafic
#qu'elle contient.
#
for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do
echo "Autorisation accordée à $x..."
iptables -A INPUT -t filter -s $x -j ACCEPT
done

#
#Ensuite, parcourir $BLACKLIST, en écartant tout le trafic provenant
#des hôtes et des réseaux qu'elle contient.
#
for x in `grep -v ^# $BLACKLIST | awk '{print $1}'`; do
echo "Blocage de $x..."
iptables -A INPUT -t filter -s $x -j DROP
done

#
#A présant, les ports autorisés : qu'accepterons-nous des hôtes
#n'apparaissant pas sur la liste noir ?
#
for port in $ALLOWED; do
echo "Acceptation du port $port..."
iptables -A INPUT -t filter -p tcp -dport $port -j ACCEPT
done

#
#Pour finir, à moins d'un contre-ordre ci-dessus, rejeter les connexions
#entrantes à l'initiative de l'extérieur.
#
iptables -A INPUT -t filter -p tcp --syn -j DROP

Veillez à spécifier tous les ports que vous souhaitez inclure dans la variable $ALLOWED au début du script.Si vous oubliez d'inclure le port 22, vous ne serez pas en mesure de lancer ssh sur votre machine!

Le fichier /usr/local/etc/liste_noir.txt est rempli d'adresses IP,de noms d'hôtes et de réseaux de lamanière suivante:


1.2.3.4 #Analyse des ports le 15/8/07
7.8.9.0/24 #Qui peut savoir quelle menace se profile ici
r00tb0y.script-kiddie.coop

De même /usr/local/etc/liste_blache.txt contien les gentils utilisateurs qui sont autorisés à accéder, quelles que soit les autres règles:

11.22.33.44 # Ma station de travail
208.201.239.0/26 # Le réseau local

Vous pouvez apporter tous les changements que vous voulez sur /usr/local/etc/liste_noir.txt et /usr/local/etc/liste_blanche.txt et aussi sur les ports spécifiés dans $ALLOWED car au début de script on purge tout les éléments de filtrage avec la comande iptables -F donc vous pouvez simplement lancer le script à nouveau des que vous avez fait des chagements.

Ce scipt ne tien compte que des connexions TCP.Si vous souhaitez également prendre en charge UDP, ICMP ou tout autre protocol, exécutez une boucle for analogue à celle de $ALLOWED, mais incluez vos ports et vos protocoles supplémenataires (en passant -p udp ou -p icmp à iptables)

ATTENTION:tous les personnes sur la liste blache auront accès à tous les ports sur votre machine.

Vous pouvez lister les règles d'iptables avec iptables -L et si cela ne marche pas essayez iptables -L -n pour afficher les règles sans la moindre résolution DNS ---Vos règles pourraient accidentellement interdire les requêtes DNS.

Dernière modification par boogy (Le 17/04/2007, à 14:37)


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne

#2 Le 11/04/2007, à 09:03

boogy

Re : Créer un par-feu en ligne de commande

si vous voulez plus de ce genre d'astuce vous me dite car j'en ai tout plain.
je veux me spécaliser en linux et pour cela je suis en train de lire bcp de livres donc j'ai beaucoup d'astuce utiles qui peuvent vous aider à faire des choses trop cool sur linux.

merci à vous tous

Dernière modification par boogy (Le 11/04/2007, à 09:04)


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne

#3 Le 11/04/2007, à 09:29

juleshouantonon

Re : Créer un par-feu en ligne de commande

ah cool et belle initiative!
Du courage à toi,juste une question,je pense que ceci:
i

ptables -A INPUT -t filter -s ! 208.201.239.36 -p tcp --dport 23 -j DROP

fait partir du script.

Parfois,nous débutant on pense que c'est une commande shell qui faut
lancer d'abord,ensuite vient le script.Or tout est ensemble.Je dis encore débutant puisque si t'as pas l'expérience de la chose on peut pas comprendre que c'est un script à éxécuter.Donc tu pourrai aussi rendre
linux plus cool surtout que ca ne fait pas mal en ajoutant quelques petits
détails.

En tout cas merci à toi et du courage.

(pour les astuces ,on en veux toujours,si ca te dérange pas ,on en a même à démander même présentement.):lol:


Ce que j'aime dans l'informatique est que, dès fois tu fais des choses et ca marche,et tu ne sais pas pourquoi.......

Hors ligne

#4 Le 11/04/2007, à 09:44

boogy

Re : Créer un par-feu en ligne de commande

non ca ne fais pas partie de script c'est un example d'utilisation d'iptables et le script il faut le rendre executable bien sur sinon on ne peut pas l'utiliser...

pour rendre le script executable vous faite un

chmod +x le_chemin/nom_de_script

et je vais en mettre encore des astuces alors...

ben écoute je suis pas parfait donc c'est possible que j'oublie de donner plus de détails car c'est long à écrir mais il souffit de demander et je reponds volontairement.

merci à toi.

Dernière modification par boogy (Le 11/04/2007, à 09:50)


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne

#5 Le 11/04/2007, à 10:43

juleshouantonon

Re : Créer un par-feu en ligne de commande

Ok c'est tranquille.Je sais bien, imagine un instant qu'on demande à un

débutant sur linux, d'installer un Pare-feu.Et qu'il découvre bien ton

tuto,il commencera à éxcuter les commandes sans savoir que c'était un

script qu'il faudra bien lancer.:lol:

Bref merci bien pour le feedback bien chaud!

(J'insiste souvent sur les détails que l'on ignore parfois ,pour rendre la vie
plus facile aux linuxiens,c'est ca l'informatique.En réalité ce qui pousse les gens à aller vers les fénêtres WINDOWS est que là bas il n'y a pas de
commandes,tu n'a qu'à faire suivant,suivant même les yeux fermés....:D,juste une opinion.)


Ce que j'aime dans l'informatique est que, dès fois tu fais des choses et ca marche,et tu ne sais pas pourquoi.......

Hors ligne

#6 Le 11/04/2007, à 10:47

boogy

Re : Créer un par-feu en ligne de commande

mais je voulais pas t'agreser..
je l'ai pas dit mechament, si c'est le cas eexcuse moi.je voulais simplement dire que des fois comme c'est bcp de texte à écrir on oublie les détails mais je suis la pour repondre aux questions si je suis en mesure de le faire sinon je vais aider la personne à trouver les réponses qu'elle cherche.

je te remercie de m'atirer l'atention sur les détails comme ca je ferai plus attention.

merci à toi est scuse moi, j'ai pas voulu t'agressé


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne

#7 Le 11/04/2007, à 14:47

juleshouantonon

Re : Créer un par-feu en ligne de commande

non tu as mal compris.j'étais pas du fâché contre toi.
Tu m'as vraiment pas du tout compris.
Bref,l'essentiel est qu'on se comprenne à l'avenir.
Et je rappelle que tu as pris une belle initiative qu'on devrait encourager.

C'est ca vraiment l'esprit d'un ubunteros.
T'inquiètes on est ensemble comme on le dit.:)

Dernière modification par juleshouantonon (Le 11/04/2007, à 14:51)


Ce que j'aime dans l'informatique est que, dès fois tu fais des choses et ca marche,et tu ne sais pas pourquoi.......

Hors ligne

#8 Le 12/04/2007, à 14:08

yohann

Re : Créer un par-feu en ligne de commande

bonjour, je me demandais quel syntaxe utiliser pour rediriger un port, et comme boogy a l'air d'être penché sur le pb et prêt à aider...

imaginons que j'ai un parfeu et je veux redirigé le port 3389 vers la machine 192.168.1.1 quelle commande utiliser?

PS: j'ai lu le manuel iptable, mais je dois avouer que j'ai pas tout compris, apparememnt il y a un truc genre -j redirect, mais je sais pas dans quelle ordre il faut mettre les choses, ni s'il faut d'abord dire qu'on accept le paquet, puis le laisser passer ni plein de chose en fait.

Je demande cela ici car c'est ce qu'il manque (a mon avis) pour remplacer un firwall routeur (vous savez le truc on on remplis un champs texte avec un numéro de port , un champs texte avec le port de destination et l'adresse ip de la cible et hop).

bref, il faudrait que j'arrive a faire cela, mais je comprend pas l'aide de ip table.

merci à vous
yohann


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#9 Le 12/04/2007, à 20:22

boogy

Re : Créer un par-feu en ligne de commande

ok je vais poster demain la réponse à ta problème car maitenant j'ai pas le temps de le faire ok.Oui je sais comment rediriger un port.

c'est assez facile.

patiance jusqu'à demain ok?


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne

#10 Le 12/04/2007, à 21:03

yohann

Re : Créer un par-feu en ligne de commande

merci beaucoup big_smile
en fait j'ai essayé toute l'après midi mais sans succès sad

Merci pour ta proposition d'aide

Dernière modification par yohann (Le 12/04/2007, à 21:03)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#11 Le 13/04/2007, à 08:50

boogy

Re : Créer un par-feu en ligne de commande

Je me suis trompé.

ce soir je te mets le tuto comment faire parce que là je suis au boulot et j'a pas le temps ok.

mais le tuto serra sur mon forum tu peux y acceder par ma signature.

alors à ce soir

Dernière modification par boogy (Le 13/04/2007, à 08:56)


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne

#12 Le 13/04/2007, à 09:58

yohann

Re : Créer un par-feu en ligne de commande

encore merci big_smile
malheureusement ce soir je serais en WE chez ma belle famille donc excuse le manque de réactivité...
mais je regarderais avec grand intéret

Dernière modification par yohann (Le 13/04/2007, à 10:00)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#13 Le 16/04/2007, à 08:58

yohann

Re : Créer un par-feu en ligne de commande

salut, ben j'y arrive toujours pas sad

J'ai les 2 lignes suivantes dans mon fichiers de conf du firewall:

 $IPT -t nat -A PREROUTING -i $WAN_IFACE -p tcp --dport 3389 -j DNAT -to-destination $TSE_SERVER
$IPT -A FORWARD -m state --state NEW -i $WAN_IFACE -d $TSE_SERVER -o $BURO_IFACE -p tcp -m multiport --dport 3389 -j ACCEPT

$IPT vaut iptables
$WAN_IFACE vaut eth0 (carte réseau  qui va vers internet)
$TSE_SERVEUR vaut 192.168.0.111 (l'adresse ip du serveur sur lequel je veut rediriger le port)
$BURO_IFACE vaut eth1 (carte réseau qui va vers le LAN du serveur TSE)

et malgré tout cela, mon port n'est pas redirigé


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#14 Le 17/04/2007, à 11:27

boogy

Re : Créer un par-feu en ligne de commande

désolé mais j'ai pas eu le temps pour t ecrir le tuto.mais je vais le faire sois aujourd'hui sois demain mais comme je t'ai dit il sera sur mon forum au quel tu peux acceder par ma signature.

tous les tuto que je vais poser elles seront sur mon forum qui est un peu pret comme celui-ci mais j'airai bcp de tutos.


WHERE THERE IS A SHELL, THERE IS A WAY
Success is to be measured not so much by the position that one has reached in life as by the obstacles which he has overcome.
Documentation
www.tuxgeek.org

Hors ligne