wiki/HowtoSSH.md
2017-10-20 14:47:43 -04:00

4.6 KiB

categories: OpenBSD sysadmin title: Howto SSH ...

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.

Configuration SSH

Configuration minimale

TODO

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

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

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

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

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

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) :

$ 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.