Configuration générale

Se connecter via SSH une fois les accès aux VPS reçu :

ssh root@<@IP>

Saisir le mot de passe une fois demandé.

Mettre à jour le système :

apt update
apt upgrade

Modifier le mot de passe root:

passwd root

Installer des packages nécessaire :

apt install cron-apt sudo ufw

Configuration MAJ automatique avec cron-apt:

src:

Plannifier l’intervalle des mise à jour en modifiant le fichier /etc/cron.d/cron-apt:

nano /etc/cron.d/cron-apt

Dans le fichier :

#
# Regular cron jobs for the cron-apt package
#
# Every night at 4 o'clock.
0 4     * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt

Puis activer les MAJ de sécurité debian:

nano /etc/apt/sources.list.d/security.list

Dans le fichier :

deb http://deb.debian.org/debian-security/ bullseye-security main
deb-src http://deb.debian.org/debian-security/ bullseye-security main

Créer le fichier /etc/cron-apt/action.d/4-security:

nano /etc/cron-apt/action.d/4-security

Dans le fichier :

upgrade -d -y -o APT::Get::Show-Upgraded=true

Enfin, créer le fichier /etc/cron-apt/config.d/4-security:

nano /etc/cron-apt/config.d/4-security

Dans le fichier :

OPTIONS="-o quiet=1 -o APT::Get::List-Cleanup=false -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list -o Dir::Etc::SourceParts="/dev/null""

Pour recevoir un rapport par mail, modifier le fichier /etc/cron-apt/config comme suit :

MAILON="always"
MAILTO="******@***.***"

Tester la commande de MAJ:

test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt

Si vous avez l’erreur sendmail: Cannot open mail:25, installer postfix et configurer le en Internet site:

apt install postfix

Configuration ssh

Modifier le port d’écoute du service ssh:

nano /etc/ssh/sshd_config

Trouver la ligne suivante et remplacer 22 par le port voulu:

Port <ssh_port>

Puis redémarrer le service:

/etc/init.d/ssh restart

Sécurité

src:

Créer un utilisateur avec des droits restreints

Créer l’utilisateur:

adduser zaptorg

Tenter de vous connecter en ssh avec ce nouvel utilisateur:

ssh zaptorg@<@IP> -p <ssh_port>

Désactiver l’accès SSH via root:

nano /etc/ssh/sshd_config

Puis trouver, décommenter et modifier les lignes suivantes pour avoir la configuration comme ci-dessous :

LoginGraceTime 120
PermitRootLogin yno 
StrictModes yes

Installer et Configurer sudo

src:

Installer sudo et ajouter l’utilisateur créer précédemment au groupe sudo:

apt install sudo
usermod -aG sudo zaptorg

Pour modifier les autorisations et les commandes sudo de l’utilisateur:

visduo

Pour autoriser une commande spécifique, ajouter une ligne avec l’user et les commandes souhaitées:

zaptorg ALL=(root) /usr/bin/apt update, /usr/bin/apt upgrade

Pour trouver l’emplacement de la commande:

which apt

Mettre en place l’authentification SSH par clé

src:

Générer la clé sur le client:

ssh-keygen rsa

Exporter le fichier *.pub sur le serveur via SFTP, SCP ou en copiant collant le contenu dans le fichier /home/zaptorg/.ssh/authorized_keys:

ssh-rsa AAAA***** user_client@hostname_client

Tester la connexion par clé en se connectant en SSH comme habituellement.

Désactiver l’authentification par mot de passe sur le serveur en modifiant le fichier /etc/ssh/sshd_config et en décommentant et modifiant les lignes suivantes pour avoir une configuration similaire à celle-ci:

PasswordAuthentication no
PubkeyAuthentication yes

Redémarrer le service ssh:

systemctl restart ssh

Configurer le pare-feu avec ufw

src:

Par défaut, refuser toutes les connexions entrantes et autoriser toutes les connexions sortantes:

ufw default deny incoming
ufw default allow outgoing

Autoriser le ssh sur le port d’écoute configuré précedemment, puis activer les règles:

ufw allow <ssh_port>/tcp
ufw enable

Pour afficher le statut du pare-feu:

ufw status

Configurer le bloqueur d’attaques crowdsec (fail2ban++)

src:

Installer crowdsec:

apt install crowdsec
systemctl restart crowdsec

Afficher les services protéger que crowdsec à automatiquement détecté:

cscli collections list

Afficher les décisions de crowdsec et les alertes déclenchés:

cscli decisions list
cscli alerts list

Afficher les metriques de crowdsec:

cscli metrics

Installer un bouncer firewall

Ajouter les repositories crowdsec:

curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash

Télécharger et installer le bouncer crowdsec-firewall-bouncer pour iptables:

sudo apt install crowdsec-firewall-bouncer-iptables

Vérifier que le bouncer est bien installer et que le service est démarrer:

cscli bouncers list
systemctl status crowdsec-firewall-bouncer

Hardening