Jump to content

[IPTABLES]


Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ...) ...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 ?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 :francais:

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.

Link to comment
Share on other sites

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

6981f647b063534a72d754bcc5b98653.jpg

Link to comment
Share on other sites

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

6981f647b063534a72d754bcc5b98653.jpg

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 ?

Link to comment
Share on other sites

  • 3 weeks later...

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 .... :transpi:

C'est où que je pourrais avoir commis une erreur ??

Merci

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...