Notez que tout ce qui va suivre devra se faire avec l’utilisateur administrateur. Pour s’y connecter tapez une fois su root
puis tapez son mot de passe.
Fixer l’adresse IP locale du nœud
Ce qui suit s’applique qu’aux connexions réseau filaire et non Wifi
Votre nœud possède une adresse IP locale afin d’être accéssible dans votre réseau, c’est d’ailleurs grâce à cette dernière que vous pouvez y accéder avec SSH. Cependant il est fort probable que son adressage se fasse dynamiquement par défaut, par conséquent l’adresse de votre Raspberry pourrait changer. Il est préférable d’éviter cette inconvenance alors on va forcer une adresse IP statique.
Ouvrez le fichiers de configuration DHCP en tapant nano /etc/dhcpcd.conf
, ajoutez à la fin du fichier ces informations :
interface eth0
static ip_address=192.168.1.42/24 # C'est l'IP qu'aura la machine
static routers=<Votre passerelle> # Passerelle, explications plus bas
static domain_name_servers=<Votre passerelle> 8.8.8.8
Ici vous allez devoir faire un travail d’enquête pour connaître votre réseau et savoir quelle est la passerelle. Suivez le terminal ci-dessous :
pi@raspberrypi:~ $ ip route
default via 192.168.1.1 dev eth0 src 192.168.1.42 metric 202
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.42 metric 202
Trouvé ! 192.168.1.1
est la passerelle de mon réseau, c’est ce que vous devez mettre dans la configuration DHCP plus haut. Notez également le /24
qui est un masque de réseau et que vous devez aussi utiliser dans votre configuration DHCP.
Sans entrer dans les détails le masque
/24
(ou/n
) est ce qui va déterminer la plage d’adresses disponibles. Avec une adresse type192.168.1.0/24
vous avez 254 adresses disponibles allant de192.168.1.1
à192.168.1.254
. C’est important à considérer car cela signifie que vous ne pouvez pas mettre n’importe quelle adresse, il est important de respecter le format. Pour être sûr de ne pas vous tromper, conservez les 3 premiers chiffres de l’IP et choisissez le dernier :x.x.x.y
où “x” sont les valeurs de base de l’IP (192.168.1
selon l’exemple) et “y” est une valeur choisie arbitrairement et comprise entre 1 et 254.
Votre nœud a maintenant une IP statique.
Sécuriser les accès distants SSH
SSH est un protocole de réseau qui vous permet de vous connecter à distance sur une machine grâce à un canal chiffré. Cela signifie que la machine distante exécute un service qui reçoit les connexions SSH, ce service s’appelle sshd
. SSH en lui même est plutôt bien sécurisé, cependant il est possible de couvrir un peu mieux les accès.
Sans plus attendre trouvez le fichier en tapant sudo nano /etc/ssh/sshd_config
.
Voyons quelles modifications vous pouvez apporter afin de mieux sécuriser les accès SSH. Vous noterez que la plupart des lignes sont commentées grâce au caractère “#”, cela signifie juste que les lignes comportant ce symbole au début sont neutralisées, le travail consiste essentiellement à dé-neutraliser certaines lignes.
Port 2310
: Mettez le port que vous souhaitez, le changer est toujours une couche de sécurité peu coûteuse. Ici j’ai mis 2310.
LoginGraceTime 2m
: Limite le temps de connexion inactif à 2 minutes. Vous pouvez l’augmenter mais le plus bas le mieux.
StrictModes yes
: Assure les accès aux fichiers en fonction de l’utilisateur connecté.
PermitRootLogin no
: Mettez PermitRootLogin à no
, cette option bloquera les connexions SSH à l’utilisateur administrateur du Raspberry. Si vous avez suivi l’installation que je recommande vous avez un utilisateur nommé bitcoin
qui a pour rôle d’administrer les services bitcoind et lnd. C’est sur ce dernier que vous vous connecterez via SSH et non sur l’utilisateur root.
MaxAuthTries 3
: Nombre d’essais pour se connecter via SSH limité à 3. Cela bloque les attaques par brute force automatisé.
MaxSessions 1
: Si vous êtes la seule personne à gérer votre machine, et que vous ne comptez pas créer plusieurs connexions SSH simultanées, alors limitez le nombre de sessions à 1. Il faut garder ce nombre le plus petit possible en fonction de vos besoins.
PubkeyAuthentication yes
: Cette option vous servira plus tard. Elle n’ajoute pas de sécurité supplémentaire, c’est une option qui vous facilitera l’accès à votre machine.
Tapez CTRL + O et CTRL + X; et enfin redémarrez SSHd afin d’appliquer ces modifications en tapant sudo service sshd restart
.
Enregistrer votre clé pour les connexions futures
Dans la configuration précédente vous aviez activé l’option PubkeyAuthentication, cette option va vous permettre d’enregistrer la clé publique de votre machine sur le Raspberry. Cela vous évitera de taper sans cesse le mot de passe de connexion.
Cela se passe en un commande. Suivez le terminal ci-dessous. Notez que cela doit se faire depuis votre machine locale (votre mac, votre pc, etc). Si vous êtes sur Windows vous n’aurez pas cette commande.
monpc@oumonmac:~ $ ssh-copy-id -i ~/.ssh/id_rsa.pub bitcoin@192.168.1.42
Ensuite vous devrez taper le mot de passe de l’utilisateur “bitcoin”. Notez que l’IP 192.168.1.42
(comment trouver l’IP de mon nœud ?) doit être l’IP de votre nœud distant. Cette action aura pour effet de recenser la clé publique de votre machine dans le Raspberry Pi, il vous reconnaîtra pour les connexions futures et ne vous demandera plus de mot de passe.
Si vous êtes sur Windows en utilisant PuTTy, vous pouvez générer et trouver votre clé publique avec PuTTyGen. Copiez cette clé qui commence par “ssh-rsa” si vous l’avez créé avec le chiffrement RSA. Cliquez sur “Save private key” et enregistrez le fichier sur votre machine. Revenez sur PuTTy, sur le panneau de gauche trouvez “Connection / SSH / Auth” puis dans la section “Private key file for authentication” chargez le fichier de votre clé privée, c’est un fichier .ppk. Connectez vous à votre Raspberry en utilisant PuTTy. Une fois connecté tapez
sudo nano .ssh/authorized_keys
et collez la clé publique que vous aviez copié, puis sauvegardez le fichier. C’est terminé désormais votre Raspberry connaît votre clé publique et autorisera les connexions futures depuis votre machine Windows.
Ajouter une couche supplémentaire à l’authentification SSH
Pour l’instant il est toujours possible de forcer l’accès à votre nœud avec une attaque par dictionnaire, qui consiste à tester des millions de mot de passe jusqu’à trouver un accès. Il existe un service nommé fail2ban
qui va permettre de protéger en limitant les tentatives de connexion.
Pour l’installer tapez apt-get update && apt-get install -y fail2ban
. Ensuite vous allez devoir configurer une chose si vous avez modifié le port SSH comme je l’ai montré juste au dessus. Cherchez le fichier de configuration de fail2ban nano /etc/fail2ban/jail.d/defaults-debian.conf
. Voyez la section [sshd]
mettez ce qui suit (si vous n’avez rien dans le fichier, ajoutez également ce qui suit) :
[sshd]
enabled = true
port = 2310 # Notez que c'est le port que j'ai mis plus haut dans sshd_config
Sauvegardez en tapant CTRL + O et CTRL + X pour fermer et enfin tapez systemctl restart fail2ban
.
fail2ban est un service polyvalent qui sécurise nombreuse authentifications, dont le service sshd et nous l’utilisons pour ça.
Activer le redémarrage automatique des services
Cette partie est cruciale. Si votre Raspberry est redémarré à cause d’une coupure de courant par exemple, il redémarrera… Mais il ne relancera pas bitcoind ni lnd. Ce qui aurait pour effet d’éteindre le service et vous obliger à intervenir pour qu’il persévère.
D’abord il va falloir faire en sorte que le disque soit toujours monté sur le dossier .bitcoin car c’est ce dernier qui recense la blockchain et bitcoind en a besoin. Le montage de disque ne se fait jamais automatiquement. Alors voilà comment configurer cela :
|
|
Soyez vigilant ici. J’ai surligné mon montage actuel qui est /dev/sda
monté sur /home/bitcoin/.bitcoin
, vous devez mettre ce chemin dans le echo
en dessous. Notez également l’annotation ext4
qui est le système de fichier que j’ai choisi lorsque j’avais formaté le disque. Si vous avez un doute suivez le terminal ci-dessous
|
|
Où /dev/sda
est mon disque à monter. On voit en surligné ext4
qui est le système de fichier.
bitcoind
Le redémarrage automatique d’un service sur Linux se fait toujours de la même manière, il faut écrire le service. Et pour ce faire tapez nano /etc/systemd/system/bitcoind.service
et entrez la configuration suivante :
|
|
CTRL + O et CTRL + X pour enregistrer et quitter puis tapez systemctl enable bitcoind
. La machine est lancée, le service bitcoind démarrera au lancement du Raspberry.
lnd
Encore une fois, il faut créer un service pour le service de lightning network, tapez nano /etc/systemd/system/lnd.service
et voilà la configuration que je recommande :
|
|
Et enfin pour l’activer systemctl enable lnd
.
Félicitations, votre Raspberry est autonome, il relancera les services en cas de redémarrage inopiné, sans votre aide, tout seul comme un grand.
Dans un article futur on va voir comment on peut administrer son nœud avec une interface graphique !