--- categories: ['OpenWRT','Système'] date: 2020-02-20T21:37:23+01:00 description: "Présentation du projet OpenWRT" draft: false tags: ['OpenWRT'] title: "OpenWRT : Présentation du projet" --- ## Description **OpenWRT** est un système d'exploitation GNU/Linux ciblant les périphériques embarqués *(typiquement des routeurs sans fils)*. Ce n'est pas un projet monolitique , bien au contraire, c'est plus un framework fournissant les outils logiciels nécessaires afin de fournir un système de fichiers complet, de permettre la création de micrologiciels *(en anglais : firmware)* selon le matériel et tout autour une distribution complète qui permet à l'administrateur/utilisateur de la configurer "aux petits oignons" permettant différents usages utiles. --- * OpenWRT : **v19.07.x** * Le shell est le **ash** du projet **[Busybox](https://www.busybox.net/BusyBox.html)**. * L'éditeur par défaut est `vi` - *si vous n'aimez pas, il est possible d'en {{< anchor installer "gestionnaire-de-paquets" >}} d'autres, tel `nano`.* * Les fichiers de configuration se trouvent généralement dans `/etc/config/` et portent le nom du service à configurer. * Les services sont fonctionnels à partir du répertoire `/etc/init.d/` et portent le nom du service ; ils ont pour options les classiques : * `disable` : désactiver un service - il ne redémarrera pas lors d'un (re)démarrage du routeur, * `enable` : activer un service - permet le démarrage du service lors du (re)démarrage du routeur, * `reload` : recharge la configuration du service, * `restart` : redémarre le service, * `start` : démarre le service, * `stop` : arrête le service. ## Installation ### Gestionnaire de paquets Le gestionnaire de paquets est `opkg` est intégré de base dans le système ; hormis la {{< inside "sys:openwrt:opkg-upgrade" "mise-à-jour 'one-shot' de plusieurs paquets" >}}, il a pour propos les différentes possibilités de gestion des paquets, à savoir installation, configuration, suppression de paquets…
pour en savoir plus : `$ opkg ?` Si vous avez {{< anchor "installé l'interface d'administration **LuCI**" "install-luci" >}}, il est possible de gérer les paquets par le biais du menu 'System' > 'Software'. ### Install: LuCI **LuCI** est l'interface web d'administration. Par défaut, elle n'est fonctionnelle que sur le protocole {{< abbr HTTP "HyperText Transfer Protocol" >}}. Installez le paquet avec le gestionnaire de paquets. `# opkg install luci` L'installation de **LuCI** installe plusieurs paquets, dont un serveur web minimaliste nommé **{{< anchor uhttpd uhttpd >}}**, le thème basé sur **[Bootstrap][7]**, et les dépendances nécessaires pour la gestion de l'administration (gestion des différents protocoles réseaux, du parefeu, etc.). Pour installer la version supportant {{< abbr HTTPS "HyperText Transfer Protocol Secure" >}} - *ce qui est préférable* -, ce sera : `# opkg install luci-ssl` {{< note warning >}}ATTENTION : vous devez impérativement avoir une ROM Flash >= 8 Mo !{{}} #### Install: Langue FR Il est possible d'installer la langue française au besoin. Retrouvez les différents paquets linguistiques : * en mode console : `# opkg list | grep -E "luci-i18n-(.*)-fr"` * à-travers l'interface d'administration : menu 'System' > 'Software' puis dans le champ 'Filter', écrivez "luci-i18n-". N'installez pas tous les paquets disponibles, mais seuls ceux qui vous sont vraiment nécessaires, tels *- peut-être -* : * `luci-i18n-base-fr` pour l'interface de base de LuCI. * `luci-i18n-firewall-fr` pour la partie parefeu ## Configuration ### root La première ET la plus importante des premières modifications à faire est de changer le mot de passe de l'admin. * en mode console, grâce à la commande `passwd` * par l'interface d'administration **LuCI** - *si elle est installée* - : menu 'System' > 'Administration', onglet 'Router Password' - *onglet par défaut*.
{{< img a="OpenWRT :: Administration Système : Mot de Pass Root" s="openwrt/System-Administration-SSH-Router-Password-min.png" w="256" >}}
{{< note warning >}}Il est fortement recommandé d'éviter la connexion {{< anchor SSH ssh >}} pour root, prenez le temps de {{< inside "sys:openwrt:sudo" "configurer un nouvel utilisateur" >}} et de lui donner les droits pour assumer correctement l'administration.{{}} ### Réseaux * La configuration des ports se fait, soit depuis : * le fichier `/etc/config/network`, * l'interface d'administration **LuCI**, menu 'Network' > 'Interfaces'. Par défaut sont configurées les interfaces : * **LAN** en mode bridge, * **WAN** et **WAN6** De plus, il est configuré deux {{< abbr VLAN "Virtual Local Area Network" >}}, à partir du menu 'Network' > 'Switch', pour séparer logiciellement le LAN du WAN. * Le service est accessible via : `/etc/init.d/network`. {{< note tip >}}Il peut être intéressant de {{< inside "sys:openwrt:switch-lan-wan" "basculer LAN sur le port 0 et WAN sur le port 4" >}}. {{}} ### Parefeu * La configuration du parefeu se fait, soit depuis : * le fichier `/etc/config/firewall`, * l'interface d'administration **LuCI**, menu 'Network' > 'Firewall'. Il est possible d'écrire directement des règles **iptables** à partir de l'onglet 'Custom Rules'.
Son fichier se trouve être `/etc/firewall.user`. C'est seulement dans celui-ci où peut s'écrire directement des règles **iptables** ou **ip6tables**. * Le service est accessible via : `/etc/init.d/firewall`. ### dhcpd Le serveur {{< abbr DHCP "Dynamic Host Control Protocol" >}} est **dnsmasq**, un serveur léger qui fait aussi office de résolveur DNS Relais *(en anglais : DNS Forwarder)* et fait partie du système de base. La pile IPv6 est assurée par le serveur **odhcpd**. * La configuration du serveur **dnsmasq** peut se faire, soit par: * le fichier `/etc/config/dhcp` * l'interface d'administration **LuCI**, menu 'Network' > 'DHCP and DNS'. * Les services `dnsmasq` et `odhcpd` sont accessibles à partir du même répertoire d'initialisation `/etc/init.d`. * Les fichiers d'enregistrement des baux DHCP sont, pour : * **dnsmasq** : `/tmp/dhcp.leases` * **odhcpd** : `/tmp/hosts/odhcpd` On ne peut fixer/enregistrer des baux DHCP au-travers de LuCI que pour IPv4. ### Config: LuCI * Le fichier de configuration de **LuCI** est : `/etc/config/luci` - {{< color red >}}évitez d'y toucher, à moins de savoir réellement ce que vous faîtes !{{}} {{< note tip >}}Il est recommandable de modifier l'accès à l'interface web, certainement par le biais d'un tunnel {{< inside "sys:openwrt:ssh" SSH >}}… {{}} ### SSH C'est le serveur **dropbear** - un serveur SSH, seulement v2, léger - qui fait office, par défaut dans le système de base. Il gère très bien les clés à courbes elliptiques, tel ed25519. {{< note tip >}} La première chose à faire du côté de votre client est d'ajouter dans votre {{< inside2 l="sec:ssh:configuration-securisee" t="configuration sécurisée" a="message-authentication-codes" >}}, le support de : * `Ciphers aes256-ctr` * `HostKeyAlgorithms ssh-rsa` * `MACs hmac-sha2-256` Retrouvez les {{< inside2 a="dépannage" l="sys:openwrt:ssh-tunnel" t="différents codes d'erreurs liés à la fin de cet article sur SSH" >}}. {{}} --- * Par le biais de l'interface web d'administration **LuCI**, choisissez le menu 'System > Administration', puis l'onglet "SSH Access".
{{< img a="OpenWRT :: Administration Système : Accès SSH" s="openwrt/System-Administration-SSH-Access-min.png" w="256" >}}
Puis paramétrez ainsi : * Interface : choisissez lan * Port : si vous laissez le port par défaut, pas besoin de le spécifier, sinon modifiez-le. Par mesure de sécurité : laissez non cochées, les trois autres options que sont 'Password Authentication', 'Allow root logins with password' et 'Gateway Ports'. Ainsi nous ne permettrons pas à l'identifiant **root** de se connecter, et à nul compte de pouvoir se connecter par mot-de-passe. Cela signifie qu'il faut ajouter une clé d'authentification SSH. {{< note tip >}}Le seul moment où 'Password Authentication' et 'Allow root logins with password' seront autorisées, donc cochées, et le temps de définir un {{< inside "sys:openwrt:sudo" "nouvel utilisateur" >}}…
**Si ce n'est pas déjà fait, c'est le moment de le faire !** {{}} Il est aussi possible de créer un nouvel utilisateur SSH, en choisissant pour interface : 'unspecified', qui permettrait de créer ledit utilisateur… {{< note tip >}}Appréciez cette {{< inside "sys:openwrt:ssh-tunnel" "méthode" >}} pour sécuriser LuCI.{{}} ### uhttpd Bien que léger, voire minimaliste **uhttpd** est LE serveur web, *par défaut non installé sur le firmware initram*, qui fait fonctionner l'interface web **{{< anchor LuCI "install-luci" >}}**. * La configuration du serveur se fait via : `/etc/config/uhttpd` * Le service est accessible via `/etc/init.d/uhttpd` {{< note warning >}} Par défaut, le serveur **uhttpd** écoute sur toutes les interfaces, partout ! Pensez à minima, par principe de sécurité, à changer les lignes `list listen_http` pour cibler seulement l'adresse IP de votre LAN, tel que :
`list listen_http 192.168.1.1:80` - *(bien sûr, si votre adresse IP est celle-là, sinon changez-la selon vos paramétrages)* -
idem, pour le port HTTPS, voire pour l'IPv6, si vous gérez !
Toujours par principe de sécurité, il est recommandé de le démarrer qu'en cas de besoin de configuration et de l'arrêter une fois terminée. C'est pourquoi, vous pouvez faire allégrement : * `# /etc/init.d/uhttpd disable` ainsi il ne redémarrera pas lors de (re)démarrage du routeur. * `# /etc/init.d/uhttpd start` et `stop` pour réciproquement le démarrer et l'arrêter au besoin. Avantage : Cela permet de libérer les ressources de puissance machine. Cela sous-entend bien-sûr une connexion {{< anchor SSH ssh >}} active ! {{}} ### Restauration La restauration d'une configuration précédente peut se faire par : * l'interface d'administration, menu 'System' > 'Backup / Flash Firmware' puis dans la section **Restore** soit vous cliquez sur le bouton : * [ Perform reset ] qui aura pour propos de remettre à la configuration initiale du firmware - **nécessite que celui-ci soit de type "squashfs"** * [ Upload archive… ] pour restaurer une configuration précédemment archivée.
{{< img a="OpenWRT :: Administration Système : Restauration" s="openwrt/System-Administration-Flash-Restore-min.png" w="256" >}}
### Sauvegarde La sauvegarde de toutes configurations du routeur peut se faire par : * l'interface d'administration, menu 'System' > 'Backup / Flash Firmware' puis dans la section **Backup** cliquez sur le bouton [ Generate archive ].
{{< img a="OpenWRT :: Administration Système : Sauvegarde" s="openwrt/System-Administration-Flash-Backup-min.png" w="256" >}}
### Upgrade La mise à jour du firmware peut se faire : * en mode console - **ce qui semble préférable** - par le biais de la commande `sysupgrade` après avoir téléchargé le firmware adéquat. * par l'interface d'administration, menu 'System' > 'Backup / Flash Firmware' puis dans la section **Flash new firmware image** cliquez sur le bouton [ Flash image ].
{{< img a="OpenWRT :: Administration Système : Mise à jour Firmware" s="openwrt/System-Administration-Flash-Firmware-min.png" w="256" >}}
{{< note warning >}} Il faut être conscient que lors de la mise à jour du firmware, toute configuration personnalisée hors système sera purgée. Mieux vaut suivre ce processus de sauvegarde correcte : {{< inside "sys/openwrt/sysupgrade" >}} {{}} --- ## Documentation * Le wiki du projet OpenWRT : https://openwrt.org/ --- [7]: https://getbootstrap.com/ ---