329 lines
12 KiB
TeX
329 lines
12 KiB
TeX
\documentclass[12pt,a4paper,titlepage]{article}
|
|
\usepackage[spanish]{babel}
|
|
\usepackage{hyperref}
|
|
\usepackage{graphicx}
|
|
\usepackage{subcaption}
|
|
\usepackage{minted}
|
|
|
|
\title{Proyecto Final ASO}
|
|
\author{Nicolás A. Ortega Froysa}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
|
|
\tableofcontents
|
|
\listoffigures
|
|
\listoftables
|
|
|
|
\pagebreak
|
|
|
|
\section{Resumen de Topología}
|
|
|
|
\begin{figure}[ht!]
|
|
\centering
|
|
\includegraphics[width=0.75\textwidth]{imgs/intranet-map.png}
|
|
\caption{Mapa de intrenet.}
|
|
\label{fig:intranet-map}
|
|
\end{figure}
|
|
|
|
El objetivo será montar una red interna que se asemeja a lo visto en la figura
|
|
\ref{fig:intranet-map}. Se ha decido montar el servidor LDAP con Windows Server
|
|
2019, ya que ya tuvimos una máquina de este tipo, y nuestro superior aconsejaba
|
|
el uso de Active Directory para servir de LDAP. Todo lo demás hemos decidido
|
|
usar Debian, ya que es una distribución estable, y así evitamos que las
|
|
actualizaciones rompan nuestras máquinas. También tiene una comunidad muy grande
|
|
para proveer soporte, aunque éste no sea de carácter profesional. Para servidor
|
|
web hemos decidido por Nginx por familiaridad y también por facilidad de uso.
|
|
Para nuestro servidor de bases de datos se ha elegido a MariaDB, también por
|
|
familiaridad, pero también por facilidad de instalación en Debian respecto a
|
|
otros más comerciales como Oracle. Finalmente nuestro terminal administrador,
|
|
que también corre Debian, servirá para conectarse y administrar los demás
|
|
dispositivos por medio de SSH, en el caso de los servidores Debian, o VNC en el
|
|
caso del Windows Server.
|
|
|
|
En cuanto a la identificación de cada dispositivo, usaremos las direcciones IP y
|
|
los nombres de {\it host} que aparecen en la tabla \ref{tbl:ip-table}.
|
|
|
|
\begin{table}[ht!]
|
|
\centering
|
|
\begin{tabular}{|c|c|c|}
|
|
\hline
|
|
{\bf Nombre} & {\bf Servicio} & {\bf Dirección IP} \\ \hline
|
|
{\tt ad-serv} & Active Directory & 10.0.2.50 \\
|
|
{\tt web0} & Servidor Web & 10.0.2.5 \\
|
|
{\tt db-serv} & Base de Datos & 10.0.2.10 \\
|
|
{\tt admin} & Administración & 10.0.2.2 \\ \hline
|
|
\end{tabular}
|
|
\caption{Tabla de direcciones IP.}
|
|
\label{tbl:ip-table}
|
|
\end{table}
|
|
|
|
Para nuestra red, usaremos el dominio de {\tt nortega.local}. Todos nuestros
|
|
dispositivos tendrán un nombre por debajo de este dominio de acuerdo a su nombre
|
|
de {\it host}.
|
|
|
|
A todos nuestros dispositivos tendremos al menos una tarjeta de red para
|
|
conectarse a la red local <<ASO>>. Esto se hará en forma de una Red NAT. El
|
|
servidor web ({\tt web0}) en particular tendrá otra tarjeta red configurado como
|
|
Adaptador Puente Promiscuo, que habilitará la conexión a él desde el exterior.
|
|
|
|
\section{Configuración Inicial Windows Server}
|
|
|
|
El servidor Windows necesita más recursos, ya que consume más por causa de todo
|
|
lo que tiene instalado por defecto -- no es una instalación mínima, por así
|
|
decirlo. Así que asignaremos a él las especificaciones siguientes:
|
|
|
|
\begin{itemize}
|
|
\item Procesadores: 2
|
|
\item Memoria: 4096 MB
|
|
\item Disco: 50 GB
|
|
\end{itemize}
|
|
|
|
Instalaremos Windows Server utilizando las opciones por defecto. No hay mucho
|
|
misterio. Es darle para adelante en cada paso.
|
|
|
|
\section{Configuración Inicial Linux}
|
|
|
|
Nuestros servidores Debian no ocupan mucho espacio en sí, como lo hace Windows
|
|
Server, por eso nos podemos permitir reducir los recursos alojados a éstos. A
|
|
estas máquinas alojaremos los recursos siguientes a todos:
|
|
|
|
\begin{itemize}
|
|
\item Procesadores: 1
|
|
\item Memoria: 1024 MB
|
|
\item Disco: 10 GB
|
|
\end{itemize}
|
|
|
|
\subsection{Instalación}
|
|
|
|
En la instalación de Debian, queremos modificar varias cosas de forma
|
|
particular. Primero, el dominio que queremos configurar es, como se mencionó
|
|
anteriormente, {\tt nortega.local}. También, a la hora de especificar un
|
|
{\it hostname}, usamos el especificado anteriormente para cada servidor. Esto se
|
|
hará en la configuración de red.
|
|
|
|
Cuando llega la hora de escribir las particiones al disco, vamos a usar una
|
|
tabla de LVM para permitir más flexibilidad en cuanto a modificación del tamaño
|
|
de las distintas particiones, y sobre todo poder ampliar su tamaño con
|
|
facilidad, y poder hacerlo {\it en caliente}. Asignaremos todo el disco a un
|
|
mismo grupo, y crearemos las particiones de acuerdo a la tabla
|
|
\ref{tbl:debian-partitions}.
|
|
|
|
\begin{table}[ht!]
|
|
\centering
|
|
\begin{tabular}{|l|l|}
|
|
\hline
|
|
{\bf Mountpoint} & {\bf Tamaño} \\ \hline
|
|
{\tt /} & 1.9 GB \\
|
|
{\tt /boot} & 451 MB \\
|
|
{\tt /tmp} & 463 MB \\
|
|
{\tt /usr} & 3.7 GB \\
|
|
{\tt /var} & 2.8 GB \\
|
|
Swap & 496 MB \\ \hline
|
|
\end{tabular}
|
|
\caption{Tabla de particiones lógicas en los sistemas Debian.}
|
|
\label{tbl:debian-partitions}
|
|
\end{table}
|
|
|
|
En cuanto a los usuarios, crearemos un usuario {\it proxy}; es decir, sólo sirve
|
|
para luego pasarte al usuario root. En el caso este, se ha creado el usuario
|
|
{\tt nicolas} con contraseña {\tt nicolas} -- en realidad poner otra contraseña
|
|
más compleja. Para el usuario {\tt root} le asignaremos la contraseña {\tt
|
|
toor}.
|
|
|
|
\begin{figure}[ht!]
|
|
\includegraphics[width=0.75\textwidth]{imgs/debian-install-choices.png}
|
|
\caption{Selección de {\it software} adicional.}
|
|
\label{fig:debian-install-choices}
|
|
\end{figure}
|
|
|
|
Cuando nos pregunta si hay otros paquetes que queremos instalar queremos
|
|
especificar los <<standard system utilities>> y también el <<SSH server>>. No
|
|
instalamos <<web server>> porque esto instalará Apache, que no nos interesa.
|
|
Debería de aparecer como en la figura \ref{fig:debian-install-choices}.
|
|
|
|
El resto de la instalación se realizará de forma normal, eligiendo las opciones
|
|
correspondientes.
|
|
|
|
\subsection{Post-Instalación}
|
|
|
|
Una vez instalado, debemos de configurar nuestros servidores Debian en cuestión
|
|
de configuración red, sobre todo nuestro servidor DNS -- que será el servidor de
|
|
Windows con Active Directory -- y también se configurará la dirección IP de
|
|
forma estática.
|
|
|
|
Primero, para configurar las direcciones IP estáticas. Para esto, debemos de
|
|
deshabiltar el servicio de NetworkManager que lo tiene Debian por defecto:
|
|
|
|
\begin{minted}{bash}
|
|
systemctl stop network-manager.service
|
|
systemctl disable network-manager.service
|
|
\end{minted}
|
|
|
|
Una vez deshabilitado el NetworkManager, ya podemos empezar a modificar los
|
|
archivos de configuración de red. El primer paso será definir una dirección IP
|
|
estática. Para empezar, encontramos cuál es el nombre de nuestro interfaz, que
|
|
se puede hacer utilizando el comando {\tt ip a}.
|
|
|
|
\begin{minted}{text}
|
|
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state
|
|
UNKNOWN group default qlen 1000
|
|
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
|
inet 127.0.0.1/8 scope host lo
|
|
valid_lft forever preferred_lft forever
|
|
inet6 ::1/128 scope host
|
|
valid_lft forever preferred_lft forever
|
|
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
|
|
pfifo_fast state UP group default qlen 1000
|
|
link/ether 08:00:27:31:09:eb brd ff:ff:ff:ff:ff:ff
|
|
inet 10.0.2.2/24 brd 172.16.40.255 scope global dynamic
|
|
enp0s3
|
|
valid_lft 595981sec preferred_lft 595981sec
|
|
inet6 fe80::a00:27ff:fe76:1cdf/64 scope link
|
|
valid_lft forever preferred_lft forever
|
|
\end{minted}
|
|
|
|
Vemos en este ejemplo que queremos hacer uso de la interfaz {\tt enp0s3}, que es
|
|
la interfaz red de {\it ethernet}. Luego, en el archivo {\tt
|
|
/etc/network/interfaces}, vamos a configurarlo de la forma siguiente asumiendo
|
|
aquel interfaz y que queremos la dirección IP estática 10.0.2.2:
|
|
|
|
\begin{minted}{text}
|
|
# This file describes the network interfaces available on your system
|
|
# and how to activate them. For more information, see interfaces(5).
|
|
|
|
source /etc/network/interfaces.d/*
|
|
|
|
# The loopback network interface
|
|
auto lo
|
|
iface lo inet loopback
|
|
|
|
# The primary network interface
|
|
allow-hotplug enp0s3
|
|
iface enp0s3 inet static
|
|
address 10.0.2.2
|
|
netmask 255.255.255.0
|
|
\end{minted}
|
|
|
|
También queremos configurar nuestro servidor de DNS, que será el Windows Server
|
|
2019 con Active Directory. Para esto hemos de modificar el archivo {\tt
|
|
/etc/resolv.conf} con el contenido siguiente:
|
|
|
|
\begin{minted}{text}
|
|
domain nortega.local
|
|
search nortega.local
|
|
nameserver 10.0.2.50
|
|
\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:
|
|
|
|
\begin{minted}{bash}
|
|
systemctl restart networking.service
|
|
ifup enp0s3
|
|
\end{minted}
|
|
|
|
%\section{Active Directory}
|
|
|
|
% STUB
|
|
|
|
\section{Terminal de Administración}
|
|
|
|
En este dispositivo lo más importante que debemos instalar, para el propósito de
|
|
administrar los servidores de la red, es SSH. Esto debería de estar disponible
|
|
ya si hemos instalado nuestro Debian con la opción <<SSH server>> mencionado
|
|
antes (que instala el cliente y el servidor).
|
|
|
|
\section{Base de Datos}
|
|
|
|
La base de datos, como se explicó anteriormente, será un servidor con el
|
|
programa MariaDB. Lo primero es instalar MariaDB como tal:
|
|
|
|
\begin{minted}{bash}
|
|
apt update
|
|
apt install mariadb-server
|
|
\end{minted}
|
|
|
|
Aunque el paquete se llama {\tt mariadb-server}, incluye también un cliente muy
|
|
espartano: {\tt mysql}. Pero antes de interactuar con la base de datos queremos
|
|
finalizar la instalación. Esto se hace con el comando siguiente: {\tt
|
|
mysql\_secure\_installation}.
|
|
|
|
Después de configurar la contraseña de {\tt root}, veremos que nos pide si la
|
|
autenticación debería de ser por <<unix\_socket>>. Esto no es nuestro caso ya
|
|
que queremos conectarnos remotamente desde nuestro servidor web, así que
|
|
respondemos que no: <<n>>. Luego nos preguntará si queremos eliminar los
|
|
usuarios anónimos. Esto puede ser buena idea para evitar que aquellos que no
|
|
tengan la autorización para acceder a nuestro servidor de base de datos no lo
|
|
puedan hacer, así que respondemos que sí: <<y>>. La próxima pregunta tiene que
|
|
ver con el acceso remoto al usuario {\tt root} de la base de datos, y si se
|
|
debería de permitir. Esto puede ser un riesgo de seguridad, ya que {\tt root}
|
|
tiene privilegios para acceder y manipular todos los datos que tenemos. También,
|
|
si nosotros queremos acceder a este usuario, lo podemos hacer accediendo primero
|
|
a la máquina por SSH desde el terminal administrador y luego entrando localmente
|
|
como el usuario {\tt root} de la base de datos. Por eso lo racional es no
|
|
permitir (o {\it despermitir}): <<y>>. La próxima opción es para eliminar la
|
|
base de datos de prueba y todo acceso a ello. Como no tendremos necesidad de
|
|
utilizarla, podemos eliminarla: <<y>>. Finalmente nos pregunta si queremos
|
|
actualizar todos los privilegios en este momento. Ya se hará en un futuro
|
|
(cuando reiniciamos la máquina, por ejemplo), pero si queremos empezar a
|
|
trabajar ya sobre la base de datos, lo que nos conviene es actualizarlos: <<y>>.
|
|
Una vez que hayamos terminado, ya podremos conectarnos al servidor de base de
|
|
datos con el comando {\tt mysql} de la forma siguiente:
|
|
|
|
\begin{minted}{text}
|
|
# mysql -u root -p
|
|
Enter password:
|
|
Welcome to the MariaDB monitor. Commands end with ; or \g.
|
|
Your MariaDB connection id is 31
|
|
Server version: 10.5.18-MariaDB-0+deb11u1 Debian 11
|
|
|
|
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and
|
|
others.
|
|
|
|
Type 'help;' or '\h' for help. Type '\c' to clear the current
|
|
input statement.
|
|
|
|
MariaDB [(none)]>
|
|
\end{minted}
|
|
|
|
Para salir sólo hemos de insertar el comando {\tt quit;} o usar la combinación
|
|
de teclas Ctrl+D, como con cualquier otro {\it shell}.
|
|
|
|
\section{Servidor Web}
|
|
|
|
En nuestro servidor web, con nombre {\tt web0} queremos instalar el programa
|
|
Nginx. Para esto hemos de correr los comandos siguientes:
|
|
|
|
\begin{minted}{bash}
|
|
apt update
|
|
apt install nginx
|
|
\end{minted}
|
|
|
|
Esto no sólo instalará Nginx, sino que también lo inicializará, de tal modo que
|
|
si intentas acceder a nuestro servidor web en un navegador por el puerto 80, te
|
|
saldrá la página por defecto de Nginx (figura \ref{fig:default-nginx-page}).
|
|
|
|
\begin{figure}[ht!]
|
|
\centering
|
|
\includegraphics[width=0.75\textwidth]{imgs/default-nginx-page.png}
|
|
\caption{Página de Nginx por defecto.}
|
|
\label{fig:default-nginx-page}
|
|
\end{figure}
|
|
|
|
\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}
|