Proteger carpetas en servidor web Apache con .htaccess y .htpasswd

Aprende a proteger directorios de tu página web mediante archivos .htaccess de una forma sencilla. Algunos paneles de control tienen la opción integrada, pero nunca está de más saber hacerlo manualmente. Sobre todo porque así es más extendible.

Requisitos

  • Al menos la enseñanza primaria o equivalente
  • Tener conceptos mínimos sobre .htaccess y .htpasswd y como editarlos
  • Necesidad de proteger una carpeta del alcance de los mirones, o encontrar diversión en hacerlo
  • 7 minutos de su tiempo

Conociendo a .htaccess y .htpasswd

Así se llaman los dos archivos más importantes para modificar cosas en nuestro servidor. No tienen ni extensión ni nombre, simplemente son así. Contienen texto plano, por lo que pueden ser editados con el Bloc de Notas, el Programmers Notepad, Gedit, nano, wim, … cualquier cosa que trabajo con texto plano (Word NO) El archivo .htaccess además de para proteger carpetas, sirve entre otras cosas para utilizarlo con el mod_rewrite de Apache y nos salgan urls cortas, como la de este tutorial . En esta ocasión, .htaccess establecerá el tipo de permiso necesario y qué usuarios pueden acceder a qué archivos, mientras que .htpasswd guardará el nombre de usuario y contraseña de cada uno de ellos.

.htaccess

Continuar leyendo “Proteger carpetas en servidor web Apache con .htaccess y .htpasswd”

20 consejos para securizar Apache

Este post es básicamente una traducción de este otro, donde se enumeran, como dice el título, 20 métodos para conseguir que nuestro servidor Apache esté más seguro. Recuerda que son eso, recomendaciones, y no garantías de que no vayas a tener problemas, así que no descuídes la tarea de hacer copias de seguridad. Por otra parte, alguno de estos métodos (sobre todo combinados) puede(n) reducir el rendimiento del servidor, así que no los apliques a ciegas sin pensartelo.

Nota: cuando se indique que hay que agregar o cambiar líneas del archivo de configuración de Apache, se refiere al archivo httpd.conf, que suele estar situado en el subdirectorio conf en /etc/httpd o dentro del directorio de instalación de Apache (pero el directorio puede variar mucho según el sistema operativo, distribución o incluso la configuración de tu sistema).

Antes de nada, asegúrate de tener instalados los últimos parches de seguridad instalados

Si no tenemos los agujeros de seguridad bien tapados no tiene demasiado sentido continuar con la optimización de seguridad.

Asegúrate de que sólo root tiene acceso de lectura a los binarios y ficheros de configuración de Apache

Suponiendo que la instalación de este programa está en /usr/local/apache habría que hacer esto:

# chown -R root:root /usr/local/apache# chmod -R o-rwx /usr/local/apache Continuar leyendo "20 consejos para securizar Apache"

Proteger subdominios en Plesk más SSL

Un pequeño detalle que hasta la fecha (y que me corrijan si me equivoco) que no ha solucionado la gente de Plesk, es el de poder proteger directorios fuera de la raíz principal del dominio creado, mediante la opción “Protected Directories”. Por ejemplo, queremos crear un subdominio en nuestro dominio principal.

Nombre de dominio: www.probando.com

Nombre de subdominio: subdominio.probando.com

Las raíces de uno y otro son:

www.probando.com /httpdocs o /httpsdocs

subdominio.probando.com /subdomains/subdominio/httpdocs o /subdomains/subdominio/httpdocs

El problema aquí es que Plesk (probado en la versión 8.3.0) no reconoce las raices de directorio que no sean /httpdocs o /httpsdocs. Por lo tanto, si creamos un subdominio, no podemos protegerlo “comodamente” al menos. Hay dos opciones. Si tenemos licencias para varios dominios, podemos crear un dominio nuevo, quitarle las www y asignarle el nombre de subdominio pero eso es un desperdicio de la licencia. La otra opción es crear el htaccess y htpasswd a pelo y es muy fácil. Pero como se que no me voy a acordar dentro de 1 año, lo pongo aquí y aquí se queda :D De paso, aprovecho para comentar como se puede utilizar los certificados que genera el propio panel de Plesk, que, a falta de uno comprado a otro proveedor ya nos pueden servir de algo.

No hace falta entrar por ssh, con un ftp lo podemos hacer todo. Listo los pasos desde cero.

  1. Domains->Nombredenuestrodominio->Certificates->Add New Certificate (configuramos los datos y clickamos en Self-Signed. Ya tenemos el certificado creado para ese dominio)
  2. Si queremos habilitar el certificado para el dominio principal: Domains->Nombredenuestrodominio->Setup (habilitamos el soporte SSL)
  3. Creamos el subdominio: Domains->Nombredenuestrodominio->Subdomains->Add Subdomain (habilitamos el soporte SSL)
  4. Automáticamente se crea una carpeta en /subdomains/<nombre>
  5. Ahora mismo tenemos creado un certificado para el dominio y hemos creado un subdominio. Vamos a proteger ese directorio. En este caso, que vamos a utilizar el protocolo https, necesitamos trabajar con la carpeta raíz del subdominio /subdomains/<nombre>/httpsdocs
  6. Utilizamos cualquier forma de generar un htaccess y su correspondiente htpasswd. Al final del post hay un link al respecto. Lo fundamental es saber la ruta completa hasta la carpeta que hace de DocumentRoot. Podemos mirarlo haciendo un archivo php y llamando a phpinfo()
  7. Cuando tengamos los archivos los subimos a /subdomains/<nombre>/httpsdocs. El nombre correcto de cada uno ha de ser .htaccess y .htpasswd. Si se desaparecen al subirlos por ftp, fuerza el ver archivos ocultos ;)
  8. Accede a https://subdominio.nombredetudomonio.com y prueba a entrar. Si no te coge la contraseña asegurate de que la raíz hasta el .htpasswd es correcta. Si no has querido soporte ssl será http://etc.etc.etc.

Ejemplo de htaccess:

AuthUserFile /var/www/vhosts/nombrededominio/subdomains/panel/httpsdocs/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected Area"
AuthType Basic
<limit GET POST>
require valid-user
</limit>

Ejemplo de htpasswd:

usuariovalido:jkldfZdlfjds890

Links:

Protección para el usuario apache

Este pequeño tip en el user apache me lo encontre en varios servidores a los que “analice” :D, esta bien pensando por el admin que se lo ingenio pero se olvido de securizar otros servicios/usuarios.

Consultamos el directorio de apache en /etc/passwd y aparece algo como
apache:x:48:48:Apache:/var/www:/bin/false
Ai se puede apreciar que su directorio del usuario es /var/www
Me dirijo a ese directorio y creo un archivo llamado .bashrc y en el solo escribo exit
lo guardo y listo; lo mismo con los otros usuarios que se deseen bloquear