Sécuriser son serveur dédié

Nous allons içi voir comment sécuriser au mieux son serveur dédiés.

Comptes utilisateurs

Un mauvais cloisonnement des droits d'accès peut mener jusqu'à une compromission totale de votre serveur. C'est pourquoi il est très important de gérer correctement ses comptes utilisateurs.

Nous allons donc découvrir sudo afin de désactiver, un peu après dans la partie "Serveur SSH", l'utilisateur root tout en conservant des droits root.
sudo permet de donner temporairement des droits d'exécutions/d'accès à un utilisateur afin d'effectuer certaines actions. L'utilisation la plus courante de sudo est celle que l'on va en faire : donner les droits d'accès root à un utilisateur qui n'est pas root.

La procédure est relativement simple. Nous allons prendre l'exemple d'un utilisateur nommé "nir", en lui rajoutant le groupe secondaire "sudo". En effet sudo peut également fonctionner avec des groupes. Et par défaut, celui-ci fourni le groupe "sudo", permettant de donner à n'importe qui les droits root. On va donc utiliser ce groupe par défaut :

apt-get install sudo
usermod -a -G sudo nir

Mots de passes

Il est très important d'avoir des mots de passes dit "forts". Plus un mot de passe est long, plus il faudra de temps à un attaquant pour le brute-forcer. Nous vous conseillons l'utilisateur pwgen afin de vous faciliter la vie dans la création de vos mots de passes. Son installation (apt-get install pwgen) et son utilisation (pwgen -1sB 18 2) sont relativement triviales.

Même en restreignant au maximum l'ensemble de vos utilisateurs, il vous sera nécessaire d'avoir les droits root afin d'effectuer des tâches d'administration occasionnelles. Or, nous n'allons plus utiliIl peut également être utile de donner des droits précis à un utilisateur (par exemple, la visualisation d'un fichier de log particulier n'appartenant pas à l'utilisateur). Pensez également à utiliser les groupes.

Serveur SSH

Nous allons commencer par sécuriser notre serveur SSH afin d'éviter toute tentative de connexion avec le compte root. On va commencer par modifier le fichier /etc/ssh/sshd_config.

Port 6554           # Remplacez le port 22 par un autre port
PermitRootLogin no  # Empêchez la connexion avec le compte root

Puis redémarrez votre serveur ssh :

service ssh restart

Paramètres réseaux

Il est ensuite nécessaires de modifier certains paramètres réseaux afin de se protéger de certains types d'attaques. Nous allons modifier le fichier /etc/sysctl.conf. Par défaut beaucoup des paramètres suivant sont commentés. Il vous suffira donc de décommenter la ligne (supprimer le "#" devant), et peut être de modifier la valeur associée.

On va commencer par empêcher l'envoi de redirections ICMP :

net.ipv4.conf.all.send_redirects = 0

On va refuser les paquets de routage :

net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0

Puis, pour éviter (de manière basique) les attaques de type Man In The Middle, nous allons refuser les redirections ICMP :

net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

On va également se protéger contre le spoofing :

net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1

On active ensuite quelques protections contre les attaques de type Syn Flood

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024

Puis on termine par ignorer les broadcasts, les réponses "ICMP BUG" et on log tous les packets inhabituels :

net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.log_martians = 1

Voilà, il ne reste plus qu'à la charger les paramètres que vous venez de modifier :

sysctl -n -e -q

Firewall

Logiciels dédiés

Certains logiciels sont spécialisés dans différents domaines de la sécurité. On vous présentera brièvement les plus importants içi :

rkhunter

rkhunter vous permettra de détecter l'installation de logiciels malveillants, ou la modification de logiciels régulièrement utilisé (tel ls, ps, cp, apt-get, ...) par le système ou par vous même. Il s'agit donc d'un bon outil pour détecter toute installation frauduleuse sur un serveur.

En savoir plus

fail2ban

fail2ban est un logiciel permettant de bannir une adresse IP lorsque celle-ci semble vouloir brute-forcer certaines parties de votre serveur. Il permettra notamment d'arrêter tout brute-force sur votre serveur SSH, sur les zones d'identifications HTTP, ... Il s'agit donc d'une solution proactive contrairement à rkhunter.

En savoir plus

suhosin

mod_security

grsec

Autre

Pour les serveurs, nous vous conseillons également de modifier les droits d'accès des fichiers ci-dessous :

chmod o-x /usr/bin/gcc
chmod o-x /usr/bin/make
chmod o-x /usr/bin/apt-get
chmod o-x /usr/bin/aptitude
chmod o-x /usr/bin/dpkg