Table of contents
information
Au niveau du hardware, l'équipement utilisé va être une carte Banana Pi BPI-R4 Wifi 7. Cette dernière présente notamment deux emplacements SFP qui vont permettre de rajouter un module fibre pour être raccordé directement au réseau de l'opérateur. En plus de cela, cette carte possède 4 ports RJ45, plutôt pratique pour connecter les appareils domestiques directement en filaire et compatible avec le WiFi 7. Bref, cette carte propose de bien meilleures caractéristiques que les box les plus hauts de gamme des opérateurs. En option superflue, il est même possible de rajouter jusqu'à 3 cartes SIM afin d'avoir une continuité d'activité en cas de rupture du réseau fibre.
Au niveau du software, c'est la distribution OpenWrt qui va être utilisée. Cette distribution Linux étant spécifiquement faite pour être installée sur des routeurs.
Installation
Dans un premier temps, il faut récupérer l'image pour carte sd sur le site d'OpenWRT.
Dans un second temps, on peut insérer la carte et y écrire l'OS avec la commande :
zcat openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img.gz | sudo dd of=/dev/sdd bs=1M status=progress
- La troisième étape consiste à brancher son pc à la carte et effectuer quelques configurations de base en SSH :
ssh root@192.168.1.1 passwd
ssh-keygen -f ~/.ssh/openwrt -t rsa -b 4096
ssh-copy-id -i ~/.ssh/openwrt root@192.168.1.1
- Une fois connecté en SSH, il peut être pertinent d'installer openssh-sftp-server afin de pouvoir transférer facilement des fichiers entre sa machine et son routeur :
apk add openssh-sftp-server
Mise à jour
OpenWRT utilise le gestionnaire de paquets apk. Il suffit de faire un apk update puis un apk upgrade pour mettre la distribution à jour.
Un routeur étant un équipement réseau particulièrement sensible il est conseillé de le faire assez régulièrement.
WireGuard
WireGuard est un VPN. Pour l'installer, la documentation officielle de OpenWRT est très bien faite.
apk add wireguard-tools
Pour créer un fichier de configuration pour un nouveau client :
CLIENT="pc-flavien"
CLIENT_IP="192.168.255.2"
SERVER_IP="XXX.XXX.XXX.XXX"
wg genkey | tee $CLIENT.key | wg pubkey > $CLIENT.pub
wg genpsk > $CLIENT.psk
uci set network.wgclient="wireguard_vpn"
uci set network.wgclient.public_key="$(cat $CLIENT.pub)"
uci set network.wgclient.preshared_key="$(cat $CLIENT.psk)"
uci add_list network.wgclient.allowed_ips="$CLIENT_IP/32"
uci commit network
service network restart
cat << EOF > $CLIENT.conf
[Interface]
PrivateKey = $(cat $CLIENT.key)
Address = $CLIENT_IP/24
DNS = 208.67.222.222
[Peer]
PublicKey = $(wg show vpn public-key)
PresharedKey = $(cat $CLIENT.psk)
Endpoint = $SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
Ensuite une fois ce fichier transféré vers l'ordinateur du client, il suffit de taper la commande (sur l'ordinateur du client) :
nmcli connection import type wireguard file $CLIENT.conf
CrowdSec
CrowdSec est une suite de sécurité. Un bon scénario est d'installer un serveur CrowdSec quelque part dans son infrastructure. Ce dernier va analyser les fichiers de logs produits par nos serveurs (un Nginx par exemple) afin de prendre des décisions concernant des blocages d'IP.
Cependant, même si ce serveur CrowdSec prend des décisions de blocage, il faut un autre composant qui va faire la jonction entre CrowdSec et un firewall. Ce composant est nommé un Bouncer. Il en existe différents types que ce soit pour iptables, le firewall Windows... Et bien évidemment pour OpenWRT.
Tout d'abord sur la machine qui a CrowdSec d'installé (donc pas notre routeur), il faut enregistrer la machine avec un token d'authentification :
cscli bouncers add OpenWrt
Ensuite, au niveau du routeur, il faut installer notre configuration en mettant le bon nom d'hôte pour la machine CrowdSec et la bonne api key :
apk add crowdsec-firewall-bouncer
cat << EOF > /etc/config/crowdsec
config bouncer
option enabled '1'
option ipv4 '1'
option ipv6 '1'
option api_url 'http://$CROWDSEC_IP:8080/'
option api_key '$CROWDSEC_API_KEY'
option deny_action 'drop'
option deny_log '0'
option log_prefix 'crowdsec: '
option log_level 'info'
option filter_input '1'
option filter_forward '1'
list interface 'br-wan'
EOF
service crowdsec-firewall-bouncer reload
Configuration
Les fichiers de configuration d'OpenWRT se situent dans /etc/config. C'est ce dossier qu'il faudra versionner ou au moins sauvegarder pour garder une trace de sa configuration réseau.