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.