Differences between revisions 12 and 13
Revision 12 as of 2009-04-22 16:46:48
Size: 9114
Comment:
Revision 13 as of 2010-02-23 10:05:27
Size: 9943
Editor: ?CarlosMiranda
Comment: agregada linea para acceso mediante https al admin
Deletions are marked like this. Additions are marked like this.
Line 44: Line 44:
    * Para habilitar el acceso mediante ssh (https://host:5280/admin) agregaremos las siguientes lineas, por supuesto ya tenemos que tener el cerificado creado:
  {{{

{5280, ejabberd_http, [
                          http_poll,
                          web_admin,
                          tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
]}
}}}

  * En Debian Lenny, cuando habilitamos '''''tls''''' en la configuracion de los puertos (5222, 5223) por defecto se genera el archivo /etc/ejabberd/ejabberd.pem, de todas maneras si necesitamos generar el certificado a mano tenemos los siguientes comandos para ello:
  {{{
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out ejabberd.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> ejabberd.pem
rm privkey.pem
  }}}

Ejabberd

1 Instalacion y configuracion inicial de ejabberd

  1. Instalar ejabberd Ejabberd se encuentra en los repositorios oficiales, asi que lo instalaremos via apt-get:

    apt-get update
    apt-get install ejabberd
  2. Crear registros en el dns Por supuesto se necesitan los registro de host.my.domain directos e inversos en el DNS, ademas de los propios del Jabber. No olvideis substituir host.my.domain por vuestro dominio.

    _xmpp-server._tcp.jabber.my.domain.       21600    IN      SRV    5       0       5269    host.my.domain. _xmpp-client._tcp.jabber.my.domain.       1600     IN      SRV    5       0       5222    host.my.domain. _jabber._tcp.jabber.my.domain.            21600    IN      SRV    5       0       5222    host.my.domain.
  3. Editar el fichero de configuracion /etc/ejabberd/ejabberd.cfg

    1. Primero añadiremos un dominio

      {hosts, ["jabber.my.domain"]}.

      O varios, usando dominios virtuales:

      {hosts, ["jabber.my.domain","jabber1.my.domain"]}.

      Nota: Los nombres de los servidores tienen que ser resultos por el DNS

    2. Para permitir el inicio de sesion añadiremos la siguiente linea por cada dominio:

      {host_config, "jabber.my.domain", [{auth_method, [internal]}]}.
    3. El acceso web viene habilitado por defecto con la siguiente linea:

      {5280, ejabberd_http,    [
                                http_poll, 
                                web_admin]
      }
  4. Para habilitar el acceso mediante ssh (https://host:5280/admin) agregaremos las siguientes lineas, por supuesto ya tenemos que tener el cerificado creado:

    • {5280, ejabberd_http,    [
                                http_poll, 
                                web_admin,
                                tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
      ]}
    • En Debian Lenny, cuando habilitamos tls en la configuracion de los puertos (5222, 5223) por defecto se genera el archivo /etc/ejabberd/ejabberd.pem, de todas maneras si necesitamos generar el certificado a mano tenemos los siguientes comandos para ello:

      openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out ejabberd.pem
      openssl rsa -in privkey.pem -out privkey.pem
      cat privkey.pem >> ejabberd.pem
      rm privkey.pem

2. Reiniciar el ejabberd

  1. Reiniciamos ejabberd
    # /etc/init.d/ejabberd restart
    ó
    # invoke-rc.d ejabberd restart
    ó 
    # ejabberdctl restart

    Para saber si el ejabberd funciona podemos ejecutar:

    ejabberdctl status

3 Gestion de usuarios

  1. Para añadir un usuario se ha de ejecutar:
    # ejabberdctl register <username> <server> <password>
  2. Si quiere añadir una cuenta para otro dominio virtual:
    # ejabberdctl register pepe jabber1.my.domain 123
  3. Para quitar un usuario:
    # ejabberdctl unregister <username> <server>
    • Funcionando de esta manera se pueden crear salas automáticamente y los usuarios se pueden autoregistrar.

      Nota: Podemos acceder a la interfaz web a traves de http://host.my.domain:5280/admin/

4 Establecimiento de políticas:

Estableceremos una lista de control de acceso.

  1. Si queremos evitar el registro automatico de usuarios editamos el fichero /etc/ejabberd/ejabberd.cfg y añadimos la siguiente linea:
    {access, register, [{deny, all}]}.
    Ahora comentamos el modulo mod_register, dejandolo asi:
    %  {mod_register,   [{access, register}]},
  2. Para darle permisos a un usuario como administrador:
    {acl, admin, {user, "username"}}.
    • En caso de dominios virtuales quedaria algo parecido a esto:
      {acl, admin, {user, "eaf","jabber.my.domain"}}.
      {acl, admin, {user, "eaf","jabber1.my.domain"}}.

5 Sobre la estructura de las listas de control de acceso

Estructura de una acl:

  • Primero hemos de definir la acl
    {acl, <nombreacl>, {<tipoacl>, .}}.
  • Y despues definimos su comportamiento:
    {access, <nombreacceso>, [{allow, <nombreacl>},
    {deny, <nombreacl>},
     ]}.

6 Ejemplos útiles sobre listas de control de acceso

Para la cuestión de las salas o conferencias es lo referido al módulo muc:

  • {acl, admins, {user, "admin", "jabber.my.domain"}}.
    
     {access, muc_admins, [{allow, admins}]}.
     {modules,
     [
       {mod_muc, [{access, all},
       {access_create, all},
       {access_admin, muc_admins},
       {history_size, 0}]},
      
      ]}.
    • Esta lista de acceso conseguiria lo siguiente:
    a)- Todos los usuarios pueden acceder a las salas b)- Todos pueden crear salas nuevas c)- Los admistradores(admins) pueden tener privilegios administrativos en las Salas.

Otro ejemplo más restricctivo:

  •  {acl, autorizados, {user, "usuario1", "jabber.my.domain"}}.
     {acl, autorizados, {user, "usuario2", "jabber.my.domain"}}.
     {acl, autorizados, {user, "usuario3", "jabber.my.domain"}}.
     {acl, admins, {user, "admin", "jabber.my.domain"}}.
     . {access, muc_admins, [{allow, admins},
     {deny, all}]}.
     . {access, muc_access, [{allow, autorizados},
      {allow, admins}, {deny, all}]}.
      {modules,
      [
        {mod_muc, [{access, muc_access},
        {access_create, muc_admins},
        {access_admin, muc_admins}]},
       
       ]}.

Con este ejemplo: a)-Sólo los usuarios de la regla "autorizados" pueden acceder a las salas b)-Sólo el administrador puede crear salas c)-Sólo los administradores tienen privilegios administrativos(admins).

Una opcion muy util es guardar las conversaciones (en html)

  • {mod_muc_log, [
    
    {access_log, muc_admins},
     {cssfile, "http://my.domain/my.css"},
    {dirtype, plain}, {outdir, "/var/www/muclogs"},
    {timezone, universal},
    {spam_prevention, true},
     {top_link, {"http://jabber.my.domain", "jabber.my.domain"}}
    ]},
  • Notas:
  • -Sólo los del grupo muc_admins pueden deshabilitar el traceo.
  • -Un fichero de stylo para guardar las trazas
  • -si se pone la opción subdirs, se crean subdirectorios para años y meses, sino se pone en el mismo directorio(plain)
  • -Directorio donde se guardarán: /var/www/muclogs
  • tiempo universal(puede ser local y por lo tanto se toma del Sistema Operativo)
  • -spam_prevention añade attributos especiales para que no puedan ser indexadas por búsquedas las charlas
  • -top_link es el enlace superior que se adiciona en la web generada

Para el módulo irc:'

  • mod_irc
    
    {modules,
    
    [
      {mod_irc, [{access, all}, {default_encoding, "iso8859-15"}]},
     
     ]}.
    Si se quiere restringir el acceso a determinados usuarios:
    {acl, autor_irc, {user, "customer1", "jabber.my.domain"}}.
    {acl, autor_irc, {user, "customer2", "jabber.my.domain"}}.
    {acl, autor_irc, {user, "customer3", "jabber.my.domain"}}.
     {access, aut_irc, [{allow, autor_irc},
     {deny, all}]}.
      {modules,
     [
       {mod_irc, [{access, autor_irc},
       {host, "irc.jabber.my.domain"}]},
      
      ]}.
    Solo pordrían acceder los usuarios que están en el grupo autor_irc. Para asegurar las credenciales de los usuarios:
    {mod_vcard,    [{search, true},
     {all_return_all, false}
     ]},

Para transferencia de ficheros a través de http:

  • mod_http_fileserver

Anexo 1 - Funcionalidades del ejabberdctl

He aqui una breve descripción de las principales opciones de ejabberd:

  • status -> obtiene el estado del servidor ejabberd.

  • stop -> detiene el servidor ejabberd.

  • restart -> reinicia el servidor ejabberd.

  • reopen-log -> reabre el fichero de log.

  • register user server password -> registra a un usuario en un servidor.

  • unregister user server -> elimina a un usuario de un servidor.

  • backup file -> almacena la base de datos en un fichero.

  • restore file -> restaura la base de datos desde un fichero.

  • install-fallback file -> instala una base de datos desde un fichero.

  • dump file -> vuelca el contenido de la base de datos a un fichero de texto.

  • load file -> restaura la base de datos de un fichero de texto.

  • import-file file -> importa la base de datos de usuario de un fichero spool.

  • import-dir dir -> importa la base de datos de usuario de un directorio de spool.

  • registered-users -> lista todos los usuarios registrados.

  • delete-expired-messages -> elimina todos los mensajes de “fuera de linea”, que han expirado, del servidor.


Recursos consultados:

Sobre conexión con mysql:

* http://samueladam.net/2008/03/19/install-ejabberd-xmpp-server-mysql (Esto es una utilización extra)