Re: Tutorial encriptar tu /home
El sáb, 28-02-2009 a las 07:41 +0100, Javier escribió:
> Quiero compartir este pequeño tutorial. Si alguien lo quiere subir a un
> web, simplemente que ponga mi nombre y email.
>
> Veamos como podemos encriptar el /home en un sistema Debian (en realidad
> se aplicaría casi igual a cualquier sistema Linux):
>
> Mucha gente piensa que encriptar es una cosa que no necesitan. Si
> piensan eso, es porque no se les ha dado una de estas situaciones:
>
> 1.- No le han robado nunca el ordenador (especialmente si es portátil)
> 2.- No tiene ningún dato sensible en su directorio, por ejemplo,
> imágenes comprometidas, passwords, documentos de word, paranoias que dan
> por escribir, o cosas que en manos de según quien caigan, puedan
> resultar vergonzosas para uno o para otros, recibos del banco, tarjetas
> de crédito...
> 3.- No trabaja en algún sitio donde es importante la confidencialidad de
> su trabajo. Por ejemplo, de programador para una compañia que valora la
> seguridad.
>
> Si no se te dan ninguna de esas circunstancias... enhorabuena, eres de
> los pocos. :) La mayoría de la gente tiene como poco algo importante que
> no es conveniente dejar al descubierto. Incluso en la caché del
> navegador o en el lector de correo se puede encontrar algo sensitivo.
> Por ejemplo si normalemente entras al correo con la opción de recordar
> la contraseña, si entras en la cuenta del banco de la misma manera, en
> los foros, páginas web, etc, el posible ladron de tu ordenador ¡¡¡la
> puede liar bien gorda!!!
>
> No obstante, si el ordenador no es portátil y no está expuesto al
> público, es tontería y quizá un poco paranoico. Cada uno debe valorar si
> le merece la pena o no.
>
> ¿Como puede protegerse?
> Hay dos formas, una más fácil que cubre solo aquello que es
> verdaderamente importante, dejando al descubierto el resto, y otra que
> es un poco más dificil, que es encriptar el home entero.
>
> Modo gráfico sencillo
> ---------------------
>
> La primera forma se hace instalando los programa Cryptkeeper y encfs.
> Ambos se encuentran en los repositorios de Debian.
>
> Arrancando Cryptkeeper, que aparece en el menú
> Aplicaciones->Herramientas del sistema, aparece un icono con unas llaves
> en la barra.
> Tan solo hay que pulsar en ese icono y en New encripted folder, y seguir
> todos los pasos, y así creas una carpeta encriptada.
> El siguiente paso es igualmente fácil. Por ejemplo, imagina que quieres
> proteger la configuración del navegador, y el correo del Thunderbird,
> tan solo tienes que mover esos ficheros _dentro_ de la carpeta
> encriptada, y crear un enlace en _tu_ directorio. Puedes hacerlo en el
> Nautilus, o en la consola de la siguiente manera:
>
> $ mv .mozilla* carpeta_encriptada/
> $ ln -s carpeta_encriptada/.mozilla .
> $ ln -s carpeta_encriptada/.mozilla-thunderbird .
>
> Tienes que tener especial cuidado de montar la carpeta encriptada cada
> vez que vas a usar esos programas. Es muy fácil, solo tienes que pulsar
> el icono, y seleccionar la carpeta, y te preguntará por el password.
> Por supuesto, puedes hacer lo mismo con cualquier carpeta problemática.
> Por ejemplo, con Documentos, Imágenes, etc.
>
>
> Modo completo
> -------------
>
> Si quieres encriptar tu home completo, es un poco más complicado, pero
> más seguro.
> Lo primero es crear la carpeta encriptada. De momento usamos nombres
> temporales. Siendo root, imagina que el usuario se llama javi:
>
> # mkdir /home/.javi
> # mkdir /home/javi-temp
> # encfs /home/.javi /home/javi-temp
>
> Con eso saldrá un asistente, que describe bastante bien los pasos, pero
> si aún quieres más información, en otra consola puedes abrir el clásico
> "man encfs", o bien instalar el paquete dwww, y apuntar a
> http://localhost/cgi-bin/dwww?search=encfs con el navegador (muy
> recomendable)
>
> Asegúrate de usar un password laaaaargo que puedas recordar, pero que no
> sea especialmente fácil. Yo uso uno de 40 caracteres que es casi
> aleatorio. Me cuesta unos segundos meterlo, pero no importa tanto porque
> sirve para todo el dia y es realmente seguro.
> Si metes un password de 5 caracteres es casi como si no metieras nada.
> Por fuerza bruta hasta un ordenador corriente lo rompería.
>
> A continuación hay que salir de la cuenta, y quedarse en una consola:
>
> # /etc/init.d/gdm stop
>
> Y movemos todos los ficheros:
>
> # mv /home/javi/.??* /home/javi-temp
> # mv /home/javi/* /home/javi-temp
>
> El motivo del primer comando tiene truco. En Linux, ten cuidado de hacer
> algo como "mv .* donde_sea" porque entre los .* se incluye el directorio
> superior. Es decir, que intentas mover el /home dentro de un
> subdirectorio de /home, algo imposible, y devolverá error. Si alguna vez
> usas "rm -rf .*" espera meterte en un gran lio (borraras todo lo que
> contiene el directorio madre).
>
> Puede llegar a tardar horas si tienes 200 gb.
>
> Después solo hay que eliminar el directorio y cambiar de nombre el otro:
>
> # fuserumount -u /home/javi-temp
> # rm -r /home/javi
> # mv /home/javi-temp /home/javi
>
> y ya está, tu directorio encriptado.
> No obstante... aun hay un paso importante: es conveniente que pida la
> password al iniciar. Este password no es el mismo que el de tu usuario,
> normalmente será mucho más largo y por lo tanto es conveniente que lo
> pida una vez nada más cada vez que arrancas el ordenador. Por lo tanto
> creamos un servicio:
>
> # gedit /etc/init.d/encfs
>
> y pegamos esto (modificado a tu usuario) (nota:cuidado que algunas
> lineas pueden estar cortadas debido al lector de correos y puede darte
> errores, corrígelas):
>
> -------8<--------8<---------8<--------
> #! /bin/sh
>
> # PATH should only include /usr/* if it runs after the mountnfs.sh script
> PATH=/sbin:/usr/sbin:/bin:/usr/bin
> DESC="Description of the service"
> NAME=encfs
> DAEMON=/usr/bin/$NAME
> DAEMON_ARGS="--public /home/.javi /home/javi"
> PIDFILE=/var/run/$NAME.pid
> SCRIPTNAME=/etc/init.d/$NAME
>
> # Exit if the package is not installed
> [ -x "$DAEMON" ] || exit 0
>
> # Read configuration variable file if it is present
> [ -r /etc/default/$NAME ] && . /etc/default/$NAME
>
> # Load the VERBOSE setting and other rcS variables
> . /lib/init/vars.sh
>
> # Define LSB log_* functions.
> # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
> . /lib/lsb/init-functions
>
> #
> # Function that starts the daemon/service
> #
> do_start()
> {
> # Return
> # 0 if daemon has been started
> # 1 if daemon was already running
> # 2 if daemon could not be started
> start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON
> --test > /dev/null \
> || return 1
> start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
> $DAEMON_ARGS \
> || return 2
> # Add code here, if necessary, that waits for the process to be ready
> # to handle requests from services started subsequently which depend
> # on this one. As a last resort, sleep for some time.
> }
>
> #
> # Function that stops the daemon/service
> #
> do_stop()
> {
> fusermount -u /home/javi
> # Return
> # 0 if daemon has been stopped
> # 1 if daemon was already stopped
> # 2 if daemon could not be stopped
> # other if a failure occurred
> #start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile
> $PIDFILE --name $NAME
> RETVAL="$?"
> [ "$RETVAL" = 2 ] && return 2
> # Many daemons don't delete their pidfiles when they exit.
> rm -f $PIDFILE
> return "$RETVAL"
> }
>
> #
> # Function that sends a SIGHUP to the daemon/service
> #
> do_reload() {
> #
> # If the daemon can reload its configuration without
> # restarting (for example, when it is sent a SIGHUP),
> # then implement that here.
> #
> start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
> return 0
> }
>
> case "$1" in
> start)
> [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
> do_start
> case "$?" in
> 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
> 2)
> do_start # repite hasta que vaya bien
> [ "$VERBOSE" != no ] && log_end_msg 1 ;;
> esac
> ;;
> stop)
> [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
> do_stop
> case "$?" in
> 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
> 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
> esac
> ;;
> #reload|force-reload)
> #
> # If do_reload() is not implemented then leave this commented out
> # and leave 'force-reload' as an alias for 'restart'.
> #
> #log_daemon_msg "Reloading $DESC" "$NAME"
> #do_reload
> #log_end_msg $?
> #;;
> restart|force-reload)
> #
> # If the "reload" option is implemented then remove the
> # 'force-reload' alias
> #
> log_daemon_msg "Restarting $DESC" "$NAME"
> do_stop
> case "$?" in
> 0|1)
> do_start
> case "$?" in
> 0) log_end_msg 0 ;;
> 1) log_end_msg 1 ;; # Old process is still running
> *) log_end_msg 1 ;; # Failed to start
> esac
> ;;
> *)
> # Failed to stop
> log_end_msg 1
> ;;
> esac
> ;;
> *)
> #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
> echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
> exit 3
> ;;
> esac
>
> :
>
> ---------8<------------8<------------8<---------------
>
>
> podemos probar el servicio de la siguiente manera:
>
> # /etc/init.d/encfs start
>
> y probar que desmonta de la siguiente manera:
>
> # /etc/init.d/encfs stop
>
> Una vez comprobado que funciona ok, ya puedes reiniciar, o simplemente
> rearrancar el Gnome:
>
> # /etc/init.d/gdm start
>
> Y listo. Espero que os haya servidor, y si detectais un error o una
> mejora, dejar comentarios.
>
> Saludos.
>
>
Se agradece... buenisimo
--
Carlos Lazo B.
Linux User 446689
http://www.carloslazo.cl.kz
"El hecho de que tengas un trabajo es algo
normal; el hecho de que seas bueno en tu trabajo es algo destacable"
Reply to: