NAS home made

Patapouf, c’est mon NAS home made. Il tourne sur Ubuntu 18.04 ➡️ 20.04 ➡️ 22.04.

A l’époque, [[infra:debian|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 [[privacy:synology|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 [[infra:debian|Debian]] ou [[infra:ubuntu|Ubuntu]] - en mode serveur, j’ai l’impression que les deux se valent - même si [[infra:nixos|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:

@monthly /root/renew-certs.sh

Gestion 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.

Il faut ensuite

Applications / Services