3-Services de base du routeur OpenBSD

    Suite de la configuration du boîtier Soekris sous OpenBSD 3.9:

  • Serveur sshd (Secure SHell Daemon), très connu, c'est un service de prise de contrôle à distance sécurisé
  • NAT (Network Address Translation), sans cette fonction, un routeur n'est pas un routeur...
  • DHCPd très utile aussi dur un routeur, ce service va fournir des adresses IP et les paramètres réseaux aux machines qui se connectent aux réseaux internes.
  • un proxy-FTP qui va de paire avec la fonction NAT de PacketFilter (si on veut utiliser correctement le protocole FTP)
  • le point d'accès sans fil (Wifi AP)

Un peu de doc en anglais: http://www.drones.com/obsd-fw.html

Configuration de sshd:

Pourquoi ce service en premier ? Tout simplement parce qu'il est plus pratique - à mon goût - que la console série pour la suite. En plus, sur les machine récentes les port série se font rares.

Je laisse volontairement l'accès direct en root par ssh pour une raison simple: la machine ne sera pas accessible depuis l'Internet, ni les interface que je ne jugerai pas suffisamment sûr.
En temps normal, il faudrait interdire l'accès root via ssh et paramétrer un utilisateur qui aurais la possibilité d'utiliser su ou sudo pour les tâches d'administration. Ca permet entre autre de limiter les attaques "brute force" sur le compte du super-utilisateur.

Donc, le fichier de configuration sshd (/etc/ssh/sshd_conf)par défaut va très bien, rien à changer.

Reste à lancer le daemon (pas trop dur):
# sshd

La première fois, il va mettre un peu de temps à se lancer: il créer une paire de clef pour le chiffrement et l'authentification des connections.

En pour qu'il se lance automatiquement au démarrage, il suffit d'éditer la bonne ligne de /etc/rc.conf:
# cat /etc/rc.conf | grep sshd
sshd_flags="" # for normal use: ""

Voilà, pour sshd, c'est fini !

Configuration du proxy-FTP:

C'est encore plus simple! Une simple ligne dans /etc/rc.conf à éditer:
# cat /etc/rc.conf | grep ftpproxy
ftpproxy_flags="-m 10"

Et pour le lancer sans redémarrer:
#ftp-proxy -m 10

Le proxy-FTP permettra de laisser passer correctement les connections FTP à travers PacketFilter.

NAT ou la fonction de translation d'adresse

C'est la fonction principale du routeur: traduire les adresses des réseau internes pour les envoyer aux bon destinaires extérieur et s'assurer que le retour se passe bien aussi.

C'est PacketFilter - PF de son petit nom - qui s'en occupe. Son fichier de configuration est donc logiquement: /etc/pf.conf

En premier lieu, il faut s'assurer que la fonction de transferts de paquet est bien activé dans le noyau. Par exemple, pour un réseau en IPv4:
sysctl -a | grep forward
net.inet.ip.forwarding=1

Si ce n'est pas le cas, modifier le fichier /etc/sysctl.conf:
# cat /etc/sysctl.conf | grep forward
net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of IPv4 packets

et, pour ne pas avoir à redémarrer:
# sysctl net.inet.ip.forwarding=1

Ensuite, on peut s'attaquer au fichier de configuration pf.conf. Bon là, c'est une proposition. Je suis loin d'être un spécialiste donc lisé la documentation qui existe et qui est très abondante pour ajuster vos règles à vos besoins.

Macros

Interfaces et Réseaux:

  • externe
  • ext_if="sis2"

  • réseau privé
  • priv_if="sis1"
    priv_net="192.168.20.0/24"

  • DMZ
  • dmz_if="sis0"
    dmz_net="192.168.10.0/24"

  • réseau Wifi
  • wifi_if="ral0"
    wifi_net="192.168.100.0/24"

Réseaux internes:

int_if="{ sis0, sis1, ral0 }"
int_net="{ 192.168.10.0/24, 192.168.20.0/24, 192.168.100.0/24 }"

Interfaces de bouclage (loopback):

lo_if="lo0"
lo_net="127.0.0.1"

Options générales

Interface pour collecte de statistiques
set loginterface $ext_if

Pas besoin de filtré l'interface de bouclage interne:
set skip on lo

Normalisation des paquets

Réassemble les fragments et résoud ou réduit les ambiguités dans le traffic
scrub in all

Règle des la translation d'adresse (NAT)

Pour l'instant la translation d'adresse pour tous les réseaux internes
nat on $ext_if from $int_net to any -> ($ext_if)

Pour le proxy FTP, on a aussi besion de l'ancre NAT appropriée
nat-anchor "ftp-proxy/*"

Règles de redirection

On continue avec le proxy FTP. Les deux lignes suivantes permettent au clients FTP des réseaux internes de se connecter à des serveurs FTP sur Internet, grâce au proxy-FTP qui tourne en interne (127.0.0.1:8021):
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

On peut aussi ajouter ces 3 règles de filtrage TEMPORAIREMENT:
pass in all
pass out all
anchor "ftp-proxy/*"

Les deux règles "pass" laissent TOUT passer!!! et la troisième permet les accès FTP via le proxy FTP.

Serveur DHCP (dhcpd)

Ce daemon fournis les paramètres réseaux au éléments du réseau qui lui demande. C'est aussi une fonction très communes des routeurs.

Deux fichiers de configurations sont nécessaires:

  • /etc/dhcpd.interfaces qui contient la liste des interfaces qui ont besoin du service dhcpd:
  • /etc/dhcpd.conf qui contient la configuration général du daemon dhcpd:

dhcpd.interfaces

Le fichier le plus simple:
# Interfaces réseau filaire
sis0 sis1
# Interfaces réseau WIFI
ral0

dhcpd.conf

Première partie les options générales. ici j'ai juste spécifié les adresses des serveurs DNS qui vont bien (ceux de mon fournisseurs d'accès: Free):
option domain-name-servers 212.27.54.252,212.27.53.252;

Ensuite on configure les sous-réseaux rattachés aux différentes interfaces:

  • Réseau local rattaché à sis0 (IP fixe = 192.168.10.1)
  • subnet 192.168.10.0 netmask 255.255.255.0 {
    option routers 192.168.10.1;
    range 192.168.10.10 192.168.10.19;
    }

  • Réseau local rattaché à sis1 (IP fixe=192.168.20.0)
  • subnet 192.168.20.0 netmask 255.255.255.0 {
    option routers 192.168.20.1;
    range 192.168.20.10 192.168.20.19;
    }

  • Réseau Wifi rattaché à ral0 (IP fixe=192.168.100.0)
  • subnet 192.168.100.0 netmask 255.255.255.0 {
    option routers 192.168.100.1;
    range 192.168.100.10 192.168.100.19;
    }

Avec cela il y a déjà moyen de se connecter au net, sauf pour le wifi: le point d'accès Wifi n'est pas encore configuré complètement.

Pour les détails de configuration:
man dhcpd.conf
man dchpd

Point d'accès Wifi: hostap

C'est tout simple! Tout ce passe en une ligne et un fichier:
# cat /etc/hostname.ral0
inet 192.168.100.1 255.255.255.0 192.168.100.255 -bssid -chan media autoselect mediaopt hostap nwid arofarn-AP nwkey clef_WEP_secrête

Remarque:

  • Il faut mettre une clef WEP bien compliquée de 13 caractères (chiffrement 104bits).
  • J'utilise le WEP car je suis limité par mon Sharp Zaurus SL-C1000 et sa carte Wifi CompactFlash qui ne gère pas le WPA. C'est donc pas encore la panacée du point de vue sécurité. Il faudra donc bien configurer le parefeu pour assurer un bon niveau de sécurité.
  • La page de doc indispensable: man ral

Prochaine étape: blinder la sécurité et surtout la configuration du parefeu !

1 comment.

Pingback on February 21st, 2007.

[...] 3-Services de base du routeur OpenBSD [...]

Leave a comment

Names and email addresses are required (email addresses aren't displayed), url's are optional.

Comments may contain the following xhtml tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>