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 | ||
doc:reseau:ssh:serveur [09/02/2021 19:12] captnfab [Sécurisation] |
doc:reseau:ssh:serveur [09/02/2021 20:29] (Version actuelle) captnfab [ssh-server : autoriser les connexions extérieures de manière sécurisée] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== ssh-server : autoriser les connexions extérieures de manière sécurisée ====== | + | ====== openssh-server : autoriser les connexions extérieures de manière sécurisée ====== |
* Objet : Installer un serveur ssh | * Objet : Installer un serveur ssh | ||
Ligne 5: | Ligne 5: | ||
* 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}} | + | * Suivi : {{tag>}} |
* Création par [[user>bendia]] le 07/01/2014 | * Création par [[user>bendia]] le 07/01/2014 | ||
* Testé par [[user>captnfab]] le 09/02/2021 | * Testé par [[user>captnfab]] le 09/02/2021 | ||
Ligne 22: | Ligne 22: | ||
Si vous voulez la personnaliser, il vous faut éditer le fichier ''/etc/ssh/sshd_config'' : | Si vous voulez la personnaliser, il vous faut éditer le fichier ''/etc/ssh/sshd_config'' : | ||
<code root>editor /etc/ssh/sshd_config</code> | <code root>editor /etc/ssh/sshd_config</code> | ||
+ | |||
+ | Les valeurs de configuration par défaut sont souvent présentées commentées (avec un ''#'' en début de ligne). | ||
Comme d'hab', plus d'infos dans le : | Comme d'hab', plus d'infos dans le : | ||
<code user>man sshd_config</code> | <code user>man sshd_config</code> | ||
- | ===== Sécurisation ===== | + | Une fois configuré il vous suffit de relancer SSH, à faire en root : |
+ | <code root>service ssh restart</code> | ||
+ | |||
+ | ===== Sécurité et bonnes pratiques ===== | ||
Un serveur SSH permet a priori à un utilisateur extérieur de se connecter sur le système. Il y a deux méthodes pour s'authentifier auprès d'un serveur SSH | Un serveur SSH permet a priori à un utilisateur extérieur de se connecter sur le système. Il y a deux méthodes pour s'authentifier auprès d'un serveur SSH | ||
Ligne 43: | Ligne 48: | ||
Il peut être intéressant de relire les conseils généraux en matière de [[doc:systeme:securite | sécurité]] ! | Il peut être intéressant de relire les conseils généraux en matière de [[doc:systeme:securite | sécurité]] ! | ||
- | Voici quelques conseils de sécurisation spécifiques à OpenSSH : | + | Voici quelques options avec lesquelles il ne faut pas faire de blague. |
- | ==== Restreindre les connexions SSH ==== | + | ==== Connexion par root ==== |
- | + | ||
- | Sur le système hébergeant le serveur SSH, il est possible d'éditer le fichier de configuration ''/etc/ssh/sshd_config'', par exemple avec la commande suivante lancée en root: | + | |
- | <code root>editor /etc/ssh/sshd_config</code> | + | |
- | Les valeurs de configuration par défaut sont souvent présentées commentées (avec un ''#'' en début de ligne). | + | |
- | + | ||
- | Voici quelques règles avec lesquelles il ne faut pas faire de blague. | + | |
- | + | ||
- | === Connexion par root === | + | |
Il ne faut absolument pas autoriser root à se connecter par mot de passe, sauf à s'assurer d'avoir un mot de passe en béton armé((Au moins 30 caractères, majuscules, minuscules, chiffres, symboles, totalement aléatoire et changé régulièrement)). | Il ne faut absolument pas autoriser root à se connecter par mot de passe, sauf à s'assurer d'avoir un mot de passe en béton armé((Au moins 30 caractères, majuscules, minuscules, chiffres, symboles, totalement aléatoire et changé régulièrement)). | ||
Ligne 59: | Ligne 56: | ||
Vous pouvez autoriser les connexions à root par paire de clefs publique/privée, c'est le comportement par défaut: ''PermitRootLogin prohibit-password'' ou complètement bloquer toutes les connexions: ''PermitRootLogin no'' | Vous pouvez autoriser les connexions à root par paire de clefs publique/privée, c'est le comportement par défaut: ''PermitRootLogin prohibit-password'' ou complètement bloquer toutes les connexions: ''PermitRootLogin no'' | ||
- | === Connexion par clefs === | + | ==== Connexion par clefs ==== |
Par défaut, la connexion par clefs est autorisée, c'est très bien et reste sans conséquence si vous n'utilisez pas cette possibilité. ''PubkeyAuthentication yes'' | Par défaut, la connexion par clefs est autorisée, c'est très bien et reste sans conséquence si vous n'utilisez pas cette possibilité. ''PubkeyAuthentication yes'' | ||
Ligne 66: | Ligne 63: | ||
Vous pouvez forcer l'utilisation unique du premier fichier avec ''AuthorizedKeysFile .ssh/authorized_keys''. | Vous pouvez forcer l'utilisation unique du premier fichier avec ''AuthorizedKeysFile .ssh/authorized_keys''. | ||
- | === Connexion par mot de passe === | + | ==== Connexion par mot de passe ==== |
Si vous voulez interdire la connexion par mot de passe (attention à être sûr de bien pouvoir vous connecter par clef avant…), vous pouvez désactiver cette possibilité avec ''PasswordAuthentication no'' et ''UsePAM no'' | Si vous voulez interdire la connexion par mot de passe (attention à être sûr de bien pouvoir vous connecter par clef avant…), vous pouvez désactiver cette possibilité avec ''PasswordAuthentication no'' et ''UsePAM no'' | ||
Ligne 79: | Ligne 76: | ||
</note> | </note> | ||
- | === Restreindre l'accès à quelques utilisateurs === | + | ==== Restreindre l'accès à quelques utilisateurs ==== |
Plutôt que de laisser possible la connexion à n'importe quel compte utilisateur (à condition d'avoir la clef ou le mot de passe), vous pouvez n'autoriser la connexion que pour certains comptes en spécifiant les noms d'utilisateur: | Plutôt que de laisser possible la connexion à n'importe quel compte utilisateur (à condition d'avoir la clef ou le mot de passe), vous pouvez n'autoriser la connexion que pour certains comptes en spécifiant les noms d'utilisateur: | ||
Ligne 89: | Ligne 86: | ||
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. | ||
Ligne 95: | Ligne 92: | ||
<code bash>AllowGroups mongroupadmin</code> | <code bash>AllowGroups mongroupadmin</code> | ||
- | === Le port === | + | ==== Le port ==== |
Si votre serveur SSH est exposé sur internet, il peut être pratique pour limiter le bruit (et dans une moindre mesure, augmenter la sécurité), de changer le port d'écoute de celui-ci. | Si votre serveur SSH est exposé sur internet, il peut être pratique pour limiter le bruit (et dans une moindre mesure, augmenter la sécurité), de changer le port d'écoute de celui-ci. | ||
- | On peut par exemple changer le port **22** (c'est le port par défaut du service SSH) pour le port 10010 | + | On peut par exemple changer le port **22** (c'est le port par défaut du service SSH) pour le port 10010 avec la directive ''Port 10010'' |
- | ''Port 10010'' | + | |
- | Une fois configuré il vous suffit de relancer SSH, à faire en root : | + | ===== Contrôler les logs ===== |
- | <code root>service ssh restart</code> | + | |
- | ==== Contrôler les logs ==== | + | 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>grep Invalid /var/log/auth.log</code> |
- | <code root>cat /var/log/auth.log | grep Invalid</code> | + | Un outil comme **logcheck** peut être utile pour envoyer systématiquement les logs par email. |
- | * logcheck | + | ===== Astuces ===== |
- | ==== Bien paramétrer son firewall... ==== | + | ==== Accès depuis l'extérieur ==== |
- | + | Rediriger un port (22 par exemple) de la freebox/livebox/whateverbox vers le port ssh de votre machine pour vous connecter chez vous depuis l'extérieur. | |
- | * [[:doc:reseau:iptables]] | + | |
==== Fail2ban ==== | ==== Fail2ban ==== | ||
- | <code root>apt-get install fail2ban</code> | + | fail2ban est un utilitaire permettant de bannir automatiquement (pendant une durée configurable) les ip ayant échoué plusieurs fois d'affilée à se connecter. |
- | + | <code root>apt install fail2ban</code> | |
- | ==== Le port knocking ==== | + | |
- | + | ||
- | 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 | + | |
- | TODO FIXME | + | |
==== Serveur de fichier sftp ==== | ==== 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]] | Pour limiter SSH au partage de fichiers, voir [[:doc:reseau:ssh:tp-sftp-via-openssh-server|Configuration d'OpenSSH comme serveur SFTP]] |