7 votes

Comment puis-je empêcher les utilisateurs d'accéder aux services liés à localhost via le transfert de port SSH ?

Je veux pouvoir offrir des comptes SSH sur mon serveur Linux pour que les gens puissent utiliser les tunnels SSH. Tous les comptes seront verrouillés sans Shell interactif, à des fins de tunnelling / transfert de port uniquement. Mon problème est que je ne veux pas qu'ils puissent accéder à des services qui sont liés à localhost uniquement en faisant des transferts de port comme le suivant :

ssh account@server -L 9999:127.0.0.1:3306 & telnet localhost 9999

Cela leur donnerait accès au port par défaut de la base de données MySQL. Comment puis-je empêcher cela ?

Je vois des options dans le fichier de configuration d'OpenSSH pour autoriser des ports/hôtes spécifiques, mais pas pour les bloquer. Toute aide serait grandement appréciée !

1voto

Paul Hollingsworth Points 4257

Je ne l'ai pas essayé moi-même, mais les --uid-owner y --gid-owner options pour iptables semble vous permettre de restreindre les connexions en fonction de l'UID et du GID. En d'autres termes, il est possible d'empêcher des utilisateurs spécifiques d'établir des connexions sortantes sur une interface donnée.

Alors peut-être quelque chose comme ceci (non testé), pour bloquer tout accès au loopback :

iptables -A OUTPUT -o lo -m owner --uid-owner {USERNAME} -j REJECT

... ou si vos comptes verrouillés sont tous dans le même groupe :

iptables -A OUTPUT -o lo -m owner --gid-owner {GROUPNAME} -j REJECT

Si vous avez besoin de quelque chose de plus granulaire, ce post de nixCraft a un exemple de comment autoriser certains ports, mais pas d'autres.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X