Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:ssh:serveur [05/07/2014 15:55] captnfab |
doc:reseau:ssh:serveur [09/02/2021 18:34] captnfab [Astuces] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SSH coté serveur====== | + | ====== ssh-server : autoriser les connexions extérieures de manière sécurisée ====== |
- | * Objet : Créer un serveur ssh | + | * Objet : Installer un serveur ssh |
- | * Niveau requis : {{tag>avisé}} | + | * Niveau requis : {{tag>débutant avisé}} |
* Commentaires : //Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... // | * Commentaires : //Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... // | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) |
* Suivi : {{tag>à-compléter à-tester}} | * Suivi : {{tag>à-compléter à-tester}} | ||
* Création par [[user>bendia]] le 07/01/2014 | * Création par [[user>bendia]] le 07/01/2014 | ||
Ligne 14: | Ligne 14: | ||
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
- | ==== Installation ==== | + | ===== Installation ===== |
- | <code root>apt-get install openssh-server</code> | + | <code root>apt-get update && apt-get install openssh-server</code> |
- | ==== Configuration ==== | + | ===== Configuration ===== |
La configuration par défaut est très bonne. \\ | La configuration par défaut est très bonne. \\ | ||
Ligne 27: | Ligne 27: | ||
<code user>man sshd_config</code> | <code user>man sshd_config</code> | ||
- | ==== Sécurisation ==== | + | ===== Sécurisation ===== |
- | Jojo vous recommande de ne pas ouvrir cette connection SSH tel quelle sur le net... il y a des malins qui forcent le passage pour entrer chez vous en essayant des tetra…floppées de mot de passes courants ;-). | + | Jojo vous recommande de ne pas ouvrir cette connection SSH tel quelle sur le net... il y a des malins qui forcent le passage pour entrer chez vous en essayant des tetra…floppées de mots de passe courants ;-). |
- | Donc si vous voulez **exporter** une session SSH via un PC a 18 000 km :-D de chez vous, restez prudents et sécurisez-là au maximum(([[doc:systeme:securite | De la sécurité...]])) et en suivant les conseils suivants | + | Donc si vous voulez **exporter** une session SSH via un PC a 18 000 km :-D de chez vous, restez prudents et sécurisez-la au maximum(([[doc:systeme:securite | De la sécurité...]])) et en suivant les conseils suivants |
- | === Restreindre les connexions à SSH === | + | ==== Restreindre les connexions à SSH ==== |
Il suffit d'éditer le fichier ''sshd_config'' en root sur le PC distant. Le fichier se trouve dans le dossier ///etc/ssh/// | Il suffit d'éditer le fichier ''sshd_config'' en root sur le PC distant. Le fichier se trouve dans le dossier ///etc/ssh/// | ||
<code root>nano /etc/ssh/sshd_config</code> | <code root>nano /etc/ssh/sshd_config</code> | ||
- | Puis de modifier les arguments suivant «le cas est pris pour une connection __uniquement par clé__» : | + | Puis de modifier les arguments suivants (le cas est pris pour une connexion __uniquement par clé__) : |
- | <code bash>PermitRootLogin no # évite la connexion root « plus que recommandé » | + | <file config Exemple de sshd_config> |
+ | PermitRootLogin no # évite la connexion root « plus que recommandé » | ||
RSAAuthentication yes # active la reconnaissance RSA | RSAAuthentication yes # active la reconnaissance RSA | ||
PubkeyAuthentication yes | PubkeyAuthentication yes | ||
Ligne 45: | Ligne 46: | ||
PasswordAuthentication no # désactive la connexion par mot de passe | PasswordAuthentication no # désactive la connexion par mot de passe | ||
PermitEmptyPasswords no # désactive les mots de passe vide | PermitEmptyPasswords no # désactive les mots de passe vide | ||
+ | MaxStartups 1 # limite la connexion, normalement 6 par défaut | ||
UsePAM no # désactive la connection par mot de passe | UsePAM no # désactive la connection par mot de passe | ||
AllowUsers votrelogin secondlogin # restreint l'accès à votre login uniquement | AllowUsers votrelogin secondlogin # restreint l'accès à votre login uniquement | ||
DenyUsers test guest admin root snort apache nobody # interdire l'accès à certains users, pour les paranos... | DenyUsers test guest admin root snort apache nobody # interdire l'accès à certains users, pour les paranos... | ||
- | MaxStartups 1 # limite la connexion, normalement 6 par défaut</code> | + | </file> |
- | === Restreindre la connexion à un utilisateur === | + | |
+ | <note> | ||
+ | **Pour la ligne ''PasswordAuthentication no''** :\\ | ||
+ | |||
+ | Dans un premier temps, laisser **"# PasswordAuthentication yes"** pour permettre la première connexion depuis ssh client, c'est-à-dire pour permettre la connexion par [[doc:reseau:ssh:client#par-nom-d-utilisateur-mot-de-passe|nom d'utilisateur et mot de passe]] lorsque aucune clé n'a été générée.\\ | ||
+ | |||
+ | Puis lorsque la génération [[doc:reseau:ssh:client#par-cles-asymetriques|des clés asymétriques]] a été faite et que celles-ci ont été exportées et sont opérationnelles (la "passphrase" uniquement est demandée pour la connexion du client ssh au serveur ssh), on peut alors éditer à nouveau **/etc/ssh/sshd_config** pour mettre **''PasswordAuthentication no''**</note> | ||
+ | |||
+ | ==== Restreindre la connexion à un utilisateur ==== | ||
Moins de monde autorisé à se connecter via ssh, moins de risques il y aura… | Moins de monde autorisé à se connecter via ssh, moins de risques il y aura… | ||
- | AllowUsers **monuserquipeutseconnecter** | + | <code bash>AllowUsers monuserquipeutseconnecter</code> |
Il est possible de spécifier plusieurs utilisateurs ou un masque d'expression régulière, je vous laisse lire la doc pour un paramétrage plus fin | Il est possible de spécifier plusieurs utilisateurs ou un masque d'expression régulière, je vous laisse lire la doc pour un paramétrage plus fin | ||
- | === Restreindre la connexion à un groupe === | + | ==== Restreindre la connexion à un groupe ==== |
dans le même esprit que le paramètre ci-dessus on peut autoriser directement tous les utilisateurs d'un groupe. | dans le même esprit que le paramètre ci-dessus on peut autoriser directement tous les utilisateurs d'un groupe. | ||
- | AllowGroups **mongroupadmin** | + | <code bash>AllowGroups mongroupadmin</code> |
Les options qu'il est conseillé de changer dans un premier temps sont : | Les options qu'il est conseillé de changer dans un premier temps sont : | ||
- | === Le port === | + | ==== Le port ==== |
* Le port **22** # C'est le port par défaut du service SSH | * Le port **22** # C'est le port par défaut du service SSH | ||
Nous allons le mettre ici à 10010 | Nous allons le mettre ici à 10010 | ||
- | Port **10010** | + | <code bash>Port 10010</code> |
Une fois configuré il vous suffit de relancer SSH, à faire en root : | Une fois configuré il vous suffit de relancer SSH, à faire en root : | ||
<code root>service ssh restart</code> | <code root>service ssh restart</code> | ||
- | === Contrôler les logs === | + | ==== Contrôler les logs ==== |
- | * Dans tout les cas, il est important de regarder les logs de temps en temps. Les tentatives de connections infructueuses sont consignées dans /var/log/auth.log . | + | * Dans tout les cas, il est important de regarder les logs de temps en temps. Les tentatives de connections infructueuses sont consignées dans /var/log/auth.log . |
<code root>cat /var/log/auth.log | grep Invalid</code> | <code root>cat /var/log/auth.log | grep Invalid</code> | ||
- | === Bien paramétrer son firewall... === | + | * logcheck |
- | FIXME | + | ==== Bien paramétrer son firewall... ==== |
- | === Fail2ban === | + | * [[:doc:reseau:iptables]] |
- | FIXME | + | ==== Fail2ban ==== |
- | === Le port knocking === | + | <code root>apt-get install fail2ban</code> |
- | FIXME | + | ==== Le port knocking ==== |
- | TODO | + | TODO FIXME |
+ | ===== Astuces ===== | ||
+ | |||
+ | ==== Accès depuis l'extérieur ==== | ||
* Rediriger le port 22 de la freebox/livebox/whateverbox vers votre machine pour vous connecter chez vous depuis l'extérieur | * Rediriger le port 22 de la freebox/livebox/whateverbox vers votre machine pour vous connecter chez vous depuis l'extérieur | ||
- | * Configuration de SSH comme serveur de fichier. | + | TODO FIXME |
+ | |||
+ | ==== Serveur de fichier sftp ==== | ||
+ | Pour limiter SSH au partage de fichiers, voir [[:doc:reseau:ssh:tp-sftp-via-openssh-server|Configuration d'OpenSSH comme serveur SFTP]] |