Apache
Enlaces y referencias
- Ref: Página principal del programa
Módulos
mod_autoindex
- Ref: mod_autoindex
Este módulo permite exponer una relación de archivos y directorios desde el servidor web. Para activarlo en un directorio o localización se debe emplear la opción Indexex
puesto que el módulo ya está incluído en la base del servidor.
Dispone de varias opciones que alteran la información que presenta:
<Directory /docs> # Activamos el listado de archivos Options +Indexes # Ancho variable para el nombre de los archivos IndexOptions DescriptionWidth=* # Mostrar antes las carpetas IndexOptions FoldersFirst # Ordenar sin distinguir mayúsculas de minúsculas IndexOptions IgnoreCase # Archivo de cabecera en todas las páginas HeaderName HEADER.html # Descripciones alternativas a documentos concretos AddAlt "Documento PDF" *.pdf </Directory>
Recetario
Forzar conexión segura
Empleando mod_rewrite se puede incluir una estrofa como la siguiente:
# redirect to https when available (thanks omen@descolada.dartmouth.edu) RewriteEngine on RewriteCond %{HTTPS} !^on$ [NC] RewriteRule . <nowiki>https://%{HTTP_HOST}%{REQUEST_URI}</nowiki> [L]
Proteger con contraseña
Ref: Apuntes personales en taquiones.net
Incluir la siguiente estrofa en el recurso que se quiera proteger:
AuthType Basic AuthName "Password Required" AuthUserFile /etc/apache/passwd/users AuthGroupFile /etc/apache/passwd/groups Require Group admins
crear el archivo de contraseñas de esta forma
<# htpasswd -c /etc/apache/passwd/users victor New password: Re-type new password: Adding password for user victor #
y el de grupos de esta otra:
# echo "admin: victor" >> /etc/apache/passwd/groups
Definir nombre del servidor
Emplear la directiva ServerName en la configuración principal así como en cada host virtual. En caso contrario Apache intenta una resolución inversa DNS con los resultados que pueden llegar a esperarse. De esta forma también es posible indicar el número de puerto sin ninguna duda.
ServerName taquiones.net:80
Esto soluciona la advertencia que aparece cuando los certificados digitales (a través del campo CommonName) no coinciden con el nombre del servidor.
[Thu Nov 04 14:47:16 2010] [warn] RSA server certificate CommonName (CN) `taquiones.net' does NOT match server name!?
Incluir archivos en la configuración
Una manera sencilla y normalizada de incluir en copia archivos de configuración es emplear la directiva include:
Include /etc/apache2/sites-conf/esferas.org/[^.#]*.conf
Y de esta forma sólo se cargan los archivos cuyo nombre no comience por un punto, el carácter almohadilla (#
) y tengan la extensión .conf
.
Red interior y red exterior
- Ref: Mezclando host virtuales con nombre e IP
- Ref: Ejemplos de host virtuales en la documentación oficial
Si un servidor Apache está situado entre la red interior (la intranet) y la red exterior (Internet) y debe servir el mismo contenido pero con diferentes configuraciones de seguridad se pueden usar secciones VirtualHost para encauzar el tráfico.
Conviene echarle un vistazo a los ejemplos para ver cuánto pueden dar de sí las diferentes combinaciones; aquí me limito a anotar un caso real.
Tenemos un wiki instalado en un ordenador fronterizo en la dirección http://example.com/wiki y queremos que sirva el mismo contenido para la intranet que para el exterior, pero en éste último caso necesitamos que esté protegido por contraseña y usuario. Es más, no queremos que la identificación se realice en claro, así que también es necesaria una conexión segura con el servidor antes de pedir las credenciales.
Dado que no queremos incluir módulos extras ni escribir programas específicos nos limitamos a establecer un par de reglas cuando se accede al directorio /wiki:
- Si la conexión es segura siempre se solicita autentificación.
- Si la conexión no es segura y procede del exterior siempre se redirige a una conexión segura.
Conexión en claro
La estrofa es bastante simple y se emplea mod_rewrite para verificar desde dónde llega la petición.
# Forzamos una conexión segura si la petición procede de # fuera y quiere acceder al url /wiki RewriteEngine On RewriteCond %{REMOTE_ADDR} !^192\.168\.0 RewriteCond %{REQUEST_URI} ^/wiki RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L] # Configuración para mediawiki Alias /wiki /var/www/w/index.php ...
Conexión cifrada
En este caso la configuración es prácticamente la misma sólo que protegemos con contraseña el acceso al directorio principal del wiki.
Alias /wiki /var/www/w/index.php <Directory /var/www/w> Options +FollowSymLinks AllowOverride All order allow,deny allow from all AuthType Basic AuthName "Acceso al wiki" AuthUserFile /etc/apache2/passwd/passwords AuthGroupFile /etc/apache2/passwd/group Require valid-user </Directory> ...