Differences between revisions 9 and 10
Revision 9 as of 2008-10-25 09:26:06
Size: 8949
Editor: DavidFrancos
Comment:
Revision 10 as of 2008-10-25 10:00:56
Size: 9113
Editor: DavidFrancos
Comment:
Deletions are marked like this. Additions are marked like this.
Line 79: Line 79:
Line 105: Line 106:
Line 107: Line 107:

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

se define como se comporta:
 * Primero hemos de definir la acl
 {{{

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

 * Y de
spues definimos su comportamiento:
 {{{
Line 113: Line 115:

 .
{deny, <nombreacl>},
 . .. ]}.
Por ejemplo para la cuestión de las salas o conferencias es lo referido al módulo muc:
{deny, <nombreacl>},
 ]}.
}}}

===
6 Ejemplos útiles sobre listas de control de acceso ===

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

  {{{
Line 120: Line 126:
 . .. {access, muc_admins, [{allow, admins}]}.
 . .. {modules,
  . [
   . .. {mod_muc, [{access, all},
    . {access_create, all},
    . {access_admin, muc_admins},
    . {history_size, 0}]},
   . ..
 {access, muc_admins, [{allow, admins}]}.
 {modules,
 [
   {mod_muc, [{access, all},
   {access_create, all},
   {access_admin, muc_admins},
   {history_size, 0}]},
  
Line 129: Line 135:
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}]},
   . ..
}}}

   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"}]},
  
Line 151: Line 213:
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, [

 . {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"}}
 . ]},
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
}}}
 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}
 ]},
 }}}
Line 212: Line 225:
 . 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.
 {{{
mod_http_fileserver
 }}}

===
Anexo 1 - Funcionalidades del ejabberdctl ===

He aqui una brebe descripcion de las principales opciones de ejabberd
:
 * '''status''' -> obtiene el estado del servidor ejabberd.
 * '''stop''' -> detiene el servidor
ejabberd.
 * '''restart''' -> reinicia el servidor ejabberd.
 * '''reopen-lo
g''' -> 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.

----
Line 250: Line 250:

* 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)
 * 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)

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:

  • 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 brebe descripcion 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)