Diferencia entre revisiones de «Autenticación en Apache 2.4»
(Página creada con «= Consideracións previas = = Autenticación = == Autenticación básica == == Autenticación digest == == Autenticación: Integración con OpenLDAP == http://www.admin…») |
|||
| Línea 2: | Línea 2: | ||
= Autenticación = | = Autenticación = | ||
| + | |||
| + | == Control de acceso == | ||
| + | O control de acceso fai referencia a todos os medios que proporcionan unha forma de controlar o acceso os recursos. | ||
| + | A directiva Require proporciona unha variedade de diferentes xeitos de permitir ou denegar o acceso. Pode tamen ser usada xunto as directivas: | ||
| + | * RequireAll | ||
| + | * RequireAny | ||
| + | * RequireNone | ||
| + | |||
| + | E todos estos requerimientos poden ser combinados elaborar complexas políticas de acceso. | ||
| + | |||
| + | == Directiva Require == | ||
| + | Podemos controlar o acceso a calquera recurso, (por exemplo usando a directiva Directory), con estas opciones: | ||
| + | |||
| + | Require all granted: O acceso é permitido incondicionalmente. | ||
| + | Require all denied: O acceso é denegado incondicionalmente. | ||
| + | Require user userid [userid] ...: O acceso é permitido sólo se os usuarios indicados autenticaronse. | ||
| + | Require group group-name [group-name] ...: O acceso é permitido sólo os grupos de usuarios especificados. | ||
| + | Require valid-user: O acceso é permitido os usuarios válidos. | ||
| + | Require ip 10 172.40 192.168.5: O acceso é permitido se se fai desde o conxunto de direccións especificadas. | ||
| + | Require host dominio: El acceso es permitido si se hace desde el dominio especificado. | ||
| + | Require local: O acceso é permitido desde localhost (127.0.0.1). | ||
| + | Pódese facer uso do operador not para indicar a denegación, por exemplo: | ||
| + | |||
| + | Require not ip 192.168.1 | ||
| + | |||
| + | == Apache 2.2 == | ||
| + | Control de acceso en Apache 2.2 | ||
| + | En versiones anteriores de Apache utilizabanse outras directivas para controlar o acceso: | ||
| + | * Allow | ||
| + | * Deny | ||
| + | * Order | ||
| + | |||
| + | Están obsoletas e non serán validas en futuras versións. | ||
| + | |||
| + | == Exemplos == | ||
| + | === Exemplo 1 === | ||
| + | Para permitir a todos no directorio: | ||
| + | <pre> | ||
| + | <Directory "/var/www"> | ||
| + | Require all granted | ||
| + | </Directory> | ||
| + | </pre> | ||
| + | === Exemplo 2 === | ||
| + | Para non permitir o acceso o fichiero .htaccess, podíamos encontrar: | ||
| + | <pre> | ||
| + | <FilesMatch "^\.ht"> | ||
| + | Require all denied | ||
| + | </FilesMatch> | ||
| + | </pre> | ||
| + | === Exemplo 3 === | ||
| + | Para denegar todos excepto host example.org: | ||
| + | <pre> | ||
| + | Require host example.org | ||
| + | </pre> | ||
| + | |||
== Autenticación básica == | == Autenticación básica == | ||
| + | Poden utilizarse diferentes módulos para proporcionar diferentes modelos de autenticación. | ||
| + | O máis simple é con autenticación básica que xa ven instalada: mod_auth_basic. | ||
| + | |||
| + | Haui que engadir esta configuración no ficheiro de definición do Virtual Host que se quere configurar: | ||
| + | |||
| + | <pre> | ||
| + | <Directory "/var/www/paxina1/privado"> | ||
| + | AuthUserFile "/etc/apache2/chaves/passwd.txt" | ||
| + | AuthName "Palabra de paso" | ||
| + | AuthType Basic | ||
| + | Require valid-user | ||
| + | </Directory> | ||
| + | </pre> | ||
| + | |||
| + | O método de autentificación básica indicase na directiva AuthType con Basic. | ||
| + | |||
| + | En Directory escribimos o directorio a protexer, que pode ser a raíz do noso Virtual Host ou un subdirectorio. | ||
| + | En AuthUserFile poñemos o ficheiro que gardará a información de usuarios e contrasinais que debería de estar nun directorio que non sexa visitable desde o noso Apache. | ||
| + | |||
| + | === Usuarios. Xeración de ficheiro de contrasinais === | ||
| + | Xenerase o ficheiro de contrasinais mediante a utilidade htpasswd: | ||
| + | |||
| + | |||
| + | <pre> | ||
| + | $ htpasswd -c /etc/apache2/chaves/passwd.txt xose | ||
| + | New password: | ||
| + | Re-type new password: | ||
| + | Adding password for user xose | ||
| + | </pre> | ||
| + | |||
| + | Para crear o ficherio coa introducción do primeiro usuario temos que engadir a opción -c (create). | ||
| + | Se por error seguimos usando -c ó incorporar novos usuarios borraremos todos os anteriores! | ||
| + | Os contrasinais non se guardan en claro; o que se garda é o resultado de aplicar unha función hash: | ||
| + | |||
| + | <pre> | ||
| + | leire:h3UetcAKWaliZ | ||
| + | xose:rmO3V7cM8KLda | ||
| + | </pre> | ||
| + | |||
| + | En AuthName personalizamos a mensaxe que aparecerá no navegador cando nos pida o contrasinal. | ||
| + | |||
| + | Para xestionar o control de acceso (qué usuarios ou grupos teñen permiso para obter o recurso utilizamos as seguintes directivas: | ||
| + | * AuthGroupFile | ||
| + | * Require user | ||
| + | * Require group | ||
| + | |||
| + | Con borrar a liña correspondente a un usuario denegaremos o seu acceso; non e necesario reinicia apache cos cambios no ficheiro de contrasinais. | ||
| + | |||
| + | === Grupos === | ||
| + | |||
| + | Para permitir a un grupo de usuarios necesitarás crear un ficheiro de grupo que asocie os nombres de grupos cos de usuario para permitirlles acceso. | ||
| + | O formato deste fichero é: | ||
| + | |||
| + | * NombreGrupo: usuario1 usuario2 usuario3 | ||
| + | |||
| + | A directiva que utilizaremos para inidicar o ficheiro de grupo é AuthGroupFile; e para permitir o acceso os grupos utilizaríamos: | ||
| + | |||
| + | * Require group NombreGrupo | ||
| + | |||
| + | === Ventaxas e inconvintes === | ||
| + | Ventaxa deste método: | ||
| + | * A súa sinxeleza. | ||
| + | Inconvintes: | ||
| + | # ter que delegar a xeneración de novos usuarios en alguen que non sexa un administrador de sistemas ou ter que facer un front-end para que o propio usuario cambie o seu contrasinal. | ||
| + | # os contrasinais viaxan en claro a través da rede (ainda que podemos esto configurando Apache2 con SSL). | ||
== Autenticación digest == | == Autenticación digest == | ||
Revisión del 16:09 11 nov 2020
Sumario
Consideracións previas
Autenticación
Control de acceso
O control de acceso fai referencia a todos os medios que proporcionan unha forma de controlar o acceso os recursos. A directiva Require proporciona unha variedade de diferentes xeitos de permitir ou denegar o acceso. Pode tamen ser usada xunto as directivas:
* RequireAll * RequireAny * RequireNone
E todos estos requerimientos poden ser combinados elaborar complexas políticas de acceso.
Directiva Require
Podemos controlar o acceso a calquera recurso, (por exemplo usando a directiva Directory), con estas opciones:
Require all granted: O acceso é permitido incondicionalmente. Require all denied: O acceso é denegado incondicionalmente. Require user userid [userid] ...: O acceso é permitido sólo se os usuarios indicados autenticaronse. Require group group-name [group-name] ...: O acceso é permitido sólo os grupos de usuarios especificados. Require valid-user: O acceso é permitido os usuarios válidos. Require ip 10 172.40 192.168.5: O acceso é permitido se se fai desde o conxunto de direccións especificadas. Require host dominio: El acceso es permitido si se hace desde el dominio especificado. Require local: O acceso é permitido desde localhost (127.0.0.1). Pódese facer uso do operador not para indicar a denegación, por exemplo:
Require not ip 192.168.1
Apache 2.2
Control de acceso en Apache 2.2 En versiones anteriores de Apache utilizabanse outras directivas para controlar o acceso:
- Allow
- Deny
- Order
Están obsoletas e non serán validas en futuras versións.
Exemplos
Exemplo 1
Para permitir a todos no directorio:
<Directory "/var/www">
Require all granted
</Directory>
Exemplo 2
Para non permitir o acceso o fichiero .htaccess, podíamos encontrar:
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
Exemplo 3
Para denegar todos excepto host example.org:
Require host example.org
Autenticación básica
Poden utilizarse diferentes módulos para proporcionar diferentes modelos de autenticación. O máis simple é con autenticación básica que xa ven instalada: mod_auth_basic.
Haui que engadir esta configuración no ficheiro de definición do Virtual Host que se quere configurar:
<Directory "/var/www/paxina1/privado">
AuthUserFile "/etc/apache2/chaves/passwd.txt"
AuthName "Palabra de paso"
AuthType Basic
Require valid-user
</Directory>
O método de autentificación básica indicase na directiva AuthType con Basic.
En Directory escribimos o directorio a protexer, que pode ser a raíz do noso Virtual Host ou un subdirectorio. En AuthUserFile poñemos o ficheiro que gardará a información de usuarios e contrasinais que debería de estar nun directorio que non sexa visitable desde o noso Apache.
Usuarios. Xeración de ficheiro de contrasinais
Xenerase o ficheiro de contrasinais mediante a utilidade htpasswd:
$ htpasswd -c /etc/apache2/chaves/passwd.txt xose New password: Re-type new password: Adding password for user xose
Para crear o ficherio coa introducción do primeiro usuario temos que engadir a opción -c (create). Se por error seguimos usando -c ó incorporar novos usuarios borraremos todos os anteriores! Os contrasinais non se guardan en claro; o que se garda é o resultado de aplicar unha función hash:
leire:h3UetcAKWaliZ xose:rmO3V7cM8KLda
En AuthName personalizamos a mensaxe que aparecerá no navegador cando nos pida o contrasinal.
Para xestionar o control de acceso (qué usuarios ou grupos teñen permiso para obter o recurso utilizamos as seguintes directivas:
- AuthGroupFile
- Require user
- Require group
Con borrar a liña correspondente a un usuario denegaremos o seu acceso; non e necesario reinicia apache cos cambios no ficheiro de contrasinais.
Grupos
Para permitir a un grupo de usuarios necesitarás crear un ficheiro de grupo que asocie os nombres de grupos cos de usuario para permitirlles acceso. O formato deste fichero é:
- NombreGrupo: usuario1 usuario2 usuario3
A directiva que utilizaremos para inidicar o ficheiro de grupo é AuthGroupFile; e para permitir o acceso os grupos utilizaríamos:
- Require group NombreGrupo
Ventaxas e inconvintes
Ventaxa deste método:
- A súa sinxeleza.
Inconvintes:
- ter que delegar a xeneración de novos usuarios en alguen que non sexa un administrador de sistemas ou ter que facer un front-end para que o propio usuario cambie o seu contrasinal.
- os contrasinais viaxan en claro a través da rede (ainda que podemos esto configurando Apache2 con SSL).
Autenticación digest
Autenticación: Integración con OpenLDAP
http://www.adminso.es/index.php/OpenLDAP_Integraci%C3%B3n_OpenLDAP_y_Apache
Autenticación: Con authn_dbd y MySQL
Referencias
- https://httpd.apache.org/docs/2.4/es/howto/auth.html
- https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-18-04-quickstart-es
- https://manuais.iessanclemente.net/index.php/O_Servidor_Web_Apache#Autenticaci.C3.B3n_e_autorizaci.C3.B3n