Précédent   Forum du club des développeurs et IT Pro > Systèmes > Linux > Sécurité
Sécurité Vos questions sur la sécurité sous Linux/Unix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/11/2012, 18h34   #1
stc074
Membre habitué
 
Avatar de stc074
 
Homme Pierre-jean
Codeur du dimanche
Inscription : janvier 2009
Messages : 466
Détails du profil
Informations personnelles :
Nom : Homme Pierre-jean
Âge : 38
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Codeur du dimanche

Informations forums :
Inscription : janvier 2009
Messages : 466
Points : 143
Points : 143
Par défaut iptables forward et DROP

Bonjour, je vois a quoi correspond INPUT et OUTPUT (facile) mais je ne saisit pas a quoi correspond FORWARD.
Sur mon serveur ubuntu il y a :
Code :
1
2
Chain FORWARD (policy DROP)
target     prot opt source               destination
Sans aucune règle.
A votre avis est-ce pour cela que je n'arrive pas à accéder au FTP?
Si quelqu'un arrive à m'expliquer ce qu'est FORWARD je lui offre toute ma gratitude.
Merci.
stc074 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2012, 22h45   #2
IP_Steph
Modérateur
 
Avatar de IP_Steph
 
Homme Steph
Architecte réseau
Inscription : février 2012
Messages : 1 282
Détails du profil
Informations personnelles :
Nom : Homme Steph
Localisation : France

Informations professionnelles :
Activité : Architecte réseau
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2012
Messages : 1 282
Points : 2 716
Points : 2 716
Citation:
Si quelqu'un arrive à m'expliquer ce qu'est FORWARD je lui offre toute ma gratitude.
Je n'en demande pas tant

Ta question est relative au cheminement d'un paquet au travers d'un stack IP Unix. Le stack utilise 3 tables pour contrôler, router et éventuellement modifier un paquet. Ces tables sont :
- la table FILTER pour la gestion des paquets qui ont pour destination/origine le firewall embarqué dans le kernel (concrètement, ces paquets ont pour adresse IP source/destination une des adresses IP locales à la machine Linux),
- la table NAT, relative aux opérations de translation d'adresse source/destination,
- la table MANGLE relative aux flux qui passent d'une interface à une autre (ces paquets ont pour adresse IP source/destination une adresse étrangère au stack)...

Pour chacune de ces tables, il existe des chaînes associées La responsabilité d'une chaîne, c'est d'évaluer le paquet IP afin de le contrôler dans son cheminement au travers du stack. Le problème (enfin, c'était le mien quand j'ai commencé à bricoler avec les iptables), c'est que certaines chaînes de tables différentes ont le même nom... Donc dire qu'on fait telle ou telle chose avec la chaîne X, ça ne veut rien dire... Il faut préciser qu'on fait quelque chose avec la chaîne X dans la table FILTER, NAT ou MANGLE.

Voici les chaînes utilisées par les différentes tables.

FILTER travaille avec 3 chaînes :
- INPUT (paquets à destination du firewall embarqué),
- OUTPUT (paquets émis par le firewall),
- FORWARD (paquets qui traversent le firewall d"une interface vers une autre).

NAT travaille avec 3 chaînes :
- PREROUTING (généralement utilisé par la fonction DNAT, c'est à dire juste avant la 1ère décision de routage),
- POSTROUTING (généralement utilisé par le SNAT, juste après la 1ère décision de routage),
- OUTPUT (utilisée après la 2ème décision de routage lorsque le paquet a été S/D-NATté).

MANGLE travaille avec 5 chaînes :
- PREROUTING (1ère chaîne utilisée pour n'importe quel paquet entrant),
- FORWARD (1ère chaîne utilisée pour n'importe quel paquet qui vient de passer la 1ère décision de routage),
- INPUT (utilisée après la 1ère décision de routage lorsque la destination IP est le firewall embarqué, sera donc redirigé vers la table FILTER),
- OUTPUT (utilisée après la 2ème décision de routage, notamment pour tracer les connexions ayant pour source le firewall embarqué),
- POSTROUTING (utilisée juste avant que le paquet ne quitte la mqchine Linux, que le paquet soit émis localement par la machine Linux ou simplement traversé par le firewall embarqué).

Bon, oui, pas simple

Voilà le cheminement du paquet au travers du stack avec toutes les chaînes/tables :



Par défaut, une machine Linux munie de 2 cartes réseaux et configurée en IP Forwarding est une véritable passoire Les tables et leurs chaînes associées permettent alors de protéger les réseaux locaux exposés aux menaces venant de réseaux "intrusted".

Dans ton cas, les iptables semblent vides et d'après la description de ton problème, il y a fort à parier que c'est une machine Linux munie d'une seule carte réseau... Ta machine Linux n'est ni routeur, ni firewall... Est-ce correct ? Si c'est bien le cas, c'est un problème d'appli client/serveur localisé à un host... Est-ce que le serveur FTP est bien accessible ?

Si ta machine possède plusieurs interfaces réseau, peux-tu poster un

qui permettra de voir s'il y a des contrôles déjà configurés ?

Steph
__________________
"#define QUESTION ((bb) || !(bb))" - Shakespeare
IP_Steph est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/11/2012, 14h33   #3
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 072
Points : 11 072
Hello,

Citation:
Envoyé par stc074 Voir le message
Bonjour, je vois a quoi correspond INPUT et OUTPUT (facile) mais je ne saisit pas a quoi correspond FORWARD. Si quelqu'un arrive à m'expliquer ce qu'est FORWARD je lui offre toute ma gratitude. Merci.
IPSteph t'a fait faire un tour d'horizon assez complet de la chose. Toutefois, il est important d'insister sur la question initiale. « FORWARD » doit s'entendre comme « faire suivre ».

Avant même de se pencher sur le filtre, une machine sous Linux a tout-à-fait la possibilité de se comporter en routeur et/ou en passerelle et donc de recevoir les paquets émis sur un brin pour les relayer vers un autre. C'est ce qui va se passer notamment lorsque tu fais un « partage de connexion Internet » même si cette notion est un peu tombée en désuétude depuis le tout-WiFi. En fait, dans ce dernier cas, c'est ta box ou ton routeur Wifi qui va se charger de ce travail mais celui-ci restera identique et il est même tout-à-fait plausible que la box que tu utilises fonctionne en réalité avec un noyau Linux.

« FORWARD » est donc une chaîne qui concerne les paquets qui ne sont ni à destination de ta machine ni produits par elle, mais qui sont « en transit » en passant par elle.

Attention également à la « politique », « Policy » en anglais, de chacune de tes règles principales : il s'agit de la cible à atteindre par défaut lorsque ton paquet ne correspond à aucun règle ou, a fortiori, lorsque la table est vide. Par défaut, toutes ces politiques sont « ACCEPT », donc pas de filtrage au départ, mais la plupart des distributions les configurent par défaut à DROP, de fait qu'ils seront silencieusement détruits. Trop de sécurité tue la sécurité, à mon avis…

Citation:
A votre avis est-ce pour cela que je n'arrive pas à accéder au FTP?
On ne sait pas encore de quoi tu parles à ce stade…
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2012, 18h34   #4
stc074
Membre habitué
 
Avatar de stc074
 
Homme Pierre-jean
Codeur du dimanche
Inscription : janvier 2009
Messages : 466
Détails du profil
Informations personnelles :
Nom : Homme Pierre-jean
Âge : 38
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Codeur du dimanche

Informations forums :
Inscription : janvier 2009
Messages : 466
Points : 143
Points : 143
Citation:
Si ta machine possède plusieurs interfaces réseau, peux-tu poster un

Code :
Sélectionner tout - Visualiser dans une fenêtre à part

iptables -L -v

qui permettra de voir s'il y a des contrôles déjà configurés ?
oui voila :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
:~# iptables -L -v
Chain INPUT (policy DROP 28389 packets, 1803K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  12M 1352M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
 2084  163K ACCEPT     icmp --  any    any     anywhere             anywhere            
1866K  122M ACCEPT     all  --  lo     any     anywhere             anywhere            
  202 12048 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
  688 34720 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:domain
60476 4028K ACCEPT     udp  --  any    any     anywhere             anywhere             udp dpt:domain
 443K   27M ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
   79  4184 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http-alt
   13   668 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:2812
   29  1424 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:smtp
    1    60 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:pop3
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:imap2
 
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 
Chain OUTPUT (policy DROP 333K packets, 52M bytes)
 pkts bytes target     prot opt in     out     source               destination         
  12M 1261M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
   12  6912 ACCEPT     icmp --  any    any     anywhere             anywhere            
1866K  122M ACCEPT     all  --  any    lo      anywhere             anywhere            
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
  167 10012 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:domain
 324K   24M ACCEPT     udp  --  any    any     anywhere             anywhere             udp dpt:domain
    1    76 ACCEPT     udp  --  any    any     anywhere             anywhere             udp dpt:ntp
 429K   26M ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http-alt
 510K   31M ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:smtp
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:pop3
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:imap2
on m'avait déjà fait la remarque que la contraint accept all in anywhere (INPUT) faisait tout passer, le problème c'est que si je la vire mes sites en j2ee utilisant un couplage tomcat/apache ne sont plus accessibles, en plus je n'arrive pas à accéder au FTP :

Code :
1
2
3
4
5
:~# telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.localdomain\localhost.
Escape character is '^]'.
Connection closed by foreign host.
(j'ai pas le temps de taper quoi que se soit si j'essaie de me connecter avec filezilla j'ai une connection timeout)
Merci.
stc074 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2012, 10h07   #5
IP_Steph
Modérateur
 
Avatar de IP_Steph
 
Homme Steph
Architecte réseau
Inscription : février 2012
Messages : 1 282
Détails du profil
Informations personnelles :
Nom : Homme Steph
Localisation : France

Informations professionnelles :
Activité : Architecte réseau
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2012
Messages : 1 282
Points : 2 716
Points : 2 716
Citation:
le problème c'est que si je la vire mes sites en j2ee utilisant un couplage tomcat/apache ne sont plus accessibles, en plus je n'arrive pas à accéder au FTP :
Ben, oui, c'est le tout ou rien : soit on laisse tout passer avec un "any any", soit on laisse rien passer puis on ouvre les ports au fur et à mesure. Dans la config que tu as postée, tes règles ne servent pas à grand chose puisque tu laisses tout passer...

Si tu vires la règle "any any", il faut ensuite ouvrir les ports tcp/udp correspondant aux services tomcat/apache, ça doit bien se trouver sur le net, ta config ne sort pas spécialement des chemins battus, voici un point de départ par exemple :

http://rimuhosting.com/mod_jk2_and_mod_proxy_ajp.jsp

et ouvrir les ports correspondant au service FTP hébergé par ton firewall :

Code :
1
2
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Steph
__________________
"#define QUESTION ((bb) || !(bb))" - Shakespeare
IP_Steph est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h52.


 
 
 
 
Partenaires

Hébergement Web