Bloquear el acceso a la red del usuario, excepto volver a la dirección del cliente ssh

Bloquear el acceso a la red del usuario, excepto volver a la dirección del cliente ssh

En un servidor Linux, ¿cómo puedo configurar permisos para que un determinado grupo de usuarios pueda iniciar sesión a través de ssh, pero todas las conexiones de red mediante sus procesos estén bloqueadas a menos que la conexión vuelva a la dirección del cliente ssh? Por ejemplo, quiero permitir que un usuario del grupo ingrese mediante ssh e inicie un servidor HTTP (en un puerto alto) y luego se conecte a él desde la computadora donde está ejecutando el cliente ssh, pero cualquier otro cliente en Internet debe no podrá acceder al servidor HTTP.

Sé que puedo bloquear completamente el acceso a la red de un usuario con iptables, pero ¿cómo permito el tráfico que viene o va hacia cualquier valor de $SSH_CLIENT?

Respuesta1

Una cosa que podría hacer es pedirles que ejecuten un script suid que modifique iptables al iniciar sesión. No necesitan pasarle ningún argumento, simplemente invocarlo. Y .bash_login puede invocarlo automáticamente. Puede ejecutar lsof para obtener la IP de la conexión ssh asociada con el UID de su padre, obtener la IP conectada y luego incluir esa IP en la lista blanca con reglas como

iptables -w -A users_input -p tcp -s $ip -m owner --owner-uid $owner -j ACCEPT
iptables -w -A users_output -p tcp -d $ip -m owner --owner-uid $owner -j ACCEPT

Donde dichas cadenas se colocan en su caso en las cadenas de ENTRADA y SALIDA del filtro. Y, por supuesto, también eliminar cualquier regla anterior con ese --owner-uid. Y puede permitir sólo ciertos puertos si lo desea.

Perl con modo corrupto debería estar bien para dicho script.

Esto permitiría que la red persistiera para ese usuario después de que se interrumpiera la conexión ssh. Si eso es un problema, puede resolverlo con un cronjob o un demonio que verifica periódicamente las conexiones ssh conectadas y luego elimina cualquier regla que no esté asociada con ellas.

Me doy cuenta de que hay muchas cosas que "podrías hacer" en esta respuesta, pero la mayor parte es trabajo duro. Simplemente haz lo correcto con el propietario -m.

información relacionada