Diferencia entre revisiones de «Autenticación en Apache 2.4»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(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

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:

  1. 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.
  2. 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

Créditos