Prise en main d’un serveur vps d’OVH sous Ubuntu 18.04

Blog > Administration serveur dédié

Cet article est le premier d’une série expliquant comment configurer un serveur dédié pas à pas de sa réception à sa mise en production en tant que serveur web. Dans ce premier article nous allons nous concentrer sur les opérations de bases à réaliser lors de la première connexion au serveur.

Présentation du serveur VPS utilisé

  • Offre VPS SSD 1 2018 de chez Ovh
  • Ubuntu 18.04 LTS « Bionic Beaver »

Première connexion SSH au serveur VPS

A la livraison d’un serveur dédié d’OVH sur Ubuntu, on se retrouve avec un accès SSH en tant que root et un mot de passe envoyé par mail. La première chose à faire est donc se connecter et le changer.

$ ssh [email protected]
password:
$ passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Vu qu’il n’est jamais bon de travailler sur un serveur en tant que root, on crée un utilisateur (myuser dans notre cas) et on l’ajoute aux groupes root, adm et admin afin de lui donner des privilèges utiles pour l’administration.

$ adduser myuser
$ usermod -aG root,adm,sudo myuser

Explications sur les groupes

adm : Permet à l’utilisateur de consulter les fichiers de log dans /var/log
sudo : Ajoute l’utilisateur aux sudoers (avant Ubuntu 12.04 il faut ajouter l’utilisateur au groupe admin)

Sécurisation de SSH

Configuration de SSH

Editer le fichier /etc/ssh/sshd_config et faire les modifications suivantes :

Port 1234 # On change le port SSH d’accès au serveurpar défaut
PermitRootLogin no # On interdit les connexions en tant que root
MaxStartups 10:30:60 # 10 connexions sans authentification, sinon 30% de rejet jusqu'à 100% en 60 connexions
LoginGraceTime 30 # Une connexion de 30 secondes en SSH sans authentification entraîne la déconnexion

Création d’un groupe sshusers

Afin de limiter les users pouvant se connecter en SSH, nous allons créer un groupe sshusers et n’autoriser les connexions que pour ses membres.

$ addgroup sshusers #On crée le groupe sshusers
$ adduser myuser sshusers #On ajoute notre utilisateur au groupe

On modifie à nouveau le fichier /etc/ssh/sshd_config.

AllowGroups sshusers

Note

Si l’on ne souhaite restreindre l’accès SSH à un seul utilisateur, inutile de créer un groupe. Il suffit d’ajouter la ligne suivante au fichier de config

AllowUsers myuser

On peut par la suite aller plus loin dans la configuration de SSH en mettant en place la connexion par clés. Pour en apprendre plus sur cette méthode, je vous invite à consulter l’article : Connexion SSH automatique par clés RSA

Redémarrage de SSH

Afin que les changements soient pris en compte, il faut redémarrer le service SSH

$ /etc/init.d/ssh restart

Configuration du réseau

Personnalisation du hostname (facultatif)

Elle se fait en 2 étapes :

$ vi /etc/hostname
serveur.idneo.fr
$ vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
176.31.120.208 serveur.idneo.fr serveur

Sécurisation du réseau

Voici pour finir, une liste de commandes permettant de sécuriser un peu plus le serveur. Une grande partie des valeurs sont maintenant celles par défaut sur les versions récentes d’Ubuntu.

Smurf Attack

$ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Le smurf est une attaque par rebond qui consiste à pinguer des machines en se faisant passer pour votre serveur. La réponse de toutes la machines pinguées se transformera en attaque par déni de service.

Source routing

echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

Le source routing permet de spécifier le chemin à suivre pour des paquets IP. Le pirate peut ainsi indiquer un chemin de retour pour les paquets vers un routeur sous son contrôle afin de les exploiter.

Syn Flood

$ echo "1" > /proc/sys/net/ipv4/tcp_syncookies
$ echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog
$ echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

Le Syn Flood est une attaque visant à créer un déni de service. Pour faire simple, le client demande une connexion au serveur. Celui-ci l’autorise et se place en attente d’une réponse qui n’arrivera jamais. En faisant cela, il consomme des ressources qui pourront devenir insuffisantes si un grand nombre de connexion de se type sont établies simultanément.

Bad error messages

$ echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

Le système ne loguera pas les paquets icmp erroné

Redirects

$ echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
$ echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects

Désactive les redirections ICMP qui peuvent être utilisées pour modifier les tables de routage du serveur.

Configuration de Uncomplicated Firewall

Pré-installé sous Ubuntu, UFW est un pare-feu proposant une alternative à Iptables.

Par défaut, UFW vas bloquer tout le trafic entrant et autoriser celui sortant. Nous allons donc devoir au moins ajouter un règle autorisant les connexions SSH avant de démarrer le service.

$ ufw allow 1234  #1234 correspond au port que l'on a choisi précédemment pour SSH

L’ajout de règle est simple est respect toujours cette structure, nous pourrons ajouter par la suite des routes au fur et a mesure, mais vu que notre serveur ce destine à de l’hébergement, nous pouvons dès à présent ajouter les regles suivantes :

$ ufw allow 21 #FTP
$ ufw allow 25 #SMTP
$ ufw allow 80 #HTTP
$ ufw allow 443 #HTTPS

Une fois ces premières règles en place, il ne reste plus qu’a démarrer UFW.

$ ufw enable

Nous pourrons par la suite contrôle les régles actives grâce à la commande :

$ ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 1234                       ALLOW IN    Anywhere
[ 2] 80                         ALLOW IN    Anywhere
[ 3] 443                        ALLOW IN    Anywhere
[ 4] 25                         ALLOW IN    Anywhere
[ 5] 21/tcp                     ALLOW IN    Anywhere

Les règles s’appliquent par ordre, ainsi, si l’on souhaite ajouter une règle bloquant une adresse IP spécifique, il faudra l’insérer en premier :

$ ufw insert 1 deny from [ip]

Le numéro devant chaque régle permet également de supprimer les régles qui ne sont plus utiles :

$ ufw delete 2

Note

Il est possible d’utiliser les noms de service plutôt que leur numéro de port, il est également possible d’agir plus finement en choisissant le type de trafic, les IP ou plages d’IP à filtrer… Pour plus d’informations, tout est expliqué dans la documentation UFW d’Ubuntu.

Synchronisation NTP

Afin que le serveur soit toujours à l’heure, nous allons le synchroniser avec une horloge atomique. Pour cela nous allons installer les paquets ntp et ntpdate.

$ apt-get update                # Mise à jour des dépôts pour la première utilisation d'apt-get
$ apt-get install ntp ntpdate   # Installation des paquets ntp et ntpdate depuis le dépot d'Ubuntu 18.04

Ajout du serveur horaire français

$ /etc/init.d/ntp stop
$ ntpdate fr.pool.ntp.org
$ /etc/init.d/ntp start

Mise à jour d’Ubuntu

Le système est maintenant prêt, il ne reste plus qu’installer les mises à jour

$ apt-get upgrade

Après avoir indiqué que l’on accepte les mise à jour, le serveur va procéder aux modifications. On peut à présent redémarrer le serveur.

$ reboot

La connexion ssh va être coupée pendant la durée du reboot et devrait revenir possible dans quelques secondes.

Conclusion

Le serveur est à présent sommairement sécurisé et prêt à passer aux choses sérieuses ! La suite dans le prochain tuto !

Configuration d’un serveur dédié de A à Z


Inscrivez-vous à notre Newsletter

Recevez nos meilleurs articles et accédez au contenu exclussif reservé aux abonnés.

Cet article vous est proposé par IDNEO.

Notre agence de communication est spécialisée dans la création de sites Internet, le référencement, le graphisme et la photographie.