Bonjour a tous,

Je voudrai configurer iptables en lignes de commandes à  l'aide d'un script afin de bien comprendre ce qui est filtré de ce qui ne l'est pas pour l'ensemble de mon réseau (à  savoir un poste F10 faisant office de passerelle internet, un poste windows et un portable F10 comme station de travail).

Voici mainteant deux jours que je suis sur ce souci; je m'explique :
Je suis un tuto trouvé sur internet, celui-ci, que j'ai suivi lignes à  lignes pour en sortir ce bout de script (ne rigolez pas, faut bien débuter):-D :
#!/bin/sh
# Suppression toutes tables filter prédéfinies
iptables -t filter -F

# Suppression toutes tables filter utilisateurs
iptables -t filter -X

# Initialisation des 3 chaines de la table filter
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

# Autoriser les connexions loopback sortantes dans la chaine OUTPUT de la table filter
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

# Autoriser les connexions loopback entrantes dans la chaine INPUT de la table filter
iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

# Autoriser les connexions locales eth1 sortantes
iptables -t filter -A OUTPUT -o eth1 -s 0.0.0.0/0 -d 192.168.1.192/26 -j ACCEPT

# Autoriser les connexions locales eth1 entrantes
iptables -t filter -A INPUT -i eth1 -s 192.168.1.192/26 -d 0.0.0.0/0 -j ACCEPT

# Autoriser les connexions internet eth0 sortantes sur port tcp 80
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -p tcp --dport 80 -j ACCEPT

# Autoriser les connexions internet eth0 entrantes sur port tcp 80
iptables -t filter -A INPUT -i eth0 -d 192.168.0.192/26 -p tcp --sport 80 -j ACCEPT

# Autoriser les connexions internet eth0 sortantes sur port tcp 443
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -p tcp --dport 443 -j ACCEPT

# Autoriser les connexions internet eth0 entrantes sur port tcp 443
iptables -t filter -A INPUT -i eth0 -d 192.168.0.192/26 -p tcp --sport 443 -j ACCEPT

# Autoriser les connexions internet eth0 sortantes sur port tcp et udp 53
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -p udp --dport 53 -j ACCEPT

# Autoriser les connexions internet eth0 entrantes sur port tcp et udp 53
iptables -t filter -A INPUT -i eth0 -d 192.168.0.192/26 -p tcp --sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d 192.168.0.192/26 -p udp --sport 53 -j ACCEPT

# Redémarrer le service
service iptables restart
J'ai rajouté les lignes concernant les port udp et tcp 53 en entrée et sortie car le poste F10 faisant la passerelle fait aussi serveur dns pour mon petit réseau.

Et enfin voici mon problème :
le poste F10 passerelle se connecte bien sur internet, sans difficulté
les 2 postes clients (windows et portable F10) arrivent à  résoudre les adresses internet (j'ai vérifié en faisant des nslookup sur des serveurs connus type www.google.com, donc ils arrivent à contacter leur serveur dns (le F10 passerelle) mais pas moyen d'avoir une page internet, j'ai tout le temps la même erreur.
J'ai essayé également de pinger sur ces serveurs et j'ai toujours la même erreur aussi :
[root@srvr ~]# nslookup www.google.com
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
Name: www.l.google.com
Address: 209.85.229.103
Name: www.l.google.com
Address: 209.85.229.104
Name: www.l.google.com
Address: 209.85.229.147
Name: www.l.google.com
Address: 209.85.229.99

[root@srvr ~]# ping 209.85.229.103
PING 209.85.229.103 (209.85.229.103) 56(84) bytes of data.
ping: sendmsg: Opération non permise
ping: sendmsg: Opération non permise
^C
--- 209.85.229.103 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 6438ms
Dernier point que je n'explique pas non plus, je ne suis pas en mesure de poster ce fil depuis le poste passerelle, j'ai du modifier la config réseau du portable F10 pour pouvoir le faire.

si des fois vous voyez ou je fais une erreur, cela m'aiderait bien, Merci d'avance à tous
Y'ello,
Ce poste est suppose etre la passerelle vers Internet right? Mais je ne vois aucune ligne dans ta conf IPTABLES pour le SNAT (MASQUERADE en fait).
Peux tu poster l'output de iptables -L et iptables -t nat -L (juste apres avoir executer ton script). Et si possible poste tes parametres reseau (je voudrais savoir si 192.168.1.192/26 est bien ton ID reseau).
Bonjour stivesso,

en effet le poste est supposé etre une passerelle vers l'internet.
Pour la ligne SNAT, comme je le disais le script est vraiment minime et je n'ai pas de ligne donnant cette instruction.

Voici le résultat de iptables -L
[root@srvr ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- 192.168.1.192/26 anywhere
ACCEPT tcp -- anywhere 192.168.0.192/26 tcp spt:http
ACCEPT tcp -- anywhere 192.168.0.192/26 tcp spt:https
ACCEPT tcp -- anywhere 192.168.0.192/26 tcp spt:domain
ACCEPT udp -- anywhere 192.168.0.192/26 udp spt:domain

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere 192.168.1.192/26
ACCEPT tcp -- 192.168.0.192/26 anywhere tcp dpt:http
ACCEPT tcp -- 192.168.0.192/26 anywhere tcp dpt:https
ACCEPT tcp -- 192.168.0.192/26 anywhere tcp dpt:domain
ACCEPT udp -- 192.168.0.192/26 anywhere udp dpt:domain
et celui de iptables -t nat -L
[root@srvr ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Pour les parametres réseau y-a-t-il une commande qui résume ma configuration ?

Voici déja  le résultat d'un ifconfig:
[root@srvr ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:19:66:74:2F:A2
inet adr:192.168.0.251 Bcast:192.168.0.255 Masque:255.255.255.192
adr inet6: fe80::219:66ff:fe74:2fa2/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1745 errors:0 dropped:0 overruns:0 frame:0
TX packets:1910 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1223031 (1.1 MiB) TX bytes:255292 (249.3 KiB)
Interruption:17

eth1 Link encap:Ethernet HWaddr 00:E0:7D:E2:5D:43
inet adr:192.168.1.251 Bcast:192.168.1.255 Masque:255.255.255.192
adr inet6: fe80::2e0:7dff:fee2:5d43/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1240 (1.2 KiB) TX bytes:1185 (1.1 KiB)
Interruption:23 Adresse de base:0x4c00

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2841 errors:0 dropped:0 overruns:0 frame:0
TX packets:2841 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:229096 (223.7 KiB) TX bytes:229096 (223.7 KiB)
j'espere que cela t'aidera a cerner mon souci, et déja merci pour ton aide
Je pense que c normal que t ce probleme, parce que quand tu fais un ping vers l'exterieur, tes packages passent par la chaine forward , hors en fais dans ta chaine forward tu drop all(default) , juste pour troubleshooter run iptables -t filter -P FORWARD ACCEPT and reessayes ton ping je pense que ca marchera, postes le resultat de la commande ping apres ca.
je viens de modifier ceci :
iptables -t filter -P OUTPUT ACCEPT
les nslookup fonctionnent toujours sur tous les postes, mais seule la passerelle continu de pouvoir aller sur internet.

pour la reponse ping sur 74.125.77.103 (www.google.com)

la reponse est la même :
ping: sendmsg: Opération non permise
Tu dis avoir suivi ce tuto : http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-06.html
Ca veux dire quoi ? Que tu as juste suivi la page indiqué (un premier script simple) ? Parce que si c'est ça, il te manque des bouts ...

Dans tout les cas, il vaudrait mieux que tu reprennes une lecture complète du tuto complet ici http://olivieraj.free.fr/fr/linux/information/firewall/ car ton script ne correspond pas vraiment ce qui y est indiqué (dans le tuto complet). Sinon, c'est effectivement un des meilleurs tutos et je le conseille souvent.

Une fois que cela est fait, ou en même temps, tu peux aussi te baser sur le générateur de firewall iptables ici : http://easyfwgen.morizot.net/gen/

Bon courage.
quand je dis que je suis le tuto de olivieraj.free, je veux dire que je le suis depuis le début, ou j'ai d'ailleurs pu réduire au minimum les demons en fonction sur la passerelle ainsi que les ports inutilement ouverts (avec une config de base pour le coté internet, tel smb et autres services dont je ne me sers pas).

Pour ce qui est de mon script, selon celui proposé par olivieraj disponible ici, je trouve que le mien est plutot ressemblant.

Je suis d'accord sur le principe de lire entierement un tuto avant d'essayer de le suivre (c'est pourtant ce que j'ai fait d'ailleurs), mais quand on decide finalement de suivre le dit tuto et que celui-ci propose les scripts a chaque etape afin de verifier ce que j'ai fait et que c'est plutot ressemblant (pour ne pas dire identique), je vois pas trop ou j'ai fait des erreurs (si peut-être au niveau de mon choix de reseau prive pour la carte relie sur internet (olivieraj en 10.0.0.0/8 et moi en 192.168.0.192/26).

Egalement une autre difference quand je declare l'input et l'ouput de ma carte eth1 qui je crois autorise respectivement plus de reseaux de destination et plus de reseaux sources, donc si j'ai bien compris ce que j'ai lu, mon iptables est plus tolerant.

Pardon je m'emballe alors que vous essayez de m'aider.

La grosse interogation que je me pose, est-ce que dans le tuto d'olivieraj, la machine passerelle fait aussi serveur dns ?

Je cherche a comprendre comment faire pour configurer iptables afin de pouvoir me debrouiller seul la prochaine fois, j'ai remis mon script tel que olivieraj le propose, mais ca n'a rien changé.

Si des fois vous voyez ou ca deconne ou si je fais mal quelque chose, d'avance merci....
moi aussi j'ai débuté avec ce tuto super bien fait
mais le chapitre sur lequel tu buche n'est que pour un poste simple, le chapitre sur les passerelle est quelques lignes après

edit :
La grosse interogation que je me pose, est-ce que dans le tuto d'olivieraj, la machine passerelle fait aussi serveur dns ?
alors, ça n'est pas le sujet, iptables ne gere que les connections il crée des passerelles et gere les flux d'informations
la passerelle peut faire serveur de toute sorte de chose (dhcp, dns, ftp, donnée...) dans ton reseau (au meme titre que tout autre ordi dans ton reseau), il faut juste ouvrir les bons ports pour que les ordinateurs de ton reseau puisse en profiter (c'est d'ailleurs la définition d'un serveur, de mettre à disposition un outil aux ordis connectés)
a abyss :

Bonjour,
tu viens de me confirmer que ma premiere lecture n'etait donc pas suffisante concernant les scripts du chapitre sur lequel je buche (je me souviens pas avoir lu que ce chapitre concernait un poste client, j'ai sans doute mal lu).

Ce qui repond en partie a ma question, car je la reformule :
dans la config proposée par olivieraj (dans le chapitre que je buche) la machine ne fait pas serveur dns alors que la mienne si, d'ou le fait que la config proposée ne parle pas des ports TCP/UDP 53.

Enfin un point (un autre) qui me perturbe :
je dois configurer les input afin que la carte accepte le paquet, ca je comprends, mais je dois aussi configurer les output de la meme carte, et la ca se gatte. Si la carte accepte les données entrées elle fait bien quelque chose avec ces données, donc faut qu'elle les laisse sortir ?

Je vais remonter au début du chapitre afin de trouver ce que j'ai raté et passer le parametrage du poste client.

Merci pour l'info, je vous tiens au courant de mon avancement.
Pour être clair, loin de moi l'idée de ne pas t'aider.

Je pense que si tu approfondi le tuto d'Olivier tu as quasiement tout ce qu'il te faut.
Mais comme tu l'as compris, il faut encore le relire.

Je te conseille vraiment, en parallèle, d'utiliser le générateur d'iptable ici http://easyfwgen.morizot.net/gen/
Tu obtiendras un résultat très correct. Et à partir de ce résultat et avec ce que tu auras appris du tuto d'Olivier, tu pourras comprendre beaucoup de choses.



Ton réseau c'est bien ça ? Avec ton script iptables sur passerelle F10 ?

( Internet ) --- eth0 - 192.168.0.251 - passerelle F10 - 192.168.1.251 - eth1 --- ( LAN ) --- portable F10
--- Windows
Les points importants où ton script a des manques sont :
- le suivi de connexion : http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-07.html
- le masquerade : http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-08.html

Il faut aussi que tu comprennes bien le cheminement des paquets : http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-04.html
Ca :
Chain FORWARD (policy DROP)
target     prot opt source               destination
ça veut dire que rien ne peut traverser ton firewall (je parle de tes postes clients).
DROP par défaut (ce qui est bien) mais aucune règles d'autorisation, donc tout est droppé par défaut.


Un détail, pourquoi t'embéter à faire un masque réseau sur 26 bits ? Pour des petits réseaux personnel, /24 est très bien et surtout bien plus simple.

iptables -v -L te donneras un peu plus d'infos.

La commande service iptables save te permettra de sauvegarder tes règles.

Un autre tuto : http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/ là tu as la quasi-totale d'iptables.
Avec en particulier, ceci pour un firewall avec une adresse dynamique (DHCP) : http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/includercdhcpfirewall.html
ou une adresse fixe : http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/includercutinfirewall.html

Un tuto, mais en cours de construction. Mais déja comprendre les règles iptables par défaut t'en apprendont beaucoup : http://doc.fedora-fr.org/wiki/Parefeu_(firewall)_-_netfilter_-_iptables
a philippe_PMA :
merci pour le lien du generateur de parefeu, j'en viens de m'en servir et il est vrai que cela me donne pas mal d'informations sur la bonne ecriture des regles et dans quel ordre (mais avec un format parametre que je ne pensais pas possible).

Mon reseau est exactement ce que tu decris dans le #10.

merci bien pour les confirmations sur ma politique de filtrage que je commence doucement a comprendre et que tu me confirmes au #11.
Pourquoi un masque réseau sur 26 bits ? parce que dans un autre fil je demandai conseil sur les masques réseau, et que l'on m'avait fait remarquer qu'un masque réseau en 24 bits etait un masque trop grand pour mon réseau et qu'il valait mieux le réduire; ce que j'ai donc fait.

Mais je peux le modifier sans la moindre hésitation si tu penses que c'est le plus simple pour ce que je veux faire......


Merci egalement pour les liens et tutos de linux-france, je vais les lire de suite, pour ce qui est du tuto en cours de construction dans le wiki du forum, je m'en sert aussi pour essayer de comprendre, mais quel dommage qu'il ne soit pas terminé.
Dernier point qui me gene un peu, avec le tuto du wiki de fedora, c'est la politique par defaut en ACCEPT, pour tout DROPer derrière (ca encore ca va), mais surtout ce sont les formats utilisés pour ecrire les regles, elles me semble plus globales dans leur restrictions et de mon oeil moins compréhensibles.

il faut que je planche tout ca pour bien comprendre les differents exemples, et les comparer pour bien monter mon parefeu.


Merci a tous, je me mets à l'étude de toutes vos indications et conseils (et tutos / liens) et je vous tiens au courant...
au secours !!!!!!!!

le tuto d'olivieraj me parle d'un module ip_conntrack.

la commande modprobe ip_conntrack me renvoit ceci :
[root@srvr ~]# modprobe ip_conntrack
FATAL: Module ip_conntrack not found.
[root@srvr ~]#
Comment puis-je faire pour résoudre ce soucis ???
fredouille wrote:au secours !!!!!!!!

le tuto d'olivieraj me parle d'un module ip_conntrack.

la commande modprobe ip_conntrack me renvoit ceci :
[root@srvr ~]# modprobe ip_conntrack
FATAL: Module ip_conntrack not found.
[root@srvr ~]#
Comment puis-je faire pour résoudre ce soucis ???
Il n'y a pas de soucis.
$ ls /boot/config*
/boot/config-2.6.27.19-170.2.35.fc10.i686.PAE
/boot/config-2.6.27.21-170.2.56.fc10.i686.PAE
/boot/config-2.6.27.24-170.2.68.fc10.i686.PAE
Tu obtiens ainsi la liste des config qui ont servi à compiler les noyaux installés.
$ uname -r
2.6.27.24-170.2.68.fc10.i686.PAE
Tu obtiens la version du noyau lancé.

Il ne te reste plus qu'a regarder dans le bon fichier, par exemple "vi /boot/config-2.6.27.24-170.2.68.fc10.i686.PAE" les paramètres utilisés.
Fait une recherche sur "Core Netfilter Configuration".

Quelques extraits ci-dessous, chez moi, et à priori avec tout les noyaux Fedora par défaut :
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_NF_NAT_FTP=m
=y veut dire que le code correspond à l'option est compilé avec le noyau, donc pas en module.
=m veut dire que le code correspond à l'option est compilé en module et doit donc être inséré en tant que module.
=n veut dire que le code correspond à l'option n'est pas compilé.

Bref, le contrack est compilé avec le noyau (CONFIG_NF_CONNTRACK=y), ainsi que la parti spécifique à IpV4 (CONFIG_NF_CONNTRACK_IPV4=y).
Si tu veux faire du ftp à partir de ton firewall, il te faudra insérer le module ftp (CONFIG_NF_CONNTRACK_FTP=m) et si tu veux en faire à partir de tes postes (via le firewall) il te faudra insérer le module ftp pour le nat (CONFIG_NF_NAT_FTP=m).

Une façon de les insérer définitivement, avec Fedora est d'utiliser le paramètre IPTABLES_MODULES du fichier /etc/sysconfig/iptables-config.
A modifier en root, suivi d'un reboot.

Pour trouver les modules compilés pour netfilter, en tenant compte de uname -r :
$ ls /lib/modules/2.6.27.24-170.2.68.fc10.i686.PAE/kernel/net/netfilter/
nf_conntrack_amanda.ko         xt_connlimit.ko    xt_owner.ko
nf_conntrack_ftp.ko            xt_connmark.ko     xt_physdev.ko
nf_conntrack_h323.ko           xt_CONNMARK.ko     xt_pkttype.ko
nf_conntrack_irc.ko            xt_CONNSECMARK.ko  xt_policy.ko
nf_conntrack_netbios_ns.ko     xt_dccp.ko         xt_quota.ko
nf_conntrack_netlink.ko        xt_dscp.ko         xt_rateest.ko
nf_conntrack_pptp.ko           xt_DSCP.ko         xt_RATEEST.ko
nf_conntrack_proto_dccp.ko     xt_esp.ko          xt_realm.ko
nf_conntrack_proto_gre.ko      xt_hashlimit.ko    xt_sctp.ko
nf_conntrack_proto_sctp.ko     xt_helper.ko       xt_SECMARK.ko
nf_conntrack_proto_udplite.ko  xt_iprange.ko      xt_statistic.ko
nf_conntrack_sane.ko           xt_length.ko       xt_string.ko
nf_conntrack_sip.ko            xt_limit.ko        xt_tcpmss.ko
nf_conntrack_tftp.ko           xt_mac.ko          xt_TCPMSS.ko
nfnetlink.ko                   xt_mark.ko         xt_TCPOPTSTRIP.ko
nfnetlink_log.ko               xt_MARK.ko         xt_time.ko
nfnetlink_queue.ko             xt_multiport.ko    xt_TRACE.ko
xt_CLASSIFY.ko                 xt_NFLOG.ko        xt_u32.ko
xt_comment.ko                  xt_NFQUEUE.ko
xt_connbytes.ko                xt_NOTRACK.ko
fredouille wrote:...
Pourquoi un masque réseau sur 26 bits ? parce que dans un autre fil je demandai conseil sur les masques réseau, et que l'on m'avait fait remarquer qu'un masque réseau en 24 bits etait un masque trop grand pour mon réseau et qu'il valait mieux le réduire; ce que j'ai donc fait.

Mais je peux le modifier sans la moindre hésitation si tu penses que c'est le plus simple pour ce que je veux faire......
..
En informatique, les solutions sont souvents multiples.

De mon point de vue c'est plus simple. 24 bits pour le sous-réseau, ça veut dire que tu n'as pas à t'embéter pour calculer quelles peuvent-être les adresses de tes postes : ça marche de 1 à 254.
Et si c'est pour chez toi, tu n'as pas besoin de segmenter plus que ça.
fredouille wrote:... pour ce qui est du tuto en cours de construction dans le wiki du forum, je m'en sert aussi pour essayer de comprendre, mais quel dommage qu'il ne soit pas terminé.
Dernier point qui me gene un peu, avec le tuto du wiki de fedora, c'est la politique par defaut en ACCEPT, pour tout DROPer derrière (ca encore ca va), mais surtout ce sont les formats utilisés pour ecrire les regles, elles me semble plus globales dans leur restrictions et de mon oeil moins compréhensibles....
Attention, le tuto Fedora est en cours de rédaction. Le point de départ c'est les règles par défaut de Fedora 10.
Et, à priori, (vu que c'est moi qui en assure une grande part de la rédaction) le point d'arrivé conseillé sera bien un drop par défaut et les ouvertures qui vont bien.

Que veux tu dire par :
fredouille wrote:...
ce sont les formats utilisés pour ecrire les regles, elles me semble plus globales dans leur restrictions et de mon oeil moins compréhensibles...
a philippe_PMA :

merci pour le coup de main pour les modules conntrack, j'ai suivi a la ligne tes infos et les résultats sont bien ceux que tu m'annoncais, balaise :-D et merci

quant aux ecritures voici ce que je veux dire :
l'ecriture d'olivieraj
[root@phoenix /]# iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
[root@phoenix /]# iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
et la correspondance avec le wiki
iptables -t filter -A INPUT -i lo -j ACCEPT
d'un cote (olivieraj) je comprends très facilement l'écriture -i lo 0.0.0.0/0 qui est modifiable en fonction des réseaux acceptés

de l'autre -i lo -j ACCEPT me parait plus generale (d'ailleurs je dois prendre le tableau d'olivieraj pour bien cerner cette règle).

La finalité est la même (de ce que je comprends) mais la compréhension moins spontanée.

une remarque concernant l'écriture d'olivieraj pour l'input sur l'interface lo : c'est pas un peu dangereux de dire que lo accepte tout en entrée de tous les réseaux possibles ?

Je suis loin d'être un expert, si depuis internet on arrive à se faire passer pour un autre en lui empruntant son adresse ip dynamique, ou en ecoutant et interceptant les paquets destinés à autrui, ce ne doit pas être bien difficile de créer un paquet à destination de lo en se faisant passer pour un autre (tel le ntp, le dns ou je ne sais quoi encore) ??

merci pour ton aide pour le ip conntrack, je poursuit ma lecture et te tiens informé de mon avancement....
fredouille wrote:...
une remarque concernant l'écriture d'olivieraj pour l'input sur l'interface lo : c'est pas un peu dangereux de dire que lo accepte tout en entrée de tous les réseaux possibles ?

Je suis loin d'être un expert, si depuis internet on arrive à se faire passer pour un autre en lui empruntant son adresse ip dynamique, ou en ecoutant et interceptant les paquets destinés à autrui, ce ne doit pas être bien difficile de créer un paquet à destination de lo en se faisant passer pour un autre (tel le ntp, le dns ou je ne sais quoi encore) ??
...
lo est une interface fictive. Elle n'est pas accessible de l'extérieur. Donc là, pas de vrai risque.

Par contre, recevoir sur les vrais interfaces (eth0, eth1 ...) des adresses en 127.0.0.1 n'est pas normal et doit être droppé ou rejeté.

Et oui, il faut tenir compte du spoofing.
donc ce genre de piratage s'appelle le spoofing, merci pour l'info.

Donc si j'ai bien compris je ne devrai jamais ecrire une ligne en input des sources provenant de 127.0.0.1 ?

Je suis pourtant bloqué depuis bien longtemp avant sur la configuration de mon parefeu.
j'en suis encore a la config basique, a savoir celle-ci :
# Suppression de toutes les chaînes pré-définies de la table FILTER
iptables -t filter -F

# Suppression de toutes les chaînes utilisateur de la table FILTER
iptables -t filter -X

# Par defaut, toute les paquets sont détruits
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

# Autorise le port 6000 sur Phoenix (phoenix0 et phoenix1), afin de supporter
# le export display pour les besoins de la conférence
# En temps normal, ces lignes DOIVENT êtres supprimées!!!
#iptables -t filter -A OUTPUT -p 6 --sport 6000 -j ACCEPT ; # -p 6 <=> protocole X11
#iptables -t filter -A OUTPUT -p tcp --sport 6000 -j ACCEPT ; # -p tcp <=> protocole TCP
#iptables -t filter -A INPUT -p 6 --dport 6000 -j ACCEPT
#iptables -t filter -A INPUT -p tcp --dport 6000 -j ACCEPT

# Autorise l'interface loopback à dialoguer avec elle-même
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

# Autorise les connexions avec le réseau 192.168.0.0/24 connecté à l'interface eth0
iptables -t filter -A OUTPUT -o eth1 -s 192.168.1.192/26 -d 192.168.1.192/26 -j ACCEPT
iptables -t filter -A INPUT -i eth1 -s 192.168.1.192/26 -d 192.168.1.192/26 -j ACCEPT

# Autorise les connexions avec internet uniquement en direction et venant des services
# HTTP (80/TCP) et HTTPS (443/TCP)
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p tcp --sport 80 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p tcp --sport 443 -j ACCEPT

# sauvegarde les regles
service iptables save

# redemarrage du service
service iptables restart
je précise que c'est le script d'olivieraj mis à jour pour mon pc, et bien je peux pinguer sur les 2 interfaces de ma machine comme annoncé dans le tuto, mais pas d'internet.

Je suis obligé de rajouter ceci :
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p tcp --sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p udp --sport 53 -j ACCEPT
et ce qui me dérange dans ces 4 lignes, c'est que j'autorise les paquets en entrée sur la carte orientée coté internet depuis tout (donc internet) sur les ports UDP et TCP 53, et que j'autorise ces paquets à sortir sur la carte coté internet vers tous les réseaux (et donc internet) mais mon serveur DNS ecoute seulement 127.0.0.1 et 192.168.1.251.

C'est surement moi, mais je ne trouve pas cela correct et surtout pas maitrisé.

Quelqu'un aurait une slotution ou plutot une explication a me proposer pour que je comprenne bien pourquoi je suis obligé de faire (et ce que je fais mal) ??

J'ai pourtant continuer mon avancement dans le tuto d'olivieraj jusqu'au suivi de connexion (les fameux ip_conntrack) ou philippe_PMA m'a bien aidé pour savoir si ces modules étaient ou non disponible sur ma machine,

J'ai donc suivi le tuto jusqu'à arriver à un script comme ca :
Chargement des modules du suivi de connexion
modprobe ip_conntrack ; # Module principal du suivi de connexion
#modprobe ip_conntrack_ftp ; # Module du suivi de connexion FTP
#modprobe ip_conntrack_irc ; # Module du suivi de connexion IRC

# Suppression de toutes les chaînes pré-définies de la table FILTER
iptables -t filter -F

# Suppression de toutes les chaînes utilisateur de la table FILTER
iptables -t filter -X

# Par defaut, toute les paquets sont détruits
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

# Autorise l'interface loopback à dialoguer avec elle-même
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

# Autorise les connexions avec le réseau 192.168.0.0/24 connecté à l'interface eth0
iptables -t filter -A OUTPUT -o eth1 -s 192.168.1.192/26 -d 192.168.1.192/26 -j ACCEPT
iptables -t filter -A INPUT -i eth1 -s 192.168.1.192/26 -d 192.168.1.192/26 -j ACCEPT

# Autorise les connexions avec internet uniquement en direction et venant des services
# HTTP (80/TCP) et HTTPS (443/TCP)
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p tcp --sport 80 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p tcp --sport 443 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.192/26 -d 0.0.0.0/0 -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p tcp --sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 0.0.0.0/0 -d 192.168.0.192/26 -p udp --sport 53 -j ACCEPT


#suivi de connexion sur interface internet
iptables -A OUTPUT -o eth1 -s 192.168.0.251 -d 0.0.0.0/0 -p all -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -d 192.168.0.251 -p all -m state --state RELATED,ESTABLISHED -j ACCEPT

################################################################################
# IP masquerading
################################################################################

# Chargement des modules du NAT
modprobe iptable_nat ; # Module principal du NAT
#modprobe ip_nat_ftp ; # Module du NAT FTP
#modprobe ip_nat_irc ; # Module du NAT IRC

# Suppression de toutes les chaînes pré-définies de la table NAT
iptables -t nat -F

# Suppression de toutes les chaînes utilisateur de la table NAT
iptables -t nat -X

# Par defaut, toute les paquets de la table NAT sont ACCEPTES
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# Autorise les paquet à aller d'une interface réseau à l'autre
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.192/26 -d 0.0.0.0/0 -m state --state ! INVALID -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.192/26 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Demande à la table NAT de modifier les paquets sortants
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.192/26 -j MASQUERADE

# Activation du NAT dans le kernel
echo 1 > /proc/sys/net/ipv4/ip_forward


# sauvegarde les regles
service iptables save

# redemarrage du service
service iptables restart
j'ai commenté les lignes modprobe ip_nat_ftp et mobprobe ip_nat_irc car je ne prévois pas de serveur ftp sur ma machine, et je ne fais pas d'irc.

le souci est celui-ci lorsque je fais un sh -x mon_script.sh
[root@srvr ~]# sh -x /mon_script.sh
+ modprobe ip_conntrack
FATAL: Module ip_conntrack not found.
......
.....
.....
+ modprobe iptable_nat
......
ce qui veut donc dire que le module ip_conntrack n'est pas trouvé alors que l'autre oui.
Pourtant toutes les commandes proposées par philippe_PMA dans le #14 est exactement ce que j'ai quand je les fais sur ma machine.

Vous voyez pourquoi ???
egalement toujours en rapport avec le tuto d'olivieraj,

pour info ma machine est tracable sur internet avec une adresse dyndns, je n'ai pas du tout les résultats annoncés, à savoir que je suis le tuto dans l'ordre.

Donc avec le script iptables-basic-2.sh modifié, quand depuis internet je fais la commande :
[root@portFB2 ~]# nmap ma-machine.dyndns.org -g 80

Starting Nmap 4.52 ( http://insecure.org ) at 2009-06-02 11:26 CEST
Note: Host seems down. If it is really up, but blocking our ping probes, try -PN
Nmap done: 1 IP address (0 hosts up) scanned in 3.099 seconds
[root@portFB2 ~]#
alors que je devrais avoir le résultat annoncé par olivieraj, à savoir :
[root@pirate /]# nmap phoenix1.internet.net -g 80

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on phoenix1.internet.net (10.0.0.1):
(The 1585 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
53/tcp open domain
80/tcp open http
443/tcp open https
et quand je mets le script modifié pour l'iptables-conntrack-1.sh (duquel j'ai une erreur quand je fais sh -x mon_script.sh, j'ai tel résultat quand je vérifie le résultat d'un scan depuis internet :
[root@portFB2 ~]# nmap ma-machine.dyndns.org -g 80 -PO

Starting Nmap 4.52 ( http://insecure.org ) at 2009-06-02 11:38 CEST
Interesting ports on AOrleans-XX-XX-XX-XX.wYY-YY.abo.wanadoo.fr (ZZ.ZZ.ZZ.ZZ):
Not shown: 1707 closed ports
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
80/tcp filtered http
443/tcp filtered https

Nmap done: 1 IP address (1 host up) scanned in 2.098 seconds
mais dès que je nmap depuis mon réseau (en étant du coté internet), j'ai ca :
[root@portFB2 ~]# nmap 192.168.0.251 -g 80 -PO

Starting Nmap 4.52 ( http://insecure.org ) at 2009-06-02 11:42 CEST
All 1714 scanned ports on 192.168.0.251 are filtered
MAC Address: 00:E0:7D:E2:5D:43 (Netronix)

Nmap done: 1 IP address (1 host up) scanned in 36.268 seconds
[root@portFB2 ~]#
le resultat est idem quand je scan l'adresse 192.168.1.251

Vous voyez pourquoi j'ai une réponse de scan depuis internet aussi explicite sur les ports de ma machine ???