ASO::final-project: Add firewall and certificate documentation

Signed-off-by: Nicolás A. Ortega Froysa <nicolas@ortegas.org>
This commit is contained in:
Nicolás A. Ortega Froysa 2023-02-09 16:56:30 +01:00
parent 600f942dc2
commit a17f82332d
4 changed files with 154 additions and 32 deletions

View File

@ -1,10 +1,10 @@
\babel@toc {spanish}{} \babel@toc {spanish}{}
\contentsline {figure}{\numberline {1}{\ignorespaces Mapa de intrenet.\relax }}{2}{figure.caption.4}% \contentsline {figure}{\numberline {1}{\ignorespaces Mapa de intrenet.\relax }}{2}{figure.caption.4}%
\contentsline {figure}{\numberline {2}{\ignorespaces Selección de {\it software} adicional.\relax }}{5}{figure.caption.7}% \contentsline {figure}{\numberline {2}{\ignorespaces Selección de {\it software} adicional.\relax }}{5}{figure.caption.7}%
\contentsline {figure}{\numberline {3}{\ignorespaces Proceso instalación de Active Directory.\relax }}{7}{figure.caption.8}% \contentsline {figure}{\numberline {3}{\ignorespaces Proceso instalación de Active Directory.\relax }}{8}{figure.caption.8}%
\contentsline {figure}{\numberline {4}{\ignorespaces Active Directory instalado.\relax }}{9}{figure.caption.9}% \contentsline {figure}{\numberline {4}{\ignorespaces Active Directory instalado.\relax }}{9}{figure.caption.9}%
\contentsline {figure}{\numberline {5}{\ignorespaces Cambiar contraseña del usuario <<Administrator>>.\relax }}{9}{figure.caption.10}% \contentsline {figure}{\numberline {5}{\ignorespaces Cambiar contraseña del usuario <<Administrator>>.\relax }}{9}{figure.caption.10}%
\contentsline {figure}{\numberline {6}{\ignorespaces Habilitando la opción de crear una carpeta home el entrar.\relax }}{11}{figure.caption.11}% \contentsline {figure}{\numberline {6}{\ignorespaces Habilitando la opción de crear una carpeta home el entrar.\relax }}{11}{figure.caption.11}%
\contentsline {figure}{\numberline {7}{\ignorespaces Página de Nginx por defecto.\relax }}{13}{figure.caption.12}% \contentsline {figure}{\numberline {7}{\ignorespaces Página de Nginx por defecto.\relax }}{14}{figure.caption.12}%
\contentsline {figure}{\numberline {8}{\ignorespaces Instalación de MediaWiki.\relax }}{15}{figure.caption.13}% \contentsline {figure}{\numberline {8}{\ignorespaces Instalación de MediaWiki.\relax }}{18}{figure.caption.13}%
\contentsline {figure}{\numberline {9}{\ignorespaces Página inicial de nuestro Wiki.\relax }}{16}{figure.caption.14}% \contentsline {figure}{\numberline {9}{\ignorespaces Página inicial de nuestro Wiki.\relax }}{18}{figure.caption.14}%

View File

@ -226,12 +226,6 @@ estos servicios directamente:
# systemctl stop systemd-resolved.service # systemctl stop systemd-resolved.service
\end{minted} \end{minted}
%Una vez acabado debemos de hacer que el archivo sea inmutable, ya que muchos
%servicios intentan modificar este fichero. Para eso corremos simplemente el
%comando {\tt chattr +i /etc/resolv.conf}. Una vez configurado ya podemos
%reiniciar el servicio de {\it networking} y veremos como hace uso de la
%configuración especificada. Esto lo hacemos del modo siguiente:
Ya cuando hayamos configurado esto, podemos reiniciar el servicio de {\it Ya cuando hayamos configurado esto, podemos reiniciar el servicio de {\it
networking} y veremos como hace uso de la configuración especificada. Esto lo networking} y veremos como hace uso de la configuración especificada. Esto lo
hacemos del modo siguiente: hacemos del modo siguiente:
@ -241,6 +235,33 @@ hacemos del modo siguiente:
# ifup enp0s3 # ifup enp0s3
\end{minted} \end{minted}
Luego también queremos configurar, particularmente en el servidor de web que
estará conectado a {\it internet}, y será el más vulnerable a ataques. Para
esto, hemos de instalar y configurar el programa Firewalld. Usaremos este {\it
firewall} porque es uno de los más conocidos, y es usado (y mantenido) por la
empresa Red Hat. Para esto corremos el comando siguiente para instalar:
\begin{minted}{console}
# apt install firewalld
\end{minted}
Ya cuando se instala, estará activado e iniciado, y de hecho vendrá ya con
excepciones para SSH y DHCPv6-client (en la zona {\it public}). Como en nuestra
máquina de servidor web queremos tener abiertos los puertos para acceder a HTTP
y HTTPS, lo activaremos con el comando siguiente:
\begin{minted}{console}
# firewall-cmd --permanent --zone=public --add-service=http
success
# firewall-cmd --permanent --zone=public --add-service=https
success
# firewall-cmd --reload
success
\end{minted}
Al hacer esto, ya estará disponible nuestro {\it firewall} para prohibir el
acceso a otro tipo de conexiones que no sean HTTP o HTTPS.
\section{Active Directory} \section{Active Directory}
En la máquina Windows Server 2019 montaremos el servicio de Active Directory. En la máquina Windows Server 2019 montaremos el servicio de Active Directory.
@ -584,8 +605,124 @@ nginx: configuration file /etc/nginx/nginx.conf test is
successful successful
\end{minted} \end{minted}
\subsection{Certificado SSL}
A nosotros también nos interesa que los usuarios tengan acceso a un servicio
seguro, que puedan conectarse por medio de HTTPS. Para eso es necesario crear un
certificado SSL que podamos usar. Normalmente esto se haría desde una entidad
autenticadora (como {\it Let's Encrypt}), pero nosotros vamos a hacer esto de
forma {\it autofirmada}. Para esto hemos de crear el certificado además de la
llave asociada. Esto lo podemos hacer con el comando {\tt openssl} de la forma
siguiente:
\begin{minted}{console}
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/nortega.local.key \
-out /etc/ssl/certs/nortega.local.crt
\end{minted}
Esto nos generará tanto el certificado localizado en el directorio {\tt
/etc/ssl/certs}, como la clave {\bf privada} (que no se debe de compartir) en el
directorio {\tt /etc/ssl/private}.
También queremos generar un grupo Diffie-Hellman para la generación de claves de
sesiones privadas. Esto permite que las sesiones antiguas puedan seguir siendo
privadas aunque haya habido una fuga de la clave de sesión. Este proceso puede
tardar un rato dependiendo de las capacidades del servidor.
\begin{minted}{console}
# openssl dhparam -out /etc/nginx/dhparam.pem 4096
\end{minted}
Una vez que lo hayamos generado, tenemos que añadir esto a nuestro servidor web.
Para esto, primero crearemos un {\it snippet}, que son pequeños trozos de código
de configuración en Nginx reutilizables. En {\tt /etc/nginx/snippets} crearemos
un archivo con el nombre {\tt self-signed.conf} que contendrá lo siguiente:
\begin{minted}{nginx}
ssl_certificate /etc/ssl/certs/nortega.local.crt;
ssl_certificate_key /etc/ssl/private/nortega.local.key;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:
DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:
DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ecdh_curve secp384r1;
\end{minted}
Una vez creado este archivo, ya podemos modificar nuestro archivo de
configuración de Nginx, no sólo para utilizar este certificado y proveer un
servicio HTTPS, sino también para redireccionar todo el tráfico HTTP a nuestro
servicio HTTPS (para forzar una conexión segura). Para esto, nuestro archivo
{\tt wiki.conf} que hemos editado anteriormente lo debemos de cambiar para que
se parezca a lo siguiente:
\begin{minted}{nginx}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/self-signed.conf;
root /var/www/wiki;
index index.php index.html index.htm;
server_name nortega.local;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
server {
listen 80;
listen [::]:80;
server_name nortega.local;
return 301 https://$server_name$request_uri;
}
\end{minted}
Ya con esto podremos reiniciar el servicio y ya se podrá acceder por medio de
HTTPS, y si se intenta acceder por medio de HTTP se redireccionará de forma
permanente (el código {\tt 301}) al servicio HTTPS.
\subsection{MediaWiki} \subsection{MediaWiki}
\begin{figure}
\centering
\begin{subfigure}{0.3\textwidth}
\includegraphics[width=0.95\textwidth]{imgs/mw-00-database-conf.png}
\caption{Configuración de la base de datos.}
\label{fig:mw-database-conf}
\end{subfigure}
\hfill
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=0.95\textwidth]{imgs/mw-01-install-success.png}
\caption{Finalización de la instalación de MediaWiki.}
\label{fig:mw-install-success}
\end{subfigure}
\caption{Instalación de MediaWiki.}
\end{figure}
Ya podemos instalar lo viene a ser nuestro servicio de MediaWiki en nuestro Ya podemos instalar lo viene a ser nuestro servicio de MediaWiki en nuestro
servidor web. Siguiendo las instrucciones de MediaWiki, lo primero que hemos de servidor web. Siguiendo las instrucciones de MediaWiki, lo primero que hemos de
hacer es descargar el ZIP de su página principal, y extraerlo sobre nuestro hacer es descargar el ZIP de su página principal, y extraerlo sobre nuestro
@ -600,22 +737,6 @@ información para conectarse de forma remote a nuestro servidor de base de datos
que se ubica en la dirección IP de 10.0.2.10 (figura que se ubica en la dirección IP de 10.0.2.10 (figura
\ref{fig:mw-database-conf}). \ref{fig:mw-database-conf}).
\begin{figure}[ht!]
\centering
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=0.95\textwidth]{imgs/mw-00-database-conf.png}
\caption{Configuración de la base de datos.}
\label{fig:mw-database-conf}
\end{subfigure}
\hfill
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=0.95\textwidth]{imgs/mw-01-install-success.png}
\caption{Finalización de la instalación de MediaWiki.}
\label{fig:mw-install-success}
\end{subfigure}
\caption{Instalación de MediaWiki.}
\end{figure}
Más adelante en el proceso de configuración de MediaWiki nos pedirá la Más adelante en el proceso de configuración de MediaWiki nos pedirá la
configuración de el usuario administrador. Aquí meteremos un usuario que se configuración de el usuario administrador. Aquí meteremos un usuario que se
llamará <<Admin>>, por facilidad de uso, y con la contraseña <<MyAdminPass>>. llamará <<Admin>>, por facilidad de uso, y con la contraseña <<MyAdminPass>>.
@ -631,7 +752,7 @@ y nos saldrá la Wiki que acabamos de crear.
\begin{figure}[ht!] \begin{figure}[ht!]
\centering \centering
\includegraphics[width=0.75\textwidth]{imgs/mw-02-wiki-view.png} \includegraphics[width=0.5\textwidth]{imgs/mw-02-wiki-view.png}
\caption{Página inicial de nuestro Wiki.} \caption{Página inicial de nuestro Wiki.}
\label{fig:wiki-view} \label{fig:wiki-view}
\end{figure} \end{figure}

View File

@ -6,10 +6,11 @@
\contentsline {subsection}{\numberline {3.2}Post-Instalación}{4}{subsection.3.2}% \contentsline {subsection}{\numberline {3.2}Post-Instalación}{4}{subsection.3.2}%
\contentsline {section}{\numberline {4}Active Directory}{7}{section.4}% \contentsline {section}{\numberline {4}Active Directory}{7}{section.4}%
\contentsline {subsection}{\numberline {4.1}Instalación}{7}{subsection.4.1}% \contentsline {subsection}{\numberline {4.1}Instalación}{7}{subsection.4.1}%
\contentsline {subsection}{\numberline {4.2}Configuración en Linux}{8}{subsection.4.2}% \contentsline {subsection}{\numberline {4.2}Configuración en Linux}{10}{subsection.4.2}%
\contentsline {section}{\numberline {5}Terminal de Administración}{10}{section.5}% \contentsline {section}{\numberline {5}Terminal de Administración}{11}{section.5}%
\contentsline {section}{\numberline {6}Base de Datos}{10}{section.6}% \contentsline {section}{\numberline {6}Base de Datos}{11}{section.6}%
\contentsline {section}{\numberline {7}Servidor Web}{13}{section.7}% \contentsline {section}{\numberline {7}Servidor Web}{13}{section.7}%
\contentsline {subsection}{\numberline {7.1}Nginx}{13}{subsection.7.1}% \contentsline {subsection}{\numberline {7.1}Nginx}{13}{subsection.7.1}%
\contentsline {subsection}{\numberline {7.2}MediaWiki}{14}{subsection.7.2}% \contentsline {subsection}{\numberline {7.2}Certificado SSL}{15}{subsection.7.2}%
\contentsline {section}{\numberline {8}Derechos de Autor y Licencia}{17}{section.8}% \contentsline {subsection}{\numberline {7.3}MediaWiki}{17}{subsection.7.3}%
\contentsline {section}{\numberline {8}Derechos de Autor y Licencia}{19}{section.8}%