Exit la box opérateur partie 1
Table of contents
Avant d'aller plus loin dans la technique...
Mon opérateur me laisse t il la mainmise?
Avant de se lancer dans le grand chamboulement, il faut effectivement se poser la question à savoir si on peut tout simplement le faire, et les services que l'on pourra garder.
Dans mon cas je m'y suis intéressé lors de l'arrivée de la fibre optique chez moi. Auparavant le débit était tellement faible que je passais par un routeur 4G avec un abonnement téléphonique. C'était pas miraculeux mais c'était infiniment mieux que mon abonnement ADSL chez free à 39€ qui peinait à monter à 1 MB/S.
Attention on aborde ici le remplacement complet de la box opérateur, et non pas de passer cette dernière en bridge pour avoir un routeur en aval. Les deux cas sont bien distincts
Donc je me suis concentré sur la possibilité -ou non- d'une utilisation d'un matériel personnel dans le cadre d'un déploiement de la fibre. D'après mes recherches (certains liens sont disponibles en bas de cet article) il est possible de se passer plutôt aisement de sa box opérateur chez Orange, SFR et sa filliale RED by SFR. C'est d'ailleurs chez ce dernier que j'ai pris un abonnement, et j'en suis pour l'instant pleinement satisfait.
Il y a malgré tout une restriction à noter, à savoir que je n'ai pas testé donc ne peut pas valider le fait d'utiliser la téléphonie IP via mon routeur perso. Une fois encore dans mon cas ce n'était absolument pas dérangeant, je n'ai pas dû installer un téléphone fixe chez moi depuis presque 10 ans. Mais pour certains ça sera un frein évident, vous voila prévenu.
Comment choisir sa distribution?
Une vieille blague de Geek à l'époque ou il y avait peu de monde qui utilisait l'OS du pingouin disait qu'il y avait autant de distrib' que d'utilisateurs sous Linux...c'est pas drôle mais c'était pas loin d'être faux.
Un merveilleux site que j'ai découvert il y a peu recense la plupart des distributions, et cerise sur le gâteau propose de les tester avant de les adopter! Je vous invite à perdre une heure ou deux pour découvrir, il regorge de trésors oubliés (ou jamais utilisés autrement que par son auteur): Distrotest.net
J'ai décidé d'installer à titre personnel Debian que j'utilise déjà dans un cadre professionnel. Debian est soutenue par une grande communauté, de nombreux outils sont proposés nativement dans les sources et elle est reconnue pour sa robustesse. Tout ce qu'il me faut pour un routeur qui tournera H24.
En avant le déploiement
Internet regorge de sites et autres articles qui décrivent pas à pas l'installation d'une OS Debian sur un vieux pc, un raspberry ou tout autre matériel dédié qui fera office de routeur.
Il y a des outils graphiques comme Rufus (accessible sous Windows et Linux) ou si vous êtes un vrai barbu avec la commande 'dd' vous pourrez transférer l'image de la distribution préalablement téléchargée vers une clé USB, et ensuite booter dessus pour la déployer correctement sur le système cible.
A noter que j'ai commencé par installer ma distrib sur un raspberry, et ce fut un échec! Coté système aucun souci, Debian avec sa distribution Raspbian tourne nickel. C'est plutôt que pour un routeur, il faut plusieurs interfaces réseaux, et à défaut d'en avoir d'intégrées à la carte mère il va falloir mettre à minima deux adaptateurs USB vers Ethernet, et ça semble assez gourmand en consommation électrique à la longue.
Même si au départ mon routeur fonctionnait plutôt bien, j'avais au bout de quelques heures un processeur qui saturait et un raspberry (V4) qui finissait en PLS. Sans avoir trop investigué dessus je suis presque certain que mes adapateurs sollicitaient beaucoup le matériel.
J'ai donc changé mon fusil d'épaule et dédié un vieux micro pc qui dormait dans mon placard à cette lourde tâche. Doté d'un core I3, de 8 Go de RAM et d'un disque de 40 giga ça fait amplement l'affaire dans mon cas.
Pour les interfaces réseaux voici comment je procède:
-
Un 'tranceiver' a été installé par l'opérateur. Arrive dessus la fibre, et en ressort un cable Ethernet qui est censé se connecter sur la box mise à disposition. Celui ci se connectera sur mon port Ethernet intégré sur la carte mère du mini-pc. On parlera de l'interface WAN
-
Un premier adaptateur est installé sur un port USB3. Il sera connecté vers mon réseau local, interface LAN.
-
Un second adaptateur en USB2 sera connecté directement sur mon NAS, seul dans son réseau. L'objectif affiché qu'on abordera dans un autre article sera de créer une DMZ accessible depuis internet, à contrario de mon réseau local: interface DMZ
Cette dernière interface n'est absolument pas nécessaire, un routeur peut avoir simplement deux interfaces, le WAN qui échange avec le LAN. Une troisième peut être installée dans un second temps, nécessitant quelques paramètrages supplémentaires. Posez vous la question dès le départ si vous souhaitez accéder à des ressources chez vous depuis Internet, la DMZ sera votre alliée.
Après une fraiche installation
Dernière partie de ce premier article, les quelques modifications à apporter sur votre nouveau routeur pour que celui ci soit fonctionnel.
D'abord un routeur n'a pas besoin de clavier ni écran
On va donc installer ssh, le paramétrer pour qu'il s'active au démarrage et qu'on puisse se connecter à distance. Deux solutions pour cette connexion: via un identifiant / mdp ou via clé asymétrique:
On choisira cette dernière option, qui est bien plus sécurisée et vous évitera de nombreux scans depuis internet. En effet la grande majorité des robots qui trouvent du ssh accessible depuis internet (la bonne vieille technique de changer son port 22 par un autre plus exotique est dépassée) tenteront sans relâche de s'y connecter. C'est lourd, ça pollue les logs et même si vous avez un mot de passe respectant les standards de sécurité c'est risqué. En passant par une authentification par clé, hop magie il y a beaucoup moins de scans d'un coup.
Une fois encore de nombreux articles abordent le sujet, pour la création d'une paire de clés ssh c'est par exemple par ici:
IT Connect; authentification par clés
On verra également dans un autre article la mise en place d'un pare-feu et de l'ouverture des ports uniquement nécessaires. Si vous n'avez pas prévu de vous connectez en ssh depuis l'extérieur, on n'ouvrira évidemment pas le port sur la partie WAN. Une autre possiblité est simplement de restreindre le ssh sur l'interface LAN. Comme souvent en informatique, les possibilités sont multiples.
J'ajoute simplement à l'article ci dessus que pour éviter à chaque fois de retaper le nom@ip_du_routeur, deux solutions:
Bashrc
Vous pouvez peupler votre bashrc
Pour ma part depuis mon portable sous linux j'ai procédé de la manière suivante:
nano ~/.bashrc
Puis dans le fichier, dans la partie aliases:
alias ssh-router='ssh root@192.168.X.X
Puis enfin pour prendre en compte le bashrc:
source ~/.bashrc
Désormais depuis votre terminal vous n'aurez qu'à exécuter la commande ssh-routeur pour vous connecter à l'équipement distant.
Config SSH
Autre proposition - Merci à PengouinPdt - qui semble plus sécurisée, le répertoire ~/.ssh n"étant accessible que par son utilisateur:
nano ~/.ssh/config
Puis ajoutez dans votre fichier nouvellement créé les informations suivantes:
Host nom_routeur
Hostname 192.168.X.X
User root
Vous pourrez ensuite vous connecter à votre routeur simplement via:
ssh nom_routeur
A noter cependant qu'en utilisant cette méthode, adieu l'autocomplétion.
On vérifie que les interfaces réseaux soient bien paramétrées
C'est forcément le cas sur l'interface locale, car vous venez de vous y connecter coté LAN. Mais la seconde (voire la troisième) rajoutée via un adapateur dans mon cas n'est pas correctement configurée.
Vérifions d'abord si c'est détecté coté matériel, pour cela la commande lsusb:
root@router-debian:~# lsusb |grep -i net
Bus 004 Device 003: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 004 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
Mon matériel est bien pris en charge et détecté comme une interface réseau, je valide avec la commande ip addr:
root@router-debian:~# ip addr
1: lo: <LOOPBACK,PROMISC,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:23:24:5e:7d:6a brd ff:ff:ff:ff:ff:ff
inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic eno1
valid_lft 221sec preferred_lft 221sec
inet6 fe80::4367:68c0:7323:e564/64 scope link
valid_lft forever preferred_lft forever
3: enx9cebe8355797: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 9c:eb:e8:35:57:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute enx9cebe8355797
valid_lft forever preferred_lft forever
inet6 fe80::7d92:b21b:7773:679b/64 scope link
valid_lft forever preferred_lft forever
4: enx000ec6ccbb04: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0e:c6:cc:bb:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global noprefixroute enx000ec6ccbb04
valid_lft forever preferred_lft forever
inet6 fe80::ddd:5712:35e5:1994/64 scope link
valid_lft forever preferred_lft forever
Je connais les noms des interfaces, je vais pouvoir les paramétrer comme je le souhaite.
-
mon interface LAN sera en ip fixe, ça sera ma passerelle en 192.168.1.1
-
mon interface DMZ sera également en ip fixe sur un autre réseau, en 192.168.2.1
-
mon interface WAN nécessite d'être en DHCP. En effet c'est la passerelle coté RED By SFR qui va me distribuer une ip. Pour cela j'ai besoin d"indiquer à l'opérateur que le matériel n'est pas celui originel.
Pour cela on va tout simplement l'indiquer lors de l'envoi de la requête DHCP:
nano /etc/dhcp/dhclient.conf
Puis ajouter la ligne:
send vendor-class-identifier "neufbox-BypasseNeufBox-DirectConnexionToFFTH-mon@mail.net";
Enfin je paramètre mes interfaces comme indiqué ci dessus et je redémarre le service réseau.
Pour en savoir plus: Wiki Debian
Activation du routage coté noyau
Par défaut il faut préciser qu'il y a plusieurs interfaces réseaux, et donc plusieurs réseaux différents. Pour que le kernel interprète correctement les arrivées et sorties de paquets il faut qu'il se comporte comme un routeur, d'ailleurs ça devient pleinement le cas:
sysctl -w net.ipv4.ip_forward=1
Le fait de passer la valeur à 1 active donc le mode routeur du système. Cependant le routage des paquets ne sera plus activé au prochain redémarrage de la machine. Pour péréniser cette action, il faut modifier le fichier de configuration existant (ou en créer un nouveau):
nano /etc/sysctl.d/99-sysctl.conf
Puis décommenter (ou ajouter si vous créez un fichier) la ligne suivante:
#Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Il y a un autre élément essentiel, c'est le NAT. Mais celui ci sera pris en charge lors de l'installation et du paramétrage du pare-feux iptables, dans un prochain article.
On peut s'amuser à pinger d'abord ses interfaces locales, puis depuis hôtes distants. Avec ma configuration il n'y a plus aucune raison (hormis firewall local) que mon NAS en 192.168.2.2 ne soit pas accessible via une requête icmp depuis le 192.168.1.2 par exemple.
Des commandes à découvrir comme route, netstat, tcpdump ou encore ss sont essentielles pour voir ce qui se passe sur votre routeur.
Mise à jour du système
Une fois notre accès distant validé, on déploie les dernières mises à jour sur Debian. Un système d'exploitation pas à jour est un système avec des failles, malgré toutes les couches de sécurité qu'on pourra y apporter:
apt update && apt upgrade -y
Par défaut seuls les dépôts officiels sont intégrées sous /etc/apt/source.list.
Inutile dans un premier temps d'y rajouter d'autres sources, au risque de compromettre le système. Sachez cependant que pour de nombreuses distributions la logique est la suivante, exempe pour ma distribution:
-
DebianStable : dépôts officiels de Debian pour l'actuelle version « Stable » de Debian
-
StableUpdates : dépôts officiels de Debian pour les changements qui ne peuvent attendre la prochaine version intermédiaire
-
DebianSecurity : dépôts officiels de Debian pour les fréquentes mises à jours de sécurité
-
DebianBackports : de plus récentes versions de certains paquets, compatibles avec la version « Stable » de Debian
Le seul conseil que je puisse vous donner est d'activer uniquement les dépôts officiels de la distribution choisie. Si ceux ci n'hébergent pas un logiciel que vous souhaitez installer, privilégiez l'installation du paquet directement (.deb avec éventuellement ses dépendances) plutôt que d'installer des dépôts à la volée.C'est plus fastidieux mais bien plus sécurisé.
Et pour finir...
Nous avons donc un routeur fonctionnel, qui gère le niveau 3 et qui a pas mal d'outils intégrés par défaut pour faire du monitoring.Même si le système est à jour, c'est un vrai gruyère! En effet n'oublions pas que la box est en frontal d'internet, et qu'elle doit être blindée pour protéger votre réseau local.
Le second article de cette série corrigera le tir avec l'installation de iptables, qui en plus d'être un firewall de qualité permet de faire du NAT/PAT. Nous découvrirons également l'installation de services intéressants sur votre réseau local (serveur DNS, DHCP) pour que tout soit d'un coup beaucoup plus fonctionnel.
Sources supplémentaires: