Est-il possible de configurer ssh (sous Linux) pour autoriser uniquement l'accès au tunneling ? C'est-à-dire que l'utilisateur peut configurer des tunnels mais ne peut pas obtenir un shell/accéder aux fichiers ?
Réponses
Trop de publicités?Dans le fichier .ssh/authorized_keys de l'utilisateur, mettez quelque chose comme ce qui suit:
permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...
Donc, en gros, les contrôles seraient devant la clé publique SSH de l'utilisateur séparés par un espace. Dans l'exemple, les connexions utilisant la clé publique spécifique seront autorisées à effectuer uniquement un transfert de port SSH vers le serveur MySQL de 192.168.1.10 et le serveur web de 10.0.0.16, et ne se verront pas attribuer de shell (no-pty). Vous vous renseignez spécifiquement sur l'option "no-pty", mais les autres peuvent également être utiles si l'utilisateur est censé se connecter uniquement à des serveurs spécifiques.
Consultez la page de manuel de sshd pour plus d'options pour le fichier authorized_keys.
Remarquez que l'expérience de l'utilisateur peut sembler un peu étrange : lorsqu'il se connecte en SSH, il semblera que la session est suspendue (car il n'obtient pas de pty). C'est normal. Si l'utilisateur a spécifié un transfert de port avec, par exemple, "-L3306:192.168.1.10:3306", le transfert de port sera toujours en vigueur.
En tout cas, essayez-le.
Donnez à l'utilisateur un shell qui ne lui permet que de se déconnecter comme par exemple /bin/press_to_exit.sh
#!/bin/bash
read -n 1 -p "Appuyez sur une touche pour sortir" touche
De cette façon, il peut rester connecté aussi longtemps qu'il le souhaite, avec des tunnels actifs, mais sans exécuter de commandes. Ctrl-c
ferme la connexion.
Attribuez un shell qui n'autorise pas l'utilisateur à se connecter.
par exemple
#!/bin/sh
echo "Aucune connexion interactive disponible."
sleep 60
exit 0
les empêcherait d'obtenir un invite de commande shell, et leur donnerait un délai de 60 secondes - s'il n'y a pas de connexion active pendant 60 secondes, il se fermera et les déconnectera complètement (augmentez ce nombre selon les besoins).
Ils ne peuvent pas non plus exécuter de commande à distance, car ce shell ne le leur permettra pas.
##Créer un nouvel utilisateur
sudo useradd -m [user]
##Modifier /etc/ssh/sshd_config
Match User [user]
#AllowTcpForwarding yes
#X11Forwarding no
#PermitTunnel no
GatewayPorts yes ##Activer l'écoute sur 0.0.0.0
AllowAgentForwarding no
PermitOpen localhost:2888 ##spécifier le port
ForceCommand echo 'Cet compte ne peut être utilisé que pour le tunneling'
- Réponses précédentes
- Plus de réponses