GNU/Linux >> Tutoriels Linux >  >> Linux

Comment restreindre un utilisateur SSH pour autoriser uniquement le tunnel SSH ?

Côté serveur, vous pouvez limiter cela en définissant leur shell utilisateur sur /bin/true . Cela leur permettra de s'authentifier, mais pas d'exécuter quoi que ce soit puisqu'ils n'ont pas de shell pour l'exécuter. Cela signifie qu'ils seront limités à tout sous-ensemble de choses que SSH est en mesure de leur offrir. S'il propose une redirection de port, ils pourront toujours le faire.

Côté client, vous souhaiterez probablement vous connecter avec le -N . Cela empêche le client de DEMANDER une commande à distance telle qu'un shell, il s'arrête juste une fois la partie authentification terminée. Merci aux commentateurs d'avoir signalé cela.


Ce qui suit a l'avantage que les transferts de socket d'agent X11 et SSH sont également interdits, ce qui pourrait toujours être autorisé à la manière de Calebs. Un autre avantage est que si l'utilisateur peut changer son shell par défaut de toute autre manière, cela limitera toujours son accès SSH aux seuls transferts TCP.

Mettez ce qui suit dans votre /etc/ssh/sshd_config :

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

pour autoriser l'utilisateur that-restricted-guy pour transférer toutes les connexions TCP via votre machine compatible SSH (connexion à cette machine, également à localhost et même la connexion de cette machine à d'autres machines).

Si vous le souhaitez encore plus restrictif (ce qui est une bonne idée), vous pouvez également procéder comme suit :

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Cela permettra à l'utilisateur even-more-restricted-guy pour transférer uniquement les connexions vers le port TCP 127.0.0.1 12345 (tel qu'il est visible sur votre machine compatible SSH).

Lorsque l'utilisateur se connecte normalement, il sera désormais instantanément déconnecté car le /bin/false La commande sera déclenchée et ne fera rien d'autre que se terminer instantanément avec un code de 1. Si vous voulez éviter cela et garder votre connexion de transfert ouverte, ajoutez le -N drapeau au ssh commande. Cela n'essaiera pas d'exécuter une commande mais permet toujours de configurer les transferts TCP.

Un exemple de commande de transfert qui devrait fonctionner dans cette dernière configuration :

ssh -L 12345:127.0.0.1:12345 -N [email protected]

Vous pouvez contrôler ce que les gens peuvent faire dans ssh en faisant correspondre les groupes en supposant que votre version de ssh est suffisamment récente pour le prendre en charge (openssh 5.x+).

Fondamentalement, nous les traitons comme s'ils étaient des utilisateurs sftp, mais autorisons le transfert tcp et éventuellement spécifier les destinations vers lesquelles ils peuvent être renvoyés. Si vous leur donnez un répertoire personnel mais que vous ne créez aucun répertoire sous celui-ci, ils ne pourront transférer aucun fichier car ils n'auront pas l'autorisation 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 Match Group blocs pour chaque groupe auquel vous souhaitez fournir un comportement ou des restrictions différents.

Vous pouvez contrôler davantage où cette personne peut aller sur le réseau en utilisant 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 GID du groupe "nicepeople" est 500.

Certaines des options ssh ci-dessus sont disponibles dans les anciennes versions d'opensh, mais pas dans la section Match Group. Match Group est très limité dans OpenSSH 4.x et versions antérieures.


Linux
  1. Comment restreindre l'accès SSH pour l'utilisateur avec LShell (shell limité)

  2. Comment autoriser SFTP et interdire SSH ?

  3. Ssh – Restreindre un utilisateur Ssh/scp/sftp à un répertoire ?

  4. Comment créer un nouvel utilisateur avec un accès Ssh ?

  5. Comment configurer des clés SSH sur Debian

Comment autoriser ou refuser l'accès SSH à un utilisateur ou à un groupe particulier sous Linux

Comment désactiver la connexion SSH à un utilisateur spécifique sous Linux

Comment restreindre l'accès SSH à certains utilisateurs sous Linux

Comment autoriser l'accès à distance au serveur de base de données MySQL

Comment autoriser uniquement des utilisateurs spécifiques non root à utiliser crontab

Comment ssh en tant qu'autre utilisateur