En el último artículo de
Debian Administration leo un
sorprendente post que habla sobre
cómo esconder los procesos a usuarios sin privilegios, mediante un parámetro presente desde el
kernel 3.2.
Para hacer este tipo de protecciones la única forma que existía con antelación era emplear utilidades y parches aplicados en el kernel. Por suerte, con las últimas versiones del kernel de Linux, esto ya lo podemos hacer de forma nativa e inmediata, lo cual facilita, y mucho, el trabajo a la hora de proteger y ocultar datos a los administradores de sistemas.
¿Cuándo emplear este truco?
En los equipos de sobremesa habituales, desde luego no tiene sentido hacer este tipo de filtros, pues no es necesario ocultar los proceso de otros usuarios; entre otras cosas, suelen ser mono-usuario.
En servidores, quipos compartidos por varios usuarios a la vez (GNU/Linux es multi-usuario de verdad!) o equipos en los que se están a ejecutar procesos críticos, pues quizás sí tenga más sentido ocultar los procesos que no son del propio usuario. Por qué el usuario X tiene que saber lo que está a ejecutar el usuario Y. Si no interesa que lo sepa, empleamos este truco y listo.
Cómo configurar esta nueva utilidad del kernel
La nueva utilidad descrita está basada en un parámetro, hidepid, que se le pasa como parámetro de montaje a la partición /proc. Los posibles valores que puede tomar son:
- 0 - Valor por defecto del sistema. Todos los usuarios pueden ver todos los procesos.
- 1 - Esta opción ya ofrece algo de restricción a lo que un usuario normal puede ver. Ante la salida estándar de "ps aux", por ejemplo, no se pueden ver procesos de otros usuarios, pero bajo /proc todavía puede ver estos procesos.
- 2 - Esta es la opción más restrictiva. Un usuario normal no puede ver nada que otros estén ejecutando ni siquiera accediendo a la carpeta /proc. Todo está oculto para él.
Y la forma de emplearla es, en tiempo real y sin hacer nada, volver a montar la partición /proc, pasándole como parámetro esta nueva opción.
shell> mount -o remount /proc --options=hidepid=2
Al realizarlo, el cambio es inmediato y según el valor que le pasemos, dentro de los posibles, veremos el resultado en usuarios sin privilegios de root. Por ejemplo, si ejecutamos la línea que os acabo de indicar, cualquier usuario que no tenga permisos dejará de ver todos aquellos procesos que no sean suyos y para él, el servidor sólo ejecutará cosas suyas.
Si nos interesa emplear esta funcionalidad de forma permanente, tendremos que aplicar el cambio en el fichero /etc/fstab y añadir la opción comentada a la partición /proc, tal como sigue.
proc /proc proc defaults,hidepid=2 0 0
Las diferentes salidas se muestran a continuación. La primer, en ejemplo de lo que ve un usuario sin privilegios antes de bloquearle el acceso a los procesos que no son suyos,
javier@shell> ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2776 2864 ? Ss mar12 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S mar12 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S mar12 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S mar12 1:22 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< mar12 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S mar12 0:00 [migration/0]
...
Y a continuación, el mismo usuario una vez pasada la opción hidepid=2.
javier@shell> ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
javier 2589 0.0 0.0 3352 7876 ? Ssl mar12 0:00 x-session-manager
javier 2649 0.0 0.0 4444 500 ? S mar12 0:00 /usr/bin/dbus...
javier 2650 0.0 0.0 1856 2048 ? Ss mar12 0:09 //bin/dbus-...
javier 2661 0.0 0.0 9360 2548 ? S mar12 0:00 /usr/lib/x86...
javier 2665 0.1 0.2 3284 17076 ? S mar12 5:12 xfwm4
javier 2669 0.2 0.2 2584 20508 ? Sl mar12 7:34 xfce4-panel
...
Sin dudarlo, una opción muy interesante para equipos compartidos que debería de estar presente en muchos, por no decir todos los servidores de producción.
Referencia:
debian-administration.org
Leer más