Routage / Iptables filter - réseaux et sécurité - Linux et OS Alternatifs
Marsh Posté le 10-02-2009 à 15:37:43
Tu as mal lu les liens que je t'ai donné.
Vu que ce n'est pas le firewall qui est destinataire du trafic Web que tu tentes de gérer, c'est dans la chaine FORWARD que tu dois rajouter tes règles. Pas dans les chaines INPUT/OUTPUT qui sont utilisé pour le trafic à destinations et venant du firewall.
Marsh Posté le 10-02-2009 à 15:49:33
Ok ben je vais tester encore et encore jusqu'a que ca marche !
#Reinitialise les 3 chaines de la table filter ( correcte ? )
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
iptables -A FORWARD -i eth3 -o eth0 -s 192.168.147.10 -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT ?
L'ouverture des ports ! Nécessaire ?
Marsh Posté le 10-02-2009 à 16:19:30
Quand tu fais un script ou même simplement des testes iptables:
tu dois toujours vider les tables:
iptables -F (quand on n'indique pas la table, c'est par défaut la table filter qui est utilisé)
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
et ensuite bloquer tout le trafic:
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
et ensuite seulement ouvrir ce que tu souhaites
Si tu ne flush pas tes tables, tu risques d'empiler les règles au fur et a mesures, et de ne plus comprendre ce qu'il se passe:
iptables -vnL -t filter t'indique les regles actives sur la table filter par exemple.
Marsh Posté le 10-02-2009 à 16:29:45
Ok ! en essayant de raisonner correctement
iptables -A FORWARD -i (iface d'entree) eth3 -o (iface de sortis) eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT ?
En ayant préciser les interfaces par lequel les flux se gere ! Faut il mettre en plus
-s 192.168.147.10
-d 192.168.0.10 ?
Le suivi de connection ne m'interesse pas pour le moment mais aparement il est utile de le mettre !
Marsh Posté le 10-02-2009 à 16:36:58
D'apres ce que j'ai compris, tu ne souhaites pas qu'un reseau soit vu en intégralité par un autre réseau mais juste une machine specifique, je dirais oui.
sinon, il risque d'être accessible à l'ensemble du reseau.
Le suivi de connexion, c'est bien pour le ftp par exemple quand tu passes d'une authentification sur le port 21 aux transfert de donnée sur le port 20.
En fait la règle: c'est de toujours éviter les règles trop permissive. car si tu fait une règles trop ouvert, tu risques de voir tous tes paquets passer par cette règle alors que tu donne une règle plus stricte un peu plus loin.
Le mieux, c'est de faire plein de tests pour appréhender le fonctionnement d'iptables
Marsh Posté le 10-02-2009 à 16:41:42
oui, c'est a peu près cette idée ! permettre l'accés au serveur web de deux 2 réseaux ou machine de 2 réseaux différents
Poste du réseau 4 == > Accés serveur web Poste du réseau 1
Les autre ordinateurs des réseaux 2 et 3 ne doivent pas y avoir accés !
Ok pour l'accés FTP, c'est dans mon projet de mettre plus tard un accés FTP en plus d'un serveur Web mais pour l'instant je n'ai pas encore de service FTP
! Au niveau des regles permissives, je n'ai que les services web sur deux machines virtuelles, aprés au niveau des restrictions , mise a par la gestion icmp et le serveur web local ( http : port 80) je n'ai pas grand chose a gerer mais j'essaye dans un premier temps de faire fonctionner cela pour mettre aprés d'autre services par la suite et d'autres régles concernant une politique de sécurité proxy / firewall
Marsh Posté le 10-02-2009 à 16:47:29
Lis ça attentivement pour appréhender le concept que t'as expliqué o'gure précédemment:
http://irp.nain-t.net/doku.php/130netfilter:030_filter
Marsh Posté le 10-02-2009 à 16:56:33
déja vu !!! je n'ai pas tout lu dû moins j'ai zapper un peu la nat, néanmoins j'utilise ce lien pour trouver la solution, je prend des morceaux de regle que j'adapte / modifie a ma config réseau !
Marsh Posté le 10-02-2009 à 17:42:30
je pense que tu seras obliger de jouer avec la chaine Forward de la table filter mais également avec la table nat.
tu peux aussi utiliser une sniffer pour voir comment ca se passe sur ton réseau: wireshark; iptraf etc...
Domaine vaste, mais très interessant
Marsh Posté le 10-02-2009 à 17:47:26
macfennec a écrit : je pense que tu seras obliger de jouer avec<...> la table nat. |
Pourquoi ?
Il s'agit de plusieurs LAN reliés entre eux par le firewall. Le routage est activé sur le firewall et les équipements dans les LAN ont pour passerelle par défaut le firewall. Dans cette configuration aucun NAT n'est nécessaire. Si on peut se passer de NAT, par pitié n'en mettons pas en place !
Le NAT sera nécessaire dans une phase ultérieure, lorsque shurik84 voudra rendre ses serveurs accessibles depuis Internet.
Dans son cas ce qu'il faut faire c'est simplement ce que tu as dit :
Citation : iptables -F (quand on n'indique pas la table, c'est par défaut la table filter qui est utilisé) |
Puis ouvrir les deux flux nécessaires si il ne veut pas mettre en place le stateful :
ouverture dans le sens "LAN CLIENT" vers "LAN SERVEUR" du flux à destination du port TCP port 80 et vers l'adresse IP du serveur web
ouverture dans le sens inverse (ie. "LAN SERVEUR" vers "LAN CLIENT" ) du flux provenant du port 80 et provenant de l'adresse du serveur web.
Ceci est à placer dans la chaine FORWARD de la table filter.
Il suffit juste de traduire ça en langage "iptable". Rien de compliqué.
Marsh Posté le 10-02-2009 à 18:01:05
o'gure a écrit : |
Vu que les réseaux changent, je pensais que c'était plus propre ainsi.
Marsh Posté le 10-02-2009 à 19:26:51
macfennec a écrit : Vu que les réseaux changent, je pensais que c'était plus propre ainsi. |
Grand Dieu non
Le NAT est une "aberration" dans un réseau. Ca rompt le principe de communication de bout en bout, ça induit de la complexité et des "bugs"/effet de bords...
Si dans un réseau tu ne peux pas faire autrement qu'utiliser du NAT c'est que :
1. tu manques de ressources (adresses IP)
2. ton réseau est trop complexe
3. tu es limité en matériel
4. tu fais fausse route.
Les deux seules raisons, à mon avis, pour en mettre en place c'est :
1. lorsque tu discutes avec des équipements sur Internet
2. lorsque tu fais des VPN avec recouvrement de plage d'adresse
Et la seconde raison peut être éliminée par un ré-adressage correct et cohérent (je sais, ce n'est pas tout le temps possible)
Marsh Posté le 11-02-2009 à 09:53:09
slt merci de vos reponses et de votre aide, donc pour repondre j'ai effectivement wireshark comme analyseur de trames, au niveau de la nat je ne vais pas l'utilisé car comme le dit o'gure ca complique les choses et ca me complique surtout l'objectif pour le projet proxy / firewall que de pouvoir etre connecter au web, mais c'est vrai que ca pourrait s'averer interessant d'utiliser la nat !
Donc concernant iptables, j'ai testé en traduisant ce qui est écrit et ca ne marche toujours pas :voici les deux lignes entrées en plus des regles de vidage et de reinitialisation
- iptables -t filter -A FORWARD -s 192.168.147.0 -p tcp --dport 80 -d 192.168.0.10 -j ACCEPT
- iptables -t filter -A FORWARD -s 192.168.0.10 -p tcp --dport 80 -d 192.168.147.0 -j ACCEPT
questions simple et idiote sur -s et -d, mettre l'adresse du réseau et sur -d l'adresse de destination pose t-elle un probleme pour le firewall ? Je pense aussi aprés une petite lecture plus attentive sur le "state" que l'etat des connexions me sera surement utile ? Qu'en pensez vous ?
Une autre question lequel de ces programme est le mieux pour gérer un firewall linux ? Perso je n'ai installer et vu rapidement que firestarter
# Firestarter
# Guarddog
# NuFace
# Dwall
# shorewall
# Firewall Builder
Marsh Posté le 11-02-2009 à 10:01:42
shurik84 a écrit : Donc concernant iptables, j'ai testé en traduisant ce qui est écrit et ca ne marche toujours pas :voici les deux lignes entrées en plus des regles de vidage et de reinitialisation - iptables -t filter -A FORWARD -s 192.168.147.0 -p tcp --dport 80 -d 192.168.0.10 -j ACCEPT - iptables -t filter -A FORWARD -s 192.168.0.10 -p tcp --dport 80 -d 192.168.147.0 -j ACCEPT |
pour une session TCP tu as deux flux si on veut :
Dans tes deux règles tu indiques deux fois --dport. Donc c'est sur que ça ne fonctionne pas. D'un coté ton trafic est autorisé, de l'autre coté ton trafic est interdit. Il faut utiliser --sport.
shurik84 a écrit : questions simple et idiote sur -s et -d, mettre l'adresse du réseau et sur -d l'adresse de destination pose t-elle un probleme pour le firewall ? |
Non, cf le man, tu peux mettre un sous-réseau.
shurik84 a écrit : Je pense aussi aprés une petite lecture plus attentive que l'etat des connexions me sera surement utile ? Qu'en pensez vous ? |
J'en pense que ça simplifie l'écriture des règles et ça offre une meilleure sécurité.
shurik84 a écrit : Une autre question lequel de ces programme est le mieux pour gérer un firewall linux ? Perso je n'ai installer et vu rapidement que firestarter |
J'ai testé firewall builder et shorewall qui sont corrects (une préférence pour firewall builder qui offre une interface que je préfère. Au final, je fais toujours mes scripts à la main. Question de choix.
Marsh Posté le 11-02-2009 à 10:36:40
Ok ben je vais voir ce que ça donne pour firewall builder ! Firestarter m'a l'air pas mal mais bon je vais voir pour firewall builder !
Donc voila 1 accès au web local sur 2 marche !! D'après le résultat , Les deux lignes sont pour 1 accès en faite !
donc si je veut que le deuxiéme accès marche entre les 2 réseaux il me faut en tout, 4 lignes de ce genre soit 4 flux ou 4lignes pour 2 accès ( flux entrant + sortant ) pour les 2 réseaux ! Correctes ?
Après test et verification c'est bien ça !!!! 4 lignes sont nécessaires
Marsh Posté le 11-02-2009 à 13:02:57
Il me semble que firestarter est sortie de l'arbre portable car le projet n'est plus maintenu et donc potentiellement faillible.
Marsh Posté le 10-03-2009 à 15:16:25
Soucis concernant le FTP
#!/bin/sh
# /etc/network/if-pre-up.d/iptables-start.sh
# Script "iptables-filtrage-start.sh"
# Fichier contenant les règles de filtrage "iptables"
# Chargement des differents modules
modprobe ip_conntrack;
modprobe iptable_nat;
modprobe ip_conntrack_ftp;
# Activation du NAT dans le kernel Lnx
echo 1 > /proc/sys/net/ipv4/ip_forward
# Initialisation de la table FILTER
# Par defaut, tout les paquets sont détruits
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
# Initialisation 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
#Aucun filtrage sur la boucle locale
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
#Autorise le ping du reseau SBO <=> FW
iptables -t filter -A INPUT -i eth3 -s 192.168.147.0/24 -p icmp -d 192.168.147.254 -j ACCEPT
iptables -t filter -A OUTPUT -o eth3 -s 192.168.147.254 -p icmp -d 192.168.147.0/24 -j ACCEPT
#Autorise la connexion internet sur l'interface eth4
iptables -A INPUT -i eth4 -j ACCEPT
iptables -A OUTPUT -o eth4 -j ACCEPT
#Autorise l'accés internet ( NAT )
iptables -t nat -A POSTROUTING -o eth4 -j MASQUERADE
#J'autorise l'accés FTP entre le lan et SBO
iptables -A FORWARD -s 192.168.147.10 -d 192.168.102.10 -i eth3 -o eth1 -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.102.10 -d 192.168.147.10 -i eth1 -o eth3 -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
Sur le serveur ftp je constate bien qu'il y a une tentative de connection en revanche il y a des messages d'erreurs :
FTP coté client il me marque ceci :
Réponse: 257 "/" is current directory.
Commande: PASV
Réponse: 227 Entering Passive Mode (192,168,102,10,4,30)
Commande: LIST
Réponse: 425 Can't open data connection.
Erreur: Échec lors de la récupération du contenu du dossier
FTP coté serveur j'ai ca :
257 "/" is current directory.
chris (192.168.147.10)> PASV
chris (192.168.147.10)> 227 Entering Passive Mode (192,168,102,10,4,30)
chris (192.168.147.10)> LIST
chris (192.168.147.10)> 425 Can't open data connection.
Échec lors de la récupération et lecture du contenu du dossier
je pense que c'est au niveau du serveur ftp (passif)
Merci de votre aide
c'est au niveau du filtrage car sans filtrage j'arrive bien a faire du ftp, soit il me manque des lignes, soit c'est au niveau des ports
Marsh Posté le 10-03-2009 à 15:46:53
Il y a 2 ports en action dans le FTP.
Le port 21 utilisé pour l'identification, et le port 20 pour les données.
Il faut que tu fasse un suivi de connexion au niveau d'iptables pour regler le probleme.
Marsh Posté le 12-03-2009 à 16:28:32
Bonjour j'ai un petit soucis de dns maintenant et je ne sais pas d'ou viens le probleme : J'utilise toujours un serveur proxy / firewall a 5 interfaces
Le proxy maintenant en place me sert d'authentification d'accés sur internet !
Mon interface qui est nater et qui me permet de me connecter sur internet est eth4 : 192.168.247.100
Mon fichier resolv.conf : nameserver 192.168.247.2 cette adresse correspond à la passerelle ( gateway ip adress) qui est configuré dans vmware : => Vmware\Virtual network settings\Nat
Sans iptables j'arrive a me connecter sur internet sans soucis mais dés que j'active mes regles de filtrages j'ai un probléme avec le dns ! Je n'arrive a naviguer que sur les pages du site debian.org que j'ai deja visiter sans les regles de filtrage ( seulement quelques unes ) puis si j'essaye d'aller sur d'autre part aprés 2-3min J'ai ce message qui apparait
Code :
|
Les modules modprobe ip_conntrack,modprobe iptable_nat,modprobe ip_conntrack_ftp sont chargés
Voici une partie de mes regles :
Code :
|
Cela viens t il du fichier resolv.conf ou seulement des regles iptables ?
Merci de votre aide car je galere depuis un moment a trouver l'erreure !
Marsh Posté le 18-03-2009 à 10:30:40
up
Nouveau test :
iptables -t filter -A FORWARD -o eth4 -s 192.168.247.100 -d 0.0.0.0/0 -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -i eth4 -s 0.0.0.0/0 -d 192.168.247.100 -p udp --dport 53 -j ACCEPT
Je viens de tester mais le probléme est tjr le même ! Aprés la demande d'authentification du proxy, je tombe sur le message d'erreur
Svp j'ai besoin d'un coup de main car pour moi les lignes en INPUT/OUTPUT et même forward me semblent corect et je n'arrive pas a cerner d'ou viens le probléme
Voici un deuxieme message d'erreur aprés la mise en place des regles dns :
Code :
|
Svp !!!
Marsh Posté le 18-03-2009 à 14:43:41
Probleme résolu, est ce que quelqu'un pourrait me dire si ces regles 4 regles sont bien sécurisés au niveau des état svp:
iptables -A INPUT -s 0.0.0.0/0 -d 192.168.247.100 -p tcp -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT
iptables -A OUTPUT -s 192.168.247.100 -d 0.0.0.0/0 -p tcp -m state --state NEW,ESTABLISHED,RELATED --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth4 -p udp --sport 1024: --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth4 -p udp --sport 53 --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
Merci d'avance, personnellement je pense que non mais j'aimerais savoir comment vous modifieriez ceci pour que cela soit d'avantage sécurisé svp
Marsh Posté le 13-06-2009 à 13:39:23
Bonjour, j'en profite de ce topic pour poser une petite question.
Voilà le schema réseau:
eth1 en contact avec 192.168.0.0 adresse ip de la carte 192.168.0.2
eth2 en contact avec 192.168.0.202 addresse ip de la carte: 192.168.0.200
J'aimerais rajouter une règle pour dire pour aller vers le 202 tu passes par eth2.
Mon idée était donc un truc du style:
route add -net 192.168.0.202 eth2
Visiblement ça ne marche pas.
Je sais que ce n'est pas top d'avoir deux réseaux identiques, mais là ce n'est pas de mon choix (mon freerunner est par défaut sur cette plage de réseau donc je ne veux pas tout reconfigurer). Il n'y a pas d'adresse ip identiques dans le réseau donc ps de problème.
Est ce réalisable???
EDIT: hum je pense avoir trouvé:
route add 192.168.0.202 gw 192.168.0.200 eth2
Maintenant il me faudrait arriver à router les paquets qui vont du freerunner au routeur. donc router de 192.168.0.202 vers 192.169.0.1 sans doute des règles à modifier.
EDIT2: bon finalement j'ai changé de réseau, je l'ai basculé en 192.168.9.0
mais toujours pareil le routage c'est le bordel.
EDIT3: voilà ce que je fais:
ifconfig eth2 192.168.9.200 netmask 255.255.255.0
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.9.0/24
sysctl -w net.ipv4.ip_forward=1
ip addr add 192.168.9.200/24 dev eth2
il manque quoi?
Marsh Posté le 10-02-2009 à 15:32:45
Bonjour tout le monde, bon après moult recherches infructueuses malgré les liens sur Iptables et la securité réseaux ( firewall ) et
sais qu'il y en a ! je bloque sur les solutions pourtant si simple :
![;) ;)](https://forum-images.hardware.fr/icones/wink.gif)
Rappel de ma configuration : Réseau sous VMWare
4 réseaux interconnecté avec un serveur Linux noyau 2.6x ( Debian ) qui va faire office de Firewall / Proxy
Réseau 1 : 192.168.0.0 PC XP1 : 192.168.0.10 Passerelle : 192.168.0.254
Réseau 2 : 192.168.102.0 PC XP2 : 192.168.102.10 Passerelle : 192.168.102.254
Réseau 3 : 192.168.7.0 PC XP3 : 192.168.7.10 Passerelle : 192.168.0.254
Réseau 4 : 192.168.147.0 PC XP4 : 192.168.147.10 Passerelle : 192.168.147.254
Serveur Linux : 4 Interfaces
eth0 : 192.168.0.254 , etc.............. => eth3 : .......147.254
Serveur Web local installé sur le réseau 1 et 4 : ( Plateforme Wamp )
Je veux permettre au réseau 4 d'accéder au serveur web installé et interdire cet accés aux 3 autres réseaux
Pour cela j'ai activer le routage sur le linux :
Le Ping est possible dans tous les sens ( adresse, passerelle ... )
Puis j'essaye de mettre en place des régles de filtrage avec la table filter permettant de dire :
" J'autorise les ip des réseaux 1 et 4 a accéder aux serveurs web et interdit l'accés a tout le reste"
#Vide toutes les régles :
iptables -t filter -F
iptables -t filter -X
#Reinitialise les 3 chaines de la table filter
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
#Connection au serveur web ( wamp )
Autorise juste l'accés Web pour le réseaux 4 ==> Serveur Web 192.168.0.10
C'est la que je mélange tout !
# iptables -t filter -A OUTPUT -o eth0 -s 192.168.147.10 -p tcp --dport 80 -j ACCEPT
# iptables -t filter -A INPUT -i eth3 -d 192.168.0.10 -p tcp --sport 80 -j ACCEPT
j'ai d'autre régles mais pour l'instant je cherche a ce que ca marche pour seulement les régles ci dessus :
Merci de votre aide !
Message édité par shurik84 le 10-02-2009 à 15:39:27