Merge branch 'master' of gitlab.com:naortega/ceu-notes

This commit is contained in:
Nicolás A. Ortega Froysa 2022-05-15 23:10:48 +02:00
commit e2dfca34ba
26 changed files with 519 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -0,0 +1,119 @@
\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{subcaption}
\title{Tema VI: Cifrado de Información}
\author{Nicolás A. Ortega Froysa}
\begin{document}
\maketitle
\pagebreak
\tableofcontents
\pagebreak
\section{Introducción}
A menudo es necesario cifrar información para que sólo aquellas personas
privilegiadas puedan accederla. Para esto, se ha usado históricamente el
cifrado, y en nuestra época digital tecnológica, esto no ha cambiado, sino que
se ha visto potenciado aún más, hasta el punto de que hoy día el cifrado de
información es algo de lo más cotidiano. Simplemente con acceder a una página
con el protocolo HTTPS ya estás usando cifrado.
\section{GNU Privacy Guard (GPG)}
En los sistemas GNU/Linux, la forma más normal de cifrar archivos es usando la
herramienta de {\em GNU Privacy Guard} (GPG). Esto se usa tanto para cifrado
simétrico como asimétrico. Vamos a revisar cómo cifrar un archivo usando esta
herramienta de forma simétrica: es decir, que se usa la misma contraseña para
cifrar y descifrar.
\subsection{Cifrado}
En primer lugar, tendremos que juntar todos los archivos que queremos cifrar en
un solo archivo. Esto se puede hacer usando cualquier herramienta de compresión
o unión de archivos. Para nuestro ejemplo, usaremos la herramienta {\tt tar},
aunque también se podría usar ZIP.
Creamos un directorio con todos los archivos que queremos comprimir, y luego los
juntamos usando el comando de {\tt tar} siguiente:
\begin{verbatim}
$ tar cvf secreto.tar secreto/
\end{verbatim}
Una vez que tengamos todos los archivos dentro de un mismo archivo, podemos
cifrarlo usando el comando {\tt gpg} (o en algunos sistemas de GNU/Linux es {\tt
gnupg}). Usamos el comando siguiente:
\begin{verbatim}
$ gpg --symmetric --cipher-algo <cipher> secreto.tar
\end{verbatim}
En este caso {\tt \textless{}cipher\textgreater{}} se reemplaza con el tipo de
cifrado que se quiere hacer. En nuestro caso queremos usar el cifrado {\tt
AES256}. Pedirá también una contraseña para el cifrado en este paso. Esto
producirá un archivo denominado {\tt secreto.tar.gpg}. A partir de aquí podemos
borrar los archivos originales de {\tt secreto.tar} y el contenido del
directorio {\tt secreto/}. Dicho lo cual, como acabamos de cifrar los archivos
es más seguro borrarlos usando el comando {\tt shred} de GNU/Linux, que no sólo
borrará los archivos, sino que antes de borrarlos reemplazará todo su contenido
con caracteres aleatorios.
\begin{figure}[!htb]
\centering
\includegraphics[width=0.75\linewidth]{imgs/cifrado.png}
\caption{Cifrado de un archivo con GPG.}
\label{fig:cifrado}
\end{figure}
\subsection{Descifrado}
Para descifrar el mismo archivo, hacemos lo que sería el mismo proceso, pero a
la inversa. Primero, lo desciframos usando GPG, e introduciendo la contraseña
establecido anteriormente:
\begin{verbatim}
$ gpg -o secreto.tar -d secreto.tar.gpg
\end{verbatim}
Esto producirá de nuevo nuestro archivo de {\tt secreto.tar}. Posteriormente
queremos desjuntar los archivos contenidos en ese {\em tarball}. Esto lo hacemos
igualmente con el comando {\tt tar}:
\begin{verbatim}
$ tar xvf secreto.tar
\end{verbatim}
Esto nos extraerá del archivo el directorio original y los archivos contenidos
en él. Con esto, ya habremos descifrado y recuperado los datos.
\begin{figure}[!htb]
\centering
\includegraphics[width=0.55\linewidth]{imgs/descifrado.png}
\caption{Descifrado con GPG.}
\label{fig:descifrado}
\end{figure}
\section{Conclusión}
El cifrado por línea de comando en GNU/Linux usando la herramienta GPG de GNU es
una tarea bastante sencilla, aunque se tiene que dividir en sub-pasos si se
quiere hacer con varios archivos. Mas esto forma parte de lo que sería la
mentalidad de UNIX -- que cada herramienta haga una sola cosa, y que lo haga
bien.
\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}

View File

@ -0,0 +1,7 @@
\babel@toc {spanish}{}\relax
\contentsline {section}{\numberline {1}Introducción}{3}{section.1}%
\contentsline {section}{\numberline {2}GNU Privacy Guard (GPG)}{3}{section.2}%
\contentsline {subsection}{\numberline {2.1}Cifrado}{3}{subsection.2.1}%
\contentsline {subsection}{\numberline {2.2}Descifrado}{4}{subsection.2.2}%
\contentsline {section}{\numberline {3}Conclusión}{5}{section.3}%
\contentsline {section}{\numberline {4}Derechos de Autor y Licencia}{6}{section.4}%

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -0,0 +1,145 @@
\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}

View File

@ -0,0 +1,7 @@
\babel@toc {spanish}{}\relax
\contentsline {section}{\numberline {1}Introducción}{3}{section.1}%
\contentsline {section}{\numberline {2}Cifrado con LUKS}{3}{section.2}%
\contentsline {subsection}{\numberline {2.1}Creación del Dispositivo Cifrado}{3}{subsection.2.1}%
\contentsline {subsection}{\numberline {2.2}Abrir el Dispositivo Cifrado y Formatear}{4}{subsection.2.2}%
\contentsline {section}{\numberline {3}Conclusión}{5}{section.3}%
\contentsline {section}{\numberline {4}Derechos de Autor y Licencia}{6}{section.4}%

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

View File

@ -0,0 +1,231 @@
\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{subcaption}
\title{Tema VIII Examen}
\author{Nicolás A. Ortega Froysa}
\begin{document}
\maketitle
\pagebreak
\tableofcontents
\pagebreak
\section{Introducción}
\begin{figure}[!htb]
\centering
\includegraphics[width=0.75\linewidth]{imgs/00-mapa-de-la-red.png}
\caption{Mapa de la red.}
\label{fig:mapa-de-la-red}
\end{figure}
El objetivo es crear una red como aparece en la figura \ref{fig:mapa-de-la-red}.
Para esto hemos de configurar tres redes, además de una adicional (pequeña) para
un servidor DHCP general que se usará para las redes de ASIR y DAW -- ya que la
red INF tiene su propio servidor DHCP.
\section{Configuración}
\subsection{El Router}
\begin{figure}[!htb]
\centering
\includegraphics[width=0.75\linewidth]{imgs/01-modulo-NM-2FE2W.png}
\caption{Uso del módulo NM-2FE2W en un {\em router} 2621XM.}
\label{fig:modulo-NM-2FE2W}
\end{figure}
Lo primero, que vamos a configurar es el {\em router}. Vamos a usar el modelo
2621XM y añadirle el módulo NM-2FE2W que añade dos puertos de {\em FastEthernet}
más a nuestro {\em router} (figura \ref{fig:modulo-NM-2FE2W}), de tal modo que
tenemos 4 puertos en total.
En estos cuatro interfaces, las tenemos que configurar con la dirección IP
correspondiente de {\em gateway} (enlace de red) de cada subred:
\begin{itemize}
\item Red 0 (sólo con servidor DHCP general): 192.168.0.1/30
\item Red 1: 192.168.1.0/24
\item Red 2: 192.168.2.0/24
\item Red 3: 192.168.3.0/24
\end{itemize}
Para la red 0 usamos la máscara de subred 30 (i.e.\ 255.255.255.252) ya que sólo
contendrá el {\em router} y el servidor DHCP general. Una vez configuradas estas
direcciones, también hemos de configurar a las redes 2 y 3 al servidor DHCP
general -- a la red 1 no se le configura porque tiene su propio servidor DHCP.
Para esto, tenemos que correr los siguientes comandos (cambiando {\tt
\textless{}if\textgreater{}} con la interfaz de la subred en el {\em router}):
\begin{verbatim}
int <if>
ip helper-address 192.168.0.2
\end{verbatim}
\subsection{Los Switches}
En los {\em switches} hemos de configurar las redes virtuales (VLAN) y también
lo que se pedía cambio de contraseña, configuración de reloj, y definición del
mensaje del día (MotD).
Para empezar, configuramos la contraseña, la hora, y el mensaje del día. Para
esto, entramos en la consola y ponemos los comandos siguientes:
\begin{verbatim}
enable
clock set 16:29:00 May 13 2022
conf t
banner motd "Vamos a aprobar!"
enable secret asir2021
\end{verbatim}
Para configurar los VLAN simplemente hemos de añadir cada VLAN al {\em switch} y
asignamos a todas las interfaces de ese {\em switch} su VLAN correspondiente
(e.g.\ en la red INF se le configura para la VLAN 10). Simplemente cambiamos
{\tt \textless{}id\textgreater{}} por la ID de la VLAN correspondiente.
\begin{verbatim}
vlan 10
name INF
vlan 20
name ASIR
vlan 30
name DAW
int range fa0/1-24
switchport mode access
switchport access vlan <id>
\end{verbatim}
\subsection{Red INF}
La primera red que vamos a configurar es la de INF, ya que contiene más
elementos que requieren de configuración manual. Sobre todo se trata de
configurar los tres servidores que tiene.
\begin{figure}[!htb]
\centering
\begin{subfigure}[tb]{0.45\textwidth}
\centering
\includegraphics[width=0.95\linewidth]{imgs/02-DNS.png}
\caption{Configuración del servidor DNS.}
\label{fig:DNS}
\end{subfigure}
\hfill
\begin{subfigure}[tb]{0.45\textwidth}
\centering
\includegraphics[width=0.95\linewidth]{imgs/03-DHCP-INF.png}
\caption{Configuración del servidor DHCP de la red INF.}
\label{fig:DHCP-INF}
\end{subfigure}
\hfill
\begin{subfigure}[tb]{0.45\textwidth}
\centering
\includegraphics[width=0.95\linewidth]{imgs/04-configuración-del-servidor-HTTP.png}
\caption{Configuración del servidor HTTP.}
\label{fig:HTTP-INF}
\end{subfigure}
\caption{Configuración de los servidores de la red INF.}
\end{figure}
El primer servidor es el DNS, que tendrá dirección IP de 192.168.1.2/24, y se ha
de configurar como se ve en la figura \ref{fig:DNS}, con una entrada para el
nombre de dominio www.aprobamosasir.es. El segundo sería el servidor DHCP de la
red INF con dirección IP de 192.168.1.3. Como sólo responde a las peticiones de
esta red, sólo ha de tener una entrada (figura \ref{fig:DHCP-INF}):
\begin{itemize}
\item Default Gateway: 192.168.1.1
\item DNS Server: 192.168.1.2
\item Start IP Address: 192.168.1.5
\item Subnet Mask: 255.255.255.0
\item Maximum Number of Users: 251
\end{itemize}
Finalmente, el servidor HTTP simplemente ha de estar configurado con su
dirección IP de 192.168.1.4, y que su servicio de HTTP esté habilitado. En
nuestro caso, también hemos cambiado el contenido del archivo {\tt index.html}
(figura \ref{fig:HTTP-INF}).
Ya con esto configurado, podemos ir a todos los PCs de la red INF y
configurarlos tal que pidan su dirección IP por DHCP.
\subsection{Servidor DHCP General}
\begin{figure}[!htb]
\centering
\includegraphics[width=0.75\linewidth]{imgs/08-configuración-del-servidor-DHCP-general.png}
\caption{Configuración del servidor DHCP general.}
\label{fig:DHCP-general}
\end{figure}
El último paso es la configuración del servidor DHCP general, conectado
directamente al {\em router}. Ponemos la dirección que habíamos especificado
antes, 192.168.0.2/30. Luego configuramos dos entradas de DHCP de la forma
siguiente (figura \ref{fig:DHCP-general}):
\begin{itemize}
\item Red ASIR:
\begin{itemize}
\item Pool Name: serverPool
\item Default Gateway: 192.168.2.1
\item DNS Server: 192.168.1.2
\item Start IP Address: 192.168.2.5
\item Subnet Mask: 255.255.255.0
\item Maximum Number of Users: 251
\end{itemize}
\item Red DAW:
\begin{itemize}
\item Pool Name: RED DAW
\item Default Gateway: 192.168.3.1
\item DNS Server: 192.168.1.2
\item Start IP Address: 192.168.3.5
\item Subnet Mask: 255.255.255.0
\item Maximum Number of Users: 251
\end{itemize}
\end{itemize}
Con todo esto configurado, ya podemos configurar los PCs de los demás redes
(ASIR y DAW) para pedir su dirección IP mediante DHCP.
\section{Pruebas}
\begin{figure}[!htb]
\centering
\begin{subfigure}[tb]{0.45\textwidth}
\centering
\includegraphics[width=0.95\linewidth]{imgs/07-prueba-intranet-del-servidor-HTTP.png}
\caption{Prueba en intranet del servidor HTTP.}
\label{fig:prueba-intranet-HTTP}
\end{subfigure}
\hfill
\begin{subfigure}[tb]{0.45\textwidth}
\centering
\includegraphics[width=0.95\linewidth]{imgs/09-prueba-interred-del-servidor-HTTP.png}
\caption{Prueba en interred del servidor HTTP.}
\label{fig:prueba-interred-HTTP}
\end{subfigure}
\caption{Pruebas de conectividad.}
\end{figure}
Si la red funciona correctamente, todos los PCs han de tener dirección IP por
DHCP configurado, además de su {\em gateway} y servidor DNS. De este modo,
podemos también comprobar la conectividad simplemente con probar si pueden
llegar a conectarse al servidor HTTP de la red INF por medio de su nombre de
dominio, tanto dentro de la misma red (figura \ref{fig:prueba-intranet-HTTP})
como desde las otras redes (figura \ref{fig:prueba-interred-HTTP}). Esto nos
demuestra el funcionamiento del DHCP, DNS, el router, y el servidor HTTP.
\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}

View File

@ -0,0 +1,9 @@
\babel@toc {spanish}{}\relax
\contentsline {section}{\numberline {1}Introducción}{3}{section.1}%
\contentsline {section}{\numberline {2}Configuración}{3}{section.2}%
\contentsline {subsection}{\numberline {2.1}El Router}{3}{subsection.2.1}%
\contentsline {subsection}{\numberline {2.2}Los Switches}{4}{subsection.2.2}%
\contentsline {subsection}{\numberline {2.3}Red INF}{5}{subsection.2.3}%
\contentsline {subsection}{\numberline {2.4}Servidor DHCP General}{6}{subsection.2.4}%
\contentsline {section}{\numberline {3}Pruebas}{8}{section.3}%
\contentsline {section}{\numberline {4}Derechos de Autor y Licencia}{9}{section.4}%

Binary file not shown.

View File

@ -52,7 +52,7 @@ name <name>
# para una sola interfaz
int <if>
# para un rango de interfaces
int <if>-<if>
int range <if>-<if>
switchport access vlan <id>
```