146 lines
5.0 KiB
TeX
146 lines
5.0 KiB
TeX
\documentclass[12pt,a4paper]{article}
|
|
\usepackage[spanish]{babel}
|
|
\usepackage{hyperref}
|
|
\usepackage{graphicx}
|
|
\usepackage{subcaption}
|
|
|
|
\title{Tema XI Ejercicio III: Cifrado De Una Unidad En Linux}
|
|
\author{Nicolás A. Ortega Froysa}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
\pagebreak
|
|
\tableofcontents
|
|
\pagebreak
|
|
|
|
\section{Introducción}
|
|
|
|
El cifrado de dispositivos en GNU/Linux se puede hacer de varias maneras. Es
|
|
posible hacerlo a nivel de formato de sistema de archivos, que es un sistema
|
|
bastante común con sistemas como ZFS. Quizá lo más popular ahora mismo es usar
|
|
el sistema de LUKS. Esto permite formatear una partición de un dispositivo de
|
|
forma que esté cifrado, y sobre esta partición cifrada se puede tratar como si
|
|
fuese un dispositivo virtual.
|
|
|
|
\section{Cifrado con LUKS}
|
|
|
|
\noindent
|
|
Para este documento vamos a asumir que el dispositivo que queremos cifrar se
|
|
encuentra en {\tt /dev/sdX}. Todas las operaciones se deben de hacer como {\em
|
|
root}. {\bf Por favor, asegúrese de usar el nombre real de
|
|
tu dispositivo.}
|
|
|
|
\subsection{Creación del Dispositivo Cifrado}
|
|
|
|
Antes de crear el dispositivo cifrado, es necesario hacer una copia de los datos
|
|
que se encuentran ya en él. Asegúrese de esto antes de continuar, y de desmontar
|
|
el dispositivo.
|
|
|
|
A continuación vamos a reescribir todos los bloques de nuestro dispositivo a
|
|
cero usando el comando {\tt dd}. De este modo no será posible recuperar ningún
|
|
dato que se encontraba antes en él. Esto lo hacemos corriendo el comando
|
|
siguiente:
|
|
|
|
\begin{verbatim}
|
|
$ dd if=/dev/zero of=/dev/sdX bs=1M
|
|
\end{verbatim}
|
|
|
|
Este proceso puede tardar mucho tiempo dependiendo del tamaño del dispositivo.
|
|
Para más seguridad, es también aconsejable usar en vez de {\tt /dev/zero} el
|
|
archivo {\tt /dev/urandom}, ya que éste en vez de reescribir con ceros,
|
|
reescribirá con caracteres aleatorios.
|
|
|
|
Posteriormente ya podemos cifrar el dispositivo en sí. Primero tenemos que crear
|
|
la partición que vamos a cifrar. Como el dispositivo entero lo hemos borrado,
|
|
vamos a crear una partición que ocupe todo el disco. Esto se hace usando el
|
|
comando {\tt fdisk}:
|
|
|
|
\begin{verbatim}
|
|
$ fdisk /dev/sdX
|
|
\end{verbatim}
|
|
|
|
Esto nos abrirá la consola de {\tt fdisk}, donde introducimos los siguientes
|
|
comandos:
|
|
|
|
\begin{enumerate}
|
|
\item {\tt n} para crear una partición nueva
|
|
\item {\tt p} para designarla como partición primaria
|
|
\item {\tt 1} como número de partición (sale por defecto)
|
|
\item {\tt Enter} para usar el sector primero que sale por defecto
|
|
\item {\tt Enter} para usar el sector final que sale por defecto
|
|
\item {\tt w} para guardar los cambios
|
|
\end{enumerate}
|
|
|
|
Finalmente, ciframos el disco usando el comando {\tt cryptsetup}. Esto se hace
|
|
corriendo el comando siguiente:
|
|
|
|
\begin{verbatim}
|
|
$ cryptsetup luksFormat /dev/sdX
|
|
\end{verbatim}
|
|
|
|
Este comando nos hará varias preguntas. En primer lugar nos preguntará si
|
|
estamos seguros de hacer este procedimiento, ya que se perderán datos de manera
|
|
irrecuperable. Como ya hemos hecho la copia, tenemos que meter {\tt YES} (en
|
|
mayúsculas). Después, nos pedirá introducir la contraseña que queremos usar, y
|
|
verificar ésta. Cuando ya se introduce, tardará un rato en cifrar el
|
|
dispositivo.
|
|
|
|
\begin{figure}[!htb]
|
|
\centering
|
|
\includegraphics[width=0.75\linewidth]{imgs/cryptsetup.png}
|
|
\caption{Uso de {\tt cryptsetup} en un archivo.}
|
|
\label{fig:cryptsetup}
|
|
\end{figure}
|
|
|
|
Ya se ha creado el dispositivo cifrado, pero aún tenemos que abrirlo y
|
|
formatearlo para poder usarlo.
|
|
|
|
\subsection{Abrir el Dispositivo Cifrado y Formatear}
|
|
|
|
Abrir el dispositivo es también un proceso fácil: tan sólo hay que abrirlo
|
|
especificando el nombre que quiere para el dispositivo virtual (en nuestro caso,
|
|
{\tt crypt-dev}).
|
|
|
|
\begin{verbatim}
|
|
$ cryptsetup luksOpen /dev/sdX crypt-dev
|
|
\end{verbatim}
|
|
|
|
Ya se debería de encontrar nuestro dispositivo virtual en {\tt
|
|
/dev/mapper/crypt-dev}. Con esto se puede tratar como con cualquier otro
|
|
dispositivo. En nuestro caso, vamos a formatearlo con formato EXT4 de forma
|
|
siguiente:
|
|
|
|
\begin{verbatim}
|
|
$ mkfs.ext4 /dev/mapper/crypt-dev
|
|
\end{verbatim}
|
|
|
|
Ahora ya sí que podemos acceder a {\tt crypt-dev} como si fuese un dispositivo
|
|
cualquiera. Cuando queremos cerrarlo para que no se pueda acceder, simplemente
|
|
corremos el comando siguiente {\bf después de haber desmontado el dispositivo
|
|
virtual}:
|
|
|
|
\begin{verbatim}
|
|
$ cryptsetup luksClose crypt-dev
|
|
\end{verbatim}
|
|
|
|
\section{Conclusión}
|
|
|
|
El cifrado con LUKS en GNU/Linux es bastante fácil. Facilita usar el dispositivo
|
|
como un dispositivo normal virtual, y también permite cifrar una partición,
|
|
dejando a otra sin cifrar. La verdad es que ya he tenido experiencia usando esta
|
|
herramienta.\footnote{https://themusicinnoise.net/blog/2017-02-20-parabola-with-lvm-on-luks.html}
|
|
\footnote{https://themusicinnoise.net/blog/2017-02-21-encrypted-backup-drive.html}
|
|
|
|
\pagebreak
|
|
|
|
\section{Derechos de Autor y Licencia}
|
|
|
|
\noindent
|
|
Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa
|
|
<nicolas@ortegas.org> \\
|
|
\\
|
|
Este documento se distribuye bajo los términos y condiciones de la licencia
|
|
Creative Commons Attribution No Derivatives 4.0 International.
|
|
|
|
\end{document}
|