Configurar seguridad Apache Server

Securizando Apache

Este es un pequeño ejemplo de configuracion de seguridad del servidor Apache. Vamos a crear 2 sites en nuestro Apache, uno abierto sin seguridad y otro configurado con seguridad (autenticacion basica).

Creamos los 2 sites , que los vamos a llamar www.site1.com y www.site2.com . Como estos dns no los hemos comprado, vamos a editar nuestro archivo /etc/hosts para que cuando visitemos esas urls nos envie a localhost. Editamos el archivo y metemos estas 2 nuevas lineas al final :



Ahora vamos a crear esos 2 sites en unos directorios accesibles. Yo voy a optar por crear 2 carpetas dentro del directorio /usr/local/apache2/sites (el directorio “sites” lo acabo de generar)

Y dentro creo 2 carpetas llamadas www.site1.com y www.site2.com y dentro de cada una un fichero index.html. De forma que cuando visitemos esas urls se nos sirva el index del sitio:










El contenido del archivo index.html del site1 es solo para pruebas, asi que es muy sencillo:













El index del site2 pues es primo hermano:













Ya tenemos creados 2 sites en nuestro sistema de ficheros, ahora vamos a configurar Apache para que los sirva:

1. Habilitar la configuracion extra para la definicion de virtual host: antiguamente con el httpd.conf lo haciamos todo. Este fichero crecía y crecía y las nuevas versiones de Apache, ofrecen dividir toda la configuracion en distintos archivos y referenciarlos desde el httpd.conf.
Editamos el archivo (en mi caso /usr/local/apache2/conf/httpd.con ) y buscamos la linea





Esa linea por defecto viene comentada, es decir tiene un # al principio. Lo borramos y la dejamos como la foto. Tener en cuenta, que al hacer esto se deshabilita la definicion del famoso “It works” que tiene por defecto el apache cuando lo instalamos. (ya no buscara ese archivo en htdocs/index.html). Cuando haya una peticion, ira a buscar la configuracion al archivo httpd-vhosts.conf.

2 Lo segundo habilitar el modulo rewrite en el fichero de configuracion de apache. Y tambien lo desccomentamos



Salvamos el archivo httpd.conf.

3.Ahora como la configuracion de los sites (virtualhost) la va a sacar del archivo /conf/extra/httpd-vhosts.conf , vamos a ese archivo a editarlo y vamos a hacer basicamente 2 cosas: Definir donde estan los directorios de los 2 sites y luego la definicion de los 2 virtualhost que tendran las reglas de acceso a esos sites. (He quitado las lineas de comentarios y queda un fichero asi )































No tiene nada especial, esta publicados los 2 sites en el puerto 80, pero dependiendo de cual se pida aplicara un directorio u otro. Tambien se ve que he configurado el archivo de log para que lo meta en la carpeta correspondiente del site.

Arrancamos el apache y visitamos http://www.site1.com y http://www.site2.com y vemos que cada uno nos sirve su pagina de inicio.




















Ya tenemos esto funcionando.

3.Ahora vamos a securizar el site2 con autenticacion Basic.

Para ello necesitamos crear un fichero de credenciales que contenga la info de los usuarios autorizados. Creamos una carpeta dentro de /www.site2.com/ llamada “auth” y dentro de ella ejecutamos la utilidad de apache para generacion de archivos de contraseñas:

>/usr/local/apache2/sites/www.site2.com/auth# htpasswd -c ./auth_users user1

El -c le dice que tiene que crear un fichero llamado auth_users
El argumento del final “user1” es el nomrbe del usuario que vamos a dar de alta.
Al ejecutar nos preguntara por el password, lo metemos y comprobamos que se ha creado el archivo.







4.Ahora solo falta editar el virtualhost del site2 para decirle que use la autenticacion basica y donde tiene el fichero de usuarios permitidos, lo dejamos asi :


















Solo hemos añadido la etiqueta <Location /> y dentro las reglas de seguridad y la ruta al archivo.

Si reiniciamos apache y visitamos www.site1.com podemos seguir entrando sin problemas.
Si visitamos www.site2.com vemos que nos pide usuario/pass para poder acceder.



 

 

Securizar un sitio, basado en un fichero de acceso casi nunca cumple nuestras necesidades, ya que a nuestro site suelen acceder miles de usuarios que tenemos en una bbdd. Apache es muy flexible en este sentido y el modulo mod_proxy puede encargarse de toda esta funcionalidad. Para mas documentacion visitar la pagina oficinal de apache mod_proxy

https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

Comentarios

Entradas populares de este blog

Subir campos Blob a BBDD (Oracle) con Java

Reiniciar usuario de SVN Subversion

Cucumber y Java - definiendo test de una manera amigable