La seguridad del servidor, es un tema bastante amplio. Si bien esta información surge a modo de referencia para intentar cubrir con una parte, cada cual, debe buscar la combinación de posibilidades que mejor se adapte a sus necesidades.
Si no estais familiarizados con este tipo de configuraciones, es muy recomendasble leer esta información y mirar el tema de encriptación (o cualquiera que os pueda ayudar a salir de una duda)
Téngase en cuenta que, la "Autentificación Básica" solo sirve para proteger contra el acceso; pero, al no cifrarse los datos, una vez se ha accedido, éstos, no quedan protegidos debido a que circulan por internet sin cifrar. Aún así, a la autentificación básica, se la puede considerar como a un gran bloqueador de intentos de intrusión no deseados por parte de ataques automatizados que no contemplan el toparse de por medio con este tipo de protección.
Lo suyo, es disponer de autentificación y control de acceso + encriptación de la información que navega por internet, en cuyo caso, se le podrá dar un sentido más riguroso al concepto de seguridad por esta via.
Como podemos encontrar a Apache configurado de varios modos (o configurarlo nosotros si somos propietarios), vamos a revisar dos métodos:
* Método Basic: Cuando introducimos un nombre de usuario y contraseña en la página de acceso, esa información viaja hacia el servidor sin cifrar. En ese trayecto, la información que viaja sin cifrar puede ser capturada por terceros con intenciones maliciosas.
* Método Digest: El usuario y la contraseña se envian cifrados desde el cliente hasta el servidor.
Cuando protegemos una carpeta por contraseña, salvo que se indique lo contrario, todas sus subcarpetas quedan también protegidas.
Requisitos
* Debemos contar con los siguientes módulos cargados en el servidor: mod_auth.c para la autentificación básica, mod_auth_digest.c para la autentificación encriptada de usuarios y contraseñas, mod_ssl.c para poder activar SSL (navegación con https://)
* Tienes que poder usar archivos .htaccess. Ante la duda, contacta o revisa las FAQs de tu hospedaje.
* Necesitarás, si quieres acceder con conexión segura a las carpetas restringidas, de un certificado o estar habilitado por quien te sirve el hospedaje para poder establecer conexiones cifradas o navegación "https"
Restricciones
* Cuando se trate de utilizar el método Digest se debe tener en cuenta que, algunas versiones antiguas de los navegadores, no lo van a soportar.
* Obviamente, cuando por nuestras circunstancias de hospedaje o de interacción con las configuraciones, nos veamos privados de habilitar este método de protección, deberemos quitarnos de la cabeza el intentarlo, o, buscar un servicio de hospedaje que nos permita llevarlo a buen término.
Observaciones
Siempre será mejor poder configurar este tipo de cosas directamente desde el archivo configuración principal de Apache y por medio de la directiva Directory que, a través de archivos .htaccess, porque se puede obtener un mejor rendimiento web y una mayor protección contra el acceso a su configuración.
Directivas a combinar
Dominio y tipo de autentificación
AuthName: Sirve para indicar el nombre del dominio de autentificación y también se corresponde con el texto que se muestra cuando se nos solicita introducir un nombre de usuario y contraseña válidos. Por ejemplo, AuthName "carpeta_restringida", o, AuthName "privado".
Este nombre asignado(carpeta_restringida, privado, etc), cuando creamos el archivo de usuarios/contraseñas para funcionar con el método Digest, deberá coincidir exactamente con el del parámetro requerido a la hora de añadir usuarios con la aplicación htdigest o htpasswd. Un ejemplo de uso para su creación:
htdigest -c /ruta_al_archivo/nombre_del_archivo_de_claves valor_de_AuthName nombre_de_usuario
Cuando se trate del método Basic, este nombre asignado, podrá ser cualquiera que os parezca orientativo.. porque al añadir usuarios, con la aplicación htpasswd y el método Basic, no es necesario introducir un parámetro coincidente con el valor de "AuthName". Por ejemplo:
htpasswd -c /ruta_al_archivo/nombre_del_archivo_de_claves nombre_de_usuario
(En ambos casos, la opcion "-c" solo se debe usar la primera vez, luego, para añadir mas usuarios, se tiene que omitir o se sobreescribirían a los existentes)
AuthType: Sirve para indicar el tipo de autentificación (Basic, Digest). Por ejemplo, AuthType Basic, o, AuthType Digest
Control de individuos
AuthUserFile: Sirve para indicar donde se encuentra el archivo con los usuarios y las claves que tienen privilegio de acceso (/ruta/hacia/el/archivo/el_fichero).
Require: Sirve para indicar que usuarios tienen acceso y hay varias posibilidades de combinarlo:
* valid-user cualquier usuario que esté en el archivo de claves.
* user De los usuarios que pueda haber en el archivo de claves, solo pueden acceder los usuarios que, separados por espacios, esten declarados explícitamente desde la directiva user, como por ejemplo, Require user pepepotamo espinete joomlafiera (que permitiría solo acceder a estos tres usuarios, por muchos que haya de autorizados en el archivo de claves.)
Control de grupos
Si queremos trabajar con grupos, necesitamos de la directiva AuthGroupFile.
AuthGroupFile sirve para indicar donde se encuentra el archivo con la definición de los grupos.(/ruta/hacia/el/archivo/el_fichero)
Ahora, la directiva Require, podría usarse también para autorizar por grupos; es decir, si los usuarios pepepotamo, espinete y joomlafiera pertenecieran al grupo administradores,
Require group administradores
, autorizaría el acceso a todos los usuarios pertenecientes al grupo administradores.
Si, aparte del grupo "administradores", tuviéramos al grupo "autores" con otros tantos usuarios definidos en su interior..
Require group administradores autores
(distintos grupos separados por espacios), tras validarse correctamente, se permitiría el acceso a todos los usuarios dentro del grupo "administradores" y a todos los usuarios dentro del grupo "autores".
Si no queremos trabajar con grupos, podemos indicarlo explícitamente desde el archivo .htaccess con la siguiente línea:
- Código: Seleccionar todo
AuthGroupFile /dev/null
Sugerencias
Decide donde poner el archivo .htaccess dentro de tu espacio web. Recuerda que la protección actuará recursivamente. Si ya hay un archivo .htaccess en la ubicación elegida, recuerda el hacerte una copia de seguridad de ese archivo antes de modificarlo.
Tras crearlos, decide donde vas a poner tus archivos .htpasswd y/o .htgroups. Recuerda, esos archivos NUNCA deben estar ubicados dentro del espacio web. Debes ubicarlos por encima de tu espacio web. En un lugar al que tengas acceso. Por ejemplo, si tu espacio web, empieza en la carpeta "public_html", en ruta:
- Código: Seleccionar todo
/home/usuario/public_html/
Ubica esos archivos, por encima de "public_html" (si fuera necesario, creando un nuevo directorio llamado "privado" o como prefieras llamarlo) en la ruta:
/home/usuario/privado/.htpasswd
Si quieres autorizar grupos:
/home/usuario/privado/.htgroups
Agrega el siguiente código al archivo .htaccess file. Recuerda, debes ajustar las rutas u otros datos del ejemplo destacados en rojo a las que se correspondan con las de tu servidor/configuración.
AuthUserFile /home/usuario/privado/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
AuthName "Privado"
require valid-user
Con esta combinación:
Usamos la autentificación básica, permitiendo el acceso a cualquier usuario agregado dentro del archivo de claves ".htpasswd" y no usamos los grupos.
Si queremos forzar la conexión SSL, en el mismo archivo .htaccess, se pueden agregar estas líneas:
RewriteEngine on
RewriteCond %{SERVER_PORT} !443$
RewriteRule ^(.*)$ https://www.ejemplo.com/$1 [L,R]
(el puerto 443 es el que se usa normalmente para el servicio SSL, si usas el 444, u otro distinto, deberás sustituirlo donde se remarca en rojo. La URL de tu dominio, también)
Es muy importante que borres cualquier archivo de respaldo del archivo .htaccess de dentro del espacio público.
Para obtener una mayor información puedes revisar la documentación de Apache. Así mismo, el tema SSL no se va a tocar en mayor profundidad desde este hilo. Para más información, sigue este enlace.
[Volver al Índice]
IMPORTANTE: No se brinda soporte directamente desde los post enlazados. Para ello, usa los correspondientes foros específicos, como por ejemplo, el foro de seguridad para lo que guarde relación directa con el tipo de consulta, aporte y/o comentario.

