Forum Clubic

Serveur linux - script iptables

Bonne année a tous!
J’ai un serveur sous debian et un pc portable client en wifi qui est soit sous windows soit sous mandrake.
J’aimerais mettre le par feu uniquement sur le serveur afin d’alleger le client.

J’ai un script qui est fortement inspiré de la formation d’alexis delattre, mais je je voudrais etre sur qu’il protege bien mon reseau.

Le serveur est relié au net par l’interface eth0 et le client est relié au serveur par l’interface wlan0.

Au début je bloque toutes les entrées et le forward :


iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

Ensuite j’accepte les connections déjà etablies


iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Ensuite j’ouvre tous les ports que j’utilise pour la regle INPUT , par exemple :

iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT

Et pour le nat :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Voici ls questions que je me pose :
Les regles qui permettent d’accepter les connexions dejà etablies ne sont elles pas trop permissives?
Que font elles exactement?
Est ce qu’elles peuvent ouvrir d’autres ports que ceux que j’ai défini?

J’ai essayé de me passer de cette ligne :

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

mais je ne peux me connecter a rien, pourtant j’ouvre bien les ports necessaires par la suite.

Et pour la ligne :

iptables -A FORWARD -i eth0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT

est ce que ca n’autorise que des connexions qui ont été acceptées par le serveur par rapport aux ports que j’ai ouvert, ou est ce que ca peut en ouvrir d’autres?

Merci pour vos explications car j’en ai bien besoin comme vous pouvez le voir :d

le fait de n’accepter que des connections que tu as initialisé toi te protege surtout du piratage par drapeau SYN/ACK sur le protocole TCP

ce sont les drapeaux qui indique une réponse a une demande d’initialisation
dans le cas ou c’est faux, ca veut dire qu’on cherche a tromper ton firewall pour laisser entrer ce paquet alors que toi tu n’a rien initialisé

a priori c’est la seule utilité que je connaissent de cette régle, c’est donc relativement restreint et pas donné a tout le monde d’exploiter ce genre de faille

donc oui c’est permissif dans le sens ou tu ne protege pas grand chose :slight_smile:

pour ce qui est des ports, iptables est un firewall qui lit le ficheir de conf linéairement donc si tu veux bloquer des ports, met ces régles au début :slight_smile:

est util uniquement pour les services qui tournent sur le serveur (apache ici).

la commande “iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE” autorise tous les clients de eth0 à émettre des requestes sur n’importe quel port.

tu le savait ptet mais je précise pour les autres visiteurs :wink:

Ok donc ces regles ne sont pas des regles qui laissent entrer plus de connections que si je ne les avais pas mises? Au contraires elles sont restrictives?

Dans ce cas pourquoi plus rien ne passe en quand j’enleve la regle input qui autorise les connexions dejà etablies?

pour ce qui est des ports, iptables est un firewall qui lit le ficheir de conf linéairement donc si tu veux bloquer des ports, met ces régles au débu

En fait je ne bloque aucun port precis dans mon script , au contraire au debut je bloque tout en Input et apres j’ouvre des ports.

Ah bon ok, je croyais que ceci donnait l’acces aux sites web hebergés sur des serveurs apache distants!

Donc il faut ouvrir quoi pour autoriser le surf? Avec quelle commande ?

Dans ce cas pourquoi plus rien ne passe en quand j’enleve la regle input qui autorise les connexions dejà etablies?

-> ba tu bloque tout, les connexions établies ne peuvent pas continuer et donc rien ne passe !

c’est ca la magie du NAT : tout est accessible partir de l’intérieur mais rien de ce qui est à l’intérieur n’est accessible de l’éxtéreur !

(l’inconvénient c’est quand tu veux faire du p2p ou utiliser lla webcam ou le transfert de fichier par MSN ou yahoo