7a9007c23c
From: Gregory Colpart
cela m'a sauvé la vie à plusieurs reprises, donc à garder au
moins dans la section FAQ stp
et
12:05 <benpro> Daniel: 1c7d8d0949/diff/HowtoSSH.md
ça servait dans le vieux evobackup enfait pour le faire dans le chroot à la main, puis géré par un script et now géré par bkctl
12:05 <benpro> mais ouais pas très utile de le mettre dans le wiki
12:06 <benpro> du moins pour debien, mais en fait je dis une connerie on (je) faisais meme pas comme ça
12:06 <benpro> on lançait le binaire et kill c'est tout… pas avec start-stop-daemon
12:06 <benpro> bref cool story
195 lines
4.6 KiB
Markdown
195 lines
4.6 KiB
Markdown
categories: OpenBSD sysadmin
|
|
title: Howto SSH
|
|
...
|
|
|
|
* Documentation : <https://www.openssh.com/manual.html>
|
|
|
|
SSH est un protocol réseau permettant de se connecter sur une machine
|
|
à travers le réseau de manière sécurisée. Nous utilisons
|
|
l'implémentation la plus répandue : OpenSSH. Ce protocol existe en
|
|
plusieurs versions et nous utilisons uniquement la version 2. La
|
|
version 1 comporte des failles de sécurité et ne doit plus être utilisée.
|
|
|
|
# Howto SSH : Secure SHell
|
|
|
|
## Installation
|
|
|
|
### Debian
|
|
|
|
~~~
|
|
# apt install openssh-server
|
|
~~~
|
|
|
|
### OpenBSD
|
|
|
|
OpenSSH étant développé au sein d'OpenBSD, la partie cliente et la
|
|
partie serveur sont incluses dans la base. L'activation de la partie
|
|
serveur dépend du choix qui a été fait lors de l'installation.
|
|
|
|
## Administration SSH
|
|
|
|
### Obtenir l'empreinte de la clé publique du serveur
|
|
|
|
~~~
|
|
$ ssh-keygen -lf /etc/ssh/clé.pub
|
|
~~~
|
|
|
|
### Regénérer les clés du serveur
|
|
|
|
Sous Debian :
|
|
|
|
~~~
|
|
# mv /etc/ssh/{moduli,*key*} /tmp/ssh/
|
|
# dpkg-reconfigure openssh-server
|
|
Creating SSH2 RSA key; this may take some time ...
|
|
Creating SSH2 DSA key; this may take some time ...
|
|
Restarting OpenBSD Secure Shell server: sshd.
|
|
~~~
|
|
|
|
Sous OpenBSD :
|
|
|
|
~~~
|
|
# ssh -A
|
|
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
|
|
~~~
|
|
|
|
À noter que c'est fait à chaque boot (via */etc/rc*), si les clés
|
|
n'existent pas donc une autre solution est de supprimer les clés et de
|
|
rebooter.
|
|
|
|
### reload/restart le démon ssh sur Debian sans passer par le script d'init
|
|
|
|
Pour reload :
|
|
|
|
~~~
|
|
# start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd
|
|
~~~
|
|
|
|
Pour redémarrer :
|
|
|
|
~~~
|
|
# start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/sshd.pid
|
|
# start-stop-daemon --start --quiet --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd
|
|
~~~
|
|
|
|
|
|
## SFTP chroot
|
|
|
|
Voici un ensemble de commandes pouvant être utilisées pour mettre en place un accès SFTP pour un ou plusieurs utilisateurs, qui n'auront accès qu'à une vue limitée de l'arborescence du système :
|
|
|
|
~~~
|
|
# Répertoire dans lequel SSHD va se chrooter
|
|
mkdir /home/sftp
|
|
chmod 755 /home/sftp
|
|
|
|
# Les utilisateurs du groupe sftp (ici account1) disposeront de l'accès SFTP restreint
|
|
groupadd sftp
|
|
useradd -g sftp -d /account1 account1
|
|
mkdir /home/sftp/account1/
|
|
chown account1:sftp /home/sftp/account1/
|
|
chmod 700 /home/sftp/account1/
|
|
~~~
|
|
|
|
Dans le fichier /etc/ssh/sshd_config :
|
|
|
|
~~~
|
|
Subsystem sftp internal-sftp
|
|
|
|
Match group sftp
|
|
ChrootDirectory /home/sftp
|
|
X11Forwarding no
|
|
AllowTcpForwarding no
|
|
ForceCommand internal-sftp
|
|
~~~
|
|
|
|
## Restriction de l'accès d'une clé ssh
|
|
|
|
Pour autoriser une clé SSH en limitant les accès via _.ssh/authorized_keys_ :
|
|
|
|
~~~
|
|
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa XXXXX commentaires
|
|
~~~
|
|
|
|
## SFTP Only
|
|
|
|
Mettre shell /usr/lib/sftp-server pour l'utilisateur et s'assurer que ce shell est bien présent dans /etc/shells
|
|
|
|
~~~
|
|
# usermod -s /usr/lib/sftp-server userna
|
|
# echo '/usr/lib/stfp-server' >> /etc/shells
|
|
~~~
|
|
|
|
## VPN over SSH
|
|
|
|
Côté serveur SSH :
|
|
|
|
- Ajouter "PermitTunnel yes" dans la config ssh
|
|
- sysctl -w net.ipv4.ip_forward=1
|
|
- iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
|
|
Puis se connecter de root vers root :
|
|
|
|
~~~
|
|
# ssh -w 42:42 ssh.example.com
|
|
~~~
|
|
|
|
On a ensuite un périphérique "tun42" utilisable des 2 côtés à configurer.
|
|
|
|
Serveur SSH : ifconfig tun42 172.17.18.2/24
|
|
En local : ifconfig tun42 172.17.18.1/24
|
|
|
|
On peut alors router au niveau IP :
|
|
|
|
ip route add 8.8.8.8/32 via 172.17.18.2 dev tun42
|
|
|
|
|
|
## Connexion SSH par rebond
|
|
|
|
Il se peut qu'on doive passer par une machine pour se connecter à une
|
|
machine cible (c'est le principe d'un
|
|
[bastion](https://fr.wikipedia.org/wiki/Bastion_(informatique))) :
|
|
|
|
~~~
|
|
$ ssh -J bastion machine-cible
|
|
~~~
|
|
|
|
À noter que cela nécessite une versione récente d'OpenSSH (celle
|
|
présente dans Stretch)
|
|
|
|
## Tunnel SSH
|
|
|
|
### Pour une ressource donnée
|
|
|
|
Si on veut accéder de la machine 192.0.2.4 à un service https hébergé sur
|
|
192.0.2.5 mais que seule la machine 192.0.2.6 y accède on peut lancer
|
|
la commande :
|
|
|
|
~~~
|
|
$ ssh -L 192.0.2.4:9000:192.0.2.5:443 192.0.2.6
|
|
~~~
|
|
|
|
On peut ensuite faire pointer son navigateur sur
|
|
https://192.0.2.4:9000.
|
|
|
|
### Pour tout le trafic web
|
|
|
|
On lance la commande
|
|
|
|
~~~
|
|
$ ssh -D 6789 proxy
|
|
~~~
|
|
|
|
Puis on configure son navigateur pour utiliser un proxy SOCKS (4a ou 5) avec
|
|
comme adresse 127.0.0.1 et port 6789.
|
|
|
|
## Configuration SSH
|
|
|
|
### Log verbeux pour SFTP
|
|
|
|
Pour augmenter la verbosité du sous-système sftp-server, notamment loguer les commandes SFTP, il suffit de passer l'option -l à l'appel de sftp-server dans sshd_config :
|
|
|
|
~~~
|
|
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO
|
|
~~~
|
|
|