Diferencia entre revisiones de «Apache»
(Página creada con « == 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 <code>Indexex</code> 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>…») |
mSin resumen de edición |
||
Línea 50: | Línea 50: | ||
Require Group admins |
Require Group admins |
||
crear el archivo de contraseñas de esta forma |
crear el archivo de contraseñas de esta forma |
||
< |
<# htpasswd -c /etc/apache/passwd/users victor |
||
New password: |
New password: |
||
Re-type new password: |
Re-type new password: |
||
Línea 63: | Línea 63: | ||
Esto soluciona la advertencia que aparece cuando los certificados digitales (a través del campo ''CommonName'') no coinciden con el nombre del servidor. |
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!? |
[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 (<code>#</code>) y tengan la extensión <code>.conf</code>. |
|||
=== 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 <nowiki>http://example.com/wiki</nowiki> 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 [[Antiguo/wiki/Mod rewrite.html|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 . <nowiki>https://%{HTTP_HOST}%{REQUEST_URI}</nowiki> [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> |
|||
... |
Revisión del 07:29 23 abr 2024
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> ...