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
Publicar un comentario