Instalación y configuración de eJabberd XMPP Server e integración con Samba AD DC
Instalación de paquetes necesarios
apt install ejabberd ejabberd-contrib erlang-eldap
Crear certificado de seguridad TLS/SSL.
mv /etc/ejabberd/ejabberd.pem{,.org}`
Para Debian 9 Stretch.
openssl req -x509 -nodes -days 3650 -sha512 \ -subj "/C=CU/ST=Provincia/L=Ciudad/O=EXAMPLE TLD/OU=IT/CN=example.tld/[email protected]/" \ -reqexts SAN -extensions SAN \-config <(cat /etc/ssl/openssl.cnf \ <(printf "\n[SAN]\nsubjectAltName=DNS:jb.example.tld,\ DNS:conference.example.tld,DNS:echo.example.tld,\ DNS:pubsub.example.tld,IP:192.168.0.3")) \ -newkey rsa:4096 \ -out /tmp/exampleJabber.crt \ -keyout /tmp/exampleJabber.key openssl dhparam -out /etc/ssl/dh2048.pem 2048
Para Debian 10 Buster.
openssl req -x509 -nodes -days 3650 -sha512 \
-subj "/C=CU/ST=Provincia/L=Ciudad/O=EXAMPLE TLD/OU=IT/CN=example.tld/[email protected]/" \
-addext "subjectAltName = DNS:jb.example.tld,DNS:conference.example.tld,DNS:echo.example.tld,DNS:pubsub.example.tld,IP:192.168.0.3" \
-newkey rsa:4096 \
-out /tmp/exampleJabber.crt \
-keyout /tmp/exampleJabber.key
openssl dhparam -out /etc/ssl/dh2048.pem 2048
cat /tmp/{exampleJabber.crt,exampleJabber.key} > /etc/ejabberd/ejabberd.pem
chmod 0640 /etc/ejabberd/ejabberd.pem
chown root:ejabberd /etc/ejabberd/ejabberd.pem
Comprobar correcta creación del certificado.
openssl x509 -in /etc/ejabberd/ejabberd.pem -text -noout
Definir el nombre de dominio del servidor XMPP y parámetros de seguridad TLS/SSL en la comunicación c2s (cliente-servidor).
cp /etc/ejabberd/ejabberd.yml{,.org}
nano /etc/ejabberd/ejabberd.yml
Para Debian 9 Stretch.
hosts:
- "example.tld"
listen:
-
port: 5222
ip: "::"
module: ejabberd_c2s
certfile: "/etc/ejabberd/ejabberd.pem"
starttls: true
protocol_options:
- "no_sslv3"
- "no_sslv2"
- "no_tlsv1"
- "no_tlsv1_1"
ciphers: "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
max_stanza_size: 65536
shaper: c2s_shaper
access: c2s
zlib: true
resend_on_timeout: if_offline
tls_compression: false
starttls_required: true
dhfile: "/etc/ejabberd/dh2048.pem"
disable_sasl_mechanisms: "digest-md5"
Para Debian 10 Buster.
hosts:
- "example.tld"
certfiles:
- "/etc/ejabberd/ejabberd.pem"
define_macro:
'TLS_CIPHERS': "HIGH:!aNULL:!eNULL:!3DES:@STRENGTH"
'TLS_OPTIONS':
- "no_sslv3"
- "no_tlsv1"
- "no_tlsv1_1"
- "cipher_server_preference"
- "no_compression"
'DH_FILE': "/etc/ssl/dh2048.pem"
c2s_ciphers: 'TLS_CIPHERS'
s2s_ciphers: 'TLS_CIPHERS'
c2s_protocol_options: 'TLS_OPTIONS'
s2s_protocol_options: 'TLS_OPTIONS'
c2s_dhfile: 'DH_FILE'
s2s_dhfile: 'DH_FILE'
listen:
-
port: 5222
ip: "::"
module: ejabberd_c2s
max_stanza_size: 262144
shaper: c2s_shaper
access: c2s
starttls_required: true
protocol_options: 'TLS_OPTIONS'
disable_sasl_mechanisms:
- "digest-md5"
- "X-OAUTH2"
Creación de registros DNS
samba-tool dns add localhost example.tld jb A '192.168.0.3' -U 'administrator'%'P@s$w0rd.123' samba-tool dns add localhost 0.168.192.in-addr.arpa 3 PTR 'jb.example.tld.' -U 'administrator'%'P@s$w0rd.123' samba-tool dns add localhost example.tld conference CNAME 'jb.example.tld' -U 'administrator'%'P@s$w0rd.123' samba-tool dns add localhost example.tld echo CNAME 'jb.example.tld' -U 'administrator'%'P@s$w0rd.123' samba-tool dns add localhost example.tld pubsub CNAME 'jb.example.tld' -U 'administrator'%'P@s$w0rd.123' samba-tool dns add localhost example.tld _xmpp-client._tcp SRV 'jb.example.tld 5222 5 0' -U 'administrator'%'P@s$w0rd.123' samba-tool dns add localhost example.tld _xmpp-server._tcp SRV 'jb.example.tld 5269 5 0' -U 'administrator'%'P@s$w0rd.123'
Comprobaciones
host -t SRV _xmpp-server._tcp.example.tld
host -t SRV _xmpp-client._tcp.example.tld
host -t A jb.example.tld
dig -t SRV @example.tld _xmpp-client._tcp.example.tld
dig -t SRV @example.tld _xmpp-server._tcp.example.tld
Configuración del servicio Webmail
Descomprimir el paquete de instalación de Rouncubemail en el sistema y asignar permisos.
tar -xzmf roundcubemail-*-complete.tar.gz -C /opt/
mv /opt/roundcubemail-* /opt/roundcube
ln -s /opt/roundcube/bin/{cleandb,gc}.sh /etc/cron.daily/
chown -R root:www-data /opt/roundcube/
find /opt/roundcube/ -type d \-exec chmod 0755 {} \;
find /opt/roundcube/ -type f \-exec chmod 0644 {} \;
chmod 0770 /opt/roundcube/{logs,temp}
PostgreSQL
Instalar gestor de base de datos PortgreSQL.
apt install postgresql
Crear base de datos para Roundcubemail.
su - postgres
psql
\password postgres
CREATE DATABASE roundcubemail WITH TEMPLATE template0 ENCODING 'UNICODE';
\q
Inicializar la base de datos.
psql -h localhost -U postgres -W -f /opt/roundcube/SQL/postgres.initial.sql roundcubemail
Nginx
Instalar servidor web Nginx y otros paquetes necesarios.
apt install nginx-full php-fpm php-pear php-mbstring php-intl php-ldap php-gd php-imagick php-pgsql
Definir zona horaria.
sed -i "s/^;date\.timezone =.*$/date\.timezone = 'America\/Havana'/;
s/^;cgi\.fix_pathinfo=.*$/cgi\.fix_pathinfo = 0/" \
/etc/php/7*/fpm/php.ini
Habilitar el servicio.
nano /etc/nginx/sites-available/roundcube
ln -s /etc/nginx/sites-available/roundcube /etc/nginx/sites-enabled/
Apache2
Instalar servidor web Apache2.
apt install apache2 libapache2-mod-php php-pear php-mbstring php-intl php-ldap php-gd php-imagick php-pgsql
Definir zona horaria.
sed -i "s/^;date\.timezone =.*$/date\.timezone = 'America\/Havana'/;
s/^;cgi\.fix_pathinfo=.*$/cgi\.fix_pathinfo = 0/" \
/etc/php/7*/apache2/php.ini
Habilitar el servicio.
nano /etc/apache2/sites-available/roundcube.conf
a2ensite roundcube.conf
Integración con Samba AD DC
Crear nueva Cuenta de Usuario para el servicio eJabberd.
samba-tool user create 'ejabberd' 'P@s$w0rd.012' \
--surname='XMPP Service' \
--given-name='eJabberd' \
--company='EXAMPLE' \
--description='eJabberd XMPP Service Account'
samba-tool user setexpiry ejabberd --noexpiry
Definir cuenta de usuario con acceso administrativo al servicio.
nano /etc/ejabberd/ejabberd.yml
acl:
admin:
user:
- "[email protected]"
Definir método de autenticación.
auth_password_format: scram
fqdn: "jb.example.tld"
auth_method: ldap
ldap_servers:
- "dc.example.tld"
ldap_encrypt: none
ldap_port: 389
ldap_rootdn: "[email protected]"
ldap_password: "P@s$w0rd.012"
ldap_base: "OU=ACME,DC=example,DC=tld"
ldap_uids: {"sAMAccountName": "%u"}
ldap_filter: "(&(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
Compartir el roster de los usuarios
Editar el fichero /etc/ejabberd/ejabberd.yml
y añadir en la sección MODULES
, debajo de la opción mod_roster: {}
, el siguiente contenido:
mod_shared_roster_ldap:
ldap_base: "OU=ACME,DC=example,DC=tld"
ldap_groupattr: "department"
ldap_groupdesc: "department"
ldap_memberattr: "sAMAccountName"
ldap_useruid: "sAMAccountName"
ldap_userdesc: "cn"
ldap_rfilter: "(objectClass=user)"
ldap_filter: "(&(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
Personalizar vCard de los usuarios
Editar el fichero /etc/ejabberd/ejabberd.yml
y añadir en la sección MODULES
, debajo de la opción mod_time: {}
, el siguiente contenido:
Para Debian 9 Stretch.
mod_vcard_ldap:
ldap_uids: {"sAMAccountName": "%u"}
matches: infinity
ldap_vcard_map:
"NICKNAME": {"%s": ["givenName"]}
"FN": {"%s": ["displayName"]}
"EMAIL": {"%s": ["mail"]}
"GIVEN": {"%s": ["givenName"]}
"MIDDLE": {"%s": ["middleName"]}
"FAMILY": {"%s": ["sn"]}
"ORGNAME": {"%s": ["company"]}
"ORGUNIT": {"%s": ["department"]}
"TITLE": {"%s": ["title"]}
"TEL": {"%s": ["telephoneNumber"]}
ldap_search_fields:
"User": "%u"
"Full Name": "displayName"
"Email": "mail"
ldap_search_reported:
"Full Name": "FN"
"Nickname": "NICKNAME"
"Email": "EMAIL"
Para Debian 10 Buster.
mod_vcard:
db_type: ldap
ldap_uids: {"sAMAccountName": "%u"}
matches: infinity
ldap_vcard_map:
"NICKNAME": {"%s": ["givenName"]}
"FN": {"%s": ["displayName"]}
"EMAIL": {"%s": ["mail"]}
"GIVEN": {"%s": ["givenName"]}
"MIDDLE": {"%s": ["middleName"]}
"FAMILY": {"%s": ["sn"]}
"ORGNAME": {"%s": ["company"]}
"ORGUNIT": {"%s": ["department"]}
"TITLE": {"%s": ["title"]}
"TEL": {"%s": ["telephoneNumber"]}
ldap_search_fields:
"User": "%u"
"Full Name": "displayName"
"Email": "mail"
ldap_search_reported:
"Full Name": "FN"
"Nickname": "NICKNAME"
"Email": "EMAIL"
samba-tool dns add localhost example.tld jb A '192.168.0.3' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost 0.168.192.in-addr.arpa 3 PTR 'jb.example.tld.' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost example.tld conference CNAME 'jb.example.tld' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost example.tld echo CNAME 'jb.example.tld' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost example.tld pubsub CNAME 'jb.example.tld' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost example.tld _xmpp-client._tcp SRV 'jb.example.tld 5222 5 0' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost example.tld _xmpp-server._tcp SRV 'jb.example.tld 5269 5 0' -U 'administrator'%'P@s$w0rd.123'
Reiniciar el servicio y comprobar su correcto funcionamiento.
systemctl restart ejabberd
systemctl status ejabberd
Comprobaciones
Acceder a la web admnistrativa que provee eJabberd desde un navegador, loguearse con un usuario administrador y revisar los parámetros de configuración establecidos.
https://jb.example.tld:5280/admin
Vale destacar que una vez intregado el servicio al AD DC, no es necesario realizar cambio alguno a los usuarios, por esta vía; pues son gestionados en el mismo AD DC.
Iniciar sesión desde cualquier cliente jabber (Spark, Gajim, Pidgin) que soporte el protocolo XMPP y en la consola del servidor ejecutar:
tail -fn100 /var/log/ejabberd/ejabberd.log
Como referencia, debajo se muestra la lista de artículos de esta serie.
- Introducción
- Configuración de parámetros de red y sincronización de tiempo
- Instalación y configuración de Samba4 como AD DC
- Instalación y configuración del servidor Bind9 DNS e integración con Samba AD DC
- Instalación y configuración del servidor NTP e integración con Samba AD DC
- Creación de Unidades Organizativas, Grupos y Cuentas de Usuarios
- Instalación y configuración de Squid Proxy e integración con Samba AD DC
- Instalación y configuración de eJabberd XMPP e integración con Samba AD DC
- Instalación y configuración de Postfix, Dovecot, Roundcube Mail e integración con Samba AD DC
- Conclusiones
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
como logro que me permita los mismos derechos en tolos los navegadores no solo en mozilla
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
La sera que puedes postear la autenticacion de ejabber pero para kerberos no para ldap. Gracias
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.78
si si yo al menos se que es rouncube, pero que pinta en el tuto de ejjaberd, y lo otro la parte de crear los registros en el dns está repedita dos veces
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
hola, he montado nuevamente todo lo que describe en esta serie de tuoriales, pero me sudece lo mismo..
hasta use los mismo ip, nombre, todo como lo describe!
TENGO EL ERROR…
lo puse y al parecer no se publico..
crees poder hacer un tutorial de esta guia en video y subirlo a youtube? porfavor!
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
lo he vuelto a realizar…
con el mismo nombre,mismo ip y el mismo ERROR…
*************************************
systemctl restart ejabberd
Job for ejabberd.service failed because the control process exited with error code.
See «systemctl status ejabberd.service» and «journalctl -xe» for details.
*****************************
REINICIO EL SERVER Y VUELVO A REINICIAR EL SERVICIO
*****************************
systemctl status ejabberd.service
● ejabberd.service – A distributed, fault-tolerant Jabber/XMPP server
Loaded: loaded (/lib/systemd/system/ejabberd.service; enabled; vendor preset:
Active: activating (start) since Thu 2019-09-12 14:34:43 CDT; 58s ago
Docs: https://www.process-one.net/en/ejabberd/docs/
Cntrl PID: 7512 (sh)
Tasks: 3 (limit: 1121)
Memory: 1.2M
CGroup: /system.slice/ejabberd.service
├─7512 /bin/sh -c /usr/sbin/ejabberdctl start && /usr/sbin/ejabberdct
├─7531 /bin/sh /usr/sbin/ejabberdctl started
└─8367 sleep 2
Sep 12 14:34:43 jb systemd[1]: ejabberd.service: Service RestartSec=5s expired,
Sep 12 14:34:43 jb systemd[1]: ejabberd.service: Scheduled restart job, restart
Sep 12 14:34:43 jb systemd[1]: Stopped A distributed, fault-tolerant Jabber/XMPP
Sep 12 14:34:43 jb systemd[1]: Starting A distributed, fault-tolerant Jabber/XMP
————————————————————————
ENTONCES NO ME SALE NADA, CARGA LA PAGINA EN BLANCO….
https://IP:5280/admin
CREES PODER HACER UN VIDEO SOLO DEL JABBER? Y SUBIRLO A YOUTUBE.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
DICULPA LA IMNORANCIA, PARA QUE SE NECESITA INSTALAR:
———————————–
Configuración del servicio Webmail
Descomprimir el paquete de instalación de Rouncubemail en el sistema y asignar permisos.
___________________________________
????
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Este servicio permite que los usuarios puedan utilizar su correo a través de un cliente Web o Webmail.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
HOLA..CUANDO DICE
1. Habilitar el servicio: NO DEBEN APARECER DATOS?
#nano /etc/nginx/sites-available/roundcube
#ln -s /etc/nginx/sites-available/roundcube /etc/nginx/sites-enabled/
Y EN:
2. Habilitar el servicio: IGUAL SIN DATOS?
#nano /etc/apache2/sites-available/roundcube.conf
y……
# a2ensite roundcube.conf
pide!…..
Enabling site roundcube.
To activate the new configuration, you need to run:
systemctl reload apache2
Luego:
Definir el nombre de dominio del servidor XMPP y parámetros de seguridad TLS/SSL en la comunicación c2s (cliente-servidor).
#nano /etc/ejabberd/ejabberd.yml
Para Debian 10 Buster.
AGREGO TU CONFIGURACION OHHH! MODIFICO, ADAPTO El DEFAULT SEGUN MIS NECESIDADES????
DISCULPE LA IMNORANCIA
CUANDO DICE:
————————-
Personalizar vCard de los usuarios
Editar el fichero /etc/ejabberd/ejabberd.yml y añadir en la sección MODULES, debajo de la opción mod_time: {}, el siguiente contenido:
————————
3. EN DEBIAN 10 NO APARECE mod_time: {} en el archivo ejabberd.yml
4. DENTRO DE {} AGREGO EL CONTENIDO QUE DESCRIBE PARA LA VERSION CORRESPONDIENTE?
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
EN LA LINEA
cat /tmp/{exampleJabber.crt,exampleJabber.key} > /etc/ejabberd/ejabberd.pem
ERROR
bash: /etc/ejabberd/ejabberd.pem: No such file or directory
DEBIDO A QUE NO EXISTE!!!!
POR FAVOR ARREGLAR
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Disculpa el error. El asunto está en que se perdieron algunos símbolos en el editor. En varios casos se perdieron los símbolos > y <.