Table of Contents
NAS Home made
Patapouf, c'est mon NAS home made. Il tourne sur Ubuntu 18.04 ➡️ 20.04 ➡️ 22.04.
A l'époque, Debian arrivait en période de freeze et je n'avais pas le courage d'attendre que la période se termine pour installer la machine. J'ai donc pris une Ubuntu - que je ne regrette absolument pas, tant les passages de version me prennent par la main.
Il est monté avec deux RAID1 (2x4To, hérités d'un ancien Synology qui m'a gonflé à réécrire ses fichiers htpasswd au démarrage et 2x2To récupérés d'une (autre) ancienne configuration). Il est programmé pour s'arrêter la nuit et pour se rallumer le lendemain (merci les options du BIOS), pendant la journée. J'essaie de faire en sorte que les opérations qui le concernent soient évidemment coordonnées.
A refaire, je pense que je repartirais sur Debian ou Ubuntu - en mode serveur, j'ai l'impression que les deux se valent - même si NixOS me tenterait bien aussi.
Configuration
A part la configuration des disques en LVM et en RAID1, la seule grosse modification concerne les mises à jour automatiques avec `unattended-upgrades` et une petite partie de sécurité :
apt install unattended-upgrades needrestart build-essentials apt install ufw apt install haveged curl git unzip zip apt install rkhunter apt install fail2ban sudo dpkg-reconfigure --priority=low unattended-upgrades
SSHd
Et adaptez les valeurs dans le fichier `/etc/fail2ban/jail.d/defaults-debian.conf`:
[sshd] enabled = true bantime = 3600 maxretry = 3 findtime = 600
UFW
Voir ici : https://www.citizenz.info/firewall-utiliser-ufw-sur-scaleway
On change la politique INPUT par défaut à ACCEPT et non plus DROP $ sudo vim /etc/default/ufw DEFAULT_INPUT_POLICY=“ACCEPT”
2 - On ajoute une règle DROP-ALL à la fin du fichier suivant, juste avant la ligne finale COMMIT : $ sudo vim /etc/ufw/after.rules -A ufw-reject-input -j DROP
3 - On désactive le logging d'UFW. Scaleway n'aime pas trop : $ sudo ufw logging off
4 - On n'oublie surtout pas d'activer SSH pour pouvoir accéder au serveur : $ sudo ufw allow ssh
5 - enfin on active UFW : $ sudo ufw enable
Et ensuite ici :) https://www.citizenz.info/ufw-un-par-feu-facile-a-utiliser-pour-son-serveur
Nginx
apt install nginx apt install certbot certbot certonly --authenticator standalone --installer nginx --email fred@grimbox.be -d grimbox.be -d benjamin.grimbox.be -d cloud.grimbox.be -d nearflagey.be -d alexis.grimbox.be --pre-hook "service nginx stop" --post-hook "service nginx start"
Le certificat généré se trouvera dans /etc/letsencrypt/live.
On peut ensuite renouveller automatiquement le certificat grâce à la commande `cerbot renew`, dont le comportement est décrit dans le fichier `/etc/letsencrypt/renewal/<site>.conf`.
L'autre solution est de reprendre la génération des certificats, de mettre ça dans un fichier `renew-certs.sh` et de le démarrer via un crontab en root:
```cron @monthly /root/renew-certs.sh ```
Gestion et création des utilisateurs
Nous allons créer un utilisateur, son propre répertoire utilisateur (afin d'y stocker sa configuration de connexion) et l'ajouter à notre groupe de sauvegarde, afin que borg puisse gérer ses fichiers.
Le paramètre -m s'occupe de créer le répertoire utilisateur. Et comme on n'est pas des salauds, on va lui fournir un shell un peu utile (au cas où), et l'ajouter directement au groupe borg.
sudo useradd -m <user> -s /bin/bash -G borg
Il faut ensuite
- lui donner une clé de connexion,
- configurer un répertoire de sauvegarde,
- configurer rclone pour synchroniser les fichiers,
- configurer la récurrence de la sauvegarde.