@nk7e

Carnet · février 2009

Routeur Linux

La conception d’un routeur, firewall et borne Wi-Fi sous Linux, sur une carte Soekris net4801.

Carnet d’archive : Voyage Linux 0.2, Debian Sarge, clé WEP et WPA1. À lire comme un récit de projet. Ces réglages de sécurité ne sont plus suffisants aujourd’hui.

Voici mon projet, la conception d’un routeur sous linux avec une carte SOEKRIS de type NET 4801.

J’ai choisi ce type de carte pour différents critères, entre autre le type de CPU et de mémoire embedded, les 3 cartes réseau, l’emplacement mini PCI et l’emplacement PCI pour rajouter un modem ou une carte Wifi, j’ai opté pour la carte Wifi.

Le routeur fermé, avec son antenne Wi-Fi
Le routeur fermé, avec son antenne Wi-Fi
L’intérieur du boîtier, avec la carte Wi-Fi 3Com
L’intérieur du boîtier, avec la carte Wi-Fi 3Com

Cette carte permet de démarrer sur une compact flash de 64Mo pour installer Linux, FreeBSD, NetBSD et OpenBSD.

J’ai utilisé une carte de 512Mo pour installer Linux et avoir plus de place pour rajouter d’autres logiciels (ex : Vuurmuur, Logcheck et d’autre software d’administration).

Voici la carte Wifi installée, nous avons donc une 3COM 3CRDAG675 basé sur un chipset Atheros avec un driver MADWIFI.

J’ai testé 3 systèmes :

  • M0n0Wall
  • NYCwireless
  • Voyage Linux

Mon choix a été d’utiliser Voyage Linux version 0.2 basé sur une Debian Sarge r3.1, ce système est compilé pour utiliser une faible empreinte mémoire, il est prévu pour fonctionner sur des "Platform x86-based embedded".

Ce système intègre le pilote pour les cartes réseau de la Net4801 et ma carte Wifi.

La configuration de DNSMASQ me permet d’avoir un serveur DHCP et serveur de cache DNS.

Les deux cartes ethernet (eth1 et eth2) me permettent de distribuer les adresses IP sur le réseau et de réaliser la résolution de nom.

La carte Wireless est configurée en Master avec le SSID masqué, en plus d’avoir masqué le SSID pour des mesures de sécurité je contrôle l’adresse MAC du poste client, elle doit être renseignée dans le fichier de configuration.

Le fichier dnsmasq.more.conf

domain=Domaine

# Voici la configuration des ranges d'adresses IP et le délai du bail attribué.

dhcp-range=ath0,192.168.XX.XX,192.168.XX.XX,24h
dhcp-range=eth1,192.168.XX.XX,192.168.XX.XX,24h
dhcp-range=eth2,192.168.XX.XX,192.168.XX.XX,24h

#Voici deux réservations d'adresse IP.

dhcp-host=00:XX:XX:XX:XX:XX,192.168.XX.XX #reservation adresse
dhcp-host=00:XX:XX:XX:XX:XX,192.168.XX.XX

# Voici la configuration fournie par le DHCP pour le partie DNS du serveur.

dhcp-option=ath0,3,192.168.XX.XX #default g/w for ath0 clients
dhcp-option=eth1,3,192.168.XX.XX #default g/w for eth1 clients
dhcp-option=eth2,3,192.168.XX.XX #default g/w for eth2 clients
dhcp-option=ath0,6,192.168.XX.XX #default DNS for ath0 clients
dhcp-option=eth1,6,192.168.XX.XX #default DNS for eth1 clients
dhcp-option=eth2,6,192.168.XX.XX #default DNS for eth2 clients

La configuration de ma carte Wireless en maître pour l’utiliser comme borne Wifi, fut un peu compliqué.

Le fichier interfaces Wireless

auto ath0
iface ath0 inet static
address 192.168.XX.XX
netmask 255.255.255.0
broadcast 192.168.XX.XX

Configuration du pilote MADWIFI

madwifi-base wifi0
wireless-mode Master
wireless-channel 9 # J'indique à la carte d'être sur le channel 9
up iwpriv ath0 mode 3 # Ici je stipule que la carte fonctionne en 802.11g
up iwpriv ath0 hide_ssid 1 # Là je masque le SSID
up iwconfig ath0 txpower 3 # J'indique la puissance du signal
up iwconfig ath0 rate 54M

Mon ancienne configuration avec clé WEP

up iwpriv ath0 maccmd 1 # Ici je fais un contrôle sur l'adresse MAC.
up iwpriv ath0 addmac 00:XX:XX:XX:XX:XX # Carte autorisée à se connecter.
up iwpriv ath0 addmac 00:XX:XX:XX:XX:XX # Carte autorisée à se connecter.
up iwpriv ath0 addmac 00:XX:XX:XX:XX:XX # Carte autorisée à se connecter.
up iwconfig ath0 essid domaine
up iwconfig ath0 mode master
up iwconfig ath0 channel 11
up iwconfig ath0 txpower 3mW
up iwconfig ath0 key (secret passphrase)
up iwconfig ath0 key restricted

Le fichier hostapd.conf

interface=ath0
ssid=domaine
macaddr_acl=1 # Ici je demande de contrôler l'adresse MAC.
accept_mac_file=/etc/hostapd/hostapd.accept # Adresse MAC autorisées à se connecter.
deny_mac_file=/etc/hostapd/hostapd.deny # Adresse MAC non autorisées.
wpa=1
wpa_passphrase=(secret passphrase)
wpa_key_mgmt=WPA-PSK

Le firewall

J’utilise Vuurmuur comme firewall qui est très convivial d’utilisation, cette interface ncurses permet d’avoir un environnement graphique pour paramétrer IPTABLES facilement. Ce logiciel permet d’avoir une vue générale intuitive, les règles sont facilement réalisables, la partie log est bien conviviale. Je ne rentre pas trop dans les détails, je vous laisse découvrir le logiciel.

À quoi ressemble Vuurmuur

Vuurmuur : le menu principal
Vuurmuur : le menu principal
Vuurmuur : la liste des règles
Vuurmuur : la liste des règles

La sécurité mise en place

J’ai voulu avoir une connexion depuis Internet vers mon routeur, alors j’ai réalisé que je devais la sécuriser. J’ai recherché sur internet ce que je pouvais faire et j’ai ajouté cette configuration.

J’ai bloqué l’utilisateur root et je me connecte sur le routeur avec un utilisateur, le port SSH par défaut a été changé pour éviter les attaques et j’utilise pour l’utilisateur une clé privée et une clé publique.

Pour compléter la configuration du routeur j’ai aussi rajouté Portsentry pour avoir une protection sur les ports, Logcheck pour me transférer les logs par mail et exim4 comme relais SMTP.

J’ai passé beaucoup de temps pour réaliser ce projet, par contre j’ai énormément appris et cela me permet maintenant de configurer un petit réseau d’entreprise avec une borne Wifi et un Firewall sous Linux.

Remerciements

Je remercie ma femme pour sa patience et pour son aide, James pour m’avoir présenté cette carte et de son aide. Je remercie la communauté Linuxienne pour l’aide apportée pendant mes phases de recherche, d’information et de configuration.