[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Tutorial encriptar tu /home



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 erCryptkeeper y encfsror o una
> mejora, dejar comentarios.
> 
> Saludos.
> 
> 
Gracias por esa joyita, Javier. Yo uso Cryptkeeper y encfs pero para
guardar algunos datos delicados nada más. No me había atrevido a algo
tanr adical. Me pongo a estudiar el script para aprender. Gracias por
compartirlo.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


Reply to: