Consejos para proteger tu servidor Apache


Muchos programadores por ejemplo, utilizan archivos con extensión INC, para ser incluidos en un php por ejemplo. Estos archivos no deberían ser vistos por nadie desde internet, tan solo deben ser accesados por el mismo servidor.

El siguiente código permite bloquear esto:
Order deny,allow
Deny from All

Podemos repetir lo mismo para cualquier extensión de archivo que querramos proteger. Por ejemplo los INI:
Order deny,allow
Deny from All

También puedes bloquear el acceso a un archivo determinado:


Order deny,allow
Deny from All

También puedes bloquear todos los accesos de alguna dirección IP determinada. Esto es especialmente útil cuando hay quienes constantemente buscan robarte el contenido o ancho de banda.
order allow,deny
deny from 201.234.113.210
deny from 151.23.89.68
deny from 190.100.150.19
deny from 200.93.233.162
deny from 78.129.202.15
allow from all

.htaccess

Este archivo lo colocaremos en la carpeta que queremos proteger. Editemos el .htaccess con algo similar a :

AuthUserFile /ruta/absoluta/hacia/.htpasswd
AuthName AquiPuedesPonerLoQueQuieras
AuthType Basic

require user test123

Veamos línea a línea

AuthUserFile /ruta/absoluta/hacia/.htpasswd

Le tenemos que indicar la ruta absoluta (del servidor) hacia nuestro archivo .htpasswd, por norma general el archivo de contraseñas se pone fuera del alcance de la web, es decir, fuera de la carpeta public_html o similar, como por ejemplo “/home/usuario/.htaccess”. En un servidor decente y con accesso por SSH o similares es muy fácil saber cual es la ruta absoluta hacia tu web, en caso contrario puedes utilizar este pequeño php para descubrirla :

 

Recuerden: Dejen siempre el archivo .htpasswd fuera del alcance público, en caso de que eso no sea posible, cambienle el nombre por algo del estilo .aSf5cHJ9D. No evitarás que puedan descubrir tus usuarios y contraseñas, pero le pones el camino bastante más dificil.

AuthName AquiPuedesPonerLoQueQuieras

Muestra el nombre del sitio, te aparecerá una ventanita preguntando el nombre de usuario y contraseña con un mensaje similar a “Está intentando entrar a AquiPuedesPonerLoQueQuieras, debe especificar un nombre de usuario y contraseña”. Da exactamente igual lo que pongas, no tiene un efecto sobre el nombre real de la carpeta o archivos.

AuthType Basic

Indica que el tipo de autentificación es básico.

require user test123

Indica que el único usuario que puede entrar es test123, cualquier otro -aunque la contraseña sea correcta- no será válido.
Tenemos variaciones de esa línea como por ejemplo :

require user test123 otrousuario unusuariomas

Donde especificar 2, 3 o más usuarios. Tambien tenemos :

require valid-user

Donde podrán entrar todos los usuarios especificados en el archivo .htaccess (u otro nombre si así lo indicaste en la primera línea.

Podemos incluso proteger sólo algunos archivos de la manera :

AuthUserFile /ruta/absoluta/hacia/.htpasswd
AuthName AquiPuedesPonerLoQueQuieras
AuthType Basic
Require valid-user
Require user test123

Como ven admite mucho juego.
.htpasswd

Me referiré a .htpasswd como el nombre del archivo, pero como ya dije anteriormente, si no lo pueden esconder de la vista pública, al menos cámbienle el nombre.

Este archivo contiene una lista de nombres de usuario y contraseñas, en formato usuario:contraseña y cada nombre-clave en una línea independiente, por ejemplo :

test123:12JvVkeJRgm8A
otrousuario:$1$UNHEaBiV$NzwYQ8NhjzIOUmFyfGyrO/

Como ven, la contraseña está encriptada, por lo general con una variación del algoritmo MD5 realizada por Apache. Pueden encontrar en Internet varios sitios en donde encriptar las contraseñas (este por ejemplo).

Si disponemos de un servidor apache en local o acceso SSH a nuestro servidor web, podemos ejecutar el comando htpasswd para que nos cree el archivo, o nos devuelva la cadena en la misma consola :

htpasswd -nb usuario contraseña

Esta línea imprimirá en consola la cadena a agregar (manualmente) a nuestro archivo .htpasswd

htpasswd -cb .htpasswd usuario contraseña

Esta otra escribirá en el .htpasswd la cadena corespondiente. La documentación del comando htpasswd es corta pero bastante interesante.

En cualquiera de los casos, hasta el momento hemos de añadir manualmente las parejas usuario:contraseña a nuestro archivo .htpasswd, lo cual puede ser bastante engorroso, para ello podemos utilizar PHP para modificar el contenido de ese archivo, por ejemplo un script sencillo que se limita a añadir los nombres de usuario y contraseñas :

 

fuentes: http://www.universidadperu.com/webmasters/proteger-servidor-apache-htaccess.php
http://www.cristalab.com/tutoriales/proteger-carpetas-con-.htaccess-y-.htpasswd-c213l/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s