Módulo 4.
Servicios de red sobre Linux
La capa de aplicación del modelo TCP/IP ofrece diversos servicios a los usuarios y
dispositivos. Entre otras acciones, posibilita acceder remotamente a un equipo,
transferir información, resolver nombres de dominio en direcciones IP y asignar
direcciones IP automáticamente.
En este módulo estudiaremos cómo utilizarlos en Linux, sea el dispositivo un
servidor o un cliente.
Unidad 4.1. Accesos remotos, archivos y direcciones
Unidad 4.2. Servidor LAMP
Cierre
Referencias
Descarga la lectura
Lección 1 de 5
Unidad 4.1. Accesos remotos, archivos y
direcciones
4.1.1 Telnet y SSH
En módulos pasados, aprendimos que para acceder remotamente a un equipo que corre Windows, el
protocolo utilizado se denomina RDP. Pero, ¿existe algo equivalente en Sistemas Operativos sin entorno
gráfico? La respuesta es sí, es posible acceder remotamente a la consola (CLI) utilizando los protocolos
Telnet o SSH.
Telnet (teletype network) es un protocolo antiguo que utiliza TCP para transporte. Un servidor Telnet
escucha por defecto en el puerto TCP 23, aunque veremos más adelante que podemos usar telnet en
otro puerto y realizar otras funciones.
Este protocolo es ampliamente utilizado para conectarse remotamente a dispositivos de conectividad,
como ser Switches o Routers. Sin embargo, tiene una gran desventaja. Para iniciar sesión el sistema
remoto solicita usuario y contraseña. Esta información no viaja encriptada por lo que cualquier persona
que intercepte los paquetes donde se envían el usuario y la clave, tendrá el poder de ingresar
remotamente al equipo. Por esta razón no se recomienda su uso. Sin embargo, si aún es necesario tener
Telnet activo o simplemente para corroborar su falta de seguridad, es posible instalar el servidor
mediante apt-get install telnetd
Luego de que la instalación esté completa, podemos verificar que el puerto esté escuchando con nmap –
p 23 [Link]
Para ingresar desde un equipo remoto necesitamos un cliente de Telnet. En entornos Linux suele venir
instalado por defecto, por lo que en una consola ingresaríamos telnet <IP Servidor>
A continuación, se nos solicitarán los datos para iniciar sesión. Una vez iniciada la sesión, nos
encontramos en la consola del equipo remoto.
Todos los comandos, inclusive reiniciar o apagar el equipo, serán ejecutados en este dispositivo, por lo
cual es necesario ser cuidadosos.
Telnet también puede ser utilizado para una rápida verificación de un puerto. Si en lugar de utilizar el
puerto por defecto 23, se utiliza el puerto que se quiere verificar (telnet <IP Server> <Puerto> y la
conexión es rechazada, entonces ese puerto no está escuchando. En cambio si la pantalla queda negra
o se recibe algún mensaje, la conexión se estableció aunque no sea posible realizar acción alguna
porque el cliente Telnet espera otro tipo de respuesta.
Figura 1. Uso de Telnet para verificar puertos abiertos
Fuente: [Captura de pantalla de Linux sobre el Uso de Telnex para verificar puertos abiertos]
(s.f.). Elaboración propia
Detalle de la figura 1: En la captura de pantalla observamos que primero se intentó un Telnet al puerto
24, el cual fue rechazado por el servidor indicando que ese puerto no se encuentra escuchando o está
bloqueado por el Firewall. En el segundo intento, el puerto utilizado fue el 22, y en este caso se
establece la conexión y el servidor responde con información relacionada a SSH, lo cual indica que el
puerto 22 se encuentra escuchando.
En el caso de ambientes Windows, una de las opciones más populares para conexiones remotas es
Putty. Es posible acceder a él y descargarlo de forma gratuita mediante el siguiente enlace:
[Link]
Figura 2. Putty
Fuente: [Captura de pantalla sobre Putty] (s.f.). Elaboración propia
Detalle de la figura 2: Observamos aquí la pantalla inicial de Putty. Para conectarnos a otro dispositivo
utilizaremos su dirección IP o nombre de host, debemos seleccionar qué tipo de conexión usaremos
(Raw, Telnet, Rlogin, SSH o Serial) y el puerto. Luego usaremos el botón Open para iniciar la conexión.
En caso que accedamos con frecuencia a ciertos dispositivos, podemos guardar los datos. A la izquierda
de la ventana disponemos de más opciones, como por ejemplo la opción de almacenar en un archivo la
interacción con el sistema remoto (opción Sessions / Logging).
Analicemos ahora una mejor opción para conexiones remotas: SSH o Secure Shell. Como su nombre lo
indica, a diferencia de Telnet, este protocolo es seguro ya que la información viaja encriptada mediante
claves públicas y privadas (Intef, 2017). Para instalar un servidor SSH en Debian, hacer correr apt-get
install openssh-server
Una vez finalizada la instalación, debemos comprobar que el puerto TCP 22 se encuentra escuchando.
En otros dispositivos, como Switches o Routers, es muy probable que dicho puerto venga habilitado por
defecto o que se deba realizar algún tipo de configuración previa.
Como cliente, es posible usar Putty en ambientes Windows o como cliente SSH en la consola de Linux.
Conectarse desde Putty es similar a lo hecho con anterioridad para Telnet, sólo que ahora debemos
seleccionar la opción SSH.
En caso de utilizar la consola de Linux, podemos abrir una conexión con alguna de las siguientes
opciones:
1 ssh IP
2 ssh jperez@IP
La opción 1 asume que el usuario, actualmente logueado en el cliente, iniciará sesión ssh en el servidor,
por lo que el servidor directamente solicitará la clave de ese usuario.
La opción 2 asume que jperez es el usuario que desea iniciar sesión en el servidor, y solicitará su
contraseña.
En ambos casos, el usuario debe tener una cuenta creada en el servidor.
La primera vez que nos intentemos conectar a un servidor, el cliente nos indicará que la autenticación no
puede establecerse y tendremos que informarle que queremos continuar.
Figura 3. Información encriptada en SSH
Fuente: [Captura de pantalla de Wireshark sobre información encriptada en SSH] (s.f.).
Elaboración propia
Detalle de la figura 3: se observa una captura en Wireshark de una conexión SSH, donde la información
viaja encriptada.
Para editar la configuración del servidor SSH es necesario editar el archivo /etc/ssh/sshd_config
Al traer ya una configuración predeterminada, es conveniente hacer un backup de este archivo, por si
nuestras modificaciones no resultan como queríamos. Una manera simple de realizar dicho backup
consiste en copiar el archivo con otro nombre, por ejemplo cp /etc/ssh/sshd_config
/etc/ssh/sshd_config_backup
Para el caso de desear especificar qué usuarios pueden iniciar sesión con SSH, debemos agregar la
siguiente línea al archivo (test1 es el nombre del usuario que podrá iniciar sesión): AllowUsers test1
Mientras que para utilizar un puerto TCP distinto al 22, deberíamos agregar o descomentar la línea Port
22 y reemplazar por el número de puerto deseado.
Para cada cambio realizado en el archivo de configuración, es necesario reiniciar el servicio SSH:
/etc/init.d/ssh restart
Para conocer otras opciones de configuración relacionadas a la seguridad, puedes visitar la siguiente
página: [Link]
4.1.2 FTP, SFTP, SCP
Transferir archivos entre dos dispositivos es sumamente importante. Por ejemplo, los usuarios finales
pueden descargar software, los administradores subir logs de sus equipos, los diseñadores de páginas
web subir sus archivos al servidor, entre otras cosas.
El protocolo FTP (Protocolo de Transferencia de Archivos) se utiliza en muchos casos, aunque comparte
el mismo problema que el protocolo Telnet: son inseguros. En contrapartida, los protocolos SFTP, FTPS
y SCP ofrecen mayor seguridad, ya que los datos viajan encriptados.
Vsftpd es un programa que permite que el servidor acepte tanto conexiones seguras como inseguras.
Para instalarlo, tipeamos: apt-get install vsftpd
Al igual qe otros servicios, vsftpd cuenta con una configuración por defecto, la cual permite conexiones
usando el protocolo FTP. FTP utiliza el modelo cliente-servidor. Se establece una conexión TCP y a partir
de ese momento el cliente envía comandos al servidor.
Tabla 1. Comandos de FTP
Comando Función
Comando Función
put [Link] Copia el archivo [Link] desde el cliente al servidor
get [Link] Copia el archivo [Link] desde el servidor al cliente
dir Lista los archivos y subdirectorios en el servidor
! Vuelve a la consola del cliente
exit Vuelve a la consola del servidor
mput *.txt Copia todos los archivos con extensión .txt desde el cliente al servidor
Fuente: Elaboración propia
Detalle de la Tabla 1: Encontramos aquí detallados los comandos más comunes de FTP
También existen clientes de FTP para entorno gráfico, siendo uno de los más populares, y a su vez
gratuito, Filezilla.
Figura 4. Cliente de FTP GUI Filezilla
Fuente: [Captura de pantalla sobre Cliente de FTP GUI Filezilla] (s.f.). Elaboración propia
Detalle de la figura 4: Observamos a Filezilla con una conexión ya establecida. Para agregar servidores
de FTP, deberíamos utilizar el botón ubicado en el extremo izquierdo. Allí es donde debemos indicar la
dirección IP del servidor, el tipo de protocolo (FTP o SFTP), el tipo de encriptación y los datos para
iniciar sesión. Todo esto dependerá de la configuración del servidor, la cual debemos tener a mano.
Una vez establecida la conexión, Filezilla muestra dos estructuras de directorios; la de la izquierda
corresponde a la computadora cliente y la de la derecha al servidor. Para subir (sentido cliente a servidor)
archivos, sólo es necesario buscarlos en la estructura y hacer doble clic con el mouse, o clic derecho y
Upload. También disponemos de otras opciones, como es agregarlo a una cola, crear directorios o borrar
archivos.
Si lo que necesitamos es descargar contenido desde el servidor FTP, entonces debemos ubicar los
archivos en la estructura de la derecha, y realizar la misma operatoria.
Retomando con nuestro servidor FTP, es posible realizar configuraciones editando el archivo
/etc/[Link].
Las líneas que comienzan con # están comentadas, lo cual significa que no están activas. Simplemente
eliminando el símbolo # estarán activas.
Algunas opciones de edición son:
anonymous_enable: permite o prohibe, que personas sin cuenta inicien sesión.
write_enable: habilita o no escritura
anon_upload_enable: habilita o no a anónimos a subir archivos
data_connection_timeout=120: Si en 2 minutos no hay actividad, la conexión se cierra.
cmds_allowed: especifica los comandos que permite el FTP
local_allowed: permite que cuentas locales accedan al FTP
Para consultar un listado más amplio de opciones de configuración, recomendamos visitar el siguiente
enlace: [Link]
Hasta aquí utilizamos a vsftpd como servidor FTP inseguro. Para que funcione de forma segura,
debemos configurar certificados SSL (Secure Socket Layer). Para crear un certificado que dure 1 año
debemos utilizar el siguiente comando:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/[Link] -out
/etc/ssl/private/[Link]
Luego, debemos agregar este certificado en la configuración del FTP editando el archivo /etc/[Link]
Casi al final, encontramos algo similar a:
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/[Link]
rsa_private_key_file=/etc/ssl/private/[Link]
ssl_enable=NO
Y lo cambiamos por:
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/private/[Link]
rsa_private_key_file=/etc/ssl/private/[Link]
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
Para finalizar, deberíamos reiniciar el servicio de vsftpd: /etc/init.d/vsftpd restart
Cuando ahora nos conectemos usando Filezilla, corresponderá cambiar el tipo de encriptación: antes era
texto plano FTP, ahora deberá cambiarse para que requiera explícitamente FTP sobre TLS.
Una opción aún mejor que FTP con TLS, si ya disponemos de un servidor SSH, es usar el protocolo
SCP. El protocolo de copia segura utiliza los certificados de SSH para transferir archivos. Al instalar el
servidor SSH (openssh-server) ya es posible utilizar SCP. La sintaxis utilizada en SCP puede parecer
confusa en un primer momento porque requiere definir la ubicación de los archivos y también la conexión
SSH, todo esto al mismo tiempo.
Por ejemplo, para copiar el archivo [Link] ubicado en /ruta dentro del cliente, al equipo remoto
denominado servidor usando el usuario de SSH jperez y en el directorio /ruta/directorio-destino
deberemos utilizar el siguiente comando:
scp /ruta/[Link] jperez@servidor:/ruta/directorio-destino/
No existe una conexión previa como en FTP, sino que luego de ejecutar ese comando se solicitará la
clave de jperez y si es válida, entonces la transferencia se ejecuta.
Si lo que queremos es descargar el archivo [Link] ubicado en el directorio /home/compartido dentro
del servidor, y descargarlo en el directorio del cliente /home/jperez, entonces usaremos:
scp jperez@servidor:/home/compartido/[Link] /home/jperez
Existen aplicaciones para entorno gráfico, como por ejemplo winSCP para el caso de ambientes
Windows. La elección del protocolo a utilizar podría no ser nuestra, ya que si simplemente somos un
cliente que necesita subir y bajar archivos de un determinado servidor que no controlamos, el
administrador de ese servidor definirá el protocolo a utilizar. Sin embargo, sabiendo las ventajas y
desventajas de cada uno, podemos sugerir mejoras en el caso que se continúe utilizando FTP para
transferencia de archivos o Telnet para accesos remotos.
4.1.3 DNS
Toda comunicación entre dispositivos de red se realiza mediante direcciones IP. Cada vez que
accedemos a un sitio web, lo hacemos a través de la IP del servidor de páginas web. Si los usuarios
tuvieran que memorizar cada dirección IP de cada servidor de páginas web, Internet no sería lo que es.
Inclusive para los administradores de red resultaría sumamente complejo recordar todas las IP de sus
servidores y dispositivos.
El protocolo DNS (Sistema de Nombres de Dominio) permite que los dispositivos utilicen un nombre de
dominio y se encarga de realizar la conversión entre nombres y direcciones IP.
DNS utiliza una estructura jerárquica para una mejor organización. Los dominios de nivel superior (org,
com, net, ar) son la raíz de la estructura. Dentro de cada dominio de primer nivel no pueden repetirse los
nombres, pero sí podría existir por ejemplo [Link] y [Link] porque los dominios de
nivel superior son .com y .ar respectivamente.
Los root servers de la imagen 6 son servidores DNS que conocen todos los dominios de nivel superior.
Luego la gestión se delega. Por ejemplo, para el dominio de nivel superior .ar, se delega en NIC
Argentina. Cualquier persona que quiera adquirir un dominio deberá solicitarlo a NIC Argentina a través de
[Link].
Figura 5. Estructura jerárquica DNS
Fuente: Shenron, 2009. [Imagen intitulada sobre Consultas recursivas e iterativas].
Recuperado de [Link]
Detalle de la figura 5: Vemos en la imagen precedente un ejemplo de cómo se organiza la estructura
jerárquica de DNS
Supongamos que empresa1 adquiere el dominio [Link] y luego decide tener subdominios para
cada una de sus regiones: [Link], [Link],
[Link], [Link] y [Link]. La administración de
esos subdominios es delegada a la propia empresa, quién deberá configurar su servidor DNS.
Bind
Bind es un software open source que permite resolver consultas DNS de los usuarios y también publicar
información de DNS en Internet. Podemos instalarlo en Debian. Esto lo haríamos recurriendo a: apt-get
install bind9
Bind dispone de varios archivos de configuración. Según cuál sea nuestro objetivo, será la opción
seleccionada de edición. De entre los archivos de configuración, algunos de los que podemos mencionar
son:
[Link]: el cual, hace referencia a otros archivos
[Link]: correspondiente a opciones generales
[Link]: para las opciones del servidor local DNS
[Link]: relacionado a los DNS de nivel superior
Las consultas a los servidores DNS pueden ser recursivas o iterativas. En el caso de las consultas
recursivas, nos encontraremos con que el servidor consultado deberá obtener la resolución
comunicándose con otros servidores. Una vez obtenida la respuesta, tocará devolver la información al
cliente. O informar el error, por no haber podido resolverlo. Para el caso de las consultas iterativas, el
servidor solamente responderá con la resolución (si la conoce) o con un error, sin realizar otras
consultas.
Figura 6. Consultas recursivas e iterativas
Fuente: Flylib, 2017. [Imagen intitulada sobre Consultas recursivas e iterativas] Recuperado
de [Link]
Detalle de la figura 6: En el gráfico anterior, se observan los dos escenarios presentes
simultáneamente. El cliente le realiza una consulta recursiva a server1, mientras que este maneja
consultas iterativas con los demás servidores. En general el servidor DNS local funciona como Server1 y
para realizar esta configuración en Bind editaremos el archivo [Link] con las direcciones IP
de los servidores que usaremos para redirigir consultas de nombres que nuestro servidor no conozca. En
el ejemplo se agregaron los DNS de Google [Link] y [Link].
Esto se haría de la siguiente manera:
options {
forwarders {
[Link]; [Link];
};
};
Si en nuestra organización queremos asignar nombres a todos los dispositivos y ser capaces de
resolverlos, configuraremos Bind como servidor DNS maestro. En este caso, se debe editar el archivo
/etc/bind/[Link]
Lo que hacemos en este caso es referenciar a dos archivos con bases de datos que poseen los nombres
de dominio y direcciones IP. El primero sirve para resolver nombres en direcciones IP, el segundo para el
proceso inverso.
Primer archivo:
// Archivo para resolver nombres en IP
zone "[Link]" {
type master;
file "/etc/bind/[Link]";
};
Segundo archivo:
// Archivo para resolver IP en nombre
zone "[Link]" {
type master;
file "/etc/bind/[Link]";
};
En el archivo /etc/bind/[Link] de ejempo se hace referencia a [Link] y [Link],
este último indicando la zona de la red [Link]
En el archivo [Link], por ejemplo, tendríamos la siguiente información:
; BIND data file for [Link]
@ IN SOA [Link]. [Link]. (
1 ; número serie
604800 ; Refresco
86400 ; Reintento
2419200 ; Expiración
604800 ) ; TTL (tiempo de vida)
@ IN NS [Link].
IN MX 10 [Link].
lab1pc1 IN A [Link]
lab1pc2 IN A [Link]
www IN A [Link]
dns IN A [Link]
mail IN A [Link]
Las primeras líneas definen parámetros del servidor, como tiempo de refresco o expiración. Luego hay
dos líneas, @ IN NS [Link] indica el nombre del servidor DNS primario (en este ejemplo el
mismo servidor que se llama dns). Mientras que IN MX 10 [Link] indica el servidor que procesa
el correo en el dominio [Link].
Luego se definen todos los nombres de los dispositivos de la red y su dirección IP.
El archivo [Link] se vería así:
@ IN SOA [Link]. [Link]. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL
@ IN NS [Link].
10 IN PTR [Link].
11 IN PTR [Link].
150 IN PTR [Link].
150 IN PTR [Link].
150 IN PTR [Link].
Nuevamente las primeras líneas definen parámetros del servidor, y luego ingresaremos el sufijo de host
de cada dispositivo seguido de IN PTR y su nombre. Por ejemplo, el dispositivo [Link] tiene la
IP [Link].
Para finalizar, debemos editar el archivo /etc/[Link] del servidor DNS y avisar que el propio servidor
es el servidor DNS:
nameserver [Link]
search [Link]
Reiniciamos bind (/etc/init.d/bind restart) y verificamos el correcto funcionamiento, por ejemplo.
realizando un ping al nombre de dominio [Link]
Los demás dispositivos de la red podrán usar ahora el DNS local [Link], el cual deberá ser
configurado en sus parámetros de red. Ahora el servidor DNS local podrá resolver todos los nombres que
conoce, y para el resto de los casos utilizará los DNS definidos en [Link].
Si algo fallara, podríamos verificar primero la sintaxis de los archivos de configuración: named-checkconf
/etc/[Link]. Si no hay ninguna salida, entonces la sintaxis es correcta.
Lección 2 de 5
Unidad 4.2. Servidor LAMP
Un Servidor LAMP, que corresponde a las siglas de Linux, Apache, MySql/MariaDB y Perl/PHP/Python,
permite disponer de un servidor Web OpenSource con prestanciones avanzadas.
Inicialmente veremos cómo configurar en nuestro servidor Linux un potente servidor de páginas web,
Apache.
Si a este servidor le sumamos una base de datos como MySQL y un lenguaje de programación como
PHP estaremos en condiciones de instalar un CMS o Sistema de Gestión de Contenidos.
Un CMS nos permite crear sitios web avanzados que utilizan bases de datos y programación en PHP, a
diferencia de un sitio web básico que solo está progamado en código HTML. Algunos de los CMS más
populares son Wordpress, Joomla y Drupal.
4.2.1 Instalación Apache
Un servidor web recibe las solicitudes de los clientes a través del protocolo HTTP, generalmente al puerto
80 TCP. Windows Server ofrece IIS como servidor, mientras que en ambientes Linux es ampliamente
utilizado Apache, el cual también está disponible para Windows. Para instalarlo en nuestro servidor,
usaremos apt-get install Apache2
Figura 7. Estructura de directorios y archivos Apache
Fuente: [Captura de pantalla sobre archivos de configuración de Apache] (s.f.). Elaboración
propia
Detalle de la figura 7: Corresponde a la captura de pantalla de la estructura de archivos de configuración
de Apache.
Una vez instalado, podemos chequear que funciona correctamente accediendo desde un browser a la IP
del servidor. Si Apache está funcionando correctamente, veremos una página mencionando que funciona,
documentación básica y la estructura de archivos de configuración en el directorio /etc/apache2.
4.2.2 Configuraciones básicas
Cada archivo de configuración cumple una función:
[Link] : archivo principal de configuración, aunque muchas configuraciones se
delegan en otros archivos.
[Link] : configuración de puertos, por defecto 80 y 443.
sites-enabled : definición se host virtuales
mods-enabled : directorio donde se definen módulos
[Link] se divide en tres secciones: configuraciones globales del servidor, como por ejemplo
Timeout 300, o tiempo máximo para procesar una solicitud (por defecto en 300 segundos);
configuraciones para el servidor por defecto; y finalmente configuraciones para los hosts virtuales. Como
en otros archivos de configuración, [Link] viene creado con parámetros por defecto. Si se desea
comentar una línea para que no sea tenida en cuenta debe agregarse al comienzo el símbolo #.
Desde este archivo, también se hace referencia a otros, por ejemplo la línea Include [Link] el cual
tendrá toda la configuración relacionada a puertos. El archivo [Link] por defecto escucha en el puerto
80 y 443:
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Si nos desplazamos al directorio /etc/apache2/sites-enabled podremos ver todos los sitios configurados,
siendo el [Link] el que viene por defecto. Si nuestro servidor alberga más de un sitio, entonces
cada uno tendrá su propio archivo .conf en este directorio. Vamos a verlo en un caso práctico con un
ejemplo en donde crearemos dos sitios: [Link] y [Link]
Primero crearemos la estructura de directorios donde se almacenarán los archivos de cada uno de estos
sitios web. Se debe crear un directorio para cada sitio.
mkdir -p /var/www/[Link]/public_html
mkdir -p /var/www/[Link]/public_htm
Luego en cada directorio deberíamos incluir como mínimo un archivo [Link], que es el que el browser
solicita por defecto. Un ejemplo de archivo [Link] sería para [Link]:
<html>
<head>
<title>Bienvenidos a Empresa1</title>
</head>
<body>
<h1>Si lees este mensaje, entonces has configurado correctamente Apache </h1>
</body>
</html>
Este archivo debe ubicarse en /var/www/[Link]/public_html
El siguiente paso, consiste en crear un archivo .conf para [Link] y [Link] dentro de
/etc/apache2/sites-available. Es posible copiar el que viene con defecto (cp [Link]
[Link]) y editar las variables en rojo:
nano /etc/apache2/sites-available/[Link]
<VirtualHost *:80>
ServerAdmin administrador@[Link]
DocumentRoot /var/www/[Link]/public_html
ServerName [Link]
ServerAlias [Link]
ErrorLog ${APACHE_LOG_DIR}/[Link]
CustomLog ${APACHE_LOG_DIR}/[Link] combined
</VirtualHost>
ServerName establece el dominio base para el sitio, mientras que ServerAlias permite que también
pueda accederse con www.
Para [Link] debemos crear un archivo similar con los parámetros necesarios para ese dominio.
Para activar ambos sitios debemos correr el siguiente comando:
a2ensite [Link]
a2ensite [Link]
Y luego deshabilitar el sitio por defecto con a2dissite [Link]. Finalmente, debemos reiniciar el
servicio apache2 para que los cambios tengna efecto. Para probar la nueva configuración, si el ambiente
es real, entonces los DNS deberán tener cargados la IP de nuestro servidor. En caso que sólo querramos
probar la configuración y los dominios no son reales, entonces es posible editar el archivo hosts para
cargar manualmente los nombres de dominio y dirección IP. En Windows el archivo se encuentra en
%windir%\system32\drivers\etc\hosts, mientras que en Linux en /etc/hosts
Dentro del archivo hosts deberemos incluir:
[Link] [Link]
[Link] [Link]
Donde la IP es [Link] es la dirección IP del servidor Apache. El archivo hosts es consultado por
el Sistema Operativo antes de consultar al servidor DNS.
Esta configuración de Apache nos permite alojar dos sitios web en nuestro servidor. Si creamos todos
los archivos con el usuario root, y los administradores de esos sitios deben tener acceso, entonces se
deben cambiar los permisos del directorio /var/www/[Link]/public_html y de cualquier otro sitio
para que dichos administradores puedan acceder y editar sus archivos.
Figura 8. Prueba exitosa de Apache
Fuente: [Captura de pantalla sobre prueba exitosa de Apache] (s.f.). Elaboración propia
Detalle de la figura 8: Se observa en la captura de pantalla precedente, el mensaje que corresponde
a una correcta configuración de Apache-
4.2.3 Instalación MySQL y PHP
Como indicamos anteriormente, veremos ahora cómo instalar el motor de bases de datos MySQL. Para
hacerlo en Debian, debemos ejecutar apt-get install mysql-server. Durante la instalación, debemos
seleccionar una clave de usuario root de MySQL (no es el root de Linux). En caso de que la instalación
no lo solicite, una vez que esta haya finalizado, ejecutaremos mysql_secure_installation para
establecerla. También podemos realizar configuraciones adiciones de seguridad.
Para loguearse a MySQL debemos ingresar el siguiente comando, seguido de la clave seleccionada al
momento de la instalación:
mysql -u root –p
A partir de este momento, nos encontramos en la consola de MySQL o MariaDB y podemos ejecutar
comandos, como por ejemplo crear una nueva base de datos:
mysql> create database dbprueba;
mysql> create user 'usuariotest'@'localhost' identified by 'password';
mysql> grant all on dbprueba.* to 'usuariotest' identified by 'password';
Figura 9. Creación de base de datos en MySQL
Fuente: [Captura de pantalla de Linux sobre creación de base de datos en MySQL] (s.f.).
Elaboración propia
Detalle de la figura 9: En la captura de pantalla precedente, observamos la consola de MySQL recien
creada.
Para listar las bases de datos creadas, debemos ejecutar show databases;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| dbprueba |
| information_schema |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
Y si lo que queremos es borrar una base de datos, ejecutaremos drop database <nombre>;
Figura 10. Listado de bases de dato y eliminación
Fuente: [Captura de pantalla de Linux sobre listado de bases de datos y eliminación] (s.f.).
Elaboración propia
Detalle de la figura 10: En la captura de pantalla de referencia, podemos observar primero el listado de
bases de datos que contiene el sistema y como con posterioridad de eliminar uno de ellos, desaparece
de la lista.
Puedes profundizar sobre MySQL visitando el siguiente enlace: [Link]
statements/, pero si nuestro objetivo principal es instalar un CMS, entonces con un manejo básico
estaremos en condiciones de hacerlo.
Un CMS requiere también de disponer de PHP. Para instalarlo ejecutar:
apt-get install php7.0 libapache2-mod-php7.0 php7.0-mysql apache2-mod-php7.0
En caso de no encontrar los paquetes, es necesario investigar la versión actual de PHP para la versión
de Debian.
Para probar si la instalación fue correcta, crear el siguiente archivo:
/var/www/[Link]/public_html/[Link] e introducir el siguiente texto:
<?php
phpinfo();
?>
Luego desde un explorador ingresar a [Link]/[Link] y debemos ver la página de la imagen 11.
Figura 11. Instalación correcta de PHP
Fuente: [Captura de pantalla sobre instalación correcta de PHP] (s.f.). Elaboración propia
Detalle de la figura 11: En la captura de pantalla precedente, observamos cómo se visualizaría la
instalación correcta de PHP al ingresar a la url que se utiliza para hacer la comprobación.
4.2.3 Nociones de CMS
Nuestro servidor LAMP está listo: hemos instalado un Sistema Operativo Linux, luego Apache, MySQL y
PHP. Estamos ahora en condiciones de instalar un CMS, como por ejemplo WordPress, y crear un sitio
web profesional.
El proceso de instalación consiste en los siguientes pasos:
1 Descargar el software desde [Link]
2 Descomprimirlo en nuestra computadora y luego subir todos los archivos al servidor
mediante FTP/SCP/FTPS, por ejemplo, a /var/www/[Link]/public_html
3 Ingresar al dominio para instalar Wordpress, por ejemplo [Link]
admin/[Link]
4 Completar la información relacionada a la base de datos creada en MySQL
Figura 12. Instalación de Wordpress
Fuente: [Captura de pantalla sobre instalación de WordPress] (s.f.). Elaboración propia
Detalle de la figura 12: En la captura de pantalla insertada precedentemente, observamos cómo
completar información relacionada a la base de datos para su correcta instalación.
Si la conexión con la base de datos es exitosa, entonces la instalación nos solicitará datos relacionados
al nuevo sitio web.
Figura 13. Configuración del sitio web
Fuente: [Captura de pantalla sobre configuración del sitio web en WordPress] (s.f.).
Elaboración propia
Detalle de la figura 13: La captura de pantalla incluida previamente, muestra cómo se configura un sitio
web con Wordpress.
Una vez finalizada la instalación, accedemos al panel de control del CMS. donde se puede administrar el
sitio web.
Podremos elegir un tema que le dará una estructura al sitio. También crear los menús, agregar páginas
de contenido, editarlas o eliminarlas.
Figura 14. Escritorio de WordPress
Fuente: [Captura de pantalla sobre el escritorio de WordPress] (s.f.). Elaboración propia
Detalle de la figura 14: La imagen, corresponde al Escritorio de Wordpress, desde donde de una
manera muy intuitiva, se administra el sitio web.
Figura 15. Sitio web elaborado con WordPress
Fuente: [Captura de pantalla sobre sitio web elaborado con WordPress] (s.f.). Elaboración
propia
Detalle de la figura 15: Podemos observar la captura de pantalla de la home del sitio [Link]
elaborado con WordPress.
El procedimiento de instalación es similar para otros CMS, como Drupal o Joomla, y la elección
dependerá de qué Administrador de páginas web nos gusta más.
Lección 3 de 5
Cierre
Telnet y SSH
–
Es posible acceder remotamente a la consola (CLI) utilizando los protocolos Telnet o SSH. Telnet
(teletype network) es un protocolo antiguo que utiliza TCP para transporte. Este protocolo es
ampliamente utilizado para conectarse remotamente a dispositivos de conectividad, como ser Switches
o Routers. Sin embargo, tiene una gran desventaja. Para iniciar sesión el sistema remoto solicita
usuario y contraseña. Esta información no viaja encriptada por lo que cualquier persona que intercepte
los paquetes donde se envían el usuario y la clave, tendrá el poder de ingresar remotamente al equipo.
Por esta razón no se recomienda su uso.
FTP, SFTP, SCP
–
Transferir archivos entre dos dispositivos es sumamente importante. Por ejemplo, los usuarios finales
pueden descargar software, los administradores subir logs de sus equipos, los diseñadores de páginas
web subir sus archivos al servidor, entre otras cosas.
El protocolo FTP (Protocolo de Transferencia de Archivos) se utiliza en muchos casos, aunque
comparte el mismo problema que el protocolo Telnet: son inseguros. En contrapartida, los protocolos
SFTP, FTPS y SCP ofrecen mayor seguridad, ya que los datos viajan encriptados.
DNS
–
El protocolo DNS (Sistema de Nombres de Dominio) permite que los dispositivos utilicen un nombre de
dominio y se encarga de realizar la conversión entre nombres y direcciones IP.
DNS utiliza una estructura jerárquica para una mejor organización. Los dominios de nivel superior (org,
com, net, ar) son la raíz de la estructura.
Bind es un software open source que permite resolver consultas DNS de los usuarios y también publicar
información de DNS en Internet. Podemos instalarlo en Debian.
Servidor LAMP
–
Un Servidor LAMP, que corresponde a las siglas de Linux, Apache, MySql/MariaDB y Perl/PHP/Python,
permite disponer de un servidor Web OpenSource con prestanciones avanzadas.
Si a este servidor le sumamos una base de datos como MySQL y un lenguaje de programación como
PHP estaremos en condiciones de instalar un CMS o Sistema de Gestión de Contenidos.
Un CMS nos permite crear sitios web avanzados que utilizan bases de datos y programación en PHP, a
diferencia de un sitio web básico que solo está progamado en código HTML. Algunos de los CMS más
populares son Wordpress, Joomla y Drupal.
Lección 4 de 5
Referencias
Cuello Cannavo, E. (2017) Capturas de pantalla de Apache. [Figuras 7 y 8]. Argentina
Cuello Cannavo, E. (2017) Capturas de pantalla de Firezilla. [Figura 4]. Argentina
Cuello Cannavo, E. (2017) Capturas de pantalla de la comprobación de la instalación de PHP. [Figura
11]. Argentina
Cuello Cannavo, E. (2017) Capturas de pantalla de Linux. [Figuras 1, 9 y 10]. Argentina
Cuello Cannavo, E. (2017) Capturas de pantalla de Putty. [Figura 2]. Argentina
Cuello Cannavo, E. (2017) Capturas de pantalla de Whireshark. [Figura 3]. Argentina
Cuello Cannavo, E. (2017) Capturas de pantalla del CMS Wordpress. [Figuras 12, 13, 14 y 15].
Argentina
Debian Wiki. (2006). Accesos remotos SSH. Recuperado de [Link]
Debian Wiki. (2017). Bind9. Recuperado de [Link]
Debian Wiki. (2017). SSH. Recuperado de [Link]
DigitalOcean. (2013). How To Configure the Apache Web Server on an Ubuntu or Debian VPS
Recuperado de [Link]
server-on-an-ubuntu-or-debian-vps
DigitalOcean. (2017). How To Set Up Apache Virtual Hosts on Debian 8 Recuperado de
[Link]
[Link] (2017). [Imagen intitulada sobre Consultas recursivas e iterativas] Recuperado de
[Link]
Intef. (2017). Servidor DNS Bind9 Recuperado de
[Link]
Intef. (2017). Instalación de servidor de SSH. Recuperado de
[Link]
Libremática (2017). Cómo instalar un servidor LAMP en Debian 9 Stretch Recuperado de
[Link]
Perpinan, A. (2004). Administración de Redes GNU/Linux. República Dominicana: Impresos Gamma
Shenron. (2009). [Imagen intitulada sobre Consultas recursivas e iterativas]Recuperado de
[Link]
WordPress. (2017). Cómo instalar o actualizar tu web hecha con WordPress Recuperado de
[Link]
Lección 5 de 5
Descarga la lectura