Salut
Voici mon problème:
J'essaye d'affiner mon firewall, pour naviguer sur internet.
Avec ce firewall, je peux naviguer sur internet sans pbs
#! /bin/sh
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Mais j'aimerais l'affiner, et ne permettre l'accés que sur le port 80 (en entrant):
#! /bin/sh
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
et là, plus moyen d'accéder à aucun site, ni même à mon modem-routeur ADSL(olitec d'IP 192.168.0.250)....
Bon, je remets l'ancien firewall, me connecte via firefox à mon routeur et je regarde du coup /sys/proc/ip_conntrack pour y voir les ports concernés qd je vais sur internet) :
tcp 6 37 TIME_WAIT src=192.168.0.2 dst=192.168.0.250 sport=2545 dport=80 src=192.168.0.250 dst=192.168.0.2 sport=80 dport=2545 [ASSURED] use=1 mark=0
tcp 6 78 TIME_WAIT src=192.168.0.2 dst=192.168.0.250 sport=2553 dport=80 src=192.168.0.250 dst=192.168.0.2 sport=80 dport=2553 [ASSURED] use=1 mark=0
tcp 6 119 TIME_WAIT src=192.168.0.2 dst=192.168.0.250 sport=2560 dport=80 src=192.168.0.250 dst=192.168.0.2 sport=80 dport=2560 [ASSURED] use=1 mark=0
tcp 6 78 TIME_WAIT src=192.168.0.2 dst=192.168.0.250 sport=2552 dport=80 src=192.168.0.250 dst=192.168.0.2 sport=80 dport=2552 [ASSURED] use=1 mark=0
tcp 6 17 TIME_WAIT src=192.168.0.2 dst=192.168.0.250 sport=2543 dport=80 src=192.168.0.250 dst=192.168.0.2 sport=80 dport=2543 [ASSURED] use=1 mark=0
tcp 6 37 TIME_WAIT src=192.168.0.2 dst=192.168.0.250 sport=2547 dport=80 src=192.168.0.250 dst=192.168.0.2 sport=80 dport=2547 [ASSURED] use=1 mark=0
etc.....
je ne suis pas sûr de mon interprétation de ce fichier, mais j'ai l'impression que mon routeur renvoi des messages à mon ordi sur les ports 2545,2553,2560....
Je croyais qu'en entrant, juste en consultant des pages web, le port de "réception sur mon ordi était 80 ????
Et s'il change tout le temps, est-ce possible de régler mon firewall par ports ?
J'ai consulté plusieurs doc et tutoriaux, mais je n'arrive pas à affiner mon firewall...
Merci de votre aide.
PS : mon ordi a pour IP 192.168.0.2, le modem-routeur 192.168.0.250
# sur le serveur
Posté par bergamote23 . Évalué à 0.
Sur le client, c'est aléatoire
je pense que tu devrai plutot mettre:
--sport 80
[^] # Re: sur le serveur
Posté par yanlolot . Évalué à 1.
quid ??
# pas la bonne ligne
Posté par B. franck . Évalué à 2.
car cette ligne concerne les connexions etablies ou relatives à une connexion établie.
il faut recréer une ligne à l'identique excepté l'état qui doit être à NEW et le sport à 80 sur l'INPUT à insérer avant la ligne des connexions RELATED et ESTABLISHED (car pour avoir un de ces états, une connexion doit être initiée :] ).
Documente toi sur ce qu'est une connnexion d'un client vers un serveur:port, car tu mélanges port source/destination/fixe/ouvert à la connexion...
le projet firestarter peut aussi t'aider voir tout faire à ta place.
http://freshmeat.net/projects/firestarter/
[^] # Re: pas la bonne ligne
Posté par bergamote23 . Évalué à 1.
Dans ce cas, je pourrai me connecter à son serveur ssh pour peu
que j'ai un source port à 80.
[^] # Re: pas la bonne ligne
Posté par B. franck . Évalué à 1.
le cas d'une connexion ssh est autorisé par l'ouverture en sortie du "dport" 22 et l'autorisation des connexions "related" et "established" en entrée. (déjà positionnée lors de la configuration d'autres règles en ayant besoin)
# iptables
Posté par Xavier FACQ . Évalué à 3.
# Allow all output traffic
iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# Allow input traffic we have established
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
Allow input HTTP comunications
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
et j'ai ca aussi dans mes marques pages mais je ne sais pas ce que ca vaut :
http://webenic.enic.fr/~vanoudendycke/mise_en_place_firewall(...)
si ca peut t'aider un peu....
a+
Xavier
# Une soluce
Posté par Rafael (site web personnel) . Évalué à 3.
Analysons un peu ton script (enfin c'est celui que tu rapportes, il est évident que tu as pompé ça sur le ternet sans rien lire de la doc)
Après avoir vidé (#2) les chaines, tu les efface (#3). inutile, autant tou t effacer d'emblée, m'enfin c'est pas grave tout le monde fait comme ça c'est plus propre.
Ligne 4, tu places la règle par défaut à DROP, parfait
ensuite, tu acceptes tout les paquets en sortie, bon ok.
La ligne 6 autorise tout trafic sur le loopback, rien que de très logique.
La ligne 7 autorise toutes les connexions établies. Ca ne fonctionne que si tu ne lances ton script après avoir ouvert ton navigateur. (une fois les connexions établies vers tel ou tel site) Il ya d'autres états (-state) qui seront tous refusés avec ce script. C'est bête comme tout, mais toutes les nouvelles connexions finiront à la trappe. Allons-y, fendons nous d'une petite capture de man iptables.
Tu modifies du script avec la ligne
On devine que tu voudrais avoir des connexions entrantes sur ton serveur wouaibe.
Le problème, enfin les problèmes, c'est que tu ne précises pas de quelle interface tu parles. Netfilter permet une grande précision, dont on peut parfaitement ne pas se servir dans sa totalité, mais un petit peu de précision ne nuit pas... Tu as une interface sur laquelle le ternet est joignable, tu dois la présiser. Une ligne du type
Comme ça ça devrait le faire.
Là ça autorise les accès en entrée sur ton serveur wouaibe. Enfin, je dis ça si c'est ça ce que tu veux, parce que ce n'est pas du tout préçi, ce que tu demandes.
Bref, lis la doc, netfilter le vaut bien. Je sais, c'est chiant, mais ça vaut le coup. Une petite requète del.icio.us: http://del.icio.us/search/?all=iptables
Sinon, mattes donc firestarter (lien déjà cité) ou bien http://www.linuxguruz.com/iptables/scripts/rc.firewall_023.t(...) pour t'inspirer.
Rafael
[^] # trop loin
Posté par B. franck . Évalué à -1.
si si
J'essaye d'affiner mon firewall, pour naviguer sur internet.
donc c'est le port 80 en destination pour les nouvelles connexions
et le port 80 en source-port pour les established et related qu sont à autoriser.
[^] # Re: trop loin
Posté par Ellendhel (site web personnel) . Évalué à 1.
[^] # Re: Une soluce
Posté par yanlolot . Évalué à 2.
olivieraj.free.fr/fr/linux/information/firewall/fw-03-06.html
http://christian.caleca.free.fr/netfilter/iptables.htm
(mais effectivement, j'avais abandonné la lecture de man iptables...)
et je ne donne qu'un extrait de mon firewall, car mes 2 ordis partagent des fichiers avec NFS (dont j'ai "fixé" les ports pour pouvoir régler mon firewall)
Bref, tout ça pour dire que je n'ai pas pompé un script sans le lire....
Mais vu l'ampleur de ta réponse, le temps que tu y as passé, et la source d'information qu'elle me procure, non seulement je ne t'en veux absolument pas (même si je me suis senti un peu véxé au début de ton post), et au contraire, je te remercie infiniment !!
Merci encore
[^] # Re: Une soluce
Posté par Rafael (site web personnel) . Évalué à 2.
M'enfin bon, il fallait bien le décortiquer un peu, ton script, en relevant ligne par ligne, parce que c'est comme ça qu'il faut faire la première fois.
Souvent, les valeureux débutants de l'iptables trafiquent les lignes de leur script comme autant d'incantations khabalistiques, autant de formules magiques leur apportant gloire et sécurité. Je me suis lancé sur le terrain du raseur constructif (j'aime bien cette définition, elle colle bien au BOFH proactif que je suis à mes heures).
Bref, lire les scripts des autres permet de découvrir pleins de fonctions d'iptables que l'on ne soupçonnerais pas. Une fois le concept touché du doigt, on pose la bonne idée sur une liste. Une fois les bonnes idées réunies, on les classe par groupe, pour ne rien oublier.
Ensuite, on pose à plat toutes les interfaces disponibles sur le firewall, à savoir l'interface externe, puis l'interface interne principale. Eventuellement, on pose une ou plusieurs interfaces internes, pour le cas où le firewall devrait gérer plusieurs zones.
Ensuite, on crée l'architecture de base de ses tables, ainsi que leur articulation.
Le shéma INPUT-OUTPUT, avec PREROUTING, FORWARD et POSTROUTING se trouve partout. (http://www.c-sait.net/cours/iptables.php)
On peut créer une table en plus, comme pour logguer les paquets DROPpés:
Et on y rajoute quoi faire avec les paquets en question, ici on loggue et on droppe, mais on peut faire d'autres choses. Ici on loggue les paquets TCP, au maximum 2 fois par seconde.
Il va de soi qu'on peut coller " -p udp" ou "-p icmp" en plus.
On vient de créer une tatable à nous, LDROP, vers laquelle on peut jumper quand on veut. on peut en faire pleins comme ça, pour faciliter la lecture du script. Chaque tatable fait bien un truc, que l'on peut appeller souvent.
Une bonne pratique cool, limiter l'acceptation de paquets d'ouverture de session
On peut créer une table pour faire des choses particulières, puis rendre la main, un peu comme un sous programme, ici pour virer le verbage des partages windows:
Pour résumer, on a fait LDROP, TCPACCEPT, LSYNFLOOD et SMB pour nos besoins.
Ensuite, on peut peut commencer la table INPUT de base
Ensuite, on peut commencer à rajouter les lignes de tables provenant de l'extérieur
On poursuit les autorisations de services tournant sur la linux box
FTP est vraiment un protocole qui a trop fumé, pour info, cf:
http://christian.caleca.free.fr/ftp/les_bases.htm
http://pintday.org/whitepapers/ftp-review.shtml
http://www-igm.univ-mlv.fr/~roussel/RESEAUJAVA/tcp.html
Et la réponse est OUI, c'est chiant à gérer sur un firewall si on ne veut pas avoir tout ouvert en grand. Rassurez vous, il y a pire, H323 par exemple.
On continue avec les services de base, ssh, mail, DNS, web serveur.
On permet aussi les connexions établies, ce qui permet de redémarrer le firewall sans couper toutes les sessions.
Là on a finit avec la table INPUT, on poursuit avec la table OUTPUT
Pour finir, on interdit le reste qui ne soit pas explicitement autorisé
Enfin, on s'occupe de la table de forward
Et mainenant, la ligne qui permet la magie du NAT, le partage de connexion
Voilà, si vous avez suivi jusqu'ici, vous pouvez adapter http://www.linuxguruz.com/iptables/scripts/rc.firewall_023.t(...) à vos besoins. L'architecture en est simple et élégante.
Rafael
[^] # Re: Une soluce
Posté par yanlolot . Évalué à 1.
Dans mon cas, il me manquait le port 53 pour pouvoir naviguer sur le net ( --sport 53), en plus des ports 80 et 443, et du port 21 pour le ftp.
Pas de tchat pour l'instant, mais ça ne saurait tarder...
Encore merci
# merci à tous...
Posté par yanlolot . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.