Date de publication:
Commentaires:0

Aujourd’hui je vous propose d’activer le SFTP et de mettre en place ma technique super sécurisée pour palier aux tracas
liés au hacking SSH.

Comme j’essaie de le faire dans la majorité des serveurs Linux que j’administre, je bloque la possibilité de se connecter directement via root et je ne permet la connexion que via un utilisateur avec des permissions restreintes. Une fois la connexion établie, l’utilisateur devra connaitre le mot de passe root et demander une élévation des droits, ce qui est une étape plutôt pas mal pour sécuriser son serveur.

A ce stade, je peux placer subtilement un petit script qui m’envoie par e-mail une alerte de connexion ssh. Et là on peut être sur que si quelqu’un arrive à trouver le mot de passe ssh de l’utilisateur sans droits, on file le changer avant qu’il n’ai l’occasion de prendre contrôle de root.

Normalement avec en plus l’installation de fail2ban, on est plutôt safe en terme de sécurité ssh. Bien que l’on ne soit jamais trop prudent.

Bon on commence!

Je vous conseille de ne pas bloquer root en premier pour ne pas vous qu’on arrive dans le cas ou je me déconnecte par mégarde avant d’avoir tout bien configuré et .. Vous m’avez compris.

On va en premier activer sftp dans le fichier /etc/ssh/sshd_config (faite attention à la ligne AllowGroups)

Subsystem sftp internal-sftp
AllowGroups admin root nesca allowssh

# Et on met tout à la fin du fichier
Match group nesca
	ChrootDirectory /var/www/nescabe
	AllowTCPForwarding no
	X11Forwarding no
	ForceCommand internal-sftp

On remplace le « nesca » par un nom d’un user qu’on trouve plutôt bien pour l’occasion. Tous les users créés et appartenant au groupe seront alors considérés comme des users FTP, ils ne pourront pas se connecter à la console à cause de ForceCommand, on remplace aussi /var/www/nescabe par le chemin auquel le user va pouvoir uploader/downloader des fichiers. Chez moi comme il s’agit d’un serveur web ce sera /var/www/nescabe

On redémarre ssh et on va donc créer ce fameux user nesca.

root@vpsxxxx:~# /etc/init.d/ssh restart
root@vpsxxxx:~# adduser nesca
root@vpsxxxx:~# addgroup allowssh

Voilà !

Ok c’est pas encore terminé .. On va vite modifier les permissions des fichiers.

Il y a quelque chose de très important à savoir, chez moi les dossiers sont organisés de la façon suivante:

var
-www
---nescabe
----html
----logs
----ssl
----sub

Les fichier dedans doivent appartenir à l’user nesca, sauf le fichier racine, donc:

root@vpsxxxx:~# chown nesca:nesca /var/www/nescabe/* -R
root@vpsxxxx:~# chown root:root /var/www/nescabe

On ne pourra pas créer directement des fichiers dans /var/www/nescabe/ avec l’utilisateur nesca via sftp mais dans le dossier html oui 🙂
(sauf en ssh)

Il nous manque un dernier petit détail dans /etc/apache2/envvars, on modifie www-data par nesca pour être bien.

export APACHE_RUN_USER=nesca
export APACHE_RUN_GROUP=nesca

on redémarage apache, si vous obtenez une erreur du genre:

/var/lock/apache2 already exists but is not a directory owned by vesign.
Please fix manually. Aborting.

root@vpsxxxx:~# chown -R nesca:nesca /var/lock/apache2/
root@vpsxxxx:~# /etc/init.d/apache2 restart

On essaie de se connecter via avec l’utilisateur nesca via ssh pour tester.
This service allows sftp connections only.

On est normalement encore capable de se connecter avec root. On va donc créer un troisième utilisateur nommé comme on veux, qu’on va rajouter à la liste des groupes pouvant se connecter à ssh.

root@vpsxxxx:~# adduser angelito
root@vpsxxxx:~# usermod -a -G allowssh angelito

Une fois qu’on s’est assuré que angelito s’est connecté avec succès et pas avant.
On change dans /etc/ssh/sshd_config pour obtenir ça:

PermitRootLogin no

Et on redémarre ssh 🙂 et je crois qu’on est bon.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Vous seriez intéressé par: