ASO::final-project: Add firewall and certificate documentation
Signed-off-by: Nicolás A. Ortega Froysa <nicolas@ortegas.org>
This commit is contained in:
parent
600f942dc2
commit
a17f82332d
@ -1,10 +1,10 @@
|
||||
\babel@toc {spanish}{}
|
||||
\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 {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 {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 {7}{\ignorespaces Página de Nginx por defecto.\relax }}{13}{figure.caption.12}%
|
||||
\contentsline {figure}{\numberline {8}{\ignorespaces Instalación de MediaWiki.\relax }}{15}{figure.caption.13}%
|
||||
\contentsline {figure}{\numberline {9}{\ignorespaces Página inicial de nuestro Wiki.\relax }}{16}{figure.caption.14}%
|
||||
\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 }}{18}{figure.caption.13}%
|
||||
\contentsline {figure}{\numberline {9}{\ignorespaces Página inicial de nuestro Wiki.\relax }}{18}{figure.caption.14}%
|
||||
|
Binary file not shown.
@ -226,12 +226,6 @@ estos servicios directamente:
|
||||
# systemctl stop systemd-resolved.service
|
||||
\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
|
||||
networking} y veremos como hace uso de la configuración especificada. Esto lo
|
||||
hacemos del modo siguiente:
|
||||
@ -241,6 +235,33 @@ hacemos del modo siguiente:
|
||||
# ifup enp0s3
|
||||
\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}
|
||||
|
||||
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
|
||||
\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}
|
||||
|
||||
\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
|
||||
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
|
||||
@ -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
|
||||
\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
|
||||
configuración de el usuario administrador. Aquí meteremos un usuario que se
|
||||
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!]
|
||||
\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.}
|
||||
\label{fig:wiki-view}
|
||||
\end{figure}
|
||||
|
@ -6,10 +6,11 @@
|
||||
\contentsline {subsection}{\numberline {3.2}Post-Instalación}{4}{subsection.3.2}%
|
||||
\contentsline {section}{\numberline {4}Active Directory}{7}{section.4}%
|
||||
\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 {section}{\numberline {5}Terminal de Administración}{10}{section.5}%
|
||||
\contentsline {section}{\numberline {6}Base de Datos}{10}{section.6}%
|
||||
\contentsline {subsection}{\numberline {4.2}Configuración en Linux}{10}{subsection.4.2}%
|
||||
\contentsline {section}{\numberline {5}Terminal de Administración}{11}{section.5}%
|
||||
\contentsline {section}{\numberline {6}Base de Datos}{11}{section.6}%
|
||||
\contentsline {section}{\numberline {7}Servidor Web}{13}{section.7}%
|
||||
\contentsline {subsection}{\numberline {7.1}Nginx}{13}{subsection.7.1}%
|
||||
\contentsline {subsection}{\numberline {7.2}MediaWiki}{14}{subsection.7.2}%
|
||||
\contentsline {section}{\numberline {8}Derechos de Autor y Licencia}{17}{section.8}%
|
||||
\contentsline {subsection}{\numberline {7.2}Certificado SSL}{15}{subsection.7.2}%
|
||||
\contentsline {subsection}{\numberline {7.3}MediaWiki}{17}{subsection.7.3}%
|
||||
\contentsline {section}{\numberline {8}Derechos de Autor y Licencia}{19}{section.8}%
|
||||
|
Loading…
Reference in New Issue
Block a user