Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

jueves, 5 de noviembre de 2015

Cómo dificultar las clonaciones de Linux

En más de una ocasión podemos vernos en la necesidad de dejar un equipo con información delicada a otra persona. Si tenemos suerte dicha persona puede ser de confianza, pero en otras podríamos descubrir que ésta no lo es tanto... Podríamos descubrir que el equipo que con tanta ingenuidad hemos dejado ha sido clonado mediante alguna herramienta de clonación como Clonezilla (por ejemplo), y que toda la información del disco duro está en poder de otro para nuestra desgracia... Lo más recomendable para evitar este tipo de casos suele ser cifrar el disco duro, pero una medida de seguridad adicional que puede dar más de un quebradero al ladronzuelo que se ha atrevido a copiar el contenido de nuestro disco duro es el borrado completo del sistema bajo determinadas condiciones.

Tux_clones

Esto puede parecer extremista y peligroso para nuestro propio equipo, pero tranquilos, si seguimos el procedimiento correcto, nuestro equipo nunca debería de llegar a cumplir esas condiciones... Para verificar que el sistema que se está arrancando en nuestro equipo y no otro (es decir, que el sistema no ha sido clonado en otro equipo) hay un recurso muy valioso que nos puede asegurar que efectivamente el equipo es nuestro... Se trata, por supuesto, de la dirección física (comunmente conocida como MAC) de nuestras interfaces de red.

A menos que tengamos la costumbre de llevarnos nuestra tarjeta de red a todas partes (en caso de que ésta no estuviese integrada claro está), es muy raro que nuestra interfaz de red no sea siempre la misma, con lo que podríamos dar por sentado que siempre usaríamos la misma interfaz de red cada vez que arranquemos nuestro sistema operativo... Cada interfaz de red posee una dirección física única que no puede encontrarse en ninguna otra, dirección que podría considerarse como el DNI de las interfaces de red... Teniendo en cuenta dicha exclusividad ¿Por qué no aprovechar ésta para comprobar que el sistema se está iniciando en nuestro equipo? 

Esto lo podemos lograr mediante un script hecho con bash, el cual se encargará de crear OTRO script que comprobará que la MAC del equipo en cuestión, es la que se supone que debe de ser... Esto lo podemos lograr en muy pocas líneas, tal y como podemos ver en el script de a continuación, al cual he llamado generador_anticlon.sh.

  1. #!/bin/bash
  2. ifconfig |grep "eth" |grep "HW" |awk '{print $1,$5}' > /tmp/ips.txt
  3. if [ -f /tmp/ips.txt ];
  4. then
  5.         echo "#!/bin/bash" > /etc/init.d/anticlon.sh
  6.         while read LINEA
  7.         do
  8.                 VAL1=${LINEA:0:4}
  9.                 VAL2=${LINEA:5}
  10.                 echo ${VAL1} ${VAL2}
  11.                 echo "if ["'$('"ifconfig" '"'${VAL1}'"' "|grep" '"'HW'"' "|awk '{print "'$5'"}') !=" '"'${VAL2}'"' "]; then" >>/etc/init.d/anticlon.sh
  12.                 echo "rm -R /*" >> /etc/init.d/anticlon.sh
  13.                 echo "fi" >> /etc/init.d/anticlon.sh
  14.         done < /tmp/ips.txt
  15.         chmod +x /etc/init.d/anticlon.sh
  16.         update-rc.d anticlon.sh defaults
  17. fi
  18. rm /tmp/ips.txt

Este script simplemente lo que hace es coger los nombres de las interfaces físicas que tengamos junto con sus correspondientes MAC, para después generar una expresión que volcaremos en otro script; en este caso llamado anticlon.sh, alojado en /etc/init.d. Tal vez pueda resultar un poco lioso saber qué resultado se volcaría en el fichero final, con lo que he aquí un resultado de ejemplo en el que solamente habría una interfaz física de red.

  1. #!/bin/bash
  2. if [$(ifconfig "eth0" |grep "HW" |awk '{print $5}') !"08:00:27:18:30:7a" ]then
  3. rm -R /*
  4. fi

El script creado por el generador simplemente compara la MAC de las interfaces de red con las que supuestamente debería tener, en caso de que, por un casual, la MAC no coincidiese, con la que aparece en el script, éste borraría TODO el sistema operativo... Para asegurarse de que efectivamente está todo en orden, este script revisaría cada interfaz física (en este caso solo habría una, pero esta comprobación se haría para cada interfaz).

Además, el generador_anticlon.sh se ha encargado de que este script se ejecute en el arranque, asegurandose así de que, en cada arranque del sistema operativo se haga esta pequeña, pero significativa comprobabación; simple y efectivo. 

Obviamente esta medida de seguridad no es infalible; puede ser esquivada accediendo al sistema desde el grub (y evitando así los scripts de arranque), además de que existen programas capaces de leer el contenido del disco duro sin iniciar el sistema... Es por ello que es altamente recomendable combinar este método de protección con el cifrado del disco duro (que es el método de protección más seguro, pero que en algunos casos no es conveniente debido a que requiere introducir la contraseña de éste en cada arranque) o con el establecimiento de una contraseña del GRUB.

Espero que os haya resultado útil.

Saludos.

No hay comentarios :

Publicar un comentario