[iptables] aidez moi pour un firewall
fabrice11901
Messages postés
787
Date d'inscription
Statut
Membre
Dernière intervention
-
fabrice11901 Messages postés 787 Date d'inscription Statut Membre Dernière intervention -
fabrice11901 Messages postés 787 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Y a un mois à peu près, une personne de ce forum m'avait aider pour un firewall iptables pour mon serveur web sous ubuntu v5.10
En autorisant le port 22 (ssh) 80, 53, 25, 110, 21, 20
A ce jour le firewall ne fonctionne pas bien il me bloque à moitier le port 80 alors qu'il devrait laisser passer, le 110 ne fonctionne pas etc (alors qu'il a marché)
voici ce firewall :
iptables_start :
iptables_stop :
iptables ce trouvant dans /etc/init.d :
voila ce script ne marche plus on m'en a passé un autre (pas encore testé, mais je ne peux pas l'arrêter moi même en faisant /etc/init.d/firewall stop par exemple :
que faire?$
merci
-
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
Y a un mois à peu près, une personne de ce forum m'avait aider pour un firewall iptables pour mon serveur web sous ubuntu v5.10
En autorisant le port 22 (ssh) 80, 53, 25, 110, 21, 20
A ce jour le firewall ne fonctionne pas bien il me bloque à moitier le port 80 alors qu'il devrait laisser passer, le 110 ne fonctionne pas etc (alors qu'il a marché)
voici ce firewall :
iptables_start :
#! /bin/sh # # Description: configuration de firewall netfilter/iptables # # Initialization de la table FILTER # iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # les 3 cmd = debranchement des cables # Initialization de la table NAT # 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 # # Initialisation de la table MANGLE # 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 # interface lo iptables -A INPUT -i lo -s '0.0.0.0/0' -d '0.0.0.0/0' -j ACCEPT iptables -A OUTPUT -o lo -s '0.0.0.0/0' -d '0.0.0.0/0' -j ACCEPT # table FILTER # # chaque commande est sur une seule ligne # # remplace eth0 avec ton interface # et xxx.xxx.xxx.xxx avec IP de ton serveur iptables -A INPUT -i eth0 -d 88.191.27.74 -m state --state ESTABLISHED,RELATED -j ACCEPT #on accepte ici les ports 20 21 22 23 25 80 110 iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 20:21 -j ACCEPT iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 23 -j ACCEPT iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 25 -j ACCEPT iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 80 -j ACCEPT iptables -A INPUT -i eth0 -p tcp -d 88.191.27.74 --dport 110 -j ACCEPT # iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
iptables_stop :
#! /bin/sh # # Description: firewall netfilter/iptables est maintenant ouvert # # Initialization de la table FILTER # iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Initialization de la table NAT # 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 # # Initialisation de la table MANGLE # 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
iptables ce trouvant dans /etc/init.d :
#! /bin/sh case $1 in 'start') /etc/iptables_start ;; 'stop') /etc/iptables_stop ;; '*') echo "Usage : /etc/init.d/iptables {start|stop}" ;; esac
voila ce script ne marche plus on m'en a passé un autre (pas encore testé, mais je ne peux pas l'arrêter moi même en faisant /etc/init.d/firewall stop par exemple :
#!/bin/bash # # config de base # # Vider les tables actuelles iptables -t filter -F iptables -t filter -X echo - Vidage : [OK] # Autoriser SSH iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT echo - Autoriser SSH : [OK] # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT echo - Ne pas casser les connexions établies : [OK] # Interdire toute connexion entrante iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP echo - Interdire toute connexion entrante : [OK] # Interdire toute connexion sortante iptables -t filter -P OUTPUT DROP echo - Interdire toute connexion sortante : [OK] # Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour) iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK] # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo - Autoriser loopback : [OK] # Autoriser ping iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT echo - Autoriser ping : [OK] # Gestion des connexions entrantes autorisées # # iptables -t filter -A INPUT -p <tcp|udp> --dport <port> -j ACCEPT # HTTP 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 8443 -j ACCEPT echo - Autoriser serveur Apache : [OK] # FTP modprobe ip_conntrack_ftp iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT echo - Autoriser serveur FTP : [OK] # Mail iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT echo - Autoriser serveur Mail : [OK] # 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 echo - Limiter le Syn-Flood : [OK] # 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 echo - Bloquer le Spoofing : [OK]
que faire?$
merci
-
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
A voir également:
- [iptables] aidez moi pour un firewall
- Comodo firewall - Télécharger - Pare-feu
- Avs firewall. - Télécharger - Contrôle parental
- Zonealarm free antivirus + firewall - Télécharger - Pare-feu
- Firewall builder - Télécharger - Web & Internet
- Pc tools firewall plus - Télécharger - Pare-feu
4 réponses
Salut,
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
en OUTPUT tu ne doit pas avoir une chose pareil
essaie avec ça
mais je ne peux pas l'arrêter moi même en faisant /etc/init.d/firewall stop par exemple :
Oui tu peux mais il faut construire les scripts nécessaires. Mais tu les à dans le message qui t'as donné la personne de ce forum.
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
en OUTPUT tu ne doit pas avoir une chose pareil
essaie avec ça
iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
mais je ne peux pas l'arrêter moi même en faisant /etc/init.d/firewall stop par exemple :
Oui tu peux mais il faut construire les scripts nécessaires. Mais tu les à dans le message qui t'as donné la personne de ce forum.
iptables_stop : #! /bin/sh # # Description: firewall netfilter/iptables est maintenant ouvert # # Initialization de la table FILTER # iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Initialization de la table NAT # 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 # # Initialisation de la table MANGLE # 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 ACCEPTiptables ce trouvant dans /etc/init.d :
#! /bin/sh case $1 in 'start') /etc/iptables_start ;; 'stop') /etc/iptables_stop ;; '*') echo "Usage : /etc/init.d/iptables {start|stop}" ;; esaclami20j
J'ai modifier la ligne, mais j'ai le même problème avec ce firewall qu'avec l'ancien.
Sur le port 80, je n'ai que quelques sites qui passent. Si je déactive le firewall, tout fonctionne
merci
Sur le port 80, je n'ai que quelques sites qui passent. Si je déactive le firewall, tout fonctionne
merci
Si on est trop parano de ne pas simplement ouvrir OUTPUT il faut etre super vigilant pour les requetes DNS. Deja la 1ere version est simplement fausse a cause de la remarque de lami20j.
Donc il faut ouvrir l'OUTPUT de facon inconditionee (sans le baratin RELATE ou ESTABLISHED etc.) sinon on ne peut jamais etablir une 1ere connexion. Ca revient a tout simplement couper l'internet et le reseau.
En plus si on n'ouvre que quelques ports en OUTPUT il ne faut surtout pas oublier le port 53 pour les requetes DNS (d'ouvrir le 80 pour http ne suffit pas, et pas non plus le 113). Pour ca le 2eme script semble mieux et (peut-etre) correcte.
Moi personnellement je conseillerais simplement d'ouvrir OUTPUT completement et pour INPUT il faut par defaut fournir une regle avec acceptation pour RELATED,ESTABLISHED. Cela fait un pare feu correcte pour filtrer la direction entree. Apres on ajoute d'autre regles INPUT pour les ports a ouvrir si on fait serveur (par exemple http, ftp, ssh etc.).
Autre chose: dans les regles INPUT avec "-d 88.191.27.74" c'est bien l'IP du PC concerne ? C'est aussi une option genre overkill/parano. Si on change l'IP du PC pour une raison il ne faut pas non-plus d'oublier de modifier ca. Pour que cette option soit utile il faudrait que quelqu'un contacte ton PC avec une autre IP destination que celle de ton PC mais dans ce cas comment est-ce que ca peut arriver a ton PC ???
Si on veut filtrer ou accepter pour certains IP client (IP de l'autre cote) il faut mettre "-s IP_client". Il n'y a pas confusion entre les deux ???
De controler l'OUTPUT necessitent pas mal de travail et ca peut facilement foirer pour de petits details qu'on oublie. De toute facon ca ne sert uniquement si on ne peut pas faire confiance a son PC ou aux utilisateurs de ce PC.
Si on garde de regles "parano" et ca ne marche pas il faut tester avec de regles LOG, c.-a-d. avant certaines ou chaque regle DROP ou REJECT on fait une 2eme fois la meme regle avec cible LOG (au lieu de "-j DROP" on mettrait "-j LOG --log-level info" pour la 2eme regle avant!!). De cette facon tous les paquets jetes ou rejetes apparaissent dans le log (soit visible avec la commande "dmesg" et/ou dans le fichier /var/log/messages) et on pourra ainsi deboguer et analyser le probleme, eventuellement, modifier les regles pour que ca marche.
Donc il faut ouvrir l'OUTPUT de facon inconditionee (sans le baratin RELATE ou ESTABLISHED etc.) sinon on ne peut jamais etablir une 1ere connexion. Ca revient a tout simplement couper l'internet et le reseau.
En plus si on n'ouvre que quelques ports en OUTPUT il ne faut surtout pas oublier le port 53 pour les requetes DNS (d'ouvrir le 80 pour http ne suffit pas, et pas non plus le 113). Pour ca le 2eme script semble mieux et (peut-etre) correcte.
Moi personnellement je conseillerais simplement d'ouvrir OUTPUT completement et pour INPUT il faut par defaut fournir une regle avec acceptation pour RELATED,ESTABLISHED. Cela fait un pare feu correcte pour filtrer la direction entree. Apres on ajoute d'autre regles INPUT pour les ports a ouvrir si on fait serveur (par exemple http, ftp, ssh etc.).
Autre chose: dans les regles INPUT avec "-d 88.191.27.74" c'est bien l'IP du PC concerne ? C'est aussi une option genre overkill/parano. Si on change l'IP du PC pour une raison il ne faut pas non-plus d'oublier de modifier ca. Pour que cette option soit utile il faudrait que quelqu'un contacte ton PC avec une autre IP destination que celle de ton PC mais dans ce cas comment est-ce que ca peut arriver a ton PC ???
Si on veut filtrer ou accepter pour certains IP client (IP de l'autre cote) il faut mettre "-s IP_client". Il n'y a pas confusion entre les deux ???
De controler l'OUTPUT necessitent pas mal de travail et ca peut facilement foirer pour de petits details qu'on oublie. De toute facon ca ne sert uniquement si on ne peut pas faire confiance a son PC ou aux utilisateurs de ce PC.
Si on garde de regles "parano" et ca ne marche pas il faut tester avec de regles LOG, c.-a-d. avant certaines ou chaque regle DROP ou REJECT on fait une 2eme fois la meme regle avec cible LOG (au lieu de "-j DROP" on mettrait "-j LOG --log-level info" pour la 2eme regle avant!!). De cette facon tous les paquets jetes ou rejetes apparaissent dans le log (soit visible avec la commande "dmesg" et/ou dans le fichier /var/log/messages) et on pourra ainsi deboguer et analyser le probleme, eventuellement, modifier les regles pour que ca marche.
Salut kmf31,
Deja la 1ere version est simplement fausse a cause de la remarque de lami20j.
Donc il faut ouvrir l'OUTPUT de facon inconditionee (sans le baratin RELATE ou ESTABLISHED etc.)
C'est exactement ce que j'ai dit ( de façon inconditionée) et ça graçe à ! INVALID
Donc j'ai dit que
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
en OUTPUT tu ne doit pas avoir une chose pareil - en traduction = de façon conditionée
En revanche ce qui suit est équivalent à de façon inconditionée
essaie avec ça
iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
Donc accepter tout en OUTPUT
lami20j
P.S. Le 1ère script est classique pour un client qui veut seulement se connecter sur net, sans avoir besoin de configurer un serveur ou un port particulier, et c'est vraiment suffisant. Je n'ai jamais rencontrer le moindre problème.
Bien sûr que si on possède un serveur il faut peaufiner la configuration ce qui semble le cas de fabrice11901.
Deja la 1ere version est simplement fausse a cause de la remarque de lami20j.
Donc il faut ouvrir l'OUTPUT de facon inconditionee (sans le baratin RELATE ou ESTABLISHED etc.)
C'est exactement ce que j'ai dit ( de façon inconditionée) et ça graçe à ! INVALID
Donc j'ai dit que
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
en OUTPUT tu ne doit pas avoir une chose pareil - en traduction = de façon conditionée
En revanche ce qui suit est équivalent à de façon inconditionée
essaie avec ça
iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
Donc accepter tout en OUTPUT
lami20j
P.S. Le 1ère script est classique pour un client qui veut seulement se connecter sur net, sans avoir besoin de configurer un serveur ou un port particulier, et c'est vraiment suffisant. Je n'ai jamais rencontrer le moindre problème.
Bien sûr que si on possède un serveur il faut peaufiner la configuration ce qui semble le cas de fabrice11901.
Bonjour
Et merci pour votre aide.
J'ai changé cette ligne, mais le port 80 ne fonctionne qu'à moitier certains sites s'affichent pas d'autre.
C'est un serveur web, donc je dois accepter le http, le ftp, le smtp, le pop, le ssh, les dns, le ping.
Pouvez-vous me coriger mon script entièrement afin qu'il fonctionne comme ça ensuite je verai les différences
merci d'avance de votre aide précieuse
Et merci pour votre aide.
J'ai changé cette ligne, mais le port 80 ne fonctionne qu'à moitier certains sites s'affichent pas d'autre.
C'est un serveur web, donc je dois accepter le http, le ftp, le smtp, le pop, le ssh, les dns, le ping.
Pouvez-vous me coriger mon script entièrement afin qu'il fonctionne comme ça ensuite je verai les différences
merci d'avance de votre aide précieuse