Comment puis-je limiter un utilisateur sur le serveur SSH pour leur permettre uniquement les privilèges pour tunneling SSH ? C'est-à-dire qu'ils ne peuvent pas exécuter des commandes même s'ils se connectent via SSH.
Mes serveurs Linux sont Ubuntu 11.04 et OpenWrt.
Du côté du serveur, vous pouvez limiter cela en définissant leur coque d'utilisateur à /bin/true
. Cela leur permettra d'authentifier, mais ne courez pas vraiment quelque chose puisqu'ils ne reçoivent pas une coquille de l'exécuter. Cela signifie qu'ils seront limités à tout sous-ensemble de choses SSH capable de les offrir. S'il offre un transfert de port, ils pourront toujours le faire.
Du côté du client, vous voudrez probablement vous connecter avec le -N
. Cela empêche le client de demander une commande distante telle qu'une coquille, elle s'arrête juste après la fin de la partie d'authentification. Merci aux commentateurs de pointer cela.
Vous pouvez contrôler ce que les gens peuvent faire en SSH par des groupes assortis en supposant que votre version de SSH est suffisamment nouvelle pour la supporter (opensesh 5.x +).
Fondamentalement, nous les traitons comme s'il s'agissait d'utilisateurs SFTP, mais autorisez éventuellement la transmission TCP et Spécifiez les destinations qu'ils peuvent transmettre à. Si vous leur donnez un répertoire de base mais ne créez aucun répertoire en dessous, ils ne peuvent transférer aucun fichier car ils n'auront pas la permission de le faire.
Match Group nicepeople
PubkeyAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
GatewayPorts no
ChrootDirectory /opt/dummy_location/%u
ForceCommand internal-sftp
AllowTcpForwarding yes
PermitOpen 192.168.0.8:22
PermitOpen 192.168.0.5:8080
# Or leave out the PermitOpen to allow forwarding to anywhere.
HostbasedAuthentication no
RhostsRSAAuthentication no
AllowAgentForwarding no
Banner none
Vous pouvez répéter ces éléments groupe de correspondance blocs pour chaque groupe que vous souhaitez fournir un comportement ou des restrictions différents.
Vous pouvez continuer à contrôler où cette personne peut aller sur le réseau à l'aide d'IPTABLES
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT
Cela suppose que le groupe "NicePeople" est de 500.
Certaines des options SSH ci-dessus sont disponibles dans les anciennes versions de Openssh, mais pas dans la section Groupe des correspondances. Le groupe de correspondance est très limité dans OpenSSH 4.x et plus tôt.