Warning: session_write_close(): write failed: Disk quota exceeded (122) in /home/wikivpsz/public_html/doku.php on line 121

Warning: session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in /home/wikivpsz/public_html/doku.php on line 121
hebergement-vps:securiser-l-acces-ssh [Wiki VPSZ]

Outils pour utilisateurs

Outils du site


hebergement-vps:securiser-l-acces-ssh

Cet article vous explique comment sécuriser les accès SSH de votre VPS Linux sous Debian.

Bloquer les tentatives de connexions multiples

Denyhosts

Denyhosts fonctionne avec les fichiers /etc/hosts.deny et /etc/hosts.allow. Dans un premier temps l'application lit le contenu du fichier hosts.allow pour voir les adresses autorisées puis elle va lire le fichier hosts.deny pour bloquer les IPs non autorisées. Vous pouvez donc bloquer l'accès à tout un service dans le fichier hosts.deny et autorisé seulement votre adresse IP dans le fichier hosts.allow.

Par défaut Denyhosts bloquera automatiquement une adresse IP après 5 tentatives pour un utilisateur normal et 10 tentatives pour l'utilisateur root. Vous pouvez modifier ces configurations dans le fichier /etc/denyhosts.conf

N'oubliez pas de redémarrer le service denyhosts en cas de modification de la configuration ! Une modification des fichiers /etc/hosts.allow et /etc/hosts.deny ne nécessite pas de redémarrage du service.

  • Installer Denyhosts
apt-get install denyhosts
  • Bloquer une IP ou un réseau en particulier en ajoutant des lignes au fichier /etc/hosts.deny
# /etc/hosts.deny
# Interdire l'accès au service SSH à l'adresse 172.16.1.10
sshd: 172.16.1.10

# Interdire l'accès au service SSH à l'adresse 172.16.1.10

# /etc/hosts.deny
# Interdire l'accès à tous les services à l'adresse 172.16.1.10
ALL: 172.16.1.10
# /etc/hosts.deny
# Interdire l'accès SSH à tout le réseau 192.168.0.1/24. (Notion de CIDR)
sshd: 192.168.0.1/24
  • Interdire l'accès en SSH à tout le monde en modifiant le fichier /etc/hosts.deny
# /etc/hosts.deny
# Interdire l'accès au service SSH à tout le monde
sshd: ALL
  • Autoriser une IP ou un réseau en particulier en modifiant le fichier /etc/hosts.allow
# /etc/hosts.allow
# Autoriser l'IP 192.168.1.1 à accéder en SSH
sshd: 192.168.1.1
  • Débannir une adresse IP en retirant les lignes correspondantes au fichier /etc/hosts.deny

Fail2ban

Fail2ban a la même fonction que Denyhosts à la différence qu'il utilise les Iptables pour bloquer l'accès au service SSH. Le fichier de configuration de Fail2ban est dans le répertoire /etc/fail2ban/jail.conf.

Pensez à faire une sauvegarde de ce fichier car il est réinitialiser à chaque mise à jour.

  • Installer Fail2ban
apt-get install fail2ban
  • Autoriser une IP ou un réseau en particulier en modifiant le fichier jail.local.
# /etc/fail2ban/jail.local
# Autoriser l'accès SSH à l'adresse IP 192.168.1.1 & au réseau 192.168.2.0/24
ignoreip = 127.0.0.0/8 192.168.2.0/24 192.168.1.1
  • Débannir une adresse IP du SSH
iptables -D fail2ban-ssh -s IP.A.DE.BANNIR -j DROP

Merci à @PunKeel. https://ungeek.fr/fail2ban/

Modifier le port SSH

Pour améliorer la sécurité vous pouvez modifier le port d'écoute du service SSH. Cela n’empêchera pas des tentatives d'intrusions mais vous pourrez ralentir un petit peu l'attaquant.

  • Modifier le fichier /etc/ssh/sshd_config
# /etc/ssh/sshd_config
#Port 22
Port 1234
  • Redémarrer SSH
#service ssh restart

Désactiver le SSH pour l'utilisateur root

  • Modifier le fichier /etc/ssh/sshd_config
# /etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no

Ne pas oublier de créer un utilisateur et de l'autoriser à accéder en SSH

  • Autoriser une liste spécifique d'utilisateur à se connecter en SSH.
# /etc/ssh/sshd_config
AllowUsers test-vpsz

Pour passer en “root” depuis un autre utilisateur

su -

  • Redémarrer SSH
service ssh restart

Utiliser des clés SSHs

L'authentification par clé et la solution la plus efficace. Vous aurez besoin de trois composants :

  • Une clé publique : Cette clé doit être déposée sur tous les serveurs ou vous voulez vous connecter.
  • Une clé privée : Elle garantie votre identité !
  • Une passphrase : C'est un “Mot de passe” qui s'applique à votre clé privé pour ajouter une sécurité.

Générer la paire de clé

Votre ordinateur est sous Linux / Mac

$ ssh-keygen

Votre ordinateur est sous Windows

Vous pouvez utiliser le logiciel Putty Key Generator.

  • Enregistrer la clé publique et la clé privée dans votre ordinateur.

Vous avez maintenant deux nouveaux fichiers dans le répertoire ~/.ssh/ ou la ou vous l'avez enregistré si vous êtes sous Windows.

  • id_rsa = Clé privée
  • id_rsa.pub = Clé publique

Copier les clés (Linux)

  • Copier la clé publique sur votre serveur pour pouvoir y accéder.

Methode 1

Cette commande lit le contenu de la clé publique et la dépose dans les clés autorisées du serveur distant.

cat ~/.ssh/id_rsa.pub | ssh user@IP.DE.MON.VPS "cat - >> ~/.ssh/authorized_keys"

Methode 2

scp ~/.ssh/id_rsa.pub user@IP.DE.MON.VPS:/root/.ssh/authorized_keys

Avec la commande SCP qui a pour fonction de copier des fichiers ou des répertoires entre des serveurs.

Methode 3

ssh-copy-id -i ~/.ssh/id_rsa.pub user@IP.DE.MON.VPS

Avec la commande ssh-copy-id

Copier les clés (Windows)

  • Télécharger WinSCP
  • Copier la clé publique sur votre serveur dans le répertoire /root/.ssh/authorized_keys
hebergement-vps/securiser-l-acces-ssh.txt · Dernière modification: 2015/03/02 07:45 par mathieu