SSH (Secure Shell)
SSH(Secure Shell)
Pré-requis :
Avoir installé un distribution Linux, généralement le ssh sera présent par défaut. Sinon c'est par ici :
-< INSTALLATION DE SSH >-
#apt-get install openssh-server
Répondre oui s'il n'est pas installer, il se peut qu'il soit déjà présent !
Éditer le fichier de configuration /etc/ssh/sshd_config :
#nano /etc/ssh/sshd_config
Les lignes les plus importantes sont :
Port 22 | (Signifie que le serveur SSH écoute sur le port 22) |
PermitRootLogin yes | (autorise root à se connecter à distance JUSTE POUR l'INSTALLATION (voir Sécurité plus bas)) |
X11Forwarding yes | (Pour travailler en déport d'affichage par SSH (mode graphique sur la machine distante) |
Si vous avez modifié le fichier de configuration du serveur, il faut lui faire relire son fichier
#/etc/init.d/ssh reload
Votre serveur ssh est prêt !
-< EMPÊCHER ROOT DE SE CONNECTER A DISTANCE >-
allez dans le répertoire ssh
#cd /etc/ssh
Éditer le fichier sshd_config
#nano sshd_config
A la ligne :
#PermitRootLogin yes
Décommentez la ligne (enlever le #) et mettre no
PermitRootLogin no
Sauvegarder et quitter.
Connexion en SSH : connectez vous avec votre utilisateur (si celui-ci en a la permission)
#ssh <votre_adresse_ip> -p <le port>
Une fois connecter tapez :
#su -
vous serez invité à entrer le mot de passe ROOT, entrez-le et valider.
Vous êtes maintenant connecté en ROOT !
-< SÉCURITÉ >-
Enlevez vous du standard en modifiant le fichier comme suit :
#nano /etc/ssh/sshd_config
Port 15015 | Changer le port |
AllowUsers olivier romain geant | Autoriser un nombre limité d'utilisateur |
OU AllowUsers VOTRE_UTILISATEUR@* *@192.168.0.* |
VOTRE_UTILISATEUR@* = limite l'accès externe à un seul utilisateur *@192.168.0.* accorde l'accès à tous les autres utilisateurs en local |
AllowGroups admin | Autoriser un nombre limité de groupe |
Protocol 2 | Protocole version 2 |
LoginGraceTime 45 | Temps réduit pour se logger |
X11Forwarding no | On interdit le travaille en déport d'affichage par SSH (mode graphique sur la machine distante) |
PermitRootLogin no | Empêcher ROOT de se connecter à distance. |
Lors de votre prochaine connexion en ssh avec putty lui préciser le port 15015.
Ralentir le délai login et pass :
lolotux nous propose une solution peu envisagé qui est de ralentir le login pour rendre fou les robots brutes forces
On télécharge les sources de openssh : ftp://ftp.fr.openbsd.org/pub/Open [...] 5p1.tar.gz
On le dé compacte et entre dans le répertoire....
On édite le fichier "auth-passwd.c" (Ecrit en C)
On édite le fichier auth-passwd.c (Ecrit en C)
On recherche la ligne :
auth_password(Authctxt *authctxt, const char *password)
La partie qui nous intéresse est :
/*
* Tries to authenticate the user using password. Returns true if
* authentication succeeds.
*/
int
auth_password(Authctxt *authctxt, const char *password)
{
struct passwd * pw = authctxt->pw;
int result, ok = authctxt->valid;
#if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE)
static int expire_checked = 0;
#endif
Après le dernier #endif on ajoute :
/* Password authentication delay */
sleep(10);
On le compile :
# ./configure --prefix=/usr --sysconfdir=/etc/ssh
# make
# su
.....
# make install
On relance le serveur SSH :
#/etc/init.d/sshd restart
On test :
ssh -l user 82.xx.yy.zz[ENTER]
...... là on attend.... (les robots ne vont pas aimer)
password : xxxxxxxx
...... là on attend de nouveau....(les robots ne vont vraiment pas aimer)
Authentification par certificat RSA ou DSA :
Création des clef sur votre poste client depuis votre compte standard.
(ici je suis en root mais préféré un utilisateur simple qui aura le droit de se connecter en ssh)
#ssh-keygen -t rsa
cette commande crée les fichiers /root/.ssh/id_rsa et /root/.ssh/id_rsa.pub
Si vous ne voulez pas taper de mot de passe , laisser vide à la demande de celui-ci .
#nano /root/.ssh/id_rsa.pub
ensuite il faut copier la clef publique du client dans le fichier/.ssh/authorized_keys sur la machine destination
# scp /.ssh/id_rsa.pub root@destination:.ssh/authorized_keys
ou transférer en ftp id_rsa.pub puis connectez vous sur le serveur distant en ssh avec putty et renommer le fichier id_rsa.pub en authorized_keys puis mettez-le au bon endroit dans /root/.ssh/authorized_keys !
Attention à la fin des lignes copiées que ce soit bien votre adresse ip root
120.120.120.120 (fourni par votre FAI ) et non le nom d'hôte de la machine distante root
goodspeedreseau !
( que ce soit dans le fichier id_rsa.pub ou authorized_keys )
Voilà, maintenant plus besoin de mot de passe pour vous connecter ..
Pour désactiver la possibilité à ceux qui n'ont pas la bonne clef RSA de se connecter ,
il nous suffit maintenant de passer le paramètre no à PasswordAuthentication
PasswordAuthentication no
Pour finir on redémarre ssh
#/etc/init.d/ssh restart