Este texto va a tratar de un método (por llamarlo de alguna manera) de seguridad que he montado en un ratillo a modo de experimento.
La idea parte de la historia que circuló de un hombre que recuperó el ordenador de un robo gracias a que se conectó a su portátil remotamente e hizo una foto del ladrón. Lo que hacen estas instrucciones es una foto al entrar al pc y después la envían por correo.
Pasemos ahora a la receta:
- Portátil con Debian y webcam integrada (driver uvc).
- uvccapture: programa en modo texto que permite hacer fotos con la webcam.
- mpack: programa que permite enviar adjuntos al correo electrónico desde consola.
- exim4: el agente de transferencia de correo (MTA) que viene por defecto en Debian...
Lo primero es configurar exim4 para que permita enviar correo usando ips dinámicas (lo típico que tenemos todos). Para ello me serví de este tutorial:
http://www.esdebian.org/articulos/24027/como-enviar-correos-...
Ojo al poner smtp.gmail.com::587. Hay que poner :: en lugar de sólo :. Un servidor perdió un buen rato en esta tontería. Yo usé una cuenta de gmail, pero valdría con cualquier servidor que proporcione los datos de smtp y pop3.
Vale, ahora vamos al script en cuestión. Es tan simple como esto:
#!/bin/sh /usr/bin/uvccapture -m -o"/home/miusuario/camaraInicio/salida.jpg" sleep 300 /usr/bin/mpack -s "intruso detectado" /home/miusuario/camaraInicio/salida.jpg direcciondestino@servidor.com
Un par de notas. El -m es opcional; en mi caso lo necesitaba para que la cámara funcionara. El fichero salida tiene permisos globales de escritura y lectura. El sleep 300 da al intruso 5 minutos para que sea capaz de conectar a Internet.
Una vez hecho esto ya estaría el sistema montado. El problema es que si alguien nos roba el portátil no va a saber el usuario y la contraseña. Solución: he creado un usuario limitado en Gnome que permite hacer cosas básicas (lo usa mi madre ocasionalmente). En la pantalla de inicio de Gnome aparece como mensaje de bienvenida el nombre del usuario y la contraseña. Y nada más arrancar este usuario se lanza el script anterior (lo he puesto en "sesiones"). Los permisos globales de salida.jpg son necesarios para que se pueda actualizar la foto desde este usuario.
El sistema es bastante rústico, por decirlo finamente, pero ilustra bastante bien lo fácil que es cacharrear con Linux. De hecho, creo que he tardado más en escribir este texto que en el experimento.
Espero que os haya gustado, y os dejo un par de ideas por si queréis jugar algo más:
- Se puede consultar con wget la ip externa asociada al portátil y hacer que se envíe en el correo. Usando esta ip se puede iniciar una sesión VNC y tener control remoto al mismo.
- Se puede usar un gestor de correo para que al recibir un correo el portátil con un formato que hayamos definido, el ordenador nos cree una sesión VNC y nos envíe los datos necesarios por correo de vuelta. Esto permite tener una sesión VNC que habilitamos o deshabilitamos a voluntad.
Relacionada:
Lex
anónimo18 Marzo 2009 - 9:54am
Hay que ver que con lo que nos gusta la "x" en informática se nos olvide tan fácilmente la de la palabra "Lex".
En España tenemos una Ley de Protección de Datos y una Agencia de Protección de Datos que vela muy activamente por el cumplimiento de dicha ley, que es una lectura tan necesaria como aburrida; lectura que os recomiendo antes de que pongáis en marcha cualquier sistema de vigilancia con grabación de vídeo.
Y ya puestos, como sugerencia para los más osados ¿qué tal una transmisión de los vídeos o de las fotos vía móvil?
No sería más lógico...
jacampano17 Marzo 2009 - 1:19pm
¿No sería más lógico poner el script (con las modificaciones necesarias) en el arranque del sistema, que en vez de una foto, realice X y cuando se inicie la sesión del usuario matar el proceso?
Y como bien se dice un par de comentarios más arriba, lo de esperar queda poco elegante. Se podría realizar el ping como se indica un par de comentarios mas arriba. Incluso no haría falta, se puede configurar para que el servidor reintente n veces cada x tiempo el envio en caso de fallar. Utilizando intervalos de tiempo cortos te podrías asegurar el envio.
Un saludo.
Hola, gracias
jsa_17 Marzo 2009 - 1:15pm
Hola, gracias por las sugerencias y comentarios. Os aclaro un poco algunas cosillas del tema:
Lo de los 5 minutos lo puse arbitrariamente. Considerando que Linux no está excesivamente extendido, quien sabe cuanto tardaría alguien en conectarse. Gracias por el aviso de que postfix envía los correos más tarde si el ordenador no está on-line. No sé si exim4 hará lo mismo, la verdad.
Sí que he probado motion, la verdad es que funciona muy bien y el tema de los eventos dejaría hacer esto mismo que se hace con uvccapture. Antes de hacer esto estuve jugando con un par de webcams y con motion para que cuando alguien entre en mi cuarto y esté con cascos oyendo música no me de un infarto. Al detectar movimiento en la puerta salía un aviso en el pc.
El problema es que la idea original que tenía es que sólo se active la cámara cuando se entra en el usuario permitido (el que viene el el login) o que se hiciera al detectar un fallo de login (fallo en contraseña). El tema de que se active cuando haya fallo en la contraseña aún no lo he resuelto. Si alguien sabe como, agradecería ideas.
Lo del ping y el while es desde luego mucho mejor que la solución de los 5 minutos. Tomo nota como mejora. Y lo del led de la cámara, pues se enciende. Supongo que se podría bajar el código del driver, mirarlo y recompilarlo sin que se encienda el led.
Lo de la geolocalización y el keylogger son dos ideas muy buenas para mejorarlo. Con la geolocalización estuve trasteando un rato, pero me salía que estaba en Madrid cuando estoy a más de 400Km; pasé bastante del tema.
Lo del criptonomicón, ni idea, me apunto el libro a la lista de pendientes.
Efectivamente, mi portátil también tiene una pequeña partición de windows que uso de pascuas a ramos, de hecho, configuré el grub para que arranque sin esperar en Linux. Lo que no me queda claro es si alguien que viera arrancar la Debian con todo el montón de letras no se piense que es un virus y lo lleve al taller directamente :P
pam_script
anónimo20 Marzo 2009 - 10:15am
Busca un poco sobre pam_script y los módulos PAM.
Te sorprenderá cómo se puede añadir la tira de funcionalidades y restricciones de autenticación de forma fácil a cualquier servicio de tu equipo.
fallo en contraseña
anónimo18 Marzo 2009 - 2:32pm
Para detectar el fallo en contraseña lo lógico sería hacerlo con algún módulo pam. Sin embargo hay una solución casera que sería mirar los archivos de log.
motion y zoneminder
anónimo17 Marzo 2009 - 12:43pm
No has probado "motion"?
Es un sistema muy completo de vigilancia, que monitorea todas las cámaras que quieras, ya sean usb, por capturadoras de video (incluso las de varias entradas), o cámaras IP. Puede detectar cambios en la imagen y grabar en el formato que le pidas (divx por ejemplo).
Una función interesante es que puede tener un almacenamiento previo. O sea, que se le puede decir que desde que detecte un movimiento se vuelva atrás 5 segundos y genere un video desde ahí. También se le puede decir que deje un jpg con una imagen estática del momento en que detectó el movimiento. Esto sirve para visualizar rápidamente si nos interesa ver el video.
Al grabar en divx se puede tener muchas horas de video con poco consumo de disco. Y también puede disparar eventos cuando detecta movimientos así que puede enviar mails, encender alarmas, luces o lo que seamos capaces de hacer.
Una cosa interesante que estaba en desarrollo hace tiempo (no se si la habrán terminado) es la posibilidad de manejar cámaras con motor, para que sigan el objeto en movimiento. La idea era que en la configuración se le ponía cuál era el comando para subir, bajar, izquierda y derecha de la cámara. En esos comandos se podría poner cualqueir shell script que hiciera el pedido como lo soporte la cámara (por ejemplo http).
El problema que tiene es que no tiene interfaz gráfica, aunque provee todas las herramientas necesarias para hacerla.
Otro programa interesante para sistemas de vigilancia es zoneminder. Ese sí tiene interfaz gráfica (via web) pero en su tiempo no me gustó mucho. No se como estará ahora.
Otra historia de ladrones, linux y webcams
anónimo17 Marzo 2009 - 11:42am
Hola.
Otra historia de ladrones, linux y webcams.
http://vueltaabruselas.blogspot.com/2008/05/y-al-final-entraron-robar.html
Si alguna vez robo un portatil
menos_1617 Marzo 2009 - 12:27am
Si alguna vez robo un portatil creo que no me molestaria en arrancar la particion de linux (seguro que no lleva solo linux), apostaria 9 a 1 a que tiene contraseña, y aun asi seguiria sin tener la clave de root...
Para un portatil no mucho, pero para un movil si que lo veo una idea mas que interesante, de hecho no me extrañaria nada que ya existiera una implementacion similar.
acceso local
anónimo17 Marzo 2009 - 12:48pm
Habrás escuchado el dicho "acceso local = acceso total". En el 99% de los casos te encontrarás que el disco no está cifrado. Por lo tanto podrás arrancar el sistema en modo mantenimiento y tener privilegios de root sin saber la clave.
No es un problema de seguridad, ya que si tienes el equipo en tus manos, excepto en el caso de discos cifrados, no hay contraseñas que valgan. No tiene sentido evitar el acceso al sistema porque siempre podrías sacar el disco y ponerlo en otra máquina para acceder a todo el contenido.
Y por si un usuario de windows está pensando que es más seguro porque no permite eso, le diría que eso en realidad es una limitación más que tiene windows, porque si lees el disco con otro sistema que no sea windows te encontrarás con que puedes acceder a todo el contenido, incluso si tenía clave. Esto es sólo otra muestra de la idea de seguridad que tiene la gente de Microsoft: suponer que los usuarios no tendrán jamás control sobre el software porque carecen de los conocimientos y herramientas necesarios.
Criptonomicón
anónimo16 Marzo 2009 - 8:22pm
¡anda!
Si eso sale en el criptonomicón ...
Motion esta muy bien
ferrebam16 Marzo 2009 - 7:51pm
Lo he probado con éxito en una cámara quickcam logitech. El sistema detectaba el movimiento en la sala y automáticamente empezaba a grabar un vídeo o bien realizaba diversas fotografias. Finalmente el experimento se ha consolidado y lo he añadido al programa de monitorizacion de la red como control de paso en el CPD.
Pensar que se puede realizar la tarea de fotografiar al intruso y también ejecutar algún keyloger el cual nos proporcione mas información sobre este individuo.
Si a esto le sumamos geo-localización por ip...
Pero todo esto contando que no les de por formatear el equipo claro :)
gran programa el uvccapture ese
anónimo16 Marzo 2009 - 7:12pm
Como comentario, lo que hay que hacer primeramente es que el arranque por defecto arranque un usuario sin contraseña y sin nada, por que si no lo primero que va a hacer el ladrón es formatear. Lo segundo, mejor que esperar, una vez es poner un while y un ping a un servidor conocido que devuelva el ping, o una consulta dns a un opendns o algo así. Otra duda que estuve planteandome el otro día es si el driver de la camara permite manejar el led (lucecita) de la camara. YA que lo suyo es que no se encendiera. ¿alguien sabe eso?
Otra cosa chula sería ponerlo en el cron en vez de al inicio, lo mismo con algunas fotos podemos hasta chantajear al ladrón. :D
Un saludo
Has probado el motion?
anónimo16 Marzo 2009 - 6:54pm
Hace un tiempo al coche de mi novia le empezaron a pasar cosas raras cuando lo aparcaba delante de mi casa asi que busque en los repos de ubuntu y encontre el motion. Este es un sistema de detección de movimiento que te permite empezar a capturar video o a hacer fotos cuando un numero X de pixels de la pantalla cambian. Es muy facil de configurar... solo tienes que buscar el motion.conf y ver las opciones que tiene.
...Para los curiosos, no pillé al ladrón/vándalo pero ... y lo bien que lo pasé! Además de impresionar a mi novia montando un sistema de videovigilancia en media hora! jeje
Kmotion
anónimo16 Marzo 2009 - 7:34pm
Si te gusto motion, prueba kmotion y ya la dejas a cuadros jejeje y con un poco de mañana hasta mensajes en el movil con google calendar en mi web tengo un manualillo de como montar kmotion:
http://idasdepella.com/?p=438
Si alguien conoce mas sistemas vamos a darle caña para que los ladrones no se meneen jeje.
cazado!
anónimo16 Marzo 2009 - 6:48pm
Que script tan interesante!!
Se me ha ocurrido una pequeña mejora. En vez de hacer que el script se ejecute al iniciar una sesión concreta, podrías hacer que se ejecutara para cualquier usuario si lo añades al directorio /etc/X11/Xsession.d
Cualquier shellscript que se encuentre allí será ejecutado al iniciar gdm/kdm/xdm/startx.
Tan sólo encender el ordenador... FLASH!! te pillé xD
Por cierto, ¿es realmente necesario esperar 5 min para que se establezca la conexión a internet?
Creo que algunos servidores de correo guardan los mensajes que no pueden enviar y siguen reintentado el envío cada cierto tiempo de forma automática. Por lo menos postfix lo hace así. No sé si será el caso de exim4.