ASO: Change directory name of final project.
This commit is contained in:
BIN
2/ASO/assignments/final-project/imgs/database-server.png
Normal file
BIN
2/ASO/assignments/final-project/imgs/database-server.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 268 KiB |
BIN
2/ASO/assignments/final-project/imgs/debian-install-choices.png
Normal file
BIN
2/ASO/assignments/final-project/imgs/debian-install-choices.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
BIN
2/ASO/assignments/final-project/imgs/default-nginx-page.png
Normal file
BIN
2/ASO/assignments/final-project/imgs/default-nginx-page.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
2/ASO/assignments/final-project/imgs/intranet-map.png
Normal file
BIN
2/ASO/assignments/final-project/imgs/intranet-map.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 139 KiB |
BIN
2/ASO/assignments/final-project/imgs/intranet-map.xcf
Normal file
BIN
2/ASO/assignments/final-project/imgs/intranet-map.xcf
Normal file
Binary file not shown.
BIN
2/ASO/assignments/final-project/imgs/proxy-server.png
Normal file
BIN
2/ASO/assignments/final-project/imgs/proxy-server.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 415 KiB |
BIN
2/ASO/assignments/final-project/imgs/terminal-server-png
Normal file
BIN
2/ASO/assignments/final-project/imgs/terminal-server-png
Normal file
Binary file not shown.
After Width: | Height: | Size: 83 KiB |
4
2/ASO/assignments/final-project/web-system-naortega.lof
Normal file
4
2/ASO/assignments/final-project/web-system-naortega.lof
Normal file
@ -0,0 +1,4 @@
|
||||
\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 Página de Nginx por defecto.\relax }}{8}{figure.caption.8}%
|
3
2/ASO/assignments/final-project/web-system-naortega.lot
Normal file
3
2/ASO/assignments/final-project/web-system-naortega.lot
Normal file
@ -0,0 +1,3 @@
|
||||
\babel@toc {spanish}{}
|
||||
\contentsline {table}{\numberline {1}{\ignorespaces Tabla de direcciones IP.\relax }}{3}{table.caption.5}%
|
||||
\contentsline {table}{\numberline {2}{\ignorespaces Tabla de particiones lógicas en los sistemas Debian.\relax }}{4}{table.caption.6}%
|
BIN
2/ASO/assignments/final-project/web-system-naortega.pdf
Normal file
BIN
2/ASO/assignments/final-project/web-system-naortega.pdf
Normal file
Binary file not shown.
394
2/ASO/assignments/final-project/web-system-naortega.tex
Normal file
394
2/ASO/assignments/final-project/web-system-naortega.tex
Normal file
@ -0,0 +1,394 @@
|
||||
\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!]
|
||||
\centering
|
||||
\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}
|
||||
|
||||
Como nuestra intención es crear una página web de WikiMedia, será necesario
|
||||
instalar PHP además de algunos módulos:
|
||||
|
||||
\begin{minted}{bash}
|
||||
apt install php php-intl php-xml php-mbstring php-fpm
|
||||
\end{minted}
|
||||
|
||||
Una vez instalado, ya podemos instalar nuestra aplicación web WikiMedia. Para
|
||||
hacer esto, descargamos primero la aplicación de la página
|
||||
principal\footnotemark\ y pasarlo a nuestro servidor web (que se puede hacer
|
||||
mediante el comando {\tt scp}). Ahí lo pasamos a un directorio que servirá de
|
||||
directorio raíz para nuestro sitio web, que para nosotros será {\tt
|
||||
/var/www/wiki}, y a este directorio le cambiamos el propietario de forma
|
||||
recursiva a {\tt www-data}. Esto lo hacemos para que Nginx -- que corre como
|
||||
este usuario -- pueda editar los archivos y crear algunos nuevos.
|
||||
|
||||
\footnotetext{\url{https://www.mediawiki.org/wiki/Download}}
|
||||
|
||||
\begin{minted}{bash}
|
||||
chown -R www-data:www-data /var/www/wiki
|
||||
\end{minted}
|
||||
|
||||
Ahora, para configurar Nginx para este directorio, hemos de navegar al
|
||||
directorio {\tt /etc/nginx/sites-available}. Ahí crearemos una copia del archivo
|
||||
{\tt default} que se denominará {\tt wiki.conf}. Lo editamos para que sea de la
|
||||
forma siguiente (habilitando PHP):
|
||||
|
||||
\begin{minted}{text}
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
\end{minted}
|
||||
|
||||
Luego, nos pasamos al directorio {\tt /etc/nginx/sites-enabled} y hacemos dos
|
||||
cosas: primero, eliminar el enlace a la configuración por defecto; segundo crear
|
||||
un enlace simbólico a nuestra configuración que acabamos de crear. Una vez hecho
|
||||
esto, podemos verificar si nuestra configuración está bien corriendo una prueba
|
||||
de Nginx.
|
||||
|
||||
\begin{minted}{bash}
|
||||
# rm default
|
||||
# ln -s ../sites-available/wiki.conf ./
|
||||
# nginx -t
|
||||
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
|
||||
nginx: configuration file /etc/nginx/nginx.conf test is
|
||||
successful
|
||||
\end{minted}
|
||||
|
||||
\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}
|
10
2/ASO/assignments/final-project/web-system-naortega.toc
Normal file
10
2/ASO/assignments/final-project/web-system-naortega.toc
Normal file
@ -0,0 +1,10 @@
|
||||
\babel@toc {spanish}{}
|
||||
\contentsline {section}{\numberline {1}Resumen de Topología}{2}{section.1}%
|
||||
\contentsline {section}{\numberline {2}Configuración Inicial Windows Server}{3}{section.2}%
|
||||
\contentsline {section}{\numberline {3}Configuración Inicial Linux}{3}{section.3}%
|
||||
\contentsline {subsection}{\numberline {3.1}Instalación}{4}{subsection.3.1}%
|
||||
\contentsline {subsection}{\numberline {3.2}Post-Instalación}{4}{subsection.3.2}%
|
||||
\contentsline {section}{\numberline {4}Terminal de Administración}{6}{section.4}%
|
||||
\contentsline {section}{\numberline {5}Base de Datos}{7}{section.5}%
|
||||
\contentsline {section}{\numberline {6}Servidor Web}{8}{section.6}%
|
||||
\contentsline {section}{\numberline {7}Derechos de Autor y Licencia}{11}{section.7}%
|
Reference in New Issue
Block a user