classe-a Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 Bonjour à toutes et à tous, 1/ Je souhaiterais savoir si cela sert à quelque chose filtrer sur la chaîne OUTPUT, théoriquement les chaînes INPUT et FORWARD devrait suffire ? (exemples) 2/ J'ai un routeur+NAT eth0=réseau local eth1=réseau extérieur WEB j'ai "DROPPE" l'ensemble de la chaîne FORWARD, iptables -P FORWARD -j DROP j'autorise uniquement l'accès à un pc du réseau local 192.168.1.101 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -i eth1 -j ACCEPT iptables -A FORWARD -m state --state NEW -p tcp -i eth0 -s 192.168.1.101 --sport 1024: --syn -j ACCEPT iptables -A FORWARD -m state --state NEW -p udp -i eth0 -s 192.168.1.101 --sport 1024: -j ACCEPT Pourquoi cela ne fonctionne uniquement que lorsque je ne précise pas -i eth1 sur le première règle du FORWARD ? (Cela devrait l'aider non ?) Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 parce que ta machine 192.168.1.101 est bloquée sur ESTABLISHED,RELATED ce qui devrait marcher pour toi : iptables -A FORWARD -m state --state ESTABLISHED,RELATED -i eth1 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT # (soit iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ) iptables -A FORWARD -m state --state NEW -p tcp -i eth0 -s 192.168.1.101 --sport 1024: --syn -j ACCEPT iptables -A FORWARD -m state --state NEW -p udp -i eth0 -s 192.168.1.101 --sport 1024: -j ACCEPT et encore, ça bloque toute connexion initiée sur un port inférireur à 1024, donc par exemple pas de web. Moi je forwarde tout en sortie. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arafel Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 Ben moi, je m'en sers surtout pour empecher les gens d'aller sur msn, de jouer en ligne, de faire de la telephonie ou de la video-conférence etc.... ok c'est pas sympas, mais dans une société, ca bouffe toute la bande passante, et y'a baisse de productivité, etc... ---- heuuu un truc.... on m'a toujours dit que quand tu fais tes regles iptables, il faut toujours finir par une ligne DROP (ou DENY ...) ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 Je souhaiterais savoir si cela sert à quelque chose filtrer sur la chaîne OUTPUT, théoriquement les chaînes INPUT et FORWARD devrait suffire ? (exemples) La chaîne OUTPUT concerne les connexions initiées par ton firewall. Donc effectivement, la limiter n'est pas cruxial, mais ça peut s'avérer intéressant pour limiter les exploits sur ton firewall. Le cas classique c'est : - une faille apparaît dans un des services de ton firewall, par exemple ssh - un pirate scanne des plages d'ip pour trouver un ssh troué - si il en trouve un il fait autoexecuter un petit script qui télécharge un rootkit sur son site web. Si tu as filtré la chaîne OUTPUT, il ne pourra pas télécharger son rootkit, donc ça te laissera du temps en plus pour colmater la faille. heuuu un truc.... on m'a toujours dit que quand tu fais tes regles iptables, il faut toujours finir par une ligne DROP (ou DENY ...) ... C'est ce que fait la ligne "iptables -P FORWARD -j DROP". "-P" c'est pour "policy", c'est la règle finale. Par contre, c'est vrai qu'il vaut mieux terminer ses règles par une règle qui loggue les paquets refusés, c'est toujours plus clair pour débugger les problèmes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
classe-a Posté(e) le 4 juin 2006 Auteur Partager Posté(e) le 4 juin 2006 Ok Merci Gauret pour ton explication maintenant je comprends beaucoup mieux l'intérêt de filter sur OUTPUT, je n'avais pas songé à ce type de faille. --->Nofun C'est exactement la même chose que ce que j'avais fait, et oui, cela fonctionne sans préciser -i eth1. Je vois pas lorsque je regarde dans la page de man, j'ai ceci ESTABLISHED meaning that the packet is associated with a connection which has seen packets in both directions J'ai la connection initiée par eth0, et je n'attends plus que la réponse par eth1, donc je pensais que je n'avais qu'à préciser cette interface. --->Arafel Ben moi, je m'en sers surtout pour empecher les gens d'aller sur msn, de jouer en ligne, de faire de la telephonie ou de la video-conférence etc.... ok c'est pas sympas, Là tu travailles avec la chaîne FORWARD Merci pour vos réponses Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 ta machine peut initier un connexion, la machine distante peut répondre, mais cette connexion établie (ESTABLISHED) est ensuite droppée (règle par défaut), donc il te faut forwarder les connexions ESTABLISHED. Ça te pose pas problème de bloquer en NEW les ports inférieurs à 1024 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
classe-a Posté(e) le 4 juin 2006 Auteur Partager Posté(e) le 4 juin 2006 Les ports inférieurs à 1024 sont les ports systèmes, en mentionnant --sport 1024: j'autorise tous les ports depuis 1023 jusqu'à 65535. Je n'ai pas d'application ouverte à l'extérieur (ex. un serveur web sur 80), c'est juste pour permettre une utilisation classique (notamment vers le net) de mes pc clients du réseau local et cela fonctionne très bien Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 quand ton browser se connecte sur un site web, il initie une nouvelle connexion (NEW) sur le port 80, donc normalement avec ta conf actuelle tu ne dois pas pouvoir surfer. edit : enfin vers le port 80, donc tu as certainement raison, il faut que j'approfondisse ça. re-edit : je viens de jeter un coup d'oeil à ma passerelle et j'ai ces lignes par exemple (commentée car inutile) : #iptables -A INPUT -i eth1 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT #iptables -A OUTPUT -o eth1 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT donc il semblerait que ça soit bien par le port 80 qu'un browser initie la connexion par exemple... Lien vers le commentaire Partager sur d’autres sites More sharing options...
classe-a Posté(e) le 4 juin 2006 Auteur Partager Posté(e) le 4 juin 2006 Oui, il initie une nouvelle connexion sur le port 80 du serveur web distant, mais de ton côté c'est pas le port 80, c'est un port supérieur à1024 qui sort et c'est celui là que tu autorises. Si tu veux tu peux utiliser un petit logiciel qui s'appelle Currports gratuit pour voir avec quel port ton browser se connecte. Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 voir mon edit au-dessus : je me rappelle avoir testé à l'époque et ça fonctionnait (sinon je l'aurais pas laissé). Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 4 juin 2006 Partager Posté(e) le 4 juin 2006 Oui, il initie une nouvelle connexion sur le port 80 du serveur web distant, mais de ton côté c'est pas le port 80, c'est un port supérieur à1024 qui sort et c'est celui là que tu autorises. Si tu veux tu peux utiliser un petit logiciel qui s'appelle Currports gratuit pour voir avec quel port ton browser se connecte. alors je viens de jeter un coup d'oeil à Currports et si tu veux il est pas vraiment prévu pour mon OS Par contre je viens de faire un 'netstat -p' et effectivement j'ai des ports supérieurs à 1024, mais attention, ce sont des connexions établies (et ça je savais déjà), ça veut pas dire que le port 80 n'est pas nécessaire pour initier la connexion. Je continue à chercher. Lien vers le commentaire Partager sur d’autres sites More sharing options...
classe-a Posté(e) le 4 juin 2006 Auteur Partager Posté(e) le 4 juin 2006 eth1 est ton interface coté INTERNET ou réseau local ? Tu utilises un proxy sur ton routeur ? Tout ce qui traverse le routeur utilise la chaîne FORWARD, si tu n'utilises pas de proxy, je ne comprends pas ce que viens faire la règle sur la chaîne INPUT? Je viens de faire une capture d'écran pour Currports Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 5 juin 2006 Partager Posté(e) le 5 juin 2006 eth1 est ton interface coté INTERNET ou réseau local ? côté Internet Tu utilises un proxy sur ton routeur ? non Tout ce qui traverse le routeur utilise la chaîne FORWARD, si tu n'utilises pas de proxy, je ne comprends pas ce que viens faire la règle sur la chaîne INPUT? non mais rien, c'est une ligne commentée. C'est une machine Linux ma passerelle, j'ai prévu de pouvoir la laisser se connecter en HTTP au besoin. Je viens de faire une capture d'écran pour Currports j'ai le même résultat avec 'netstat -p' , mais en soit ça ne prouve pas que le browser n'a pas besoin du port 80 pour initier la connexion (ce qu'on voit là c'est les ports de connexions établies). Par exemple, voici le résultat de netstat en forwardant uniquement le port 80 (et 53) : Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 kraftwerk.nofun.l:55747 66.249.93.104:www ESTABLISHED20975/seamonkey-bin Par contre je viens de faire de multiples tests (en bloquant explicitement le port 80 en sortie) et clairement tu as raison, le browser n'a pas besoin de pouvoir initier depuis le port 80. Merci de m'avoir permis de connaître un truc de plus (plutôt important en plus ^^). Sinon pour ta question de départ, c'est résolu non ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
classe-a Posté(e) le 5 juin 2006 Auteur Partager Posté(e) le 5 juin 2006 oui, cela fonctionne nickel maintenant Merci à tous Lien vers le commentaire Partager sur d’autres sites More sharing options...
Maxime0810 Posté(e) le 5 juin 2006 Partager Posté(e) le 5 juin 2006 Mmh, ce qu'il voulait dire c'est Lien vers le commentaire Partager sur d’autres sites More sharing options...
classe-a Posté(e) le 24 juin 2006 Auteur Partager Posté(e) le 24 juin 2006 Je profite de ce post que j'avais déjà ouvert pour reposer une petite question au sujet de iptables. je souhaite créer un alias pour restaurer mes règles iptables depuis un fichier Dans le fichier .bashrc, j'inscris donc : pour sauvegarder j'utilise : alias saveip='iptables-save > /home/classe-a/iptables.rules' et pour restaurer : alias restoip='iptables-restore < /home/classe-a/iptables.rules' j'enregistre les modifications et j'effectue la commande : source .bashrc Le problème, c'est que la sauvegarde s'effectue correctement, mais la restauration ne s'effectue pas .... C'est où que je pourrais avoir commis une erreur ?? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 25 juin 2006 Partager Posté(e) le 25 juin 2006 iptables-restore est dans ton path ? Pas besoin de droits root pour restaurer ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.