Debian, Apache 2 y Tomcat 6 usando múltiples dominios, partes 3 y 4

PostedEn Tutoriales     Comments 21 comentarios
Jan
31

Continuación del tutorial iniciado hace un par de semanas en este mismo blog en: Debian, Apache 2 y Tomcat 6 usando múltiples dominios, parte 1 y 2 (de 4)

Parte 3: Configuración de software

Configurando Apache2 para que funcione con varios dominios (virtual host)

Aunque estemos trabajando inicialmente con una máquina virtual y tenga poco sentido tener varios dominios, debemos pensar que es solo un lugar de entrenamiento antes de hacer la instalación en un hosting real accesible desde internet. Lo normal es que queramos instalar varias aplicaciones, y que cada una de ellas sea accesible desde un dominio distinto. Vamos a suponer, por ejemplo, que hemos comprado los siguientes dominios: floristeria.com y guerraespacial.com. Estos dos dominios apuntan al mismo servidor, pero cada uno de ellos deberá tener su propia carpeta de Apache2 con sus contenidos estáticos (html, php, imagenes, etc) y su aplicación Tomcat con un war que desplegar.

Primero vamos a hacer que Apache2 muestre un contenido distinto en función del dominio de entrada que se haya utilizado.

Inicialmente, apache2 solo funciona con un dominio, o más bien, con cualquier dominio y siempre muestra el mismo contenido, lo que haya en la carpeta /var/www. Si vamos a esta carpeta, veremos un simple html con la famosa frase “It works!”.

La configuración de apache2 está en /etc/apache2. Nos movemos a esta carpeta y hacemos un ls, y veremos algo así:

debian:/etc/apache2# ls -l
total 40
-rw-r--r-- 1 root root 10104 jul 14 22:00 apache2.conf
drwxr-xr-x 2 root root  4096 oct 23 21:16 conf.d
-rw-r--r-- 1 root root   378 jul 14 22:00 envvars
-rw-r--r-- 1 root root     0 oct 23 20:40 httpd.conf
drwxr-xr-x 2 root root  4096 oct 23 20:40 mods-available
drwxr-xr-x 2 root root  4096 oct 23 20:40 mods-enabled
-rw-r--r-- 1 root root   513 jul 14 22:00 ports.conf
drwxr-xr-x 2 root root  4096 oct 23 20:40 sites-available
drwxr-xr-x 2 root root  4096 oct 23 20:40 sites-enabled

En sites-available es donde se definen todos los sites que existen en la máquina y en sites-enabled es donde están todos los sites que están realmente funcionando ahora mismo. La idea es crear un site por cada dominio en sites-available, y después enlazar dicho site en sites-enabled para habilitarlo. Si quisiéramos deshabilitar temporalmente un site, lo que hacemos es moverlo de sites-enabled a sites-availables sin necesidad de borrarlo. Existen una serie de comandos que nos ayudan mover los sites de sites-enabled a sites-available, por lo que no es necesario hacerlo a mano (aunque podríamos). Estos comandos son:

a2ensite nombredelsiteahabilitar
a2dissite nombredelsiteadeshabilitar

Más información en: http://www.debian-administration.org/articles/207

Para crear un site debemos hacerlo a mano. Un site no es más que un fichero con la configuración de un virtualhost. Crearemos ahora dos sites (dos ficheros), uno para floristeria.com y otro para guerraespacial.com. Pero antes, prepararemos la carpeta con los contenidos html que deberán servir cada uno. Nos vamos a /var/www y creamos tres directorios default, guerraespacial.com y floristeria.com con estos comandos:

cd /var/www
mkdir guerraespacial.com
mkdir floristeria.com
mkdir default

Y movemos el index.html que habia en /var/www a /var/www/default. La carpeta default contiene lo que se servirá cuando se acceda al servidor a través de su ip directamente, o con localhost, o de cualquier otra manera que no sea con un dominio que hayamos definido previamente (en nuestro caso floristeria.com y guerraespacial.com, aunque podríamos tener muchos más).

mv index.html default

Tambien vamos a crear un fichero de prueba en cada carpeta para que más tarde podamos comprobar que la configuración es correcta:

cd /var/www
echo "guerraespacial.com funciona" > guerraespacial.com/index.html
echo "floristeria.com funciona" > floristeria.com/index.html

Ahora vamos a modificar la carpeta del site default, que ahora mismo apunta a /var/www para que apunte a /var/www/default. Para ello hacemos lo siguiente: modificamos el fichero /etc/apache2/sites-available/default para que las etiquetas DocumentRoot /var/www y <Directory /var/www> pasen a ser DocumentRoot /var/www/default y <Directory /var/www/default>, respectivamente. Y el resto lo dejamos como está.

Ahora vamos a crear los siguientes ficheros nuevos. Primero creamos /etc/apache2/sites-available/guerraespacial.com.conf con el siguiente contenido:

<VirtualHost *:80>
        DocumentRoot "/var/www/guerraespacial.com"
        ServerName guerraespacial.com
        ServerAlias *.guerraespacial.com

        <Directory "/var/www/guerraespacial.com">
                Options -Indexes FollowSymLinks MultiViews
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/guerraespacial.com.error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/guerraespacial.com.access.log combined
        ServerSignature On

</VirtualHost>

Y ahora creamos /etc/apache2/sites-available/floristeria.com.conf con el siguiente contenido:

<VirtualHost *:80>
        DocumentRoot "/var/www/floristeria.com"
        ServerName floristeria.com
        ServerAlias *.floristeria.com

        <Directory "/var/www/floristeria.com">
                Options -Indexes FollowSymLinks MultiViews
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/floristeria.com.error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/floristeria.com.access.log combined
        ServerSignature On

</VirtualHost>

Los dos ficheros son practicamente idénticos, solo cambia el dominio que aceptan como entrada, la carpeta de donde van a coger los recursos estáticos y el nombre de los ficheros de log.
El dominio que aceptan como entrada se define en las etiquetas ServerName y ServerAlias. Estas etiquetas son utilizadas por Apache para averiguar a que site estás intentando acceder desde tu navegador. La carpeta con los recursos que se sirven se define en DocumentRoot.
El * delante del dominio en ServerAlias sirve para que podamos introducir cualquier subdominio, como www.floristeria.com, pedidos.floristeria.com o cualquier subdominio. Si deseáramos tener sites distintos, uno para cada subdominio, lo que haríamos sería crear nuevos ficheros de configuración con otro ServerName y ServerAlias que apuntasen a otro DocumentRoot distinto.
La opción -Indexes en la etiqueta Options hace que no se muestre un listado con todos los recursos del directorio actual si no existe un fichero index.html. Esto significa que, por ejemplo, si tenemos una carpeta con solo imagenes y alguien accede a esa carpeta, no se listen todas las imagenes.

Cuando hayamos acabado, activamos los dos sitios (recordad que los hemos creado en sites-available, pero no entrarán en funcionamiento hasta que no exista un enlace simbólico en sites-enabled) y recargamos la configuración de apache con:

a2ensite floristeria.com.conf
a2ensite guerraespacial.com.conf
/etc/init.d/apache reload

Si listamos ahora el contenido de sites-enabled, vemos que están los dos nuevos sitios que hemos creado, apuntando a sites-available.

ls -l /etc/apache2/sites-enabled
total 0
lrwxrwxrwx 1 root root 26 oct 23 20:40 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 39 oct 24 15:43 floristeria.com.conf -> ../sites-available/floristeria.com.conf
lrwxrwxrwx 1 root root 42 oct 24 15:44 guerraespacial.com.conf -> ../sites-available/guerraespacial.com.conf

Ahora si que podemos abrir un navegador y entrar en las siguientes direcciones, mostrando la página correspondiente a cada una de ellas: http://floristeria.com:8888, http://guerraespacial.com:8888 y http://localhost:8888

Más información en: http://httpd.apache.org/docs/2.0/mod/core.html#virtualhost

Situación actual

Llegados a este punto, deberíamos tener lo siguiente:

  • Dos dominios configurados, cada uno apuntando a su directorio correspondiente.
    1. guerraespacial.com apuntando a /var/www/guerraespacial.com
    2. floristeria.com apuntando a /var/www/floristeria.com
  • El dominio por defecto (entrando a través de la IP o de localhost) debería estar protegido con el usuario y password de /etc/phpmyadmin/htpasswd.setup. Dentro de este dominio, se puede acceder a /phpmyadmin para manipular MySql. Para entrar en phpmyadmin, utilizaremos el login y password que hemos definido durante la instalación de MySql.

Configurando Tomcat 6 para que arranque automáticamente

Creamos enlaces simbólicos a este fichero en las carpetas rc1.d y rc2.d para que Tomcat se pare y arranque automáticamente cuando se reinicie el sistema:

ln -s /usr/sbin/catalina /etc/rc1.d/K99catalina
ln -s /usr/sbin/catalina /etc/rc2.d/S99catalina

Podemos probar si tomcat para y arranca automáticamente reiniciando el sistema con el comando reboot halt o manualmente parando y arrancando la máquina virtual desde Virtual Box.

Configurando un host de Tomcat 6 por dominio

El directorio /usr/local/tomcat/webapps aloja todas las aplicaciones web que vienen preinstaladas con Tomcat en el dominio por defecto ‘localhost’. Cada vez que Tomcat arranca, busca en este directorio carpetas o archivos .war para desplegar y los pone en funcionamiento. Lo que vamos a hacer es crear dos nuevos directorios para aplicaciones y mapearlos para que cada uno de ellos funcionen con cada uno de los dos dominios de ejemplo de este tutorial.
Primero vamos a crear los dos directorios en /var/www con los siguientes nombres guerraespacial.com-webapps y floristeria.com-webapps:

cd /var/www
mkdir guerraespacial.com-webapps
mkdir floristeria.com-webapps

Cada uno de estos directorios alojara todos los archivos .war o carpetas que deseemos para cada uno de los dominios.

Ahora vamos a crear los dos hosts en la configuración de Tomcat para que apunten a estos dos directorios. Editamos el fichero /usr/local/tomcat/conf/server.xml y buscamos, al final del fichero, el cierre de la ultima etiqueta y añadimos debajo estas dos entradas :

<Host name="floristeria.com" appBase="/var/www/floristeria.com-webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
</Host>
<Host name="guerraespacial.com" appBase="/var/www/guerraespacial.com-webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
</Host>

Más información: http://tomcat.apache.org/tomcat-6.0-doc/config/host.html

Vamos a suponer que tenemos, por lo menos, dos aplicaciones web: guerraespacial.war y floristeria.war, cada una con sus JSP, su WEB-INF, etc. una para funcionar dentro de cada dominio (aunque podríamos tener más).
Las subimos del servidor físico a la máquina virtual mediante scp, copianda cada archivo war a su carpeta correspondiente. Scp es un sistema de subida y bajada de archivos seguro que funciona mediante ssh (por lo que debemos utilizar el puerto 2222 solo si estamos trabajando con la máquina virtual, si es un servidor real en un hosting, usaremos el puerto por defecto 22). Para Windows puedes usar el WinSCP (bajándotelo desde http://sourceforge.net/projects/winscp/ y para MacOS/Linux, puedes usar los siguientes comando:

scp -P 2222 guerraespacial.war root@localhost:/var/www/guerraespacial.com-webapps
scp -P 2222 floristeria.war root@localhost:/var/www/floristeria.com-webapps

Ahora tenemos dos arhivos war, cada uno de ellos dentro de su carpeta correspondiente. El nombre de cada archivo war es el nombre de su contexto, por lo que al haberlos copiado con los nombres guerraespacial.war y floristeria.war significa que para entrar en la aplicación, deberemos utilizar las siguientes ruta: http://guerraespacial.com:9999/guerraespacial y http://floristeria.com:9999/floristeria . Para evitar esto, lo que hacemos es renombrar los dos archivos war con el nombre ROOT.war quedando de la siguiente forma (podemos renombrarlos directamente con WinSCP, o desde la línea de comandos con mv floristeria.war ROOT.war y mv guerraespacial.war ROOT.war

/var/www/floristeria.com-webapps/ROOT.war
/var/www/guerraespacial.com-webapps/ROOT.war

El nombre ROOT es un nombre especial para Tomcat que equivale a decir que el contexto de la aplicación es “/”, o lo que es lo mismo, que no necesitamos ir a ningún directorio para ver la aplicación ya que está instalada en la raíz.

Vamos a comprobar que hemos creado los hosts correctamente y desplegado bien las aplicaciones. Primero reiniciamos tomcat con

catalina stop
catalina start

Y abrimos un navegador para ver las siguientes direcciones http://guerraespacial.com:9999 y http://floristeria.com:9999
Si deseáramos instalar más aplicaciones en cada uno de los dos dominios, tan solo tendríamos que copiarlas a sus respectivos directorios y Tomcat las desplegará automáticamente.

Conectando Apache a Tomcat 6

El escenario actual es que tenemos, por un lado Apache 2, corriendo por el puerto 80, y por otro lado Tomcat 6, corriendo por el puerto 8080. La idea es utilizar los dos servidores a la vez de la siguiente manera: todas las peticiones http serán recibidas por Apache, el cual redirigirá a Tomcat 6 las peticiones solo si es necesario. Los beneficios que este sistema dual de servidores ofrece son:

  • Apache sirve, entre otras cosas, páginas php, por lo que podemos instalar un wiki, un blog o phpMyAdmin en el mismo servidor (también cgis, perl, python)
  • Apache ofrece modulos y plugins muy iteresantes como mod_rewrite, mod_alias, realms
  • Apache puede actuar como un balancedor de peticiones entre múltiples tomcats. Piensa que puedes tener varios Tomcat instalados en varias máquinas, y Apache puede redirigir las peticiones a todos ellos de una manera balanceada. Si un Tomcat se cayera, Apache lo detectaría y dejaría de enviarle peticiones solo a ese Tomcat y seguiría usando el resto, por lo que no habría una perdida de servicio.

Lo primero que debemos hacer es activar los modulos proxy, proxy_ajp y proxy_balancer y reiniciar Apache 2, con los siguientes comandos:

a2enmod proxy
a2enmod proxy_ajp
a2enmod proxy_balancer
/etc/init.d/apache2 restart

AJP13 es un protocolo de comunicación interno y muy rápido que utiliza Apache para comunicarse con Tomcat usando conexiones TCP persistentes. El puerto por defecto de Tomcat por el que se accede a este servicio es el 8009 (puedes ver los puertos de Tomcat y cambiarlos en el fichero /usr/local/tomcat/conf/server.xml)

Más información: http://tomcat.apache.org/connectors-doc-archive/jk2/common/AJPv13.html

Editaremos el fichero /etc/apache2/sites-enabled/guerraespacial.com.conf y /etc/apache2/sites-enabled/floristeria.com.conf y le añadiremos el siguiente fragmento (el mismo fragmente a los dos ficheros sirve) dentro de la sección <VirtualHost> :

<Proxy balancer://tomcat_cluster>
        Order allow,deny
        Allow from all
        BalancerMember ajp://localhost:8009
</Proxy>
ProxyPreserveHost On
ProxyPass        / balancer://tomcat_cluster/
ProxyPassReverse / balancer://tomcat_cluster/

Y reiniciamos tomcat con:

/etc/init.d/apache2 restart

En este momento, ya podemos entrar en nuestras aplicaciones a través de Apache: http://guerraespacial.com:8888 y http://floristeria.com:8888 (o directamente por el puerto 80 si estamos ante un servidor real en un hosting).

La etiqueta <Proxy balancer://tomcat_cluster> se encarga de definir un conjunto de servidores a los que redirigir las peticiones, dandoles un nombre de cluster, que puede ser cualquiera (en el ejemplo se ha utilizado “tomcat_cluster”, pero podríamos haber elegido cualquiera). Dentro de la definición del Proxy, la etiqueta BalanceMember define cuales son los miembros del cluster. En este caso solo tenemos uno, por lo que solo hay una entrada de BalanceMember, pero si tuvieramos varios nodos más en cluster, tan solo tendríamos que añadir más líneas BalanceMember, indicando el protocolo, host y puerto de cada una de ellas. Ahora el host es localhost, pero hay que tener en cuenta que podríamos tener un cluster con los nodos repartidos en varias máquinas distintas, por lo que en vez de localhost, habría que poner una ip (o el nombre del host). En cuanto al protocolo, si utilizamos ajp el puerto es 8009, y si usamos http el puerto es el 8080 (de nuevo, la definición de puertos de Tomcat se puede ver y cambiar en el fichero /usr/local/tomcat/conf/server.xml)

Las etiquetas ProxyPass y ProxyPassReverse indican a Apache a partir de que ruta debe redirigir las peticiones (en este caso a partir de la raiz, por eso se indica “/”) y a donde deben redirigirse, en este caso al balanceador con el nombre que le hemos dado. Finalmente, la etiqueta ProxyPreserveHost On mantiene la cabecera http host original, en vez de reescribirla.

Un apunte muy interesante es que si queremos que una carpeta concreta no pase por el proxy y, por lo tanto, no sea gestionada por Tomcat, sino que la sirva Apache, lo podemos hacer con esta etiqueta: ProxyPass /ruta !

Resumen de configuración

Este es el estado final que podría tener el fichero de /etc/apache2/sites-enabled/guerraespacial.com.conf (el fichero floristeria.com.conf sería muy parecido):

<VirtualHost *:80>
        DocumentRoot "/var/www/guerraespacial.com"
        ServerName guerraespacial.com
        ServerAlias *.guerraespacial.com

        <Directory "/var/www/guerraespacial.com">
                Options -Indexes FollowSymLinks MultiViews
                allow from all
        </Directory>

        <Proxy balancer://tomcat_cluster>
                Order allow,deny
                Allow from all
                BalancerMember ajp://localhost:8009
        </Proxy>
        ProxyPreserveHost On
        ProxyPass        /css/ !
        ProxyPass        /images/ !
        ProxyPass        /js/ !
        ProxyPass        / balancer://tomcat_cluster/
        ProxyPassReverse / balancer://tomcat_cluster/

        ErrorLog /var/log/apache2/guerraespacial.com.error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/guerraespacial.com.access.log combined
        ServerSignature On

</VirtualHost>

Con este ejemplo final, vemos que las peticiones que se hagan a los recursos /images/*, /js/* y /css/* serán servidos por Apache, por lo que serán buscados en la ruta que se haya especificado en DocumentRoot "/var/www/guerraespacial.com". El resto de recursos serán servidor por Tomcat, ya que la etiqueta ProxyPass / balancer://tomcat_cluster/ lo especifica claramente.

A partir de este punto, podemos hacer algunas modificaciones interesantes, ya que podemos cambiar el DocumentRoot para que apunte al directorio donde está nuestra aplicación Web. De esta manera, tendríamos un único directorio que será utilizado por Apache 2 y Tomcat a la vez, tan solo especificando que directorios se deben servir por Tomcat (por defecto todos) y cuales por Apache (indicando que no los sirva Tomcat con ProxyPass /directorio !). Por ejemplo:

<VirtualHost *:80;>
        DocumentRoot "/var/www/guerraespacial.com-webapps/ROOT"
...
        ProxyPass        /css/ !
        ProxyPass        /images/ !
        ProxyPass        /js/ !

        ProxyPass        / balancer://tomcat_cluster/
        ProxyPassReverse / balancer://tomcat_cluster/
</VirtualHost<>

Más información
http://httpd.apache.org/docs/2.1/mod/mod_proxy.html#proxypass, http://httpd.apache.org/docs/2.1/mod/mod_proxy.html#proxypassreverse, http://httpd.apache.org/docs/2.1/mod/mod_proxy.html#proxypreservehost, http://httpd.apache.org/docs/2.1/mod/mod_proxy_balancer.html

http://blog.indigio.com/index.php/2007/12/06/easier-production-releases/, http://bliki.rimuhosting.com/space/knowledgebase/linux/miscapplications/ruby+on+rails, http://docs.codehaus.org/display/JETTY/Configuring+AJP13+Using+mod_jk

Parte 4: Seguridad

Bloqueando accesos inseguros a phpMyAdmin

Por defecto, phpMyAdmin se autoconfigura con Apache para que funcione en el directorio virtual /phpmyadmin de cualquier host, ya que se configura con un Alias a nivel global, afectando a todos los dominios. Esto significa que, tanto si entramos en http://localhost:8888/phpmyadmin/ como si usamos cualquier otro dominio, podemos entrar en la aplicación phpMyAdmin. (En realidad ahora no es posible entrar en phpMyAdmin desde cualquier dominio, ya que los dominios guerraespacial.com y floristeria.com de las partes anteriores del tutorial están configurados para redirigir cualquier petición a partir de “/” hacia Tomcat, por lo que el recurso /phpmyadmin también lo intentará servir Tomcat, pero no funcionará.)
Pero supongamos que creamos nuevos dominios en Apache para servir contenidos estáticos o php, estos nuevos dominios tendrían accesible phpMyAdmin a traves de la dirección /phpmyadmin. Y nosotros no queremos eso, solo queremos que phpMyAdmin sea accesible a través de la IP o a través de localhost, es decir, a través del dominio por defecto, pero nunca a través de cualquier otro dominio o site que hayamos configurado en el sistema.

Así que vamos a hacer lo siguiente. Editamos el fichero /etc/apache2/conf.d/phpmyadmin.conf y comentamos la siguiente línea (comentar significa ponerle el caracter # delante para que Apache la ignore):

# Alias /phpmyadmin /usr/share/phpmyadmin

De paso, también podemos quitar la documentación de apache, que es accesible desde cualquier dominio a través de la carpeta virtual /manual. Para ello, editamos el fichero /etc/apache2/conf.d/apache2-doc y comentamos la primera línea:

# Alias /manual /usr/share/doc/apache2-doc/manual/

Ahora, para añadir phpMyAdmin solo al site por defecto (al que se accede cuando no usamos un dominio, solo la IP o localhost), editamos el fichero /etc/apache2/sites-available/default y añadimos las dos líneas del fichero anterior que acabamos de comentar dentro de la etiqueta <VirtualHost *:80>:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /manual /usr/share/doc/apache2-doc/manual/
....

De esta manera, la definicion de la carpeta virtual /phpmyadmin (y de /manual) solo tiene efecto dentro del virtual host por defecto, el que no tiene asociado ningún nombre de dominio. Ahora solo es posible entrar en phpmyadmin a los que conozcan la IP. En el caso de que estemos trabajando con una máquina virtual, solo es accesible a través de localhost, pero si fuera un servidor real en un hosting, sería la IP pública de la máquina que nos han asignado. Cualquiera que conozca la IP (o que la adivine de casualidad) y acceda al directorio phpmyadmin, podrá acceder a nuestra base de datos (siempre que conozca el login y password de mysql).

Protegiendo con password realm el virtual host por defecto

El virtual host por defecto es aquel al que entramos cuando accedemos al Apache de la máquina usando un dominio o IP que todavía no hemos configurado como virtual host. Este acceso a través de IP debería estar restringido solamente al administrador de la máquina, pues ahí es donde se instalan las aplicaciones de gestión, como phpMyAdmin. Podemos bloquear con una contraseña cualquier acceso al virtual host por defecto. Así, cualquier que intente acceder a cualquier recurso o carpeta usando solo la IP (o localhost) le pedirá login y password.

Para ello, vamos a crear un acceso protegido, editando el fichero /etc/apache2/sites-available/default y añadiendo el siguiente fragmento:

<Location />
       AuthName "Prohibido pasar"
       AuthType Basic
       AuthUserFile /etc/apache2/htpasswd.setup
       Require Valid-user
</Location>

Con esto hacemos que cualquier acceso a partir de “/”, es decir, a partir de la raiz, lo que abarca a todos los recursos y directorios del host, utilice el login y password situados en el fichero de configuración /etc/apache2/htpasswd.setup. Si solo quisiéramos proteger un directorio determinado, bastaría con cambiar la etiqueta <Location / > por <Location /directorio >

Ahora lo que hacemos es crear ese fichero con el login y password que deseemos con el siguiente comando:

htpasswd -c /etc/apache2/htpasswd.setup usuario

Cambiamos la palabra usuario por el login que deseamos utilizar para autenticarnos. Nos pedirá después la password dos veces, y creará el fichero /etc/apache2/htpasswd.setup con el usuario y la clave. Recargamos la configuración de Apache2 con /etc/init.d/apache2 reload

Ahora podemos intentar entrar en el host por defecto, por ejemplo, http://localhost:8888/phpmyadmin/ y ver que para entrar, nos pedirá el login y password que acabamos de crear.

Fin

Y con esto finaliza el tutorial. Todavía es posible introducir más seguridad en nuestro servidor, pero no es mi objetivo (en parte porque no soy un experto en seguridad ni de lejos). Como recomendación final diría que se debe intentar siempre tener el sistema operativo actualizado para evitar que nadie explote cualquier agujero de seguridad, revisar los accesos en los ficheros de logs para detectar intrusiones, no tener password débiles (números, letras, simbolos y con más de 10 caracteres, y cambiarlas de vez en cuando), usar certificados para entrar por ssh, bloquear el acceso a todas las IPs menos a un cierto número determinado de confianza, sentido común y un poco de suerte. Hay una gran cantidad de blogs y documentación sobre seguridad en internet.

Espero que haya sido de utilidad: y si te ha gustado o te ha servido, un comentario siempre se agradece. :)

Categorías