web-dev-qa-db-fra.com

Comment restreindre un utilisateur SSH pour permettre uniquement à SSH-tunneling?

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.

34
LanceBaynes

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.

37
Caleb

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.

2
Aaron