diff --git a/TFC/tfc-naortega.pdf b/TFC/tfc-naortega.pdf index cb04c88..58869fc 100644 Binary files a/TFC/tfc-naortega.pdf and b/TFC/tfc-naortega.pdf differ diff --git a/TFC/tfc-naortega.tex b/TFC/tfc-naortega.tex index 4bfe402..caad6bb 100644 --- a/TFC/tfc-naortega.tex +++ b/TFC/tfc-naortega.tex @@ -401,7 +401,7 @@ utilizando el comando siguiente: frame=lines, bgcolor=LightGray, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{console} # dhclient -v Internet Systems Consortium DHCP Client 4.4.1 @@ -428,7 +428,7 @@ mirando el archivo {\tt /etc/resolv.conf}: frame=lines, bgcolor=LightGray, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{console} # cat /etc/resolv.conf nameserver 192.168.1.135 @@ -449,7 +449,7 @@ nuestro servidor es {\tt 192.168.1.135}: frame=lines, bgcolor=LightGray, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{console} # nslookup porn.com Server: 192.168.1.135 @@ -493,7 +493,7 @@ de la tarjeta SD corresponde al fichero especial {\tt /dev/mmcblk1}: frame=lines, bgcolor=LightGray, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{console} # unxz Armbian__Rock64__current_.img.xz # dd if=Armbian__Rock64__current_.img \ @@ -543,7 +543,7 @@ que instalará el paquete que precisamos además de todas sus dependencias: frame=lines, bgcolor=LightGray, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{console} # apt install bind9 \end{minted} @@ -561,7 +561,7 @@ bloquear. El archivo de configuración ha de ser como lo siguiente bgcolor=LightGray, linenos, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{text} include "/etc/bind/blacklisted.zones"; @@ -588,6 +588,38 @@ esta lista, haciendo lo siguiente: \item Reiniciar el servicio de DNS Bind9. \end{enumerate} +Una vez creado el {\it script}, será de nuestro interés correrlo de forma +periódica. Para esto lo más útil es un {\it cronjob}. Como es poco probable que +se actualice con frecuencia esta lista, podemos permitirnos actualizarla una vez +al mes. Para hacer esto, lo primero que hacemos es mover el {\it script} al +directorio {\tt /usr/local/bin} con permisos de ejecución (asumimos que se +denomina {\tt update-blacklist.sh}): + +\begin{minted}[ + frame=lines, + bgcolor=LightGray, + framesep=2mm, + baselinestretch=1 + ]{console} +# install -m 755 ./update-blacklist.sh /usr/local/bin +\end{minted} + +Una vez instalado, podemos configurar el {\it crontjob} con el comando {\tt +crontab -e}, y en el archivo añadir una línea que sea de la manera siguiente: + +\begin{minted}[ + frame=lines, + bgcolor=LightGray, + framesep=2mm, + baselinestretch=1 + ]{console} +0 0 1 * * /usr/local/bin/update-blacklist.sh +\end{minted} + +Esta línea lo que hace es correr nuestro {\it script} a la media noche (00:00) +cada día 1 de cualquier mes y cualquier día de la semana (estos últimos +parámetros se especifican utilizando el símbolo {\tt *}). + El fichero de configuración de la lista negra ha de tener un dominio por cada línea. El dominio de ha de definir de la forma siguiente (\cite{bind-sinkhole}): @@ -596,7 +628,7 @@ línea. El dominio de ha de definir de la forma siguiente frame=lines, bgcolor=LightGray, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{text} zone "" {type master; file "/etc/bind/zones/master/ blockeddomains.db";}; @@ -612,11 +644,11 @@ de la manera siguiente (\cite{bind-sinkhole}): bgcolor=LightGray, linenos, framesep=2mm, - baselinestretch=1.2 + baselinestretch=1 ]{text} ; ; BIND data file for example.local -;$ +; $TTL 3600 @ IN SOA ns1.example.local. info.example.local. ( 2014052101 ; Serial @@ -631,10 +663,6 @@ $TTL 3600 * IN AAAA ::1 \end{minted} -% TODO: -% - Servidor Web -% - Script PHP - \begin{figure}[h] \centering \includegraphics[width=0.75\textwidth]{imgs/router-dns.png} @@ -648,8 +676,84 @@ Para hacer esto, en el panel de control del {\it router} se puede encontrar esta configuración en un apartado parecido al que se ve en la figura \ref{fig:router-dns}. Simplemente se rellena con la dirección IP de nuestro servidor en la red interna y ya debería de estar configurado como servidor DNS. +Tan sólo es necesario reinicar el servicio de la forma siguiente: + +\begin{minted}[ + frame=lines, + bgcolor=LightGray, + framesep=2mm, + baselinestretch=1 + ]{console} +# systemctl restart bind9 +\end{minted} \subsubsection{Instalación y Configuración del Servicio HTTP} + +La configuración de nuestro servicio HTTP requiere, en primer lugar, la +instalación del {\it software} requerido, siendo este Nginx, pero también +instalando los requisitos para que Nginx pueda tratar con {\it scripts} en PHP, +enviándolos a un CGI que lo interpretará con el intérprete de PHP: + +\begin{minted}[ + frame=lines, + bgcolor=LightGray, + framesep=2mm, + baselinestretch=1 + ]{console} +# apt install nginx php php-fpm +\end{minted} + +Al instalar estos paquetes, encontraremos, igual que con Bind9, que los +servicios de Nginx y PHP-FPM ya están en funcionamiento. Queremos hacer una +modificación del archivo por defecto de configuración; el sitio {\it default} +que se encuentra en el fichero {\tt /etc/nginx/sites-available/default}. Este +archivo nos sirve generalmente como está escrito, ya que toda petición HTTP que +recibe el servidor lo interpretará esta configuración, y como tiene que +responder a cualquier petición a cualquier dominio bloqueado, esto nos interesa. +Sólo hay tres cosas importantes que cambiar: + +\begin{enumerate}[i] + \item Eliminar la línea que contiene la directiva {\tt server\_name}. + \item Añadir {\tt index.php} a la lista de archivos que utilizar por defecto + en la directiva {\tt index}. + \item Habilitar la gestión de páginas PHP por medio de PHP-FPM. +\end{enumerate} + +El código de configuración para hacer lo segundo está ya dentro del archivo de +configuración {\tt default}, tan sólo hace falta descomentarlo. Al descomentar +ese bloque debería de parecer a lo siguiente: + +\begin{minted}[ + frame=lines, + bgcolor=LightGray, + framesep=2mm, + linenos, + baselinestretch=1 + ]{nginx} +# pass PHP scripts to FastCGI server +# +location ~ \.php$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/run/php/php-fpm.sock; +} +\end{minted} + +Una vez que esté bien configurado, podemos reiniciar el servicio con el comando +siguiente: + +\begin{minted}[ + frame=lines, + bgcolor=LightGray, + framesep=2mm, + baselinestretch=1 + ]{console} +# systemctl reload nginx +\end{minted} + +Una vez configurado podemos verificar que funciona correctamente corriendo un +comando {\tt curl} sobre la IP de nuestro servidor. Si responde sin error un +código HTML entonces todo ha funcionado correctamente. + \subsubsection{Instalación de la Página PHP} \section{Conclusiones y Propuestas de Mejora}