Configurer un routeur et un pare-feu pour accéder à internet

Configurer un routeur et un pare-feu pour accéder à internet

05/03/2014

Dans​‌‍​‌​‌‍​‍ ce premier tutoriel nous allons décrire l’architecture sur laquelle nous allons travailler avant de voir comment configurer une passerelle entre cette architecture et internet.

Dans notre architecture il y aura un point d’entré qui redirigeras les différentes requêtes vers les différents serveurs et services de notre réseau, cette passerelle entre deux architectures se nomme un routeur. Dans notre cas les deux architectures seront le réseau de vos serveurs et celui de réseau local, ce dernier pouvant aussi être un accès direct à internet dans le cas d’un serveur dédié ou d’un VPS.

Si la machine qui vous servira de serveur est suffisamment puissante, je vous recommande d’en faire un hyperviseur, sinon il est aussi possible de faire fonctionner tous les services sur une même machine. La plupart des services qui seront couverts dans cette série de tutoriels ne demandent que peu de ressources.

Avant de commencer, veuillez préparer votre machine virtuel (ou physique selon votre choix technique) avec une distribution récente de Linux, utiliserais pour ma part un Ubuntu 13.10 en version serveur. Si vous avez fait le choix d’une machine virtuel, affectez-lui deux interfaces réseau.

Une fois votre machine installée et une fois logé, commencez par vérifier que vous êtes à jour ; vous venez peut être d’installer la dernière version de la distribution, mais celle-ci nécessite déjà une mise à jour. Cela est dû au fait que les packets n’ont pas un cycle de vie équivalent à celui des noyaux. Exécutez donc les deux commandes suivantes pour mettre à jour votre :

1
2
sudo apt-get update
sudo apt-get upgrade

Il est ensuite nécessaire d’activer le routage, activez le routage sur ipv4 et redémarrez le serveur.

1
2
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo reboot

Une fois votre serveur redémarrez éditez le fichier de configuration réseau de manière à attribuer une adresse IP à chacune de vos cartes réseau, puis rafraîchissez la configuration de ses interfaces en redémarrant le service. Selon vos besoin est votre réseau, votre configuration réseau ne sera pas nécessairement la même.

1
sudo vim /etc/network/interfaces
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Adresse de loopback
auto lo
iface lo inet loopback

# Adresse exterieur
auto eth0
iface eth0 inet static
address 192.168.1.200
netmask 255.255.255.0
broadcast 192.168.1.255
post-up route add 192.168.1.1 dev eth0
post-up route add default gw 192.168.1.1
post-down route del 192.168.1.1 dev eth0
post-down route del default gw 192.168.1.1

# Adresse intérieur
auto eth1
iface eth1 inet static
address 172.20.255.254
netmask 255.255.0.0

# Serveurs DNS
dns-nameservers 192.168.1.1 8.8.8.8 8.8.4.4
1
sudo service networking restart

Pour tester votre configuration, vous pouvez réaliser un test de ping, si ceux-ci sont concluent, c’est que tout est ok, sinon c’est que vous avez probablement raté une ligne, revenez en arrière et revérifiez tout.

1
2
3
4
ping 127.0.0.1 -c 1
ping 192.168.1.200 -c 1
ping 192.168.1.1 -c 1
ping balandavid.com -c 1

C’est bon, on peut maintenant commencer à configurer le service de routage. Sachez qu’une étape similaire sera nécessaire pour chaque installation de machine. Nous allons utiliser le service Shorewall qui en plus d’un service de routage, permet la gestion simple d’un pare-feu. Pour l’installer il vous suffit de taper :

1
sudo apt-get install shorewall

assurez-vous que la propriété startup du service shorewall est bien a 1 et copiez la configuration par défaut :

1
2
sudo vim /etc/default/shorewall
sudo cp /usr/share/doc/shorewall/default-config/* /etc/shorewall/

Commencez avant tout par configurer vos zones en modifiant le fichier /etc/shorewall/zones et en y ajoutant les trois lignes suivantes, ces lignes permettent d’attribuer un nom aux différentes zones de votre réseau, fw correspondant au serveur que vous êtes en train de configurer.

1
2
3
fw        firewall
net ipv4
loc ipv4

Vous devez ensuite définir le lien entre l’interface est la zone dans le fichier /etc/shorewall/interfaces. Ajoutez-y les deux lignes :

1
2
net        eth0        routeback
loc eth1 routeback

Nous allons maintenant activer le NAT/PAT, une fonctionnalité qui permettra à votre serveur de re-router les requêtes vers certains serveurs en particulier. Ça se passe dans le fichier /etc/shorewall/masq, ajoutez-y la ligne suivante :

1
eth0        eth1

Il ne nous reste plus qu’à définir les règles, c’est-à-dire quelle services serons accessibles, par défaut il est important de tout bloquer, pour cela allez dans le fichier /etc/shorewall/stoppedrules et définissez les lignes suivantes. Elles permettent de dire que seul ce qui viens de eth1 ou qui vas a destination de eth1 est autorisé.

1
2
ACCEPT        eth1        -
ACCEPT - eth1

Pour terminer, rendez-vous dans le fichier /etc/shorewall/rules, nous allons y définir quelques règles essentiels et comprendre comment cela fonctionne. Dans la suite des tutoriels je ne reviendrais pas là-dessus. Il existe plusieurs types de règles dont deux que nous allons utiliser, elles se nomment ACCEPT et DNAT. La première permet de d’accepter un paquet répondant aux critères requis, le second permet de réaliser une translation d’adresse et de port.

Pour les règles d’autorisation, il faut définir l’origine, la destination le protocole et le port si applicable, ainsi il est possible décrire :

1
2
ACCEPT        net        fw        tcp        22        #SSH
ACCEPT all fw icmp #ping

Pour la translation, la configuration est sensiblement la même, la différence étant dans la destination du packet, il faut y définir le réseau de destination ainsi que la machine et le port de destination :

1
2
DNAT        net        loc:172.20.150.100:80        80
DNAT net loc:172.20.150.100:443 443

Redémarrez Shorewall, vous avez maintenant un routeur/firewall en place et fonctionnel. Dans le prochain nous verrons comment configurer un serveur DHCP et DNS.