27 mar 2014

pam_usb: Ejecutar acciones al conectar o desconectar el pendrive

En un post anterior, os mostraba cómo utilizar un pendrive para iniciar sesión en el sistema sin tener que introducir nuestra contraseña. En este post vamos a ver cómo ejecutar comandos cuando se conecte o se desconecte el pendrive.

El ejemplo que vamos a ver es el más sencillo: Activar el salvapantallas y bloquear la pantalla cuando se desconecte el pendrive y desactivarlo cuando se vuelva a conectar. No obstante, se podría ejecutar cualquier comando. Por ejemplo, podríamos crear y utilizar un script que realice automáticamente una copia de seguridad de los documentos del usuario cuando conecte su pendrive. 

Para realizar la configuración de pamusb debemos entender cómo se encuentra organizado el archivo /etc/pamusb.conf:

<configuration>
    <defaults>
        <!-- default options -->
    </defaults>

    <devices>
        <!-- devices definitions -->
    </devices>

    <users>
        <!-- users definitions -->
    </users>

    <services>
        <!-- services definitions -->
    </services>
</configuration>

Como podéis ver, está dividido en cuatro secciones. Pues bien, en la sección será donde configuremos qué acciones deben realizarse cuando el usuario concreto introduzca el pendrive para el que estamos definiendo las reglas. Para que quede más claro, vamos a verlo con un ejemplo:

Supongamos que, siguiendo con el post anterior, creé un dispositivo al que llamé enavasSandisk y quiero que se active el salvapantallas en modo seguro cuando el usuario enam0000 que definí desconecte el pendrive y lo desactive cuando vuelva a introducirlo.

Para ello, abriré el archivo /etc/pamusb.conf y en la sección <users>  introduciré la siguiente definición:

<user id="enam0000">
    <device>enavasSandisk</device>
          <agent event="lock">mate-screensaver-command --lock</agent>
          <agent event="unlock">mate-screensaver-command --deactivate</agent>
</user>

Creo que la definición se entiende muy bien, ¿verdad?

El comando que estoy ejecutando en esta máquina es mate-screensaver-command porque tengo instalado mate en la máquina que estoy usando para realizar el tutorial. Si utilizáis gnome, el comando se llamará gnome-screen-saver-command.

Si en lugar de activar y desactivar el salvapantallas tan sólo queremos cerrar sesión cuando se desconecte el pendrive, podríamos hacer lo siguiente:

<user id="enam0000">
    <device>enavasSandisk</device>
          <agent event="lock">mate-session-save --logout</agent>
</user>

Una vez hecho ésto, lo único que nos queda es ir al menú Sistema -> Preferencias -> Aplicaciones al inicio y crear un lanzador que inicie pamusb-agent, quien se encargará de monitorizar la conexión o desconexión de dispositivos.

Por otra parte, también podríamos crear el lanzador manualmente desde un terminal:

# cat /home/enam0000/.config/autostart/pamusb-agent.desktop 
[Desktop Entry]
Type=Application
Exec=pamusb-agent
Hidden=false
X-MATE-Autostart-enabled=true
Name[es_ES]=pamusb-agent
Name=pamusb-agent
Comment[es_ES]=Monitorizar pamusb
Comment=Monitorizar pamusb

Publicado por primera vez en http://enavas.blogspot.com.es

Reforzando la seguridad de nuestros servidores con denyHosts

DenyHosts  es un script python pensado para prevenir ataques de fuerza bruza contra servicios ssh. 
Este script bloquea ataques ssh añadiendo entradas al archivo /etc/hosts.deny, y si lo configuramos, puede informarnos por e-mail.

Instalarlo en Debian es realmente fácil porque se encuentra en los repositorios:

# apt-get install denyhosts

Y configurarlo también es muy sencillo porque tan sólo tenemos que modificar el fichero /etc/denyhosts.conf y cada parámetro viene perfectamente comentado para que conozcamos cuál es su función.

DenyHosts se basa en TCP Wrapper. Por lo tanto, los ficheros de configuración /etc/hosts.deny y /etc/hosts.allow estarán creados en el sistema.

En ocasiones, puede que nosotros mismos nos equivoquemos al acceder al servidor y DenyHosts bloquee el acceso para nuestra máquina. En este caso, podemos purgar las entradas añadidas a /etc/hosts.deny de la siguiente manera:

# /etc/init.d/denyhosts stop
# denyhosts --purge
# /etc/init.d/denyhosts start

De este modo, se eliminarán los hosts añadidos con una antigüedad mayor que la definida en PURGE_DENY en el fichero de configuración /etc/denyhosts.conf.

Publicado por primera vez en http://enavas.blogspot.com.es