IPTables, filtrar por usuario

Una de las cosas más sorprendentes de IPTables, el gran firewall de linux, es sin dudarlo su enorme versatilidad. Permite hacer prácticamente cualquier cosa que te imagines y muestra de ellos es que las reglas se pueden definir por usuario o grupo. Antes de seguir, vamos a aclarar que para la única tabla que puede hacer match con un uid de usuario o de grupo es la de salida (output) y siempre tendremos que emplear el uid o el gid y no los nombres. Es lógico pensar que a un usuario se le pueda bloquear la salida, pero no tan fácil de hacer ni entender la entrada. Lo que viene del puerto 80, puede ir para uno u otro usuario, pero no se sabe para cual. GNU/Linux es multiusuario.
Para crear una regla de IPTables que bloquee la salida de un usuario por ejemplo al puerto 22, podemos hacer algo tal que así,
shell> iptables -A OUTPUT \
-p tcp --dport 22 \
-m owner --uid-owner 1002 \
-j REJECT
Y para hacer lo mismo para un grupo,
shell> iptables -A OUTPUT \
-p tcp --dport 22 \
-m owner --gid-owner 810 \
-j REJECT
Si ahora probamos a establecer una conexión ssh con diferentes usuarios, veremos que al usuario con uid 1002 no le estará permitido.
root@shell> ssh 192.168.1.35
root@192.168.1.35's password:
Last login: Sun Oct 7 20:03:34 2012 from 192.168.1.33

root@shell> getent passwd
...
javier:x:1000:1000:Javier Terceiro:/home/javier:/bin/bash

javier@shell> ssh 192.168.1.35
ssh: connect to host 192.168.1.35 port 22: Connection refused


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios