ldap

Modificar los administradores de openfire cuando usa ldap

Administradores de openfire en ldap

Cuando usamos openfire con ldap, los administradores se los indicamos cuando lo instalamos. Pero podemos cambiarlos cuando queramos. A continuación os enseño dos formas de como hacer esto.

A través de la interfaz de administración de Openfire

  • Vamos a la url de administración: http://TU_DOMINIO.COM:9090
  • Nos logueamos con un usuario que tenga permisos de administración
  • En la opción Servidor y pestaña Administración del servidor, entramos en Propiedades del sistema.
  • Buscamos la propiedad admin.authorizedJIDs y le damos al botón Editar.
  • Ponemos los usuarios que queramos (Por ejemplo: intropedro@server,manolo@server) y le damos al botón Guardar Propiedad.
  • Por último reiniciamos el servidor:
>> sudo /etc/init.d/openfire restart

Directamente desde la base de datos

Tendremos que acceder a la base de datos que usa openfire (en mi caso mysql). Si miramos en la tabla ofProperty veremos una fila con el valor admin.authorizedJIDs en la columna nombre y con el valor de los nicks de los administradores en la columna propValue (por ejemplo: intropedro@server,manolo@server) (server es el nombre del servidor). Ahí tendremos que añadir o quitar las persoans que queramos que puedan acceder a la consola de administración. Una vez editado guardamos y reiniciamos el servidor de mensajería:

>> sudo /etc/init.d/openfire restart

 

Usar Ldap para la autentificación en Apache

Apache y ldap

Alguna vez abréis tenido que proteger alguna carpeta del apache con un nombre de usuario y contraseña. Recordarlos luego puede ser un caos, pero hoy en dia existe el ldap, y podremos usar nuestras cuentas de ldap para acceder a estas carpetas. Vamos a necesitar tener instalado ldap, apache y los modulos de apache mod_ldap y mod_authz_ldap.

Lo primero que tendremos que hacer es activar los modulos en el apache (reiniciaremos el apache para que tengan efectos los cambios):

>> sudo a2enmod ldap
>> sudo a2enmod authz_ldap
>> sudo /etc/init.d/apache2 restart

Tendremos que asegurarnos de que esté activa la opcion del apache AllowOverride o si no queremos que esté activa para todas carpetas activarlo solo para la que queremos proteger (Por ejemplo para /var/www/html/carpeta):

<Directory "/var/www/html/carpeta">
    # Activamos para que use .htaccess
    AllowOverride All
</Directory>

Una vez tengamos todo lo qeu necesitamos vamos a lo que importa. Tendremos que ir al directorio que queramos proteger con la autentificación de apache y crearemos un archivo llamado .htaccess y añadiremos el siguiente contenído (para un ldap instalado en la misma máquina del apache 127.0.0.1 y con una raiz o=organizacion,c=es y que se logeen usando el uid):

order deny,allow
deny from all
# localhost
allow from  127.0.0.1
AuthName "Te tienes que autentificar con los usuarios de ldap."
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://127.0.0.1/o=organizacion,c=es?uid
require valid-user
Satisfy any

Esta configuración dejará el acceso a las peticiones desde la misma máquina en la que esta el apache y si se accede desde otra ip se requiere de un usuario que este en el ldap. No es la única manera, ya que podemos decir que deje acceso a los usuarios ldap de un grupo determinado, un usuario específico y muchas cosas mas.

Os recuerdo que estos y mas datos actualizados los podréis encontrar en mi wiki.

Tuve algunos problemas que os pongo a continuación con sus respectivas soluciones:

  • El fichero de .htaccess no tiene efecto, pongas lo que pongas el apache lo ignora.

Solución: Por seguridad puede ser que el apache no permita hacerle nada al fichero .htaccess. Tendremos que editar la configuración del apache y decirle, por ejemplo, que a la carpeta que queramos (en nuestro caso /var/www/html/carpeta) permita al .htaccess hacer cosas (None (por defecto), Limit o All), en nuestro caso le daremos todos los permisos.

    • Cuando nos pide el usuario y contraseña del ldap y se la ponemos no nos deja entrar. En el fichero /var/log/httpd/error_log nos encontramos la siguiente línea:
    [Thu Nov 20 13:33:40 2008] [error] [client 215.154.142.25] access to /index.php failed, reason: verification of user id 'usuario' not configured

    Solución: Falta de añadir la siguiente línea al fichero .htaccess:

    AuthBasicProvider ldap
    • Nos encontramos el siguiente mensaje de error en los logs:
      [Thu Nov 20 13:38:51 2008] [warn] [client 155.210.155.148] [3243] auth_ldap authenticate: user prodrig authentication failed; URI /mediawiki/index.php/Portada [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server]

      Solución: Puede que el ldap este parado. Para encenderlo:

      >> /etc/init.d/ldap start