Differences between revisions 8 and 9
Revision 8 as of 2008-04-22 13:16:25
Size: 8078
Comment:
Revision 9 as of 2008-10-25 09:26:06
Size: 8949
Editor: DavidFrancos
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Configuración del Ejabberd =
1- Instalar el ejabberd
= Ejabberd =
=== 1 Instalacion y configuracion inicial de ejabberd ===
 1.#1 '''Instalar ejabberd'''
 Ejabberd se encuentra en los repositorios oficiales, asi que lo instalaremos via apt-get:
 {{{
apt-get update
Line 5: Line 8:

1.1 Crear registros en el dns

Por supuesto se necesitan los registro de host.my.domain directos e inversos en el DNS.

y luego
los propios del Jabber.
}}}

 
1.#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.
 {{{
Line 13: Line 15:

1.2- Definir el nombre del servidor jabber
}}}

 1.#3 Editar el fichero '''de configuracion''' ''/etc/ejabberd/ejabberd.cfg''

  2.#1 '''Primero añadiremos un dominio'''
  {{{
Line 17: Line 22:

Si se quiere manejar dominios virtuales se hace a través de:
}}}

  '''O varios, usando dominios virtuales:'''
  {{{
Line 21: Line 27:

Los nombres de los servidores tienen que ser resulto por DNS

También se debe adicionar:
}}}

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

  * '''Para permitir el inicio de sesion''' añadiremos la siguiente linea por cada dominio:
  {{{
Line 27: Line 34:

{host_config, "jabber1.my.domain", [{auth_method, [internal]}]}.

Para tener abierto el acceso administrativo por la web:

{5280, ejabberd_http, [http_poll, web_admin]}]}.

3- Reiniciar el ejabberd y añadir un user
}}}

  * El '''acceso web''' viene ''habilitado por defecto'' con la siguiente linea:
  {{{

{5280, ejabberd_http, [
                          http_poll,
                          web_admin]
}
}}}


=== 2. Reiniciar el ejabberd ===

 3.#1 Reiniciamos ejabberd
 {{{
Line 37: Line 51:

ó con

ejabberdctl restart ( ver anexo 1 para saber más acerca de ejabberdctl)

Si el ejabberd funciona: ejabberdctl status

Para registrar un usuario
ó
# invoke-rc.d ejabberd restart
ó
# ejabberdctl restart
}}}

 '''Para saber si el ejabberd funciona podemos ejecutar:'''
 {{{
ejabberdctl status
}}}

=== 3 Gestion de usuarios ===
 1.#1 Para añadir un usuario se ha de ejecutar:
 {{{
Line 47: Line 66:

Si quiere añadir una cuenta para otro dominio virtual:
}}}

 *
Si quiere añadir una cuenta para otro dominio virtual:
 {{{
Line 51: Line 71:

Para quitar un usuario:
}}}

 *
Para quitar un usuario:
 {{{
Line 55: Line 76:

Funcionando de esta manera se pueden crear salas automáticamente y los usuarios se pueden autoregistrar.

3.5- Acceso a la inte
face web

http://host.my.domain:5280/admin/

4- Establecimiento de políticas:

Esta acl impide el registro automático de los usuarios:
}}}

  '''
Funcionando de esta manera se pueden crear salas automáticamente y los usuarios se pueden autoregistrar.'''
  '''Nota: Podemos acceder a la inter
faz web a traves de http://host.my.domain:5280/admin/'''

===
4 Establecimiento de políticas: ===
Estableceremos una '''lista de control de acceso'''.

 1.#1 Si queremos evitar
el registro automatico de usuarios editamos el fichero /etc/ejabberd/ejabberd.cfg y añadimos la siguiente linea:
 {{{
Line 67: Line 87:

y se comenta el módulo
}}}

 Ahora comentamos el modulo mod_register, dejandolo asi:
 {{{
Line 71: Line 92:

Para darle permisos a un usuario como administrador:
}}}

 1.#2
Para darle permisos a un usuario como administrador:
 {{{
Line 75: Line 97:

En caso de dominios virtuales:
}}}

  
En caso de dominios virtuales quedaria algo parecido a esto:
  {{{
Line 79: Line 102:
Line 81: Line 103:

Sobre la estructura de las listas de control de acceso:
}}}
=== 5 Sobre la estructura de las listas de control de acceso ===

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]
      }

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:

{acl, <nombreacl>, {<tipoacl>, ...}}.

se define como se comportará:

{access, <nombreacceso>, [{allow, <nombreacl>},

  • {deny, <nombreacl>},

  • .. ]}.

Por ejemplo 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}]},
      • ..
      ]}.

Estas cláusulas permiten lo sgte:

  • 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}]},
      • ..
      ]}.

Se plantea:

  • 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).

Si se quieren guardar trazas de las conversaciones(en html):

{mod_muc_log, [

Se plantea:

  • a) -Sólo los del grupo muc_admins pueden deshabilitar el traceo.
  • b) -Un fichero de stylo para guardar las trazas
  • c) -si se pone la opción subdirs, se crean subdirectorios para años y meses, sino se pone en el mismo directorio(plain)
  • d) -Directorio donde se guardarán: /var/www/muclogs
  • e) tiempo universal(puede ser local y por lo tanto se toma del Sistema Operativo)
  • f) -spam_prevention añade attributos especiales para que no puedan ser indexadas por búsquedas las charlas
  • g) -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"}]},
    • ..
    ]}.

irc con un encoding determinado

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 que no se devuelvan todas

Para transferencia de ficheros a través de http:

  • mod_http_fileserver

Anexo 1:

Funcionalidades del ejabberdctl

El ejabberdctl tiene una gran cantidad de opciones para hacer salvas de la BD, etc:

status obtiene el esto 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:

* http://michael-prokop.at/blog/2007/07/27/setting-up-your-own-jabber-server-ejabberd/ * http://morgancollett.wordpress.com/2008/02/27/olpc-community-jabber-servers-ejabberd-200-from-source/ * http://www.informaticien.be/forum_topic-3518-Configuration_ejabberd_sous_Linux_Debian.html * http://www.sinanimodelucro.net/material/manuales/ejabberd_basico.pdf * http://www.process-one.net/docs/ejabberd/guide_en.html * http://support.process-one.net/doc/display/MESSENGER/mail/2028 (Salas persistentes) * http://www.ejabberd.im/aclpopulate - Para que se formen automáticamente los shared roster * http://www.ejabberd.im/mod_ctlextra (utilidades extras para ejabberdctl) * http://www.ejabberd.im/shared-roster-all * http://wiki.laptop.org/go/Installing_ejabberd * http://wiki.laptop.org/go/Ejabberd_Configuration * http://www.ejabberd.im/mod_filter(módulo para filtros)

Sobre conexión con mysql:

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