Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

iptables et ftp passif

14 réponses
Avatar
Etienne SOBOLE
salut.
j'ai trouvé ces lignes sur internet pour autoriser mes postes client ace
connecter a FTP

iptables -A INPUT -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j
ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state
NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j
ACCEPT

iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m
state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m
state --state ESTABLISHED,RELATED -j ACCEPT

mais qu'est ce que ca veux dire???
surtout les deux dernières???

est ce que tout les port de ma machines sont ouvert entre 1024 et 65536 ???

Etienne

4 réponses

1 2
Avatar
Etienne SOBOLE
"Eric Razny" a écrit dans le message de news:
3f673cfc$0$13276$

Enfin la ou je voulais en venir c'est que :

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

modprobe ip_conntrack
modprobe ip_conntrack_ftp

# ces regles la ouvrent : le FTP, le HTTP et le SSH pour qu'un client puisse
se connecter sur le serveur (tu as raison, le FW est sur la meme machine)
iptables -I INPUT -i ppp0 -p tcp --dport 21 --syn -m state --state NEW -j
ACCEPT
iptables -I INPUT -i ppp0 -p tcp --dport 80 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -i ppp0 -p tcp --dport 22 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT

# ces regles permettent a la machine d'accèder a l'Internet sur le HTTP et
l'IMAP
iptables -A OUTPUT -o ppp0 -p tcp --dport 143 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 80 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# et la on ferme tous les autres ports !!!
iptables -A FORWARD -i ppp0 -j DROP
iptables -A INPUT -i ppp0 -j DROP
iptables -A OUTPUT -o ppp0 -j DROP

voila.
donc ca, c'est un configuration correcte ?!? non ???

Bon c'est schématique... (j'ai pas mis le NAT ni le reste). Dans la
pratique, la c'est correcte ou pas d'apres toi?

Merci
Etienne

PS : --syn ca sert a quoi ?
PS2 : ca veut dire quoi ajouter une couche netfilter ???




iptables -I INPUT -i $EXT_INF -p tcp --dport 21 --syn -m state --state
NEW -j ACCEPT

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Si j'ai bien compris, l'idée c'est de filtrer que sur l'etablissement
des


connections et pas des connexion elles meme.


Les deuxièmes et troisièmes règles sont un filtrage (le filtre laisse
passer). Tu filtre donc bien les "connexion elles meme" selon ton
expression.
Elles sont nécessaires si tu veux laisser passer les paquets ESTABLISHED
et

RELATED dans les deux sens.
(à noter comme il n'y a pas de FORWARD je suppose que tu as ton serveur
ftp

sur ton FW, c'est "mal" :) [1]
Accessoirement tu peux préciser les interfaces si tu as un FW multipattes
(mais tu peux simplement filtrer sur le serveur lui même).

ce qui revient a utiliser les regles
iptables INPUT ... --dport ...
pour le filtrage en entrée (Internet -> Reseau)
et
iptables OUTPUT... --dport ...
pour le filtrage en sortie (Reseau -> Internet)


c'est plus complexe que ça (enfin si je comprends ta question, je n'en
suis

pas sur!)
Ta première règle permet l'établissement d'une connexion (supposée ftp
mais

rien n'est sur!) de l'extérieur, en tcp sur le port 21 de ta machine.
A noter le --syn qui n'est pas redondant avec le NEW.

Une fois la connexion établie c'est la gestion *statefull* du FW *avec* le
module de suivi ftp qui va assurer dynamiquement l'autorisation
d'ouverture

des ports.

Attention : si d'autres modules sont chargés et que d'autres règles
permettent d'initier des connexion ces deux règles laisseront passer les
paquets correspondants aussi.

donc si j'ai bien compris (2 eme)
on utilise jamais --sport pour les règle de firewall puiqu'elle sont
forcément ESTABLISHED ou RELATED


Ben ce n'est pas ça non plus.
(--sport ou --dport dans ton exemple suivant un ftp actif ou passif)
Si tu te contente des règles 2 & 3 tu laisse passer toutes les connexion
établies ou gérées par un module du FW. Or il se peut que tu veuille être
plus restrictif (ex : IPs ou heures particulières pour accéder au ftp par
exemple). Dans ce cas tu vas ajouter des infos sur le port (dans le cas du
ftp pense au mode actif et au mode passif, ça fait deux séries de règles)
et

tu continueras avec d'autres règles pour les autres services.

Le mieux je pense est de faire un tour sur les tutorials du site de
netfilter, où des exemples simples et progressifs sont donnés.
(important : pour comprendre les règles il faut aussi comprendre un
minimum

le fonctionnement des couches réseau filtrées et des protocoles utilisés).

Eric

[1] ou tu ajoute une couche de netfilter sur ton serveur ftp, c'est mieux
:)




Avatar
Cedric Blancher
Dans sa prose, Etienne SOBOLE nous ecrivait :
# ces regles la ouvrent : le FTP, le HTTP et le SSH pour qu'un client
puisse se connecter sur le serveur (tu as raison, le FW est sur la meme
machine)
iptables -I INPUT -i ppp0 -p tcp --dport 21 --syn -m state --state NEW
-j ACCEPT
iptables -I INPUT -i ppp0 -p tcp --dport 80 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
[...]

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


Je ne sais pas où les gens trouvent ces règles en
NEW,ESTABLISHED,RELATED, mais c'est un putain de belle connerie.
Enb gros, cette règle est presque équivalente à :

iptables -I INPUT -i ppp0 -p tcp --dport 21 --syn -j ACCEPT

En effet, les seuls paquets à destination du port TCP/22 seront des
paquets flagés INVALID. Hors ces paquets sont extrêmement rares en TCP
et seront, de toute manière, rejetés pas le noyau. Donc en gros, on
laisse passer tout ce qui pourrait passer.

Après, on s'étonne (cf. discussion récente sur la liste de diffusion
) de voir des :

iptables -A FORWARD NEW,ESTABLISHED,RELATED -j ACCEPT

Mais bon bref. C'est quoi l'intérêt de faire une règle en
NEW,ESTABLISHED,RELATED sur un port donné sachant que :

. il y a une règle en ESTABLISHED,RELATED juste avant qui va accepter
les paquets en question, qui n'atteindront donc jamais cette règle
. un paquet RELATED n'arrivera sûrement pas sur le port en question,
voire même n'arrivera jamais (SSH, HTTP et IMAP n'ont pas de
connexions négociées par exemple)

# et la on ferme tous les autres ports !!!
iptables -A FORWARD -i ppp0 -j DROP
iptables -A INPUT -i ppp0 -j DROP
iptables -A OUTPUT -o ppp0 -j DROP


Les politiques par défaut sont déjà à DROP, pourquoi rajouter une
règle qui va faire ce que de toute manière les paquets subiront en fin
de compte ?

donc ca, c'est un configuration correcte ?!? non ???


Non.

Ça, c'est déjà plus correct :

modprobe ip_conntrack
modprobe ip_conntrack_ftp

iptables -P INPUT DROP
iptables -P OUTPUT DROP

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

iptables -A INPUT -m state --state NEW -i ppp0 -p tcp --dport 21 --syn
-j ACCEPT
iptables -A INPUT -m state --state NEW -i ppp0 -p tcp --dport 22 --syn
-j ACCEPT
iptables -A INPUT -m state --state NEW -i ppp0 -p tcp --dport 80 --syn
-j ACCEPT
iptables -A INPUT -m state --state NEW -i ppp0 -p tcp --dport 143 --syn
-j ACCEPT

iptables -A OUTPUT -m state --state NEW -o ppp0 -p tcp --dport 80 --syn
-j ACCEPT
iptables -A OUTPUT -m state --state NEW -o ppp0 -p tcp --dport 143 --syn
-j ACCEPT

(j'ai pas mis le NAT ni le reste)


Si tu rajoutes du NAT, il faudra charger le module ip_nat_ftp et commencer
à implémenter des règles de filtrage en FORWARD. En outre, il faudra
activer le routage sur ta machine :

echo 1 > /proc/sys/net/ipv4/ip_forward

Ainsi que le reverse path filtering (anti-spoofing) :

echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

PS : --syn ca sert a quoi ?


--syn sert à vérifier le jeu de drapeaux TCP sur le paquet. --syn (cf.
documentation) est un alias de --tcp-flags SYN,RST,ACK SYN qui veut dire
que la paquet ne doit avoir que le bit SYN positionné parmi les bits
SYN,RST et ACK (les autres flags peuvent avoir n'importe quelle valeur).
En gros, on vérifie que le paquet est bien un paquet d'ouverture de
connexion.

PS2 : ca veut dire quoi ajouter une couche netfilter ???


Mettre en place un jeu de règles de filtrage avec iptables. Netfilter est
le nom du système de filtrage de paquet (et de NAT et mangle) de Linux,
iptables est l'outil qui le configure (pour IPv4).

--
« Voyons-voir : est-ce que ma question est vraiment conne ? Oh oui,
vraiment trop conne, je vais poster dans "premiers-pas", je posterai
dans "configuration" quand je serai moins con. »
-+-JLC - Guide du Neuneu d'Usenet - Bien configurer sa question -+-

Avatar
Samuel
iptables -P INPUT DROP
iptables -P OUTPUT DROP

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


Salut,

Juste pour comprendre :

Par défaut, tu acceptes en INPUT et OUTPUT tous les paquets ESTABLISHED,
RELATED ....
Donc, par la suite si tu ne veux pas de paquets ICMP RELATED, t'es obligé de
le rajouter à la main.
La personne ne sachant pas que l'ICMP gère le RELATED, se retrouve avec de
l'ICMP qui se promène alors qu'elle ne le sait pas forcément !!!

Ca va un peu à l' opposé de la règle :

1) On drope tout
2) On ne laisse passer que ce que l'on désire.

Non ???

Merci.
Samuel.

Avatar
Cedric Blancher
Dans sa prose, Samuel nous ecrivait :
Par défaut, tu acceptes en INPUT et OUTPUT tous les paquets ESTABLISHED,
RELATED ....


Oui.

Donc, par la suite si tu ne veux pas de paquets ICMP RELATED, t'es obligé
de le rajouter à la main.


Pourquoi ne voudrais-tu pas d'ICMP RELATED ? Les ICMPs RELATED font partie
intégrante des connexions, puisqu'étant consécutifs aux erreurs
engendrés par les flux IP acceptés, que tu laisses passer (sinon, ils
seraient INVALID). Les refuser, c'est porter atteinte au fonctionnement
normal de ton système.

Genre de truc pas cool quand on filtre l'ICMP comme un boulet, c'est le
coup de la TCPMSS qu'on doit baisser sur un LAN derrière un lien PPPoE
parce qu'un boulet sur le chemin nous drop les Fragmentation-Needed.

Non ???


Non.

--
C'est décidément trop compliqué de rediriger vers les bons groupes :o(
Facile, tu rediriges vers fr.comp.erwan.david. :))

-+- QL in Guide du Fmblien Assassin : "Et toc !" -+-

1 2