Saltar al contenido

Apache Server Instalación y configuración

Apache HTTP Server es un software de servidor web gratuito y de código abierto para plataformas Unix con el cual se ejecutan casi la mitad de los sitios web de todo el mundo. Es mantenido y desarrollado por la Apache Software Foundation. Es uno de los servidores web más antiguos y confiables, cuya primera versión fue lanzada hace casi 25 años, en 1995.

Vamos a ver cual es el proceso de instalación y configuración de este servidor en una máquina Debian. Yo voy a realizarlo en una máquina virtual con Debian10.

En primer lugar, en nuestra consola, vamos a obtener privilegios con:

su root

Actualizaremos el sistema con:

apt-get update

apt-get upgrade

Ahora instalamos Apache con el siguiente comando:

apt-get install apache2

Si abrimos el navegador y ponemos localhost vemos como nos indica que apache está trabajando y la ruta donde tenemos el fichero index.html:

De modo que nos vamos a ir a ese directorio y vamos la listar el contenido:

Podemos ver el contenido del fichero index.html con nano:

Vemos que contiene el código de la página que habíamos visto en el navegador con localhost:

Salimos con Ctrl+X sin cambiar nada y vamos a hacer una copia de este fichero:

Con la copia creada vamos a borrar index.html y volver a crearlo para tener el archivo vacío:

Lo editamos poniendo el contenido que queremos que tenga:

Lo guardamos con Ctrl+O, enter y salimos con Ctrl+X. Si volvemos al navegador y actualizamos localhost podemos ver nuestro nuevo index.html:

Vamos a ver donde está la información del apache, para lo que nos iremos al directorio donde está apache en /etc/apache2/

hacemos un ls -l

En mods-available están los módulos disponibles y en mods-enableb los habilitados. Vemos el contenido de los módulos disponibles y observamos que hay una gran cantidad de módulos:

También vamos a entrar en mods-enable que contiene los archivos más importantes y los que más se usan:

Los sites contienen los archivos que enlazan las páginas web. Los sitios que están habilitados por defecto están en el directorio sites-enabled:

Si hacemos un ls -l vemos que el archivo default.conf está enlazado a los sitios disponibles:

De este sitio por defecto es importante hacer una copia de seguridad.

Podemos habilitar o deshabilitar un sitio. Para deshabilitar un site:

a2dissite 000-default.conf

y para habilitarlo:

a2ensite 000-default.conf

para que tenga efecto tenemos que hacer un reload. También podremos hacer stop para pararlo o start para iniciarlo.

Apache reconoce por defecto html pero no php por eso vamos a instalar el módulo de php.

Si volvemos al directorio de las webs y creamos un archivo info.php:

y le ponemos el siguiente código para que muestre la información del servidor:

Si una vez guardado nos vamos al navegador y ponemos localhost/info.php vemos que no muestra nada porque el navegador no está reconociendo php:

Así que vamos a instalar php 7.3:

apt -y install php php-common

Instalamos las extensiones php más comunes:

apt -y install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

e instalamos las librerías:

apt -y install libapache2-mod-php

y si ahora volvemos a recargar el navegador ya podremos ver nuestro info.php:

Este archivo muestra mucha información real sobre el servidor por lo que resulta un grave fallo de seguridad dejarlo expuesto.

Vamos a dar un paso para atrás para ver los permisos que tiene el html. Podemos ver que tiene todos los permisos para el usuario root, tiene permisos de lectura y ejecución para el grupo root, y lectura y ejecución para todos los usuarios (755). Si esto fuese distinto deberíamos cambiarlo.

Ahora vamos a ver el archivo de configuración dir.conf:

y lo vamos a editar:

Cuando accedemos al navegador lo primero que va a hacer es buscar un archivo index.html como página de inicio. Si no existe pasará a index.cgi, si tampoco existe pasará a index.pl y así sucesivamente.

Aquí podríamos incluir si queremos info.php. Si por ejemplo borramos index.html y ponemos como primero info.php, cada vez que accedamos a localhost en nuestro navegador mostrará info.php como página de inicio. Cada vez que cambiemos algo aquí deberemos hacer un reload:

service apache2 reload

En el archivo sites-availabled (disponibles) tiene los archivos de configuración de los distintos sites y el sites-enabled (habilitados) contiene las distintas directivas de seguridad que podemos configurar.

Vamos a entrar en sites-available y realizar una copia de seguridad del fichero default.conf para poder modificarlo y si falla algo poder restaurarlo:

una vez que lo tenemos copiado vamos a editarlo:

Si trabajamos en local podemos cambiar el asterisco por nuestra IP de nuestra red. La podemos ver en las opciones de red:

En mi caso tengo la 192.168.72

Vamos a cambiar el * por la nuestra IP:

También podemos descomentar la línea con el nombre de la página (quitándole la almohadilla) y renombrarla como queramos por ejemplo de www.example.com a www.ejemplo.com

Pondremos dentro de /var/www/ el nombre de la carpeta que vamos a crear:

Crearemos un DirectoryIndex llamado index.html

También le podemos poner los Alias para que funcione sin las www o con subdominios:

Ahora nos iremos al directorio donde están las páginas web y crearemos la carpeta ejemplo:

Entramos en ejemplo y creamos un archivo index.html:

Y lo rellenamos con el contenido que queramos:

Vamos a editar el archivo de los puertos:

Este archivo es importante porque nos indica en qué puerto nos está escuchando Apache. Por defecto viene el puerto 80 pero lo podemos cambiar o añadir el 443 para ssl

Aquí vamos a añadir un VirtualHost:

En este punto nos iremos al directorio de Apache, dentro de sites-available y copiamos el archivo default.conf y lo llamamos ejemplo.conf:

este archivo ya contiene toda la configuración que hemos puesto antes:

y ahora tendremos que activarlo con:

sudo a2ensite ejemplo.conf

Nos indica que está habilitado y nos dice que tenemos que recargarlo con:

systemctl reload apache2

pero lo que vamos a hacer es directamente reiniciar apache con:

init.d/apache2 restart

ya que con este comando reiniciamos todo el apache (apagamos y encendemos) de esta forma nos dice si tenemos algún problema:

Así vemos que el resultado es correcto y no hay fallos:

Si nos vamos ahora al navegador y ponemos www.ejemplo.com ya nos muestra nuestra página sin tener que poner localhost:

En el caso que diese algún problema, es posible que esté intentando acceder a Internet para buscar esta web. Si lo que queremos es que la busque el local deberemos editar el archivo /etc/hosts:

Y aquí vamos a modificar la IP de local de Debian por 127.0.0.1 y añadir nuestra IP:

De esta manera estamos engañando a nuestro navegador ya que no tenemos comprado el dominio ejemplo.com

También nos funcionaría sin www porque así se lo hemos indicado en el archivo de configuración:

Mucho malware se instala en este archivo /etc/host/ creando una línea para que cuando tenga que ir, por ejemplo, a facebook.com vaya a otra IP distinta que no es la de facebook y que es la que esté en un servidor creado para infectar o copiar datos poniendo una página clonada.