créer passerelle/firewall entre deux cartes réseaux

-P définit la politique par défaut de la chaîne, le sort appliqué aux paquets qui atteignent la fin de la chaîne. On ne peut pas utiliser la cible LOG comme politique, seulement DROP ou ACCEPT. La cible LOG ne peut s’utiliser que dans des règles, créés avec -A ou -I.

Pour logger les paquets qui arrivent en fin de chaîne, il suffit d’ajouter une règle LOG à la fin de la chaîne.

Concernant la question précédente, je ne vois pas le rapport entre l’installation d’un serveur DHCP et l’accès à SSH.

Merci

[quote=“PascalHambourg”]-P définit la politique par défaut de la chaîne, le sort appliqué aux paquets qui atteignent la fin de la chaîne. On ne peut pas utiliser la cible LOG comme politique, seulement DROP ou ACCEPT. La cible LOG ne peut s’utiliser que dans des règles, créés avec -A ou -I.

Pour logger les paquets qui arrivent en fin de chaîne, il suffit d’ajouter une règle LOG à la fin de la chaîne.

[/quote]
Je n’ai pas bien compris quand tu parles de notion de “chaine” (défaut/fin) : peux-tu m’expliquer exactement ce que c’est ? iptables -A INPUT -j LOG est executé avant ou après iptables -P INPUT DROP ?

[quote=“PascalHambourg”]
Concernant la question précédente, je ne vois pas le rapport entre l’installation d’un serveur DHCP et l’accès à SSH.[/quote]
Vu que par defaut j’ai tout mis en DROP sur l’interface Eth1 : je suppose qu’il y a une règle à définir pour recevoir/emettre les paquets DHCP sur cette interface

Avant. La politique par défaut définie par -P n’est appliquée à un paquet que si ce dernier ne correspond à aucune règle de la chaîne ayant une cible “terminale” (ACCEPT, REJECT, DROP).

En principe oui, mais pour des raisons pratiques les serveurs (et clients) DHCP comme dhcpd communiquent généralement directement avec l’interface réseau sans passer par la pile TCP/IP, court-circuitant iptables.

Merci,

Ok, c’est plus clair.

iptables -P INPUT DROP iptables -A INPUT -j LOG
J’ai un petit doute : donc c’est bien comme ça qu’il faut faire si je veux loguer les paquets bloqués par défaut ? … car je ne vois rien dans le fichier /var/log/kern.log
=> Avant hiers, ma passerelle entre eth0 et eth1 fonctionnait mais depuis hiers ça ne fonctionne plus : la seule chose qu’il me semble avoir modifié, c’est d’avoir installé le serveur DHCP (j’ai aussi redémarré le serveur). Depuis le serveur j’arrive à pinguer les appareils en 10.100.100.0/16 mais plus depuis 10.0.200.0/24 (sur le serveur je vois le ping arriver sur l’interface eth0 via tcpdump mais je ne le vois pas ressortir sur eth1).

[quote=“PascalHambourg”]
En principe oui, mais pour des raisons pratiques les serveurs (et clients) DHCP comme dhcpd communiquent généralement directement avec l’interface réseau sans passer par la pile TCP/IP, court-circuitant iptables.[/quote]
ça va me simplifié les choses mais ça me gène un peu car ça veut dire qu’il ne suffit pas de vérifier la configuration de iptables pour être certains que le serveur est correctement protégé car n’importe qu’elle application peut contourner les règles de iptables.

C’est bon j’ai trouvé d’où venait le problème : j’avais mis en commentaire la ligne suivante

=> donc vu que je n’avais pas redémarré mon PC, la commande était encore active
=> si j’ai bien compris, si cette commande n’est pas activée, toutes les règles de type FORWARD de mon script ne sont pas prises en compte : c’est bien ça ?

Est-ce que tu pourrais vérifier mon script pour être certain que je n’ai pas fait d’autres boulettes (pour moi, il me semble fonctionnel) :

#!/bin/bash

###########################
# vide les tables et bloc le forwarding
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo 0 > /proc/sys/net/ipv4/ip_forward

echo iptables clear [OK]



########################
# Règles par défaut
# INPUT   : paquet entrant dans la machine
# FORWARD : paquet traversant la machine
# OUTPUT  : paquet générés localement

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

# Même chose que précédemment mais en aillant la gesiton des logs
# => les log sont mis par défaut dans le fichier /var/log/kernel.log 
#iptables -A FORWARD -j LOG


#iptables -P INPUT   ACCEPT
#iptables -P OUTPUT  ACCEPT
#iptables -P FORWARD ACCEPT



#######################
# Règles de routage des paquets à destination de la machine

#interface  loopback
iptables -A INPUT  -i lo   -j ACCEPT
iptables -A OUTPUT -o lo   -j ACCEPT

# interface eth0 (si on ne fait pas ça, on ne peut pas se connecter en SSH sur eth0
iptables -A INPUT  -i eth0 -j ACCEPT 
iptables -A OUTPUT -o eth0 -j ACCEPT


iptables -A OUTPUT -o eth1 -j ACCEPT
#iptables -A INPUT -i eth1 -j ACCEPT


# => n'accepte en entrée que les connexion qui ont été précédemment initialisée par le serveur
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT


########################
# règles de routage eth0 vers eth1
# => laisse passer tous les paquets de eth0 vers eth1
iptables -A FORWARD -i eth0      -o  eth1  -j ACCEPT


#####################
# règles de routage eth1 vers eth0
# => laisse passer tous les paquets de  eth1 vers eth0 uniquement si la connexion a  précédemment été ouvert coté eth0
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT 


########################
# autre règles de routage eth1 vers eth0
# => laisse passer tous les paquets de eth1 vers eth0
#iptables -A FORWARD -i eth1      -o  eth0  -j ACCEPT



#######################
# pour changer l'adresse IP source (fonctionnement standard d un firewall)
# iptables -t nat -A POSTROUTING -s 10.1.0.250 -o eth1 -j MASQUERADE


######################
# activation du forwarding (permet de prendre en compte les règles de forwading)
echo 1 > /proc/sys/net/ipv4/ip_forward


echo iptables rules created [OK]

=> ça te semble correcte ?
=> Pour éviter que le même type de problème réapparaisse, je pense qu’il faudrait que mon script gère les paramètre “start/restart/stop” : quelle est la config que je dois mettre pour le “stop” ? Je pense qu’il faut mettre ça mais j’aimerai la confirmation que c’est bon :

###########################
# vide les tables et bloc le forwarding
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo 0 > /proc/sys/net/ipv4/ip_forward

##########################
# règles par défaut
iptables -P INPUT   ACCEPT
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD DROP

echo re-initialisation iptables [OK]

Ceux de la chaîne INPUT, oui.

Pa beaucoup, un serveur DHCP ne nécessiterait que deux règles iptables sur l’interface concernée :

[code]# requetes DHCP entrantes
iptables -A INPUT -i eth1 -p udp --sport 68 --dport 67 -j ACCEPT

reponses DHCP sortantes

iptables -A OUTPUT -o eth1 -p udp --sport 67 --dport 68 -j ACCEPT[/code]

Le jeu de règles iptables (et ip6tables si la machine a une connectivité IPv6) n’est jamais suffisant. Les applications clientes et serveur de la machine doivent aussi être à jour pour ne pas contenir de failles connues, correctement sécurisées…

Non, pas n’importe quelle application. Il faut les droits root pour émettre ou recevoir directement sur une interface réseau.

Elles sont prises en compte mais n’ont aucun paquet à se mettre sous la dent is ip_forward=0.

  • La règle LOG en début de chaîne FORWARD va enregistrer tous les paquets routés, pas seulement ceux qui sont bloqués.
  • Certains commentaires sont approximatifs mais les règles me semblent correctes.

C’est à toi de le définir en fonction de ce que tu souhaites, et de la finalité de cette action “stop”. Si c’est pour un script d’init exécuté lors de l’arrêt ou du redémarrage du système, ça ne sert pas à grand-chose. Si c’est pour réinitialiser iptables à sa configuration par défaut (tout à ACCEPT, aucune règle), alors le résultat de ton script diffère puisqu’il met la politique par défaut de la chaîne FORWARD à DROP.

ok merci beaucoup :023

Rebonjour,

J’ai de nouvelles questions.
Pour rappel, archi réseau : cjoint.com/doc/16_02/FBdpY2r3RYT_network.png

J’ai installé une machine virtuelle (VM) en mode bridge sur le serveur : l’adressage IP est actuellement celui-ci

  • eth0 base : 10.1.0.2/16
  • eth1 base : 10.100.0.2/16
  • eth0 VM : 10.1.0.3/16
  • eth1 VM : 10.100.0.3/16
    => la VM est configurée de la même manière que l’OS de base à part que l’on remplace .2 par .3 (la VM et l’OS de base doivent pouvoir avoir accès à toutes les interfaces)
    => je n’ai actuellement pas de script iptables sur la VM
    => sur l’OS de base, j’ai le script iptables décrit précédemment

Le firewall est connecté à ma box internet via un port WAN que l’on ne voit pas sur le schéma
Depuis 10.0.200.72 peut pinguer 10.100.0.10. Mais 10.100.0.10 ne peux pas pinguer 10.0.200.72 (c’est ce que je veux faire)
Depuis 10.0.200.72 peut pinguer 8.8.8.8 (google). Mais 10.100.0.10 ne peux pas pinguer 8.8.8.8 (google) (c’est ce que je veux faire)

Le serveur peut pinguer 8.8.8.8 (google) que ça soit depuis l’OS de base ou de la VM (c’est ce que je veux)
Le serveur peut pinguer 10.100.0.10 depuis l’OS de base
=> le problème est que le serveur ne peut pas pinguer 10.100.0.10 depuis la VM. D’où peut venir le problème ? Il y a une règle iptables à déclarer à quelque part ?

Remarque :

  • pour simplifier le schéma, j’ai nommé la seconde interface réseau eth1 mais en réalité elle s’appelle eth1.1000 (interface eth1 VLAN 1000) car j’ai plusieurs interfaces VLAN de déclarées sur la même carte réseau. Ce n’est pas ça qui pose problème ?
  • j’aimerais installer mon serveur DHCP sur la VM au lieu de l’OS de base (je n’ai pas encore testé si ça fonctionnait vu le problème actuel)

ifconfig (OS de base) :

eth0      Link encap:Ethernet  HWaddr 30:5a:3a:47:a0:1f
          inet adr:10.1.0.2  Bcast:10.1.255.255  Masque:255.255.0.0
          adr inet6: fe80::325a:3aff:fe47:a01f/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5521 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6882 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:375419 (366.6 KiB)  TX bytes:5865175 (5.5 MiB)
          Interruption:44 Adresse de base:0x2000

eth1      Link encap:Ethernet  HWaddr 68:05:ca:3c:f1:f2
          inet adr:10.2.0.2  Bcast:10.2.255.255  Masque:255.255.0.0
          adr inet6: fe80::6a05:caff:fe3c:f1f2/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1315 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1019 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:251902 (245.9 KiB)  TX bytes:107887 (105.3 KiB)
          Interruption:19 Mémoire:f7cc0000-f7ce0000

eth1.1000 Link encap:Ethernet  HWaddr 68:05:ca:3c:f1:f2
          inet adr:10.100.0.2  Bcast:10.100.255.255  Masque:255.255.0.0
          adr inet6: fe80::6a05:caff:fe3c:f1f2/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:7540 (7.3 KiB)

eth1.1001 Link encap:Ethernet  HWaddr 68:05:ca:3c:f1:f2
          inet adr:10.0.210.2  Bcast:10.0.210.255  Masque:255.255.255.0
          adr inet6: fe80::6a05:caff:fe3c:f1f2/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:8336 (8.1 KiB)

eth1.1002 Link encap:Ethernet  HWaddr 68:05:ca:3c:f1:f2
          inet adr:10.102.0.2  Bcast:10.102.255.255  Masque:255.255.0.0
          adr inet6: fe80::6a05:caff:fe3c:f1f2/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:7829 (7.6 KiB)

eth1.1003 Link encap:Ethernet  HWaddr 68:05:ca:3c:f1:f2
          inet adr:10.103.0.2  Bcast:10.103.255.255  Masque:255.255.0.0
          adr inet6: fe80::6a05:caff:fe3c:f1f2/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1315 errors:0 dropped:0 overruns:0 frame:0
          TX packets:769 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:222972 (217.7 KiB)  TX bytes:54923 (53.6 KiB)

eth1.1004 Link encap:Ethernet  HWaddr 68:05:ca:3c:f1:f2
          inet adr:10.104.0.2  Bcast:10.104.255.255  Masque:255.255.0.0
          adr inet6: fe80::6a05:caff:fe3c:f1f2/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:8336 (8.1 KiB)

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:219 errors:0 dropped:0 overruns:0 frame:0
          TX packets:219 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:12273 (11.9 KiB)  TX bytes:12273 (11.9 KiB)

macvtap0  Link encap:Ethernet  HWaddr 52:54:00:d3:ad:10
          adr inet6: fe80::5054:ff:fed3:ad10/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:296 errors:0 dropped:0 overruns:0 frame:0
          TX packets:153 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:500
          RX bytes:32916 (32.1 KiB)  TX bytes:22113 (21.5 KiB)

macvtap1  Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:500
          RX bytes:0 (0.0 B)  TX bytes:7145 (6.9 KiB)

ifconfig (VM)

eth0      Link encap:Ethernet  HWaddr 52:54:00:d3:ad:10
          inet adr:10.1.0.3  Bcast:10.1.255.255  Masque:255.255.0.0
          adr inet6: fe80::5054:ff:fed3:ad10/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:224 errors:0 dropped:0 overruns:0 frame:0
          TX packets:189 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:20025 (19.5 KiB)  TX bytes:25014 (24.4 KiB)
          Interruption:11 Adresse de base:0x4000

eth1      Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          inet adr:10.2.0.3  Bcast:10.2.255.255  Masque:255.255.0.0
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:0 (0.0 B)  TX bytes:3186 (3.1 KiB)

eth1.1000 Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          inet adr:10.100.0.3  Bcast:10.100.255.255  Masque:255.255.0.0
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

eth1.1001 Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          inet adr:10.0.210.3  Bcast:10.0.210.255  Masque:255.255.255.0
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

eth1.1002 Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          inet adr:10.102.0.3  Bcast:10.102.255.255  Masque:255.255.0.0
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

eth1.1003 Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          inet adr:10.103.0.3  Bcast:10.103.255.255  Masque:255.255.0.0
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:846 (846.0 B)

eth1.1004 Link encap:Ethernet  HWaddr 52:54:00:d4:6b:9a
          inet adr:10.104.0.3  Bcast:10.104.255.255  Masque:255.255.0.0
          adr inet6: fe80::5054:ff:fed4:6b9a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

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:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:784 (784.0 B)  TX bytes:784 (784.0 B)

OS de base > /etc/network/interfaces

# ######################################
auto lo
iface lo inet loopback

# ######################################
auto eth0
iface eth0 inet static
     address 10.1.0.2
     netmask 255.255.0.0
     gateway 10.1.0.250

auto eth1
iface eth1 inet static 
     address 10.2.0.2
     netmask 255.255.0.0



# ######################################
auto eth1.1000
iface eth1.1000 inet static
   address 10.100.0.2
   netmask 255.255.0.0
   vlan-raw-device eth1

auto eth1.1001
iface eth1.1001 inet static
   address 10.0.210.2
   netmask 255.255.255.0
   vlan-raw-device eth1

auto eth1.1002
iface eth1.1002 inet static
   address 10.102.0.2
   netmask 255.255.0.0
   vlan-raw-device eth1

auto eth1.1003
iface eth1.1003 inet static
   address 10.103.0.2
   netmask 255.255.0.0
   vlan-raw-device eth1		

auto eth1.1004
iface eth1.1004 inet static
   address 10.104.0.2
   netmask 255.255.0.0
   vlan-raw-device eth1		

VM > /etc/network/interfaces

# ######################################
auto lo
iface lo inet loopback


# ######################################
auto eth0
iface eth0 inet static
   address 10.1.0.3
   netmask 255.255.0.0
   gateway 10.1.0.250

auto eth1
iface eth1 inet static
   address 10.2.0.3
   netmask 255.255.0.0


# ######################################
auto eth1.1000
iface eth1.1000 inet static
   address 10.100.0.3
   netmask 255.255.0.0
   vlan-raw-device eth1

auto eth1.1001
iface eth1.1001 inet static
   address 10.0.210.3
   netmask 255.255.255.0
   vlan-raw-device eth1

auto eth1.1002
iface eth1.1002 inet static
   address 10.102.0.3
   netmask 255.255.0.0
   vlan-raw-device eth1

auto eth1.1003
iface eth1.1003 inet static
   address 10.103.0.3
   netmask 255.255.0.0
   vlan-raw-device eth1

auto eth1.1004
iface eth1.1004 inet static
   address 10.104.0.3
   netmask 255.255.0.0
   vlan-raw-device eth1

J’ai un petit doute : actuellement, dans ma VM j’ai deux carte réseau de déclaré (eth0 et eth1) : il ne faudrait pas que je déclare autant de carte réseau que j’ai de VLAN ?
screenshot de la config de KVM : cjoint.com/c/FBrp3JHFToT

Merci d’avance,