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:
- https://www.debianadmin.com/automatic-update-of-packages-using-cron-apt.html
- https://geekthis.net/post/how-to-setup-cron-apt/
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:
- https://wiki.uniheberg.fr/vps-dedie-revendeur-vps/securisez-son-vps-ou-dedie
- https://support.octenium.com/kb/comment-securiser-un-vps/
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:
- https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-debian-11
- https://doc.crowdsec.net/docs/getting_started/install_crowdsec/
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