TFC: add section on Nginx
Signed-off-by: Nicolás Ortega Froysa <nicolas@ortegas.org>
This commit is contained in:
parent
e7e2e45e8c
commit
fa5d40e9f6
Binary file not shown.
@ -401,7 +401,7 @@ utilizando el comando siguiente:
|
|||||||
frame=lines,
|
frame=lines,
|
||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{console}
|
]{console}
|
||||||
# dhclient -v
|
# dhclient -v
|
||||||
Internet Systems Consortium DHCP Client 4.4.1
|
Internet Systems Consortium DHCP Client 4.4.1
|
||||||
@ -428,7 +428,7 @@ mirando el archivo {\tt /etc/resolv.conf}:
|
|||||||
frame=lines,
|
frame=lines,
|
||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{console}
|
]{console}
|
||||||
# cat /etc/resolv.conf
|
# cat /etc/resolv.conf
|
||||||
nameserver 192.168.1.135
|
nameserver 192.168.1.135
|
||||||
@ -449,7 +449,7 @@ nuestro servidor es {\tt 192.168.1.135}:
|
|||||||
frame=lines,
|
frame=lines,
|
||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{console}
|
]{console}
|
||||||
# nslookup porn.com
|
# nslookup porn.com
|
||||||
Server: 192.168.1.135
|
Server: 192.168.1.135
|
||||||
@ -493,7 +493,7 @@ de la tarjeta SD corresponde al fichero especial {\tt /dev/mmcblk1}:
|
|||||||
frame=lines,
|
frame=lines,
|
||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{console}
|
]{console}
|
||||||
# unxz Armbian_<version>_Rock64_<codename>_current_<version>.img.xz
|
# unxz Armbian_<version>_Rock64_<codename>_current_<version>.img.xz
|
||||||
# dd if=Armbian_<version>_Rock64_<codename>_current_<version>.img \
|
# dd if=Armbian_<version>_Rock64_<codename>_current_<version>.img \
|
||||||
@ -543,7 +543,7 @@ que instalará el paquete que precisamos además de todas sus dependencias:
|
|||||||
frame=lines,
|
frame=lines,
|
||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{console}
|
]{console}
|
||||||
# apt install bind9
|
# apt install bind9
|
||||||
\end{minted}
|
\end{minted}
|
||||||
@ -561,7 +561,7 @@ bloquear. El archivo de configuración ha de ser como lo siguiente
|
|||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
linenos,
|
linenos,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{text}
|
]{text}
|
||||||
include "/etc/bind/blacklisted.zones";
|
include "/etc/bind/blacklisted.zones";
|
||||||
|
|
||||||
@ -588,6 +588,38 @@ esta lista, haciendo lo siguiente:
|
|||||||
\item Reiniciar el servicio de DNS Bind9.
|
\item Reiniciar el servicio de DNS Bind9.
|
||||||
\end{enumerate}
|
\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
|
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
|
línea. El dominio de ha de definir de la forma siguiente
|
||||||
(\cite{bind-sinkhole}):
|
(\cite{bind-sinkhole}):
|
||||||
@ -596,7 +628,7 @@ línea. El dominio de ha de definir de la forma siguiente
|
|||||||
frame=lines,
|
frame=lines,
|
||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{text}
|
]{text}
|
||||||
zone "<dominio>" {type master; file "/etc/bind/zones/master/
|
zone "<dominio>" {type master; file "/etc/bind/zones/master/
|
||||||
blockeddomains.db";};
|
blockeddomains.db";};
|
||||||
@ -612,11 +644,11 @@ de la manera siguiente (\cite{bind-sinkhole}):
|
|||||||
bgcolor=LightGray,
|
bgcolor=LightGray,
|
||||||
linenos,
|
linenos,
|
||||||
framesep=2mm,
|
framesep=2mm,
|
||||||
baselinestretch=1.2
|
baselinestretch=1
|
||||||
]{text}
|
]{text}
|
||||||
;
|
;
|
||||||
; BIND data file for example.local
|
; BIND data file for example.local
|
||||||
;$
|
;
|
||||||
$TTL 3600
|
$TTL 3600
|
||||||
@ IN SOA ns1.example.local. info.example.local. (
|
@ IN SOA ns1.example.local. info.example.local. (
|
||||||
2014052101 ; Serial
|
2014052101 ; Serial
|
||||||
@ -631,10 +663,6 @@ $TTL 3600
|
|||||||
* IN AAAA ::1
|
* IN AAAA ::1
|
||||||
\end{minted}
|
\end{minted}
|
||||||
|
|
||||||
% TODO:
|
|
||||||
% - Servidor Web
|
|
||||||
% - Script PHP
|
|
||||||
|
|
||||||
\begin{figure}[h]
|
\begin{figure}[h]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.75\textwidth]{imgs/router-dns.png}
|
\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
|
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
|
\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.
|
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}
|
\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}
|
\subsubsection{Instalación de la Página PHP}
|
||||||
|
|
||||||
\section{Conclusiones y Propuestas de Mejora}
|
\section{Conclusiones y Propuestas de Mejora}
|
||||||
|
Loading…
Reference in New Issue
Block a user