Diferència entre revisions de la pàgina «ASIX/M08/UF3/PT21/3»
(Es crea la pàgina amb «{{titol|Ejjaberd. Configuració}}».) |
m (Guillem ha mogut M08/UF3/PT21/3 a ASIX/M08/UF3/PT21/3 sense deixar una redirecció: Crear subnivell ASIX) |
||
(Hi ha 26 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | {{titol| | + | {{titol|Configuració}} |
+ | ==Firewall== | ||
+ | Per a poder comunicar-nos amb el servidor de IM, haurem d'obrir 3 ports al firewall; 2 necessaris per a la comunicació entre clients-servidor i servidor-servidor (en casos de servidors federats) i un 3r que serà el que ens permetrà accedir a la pàgina web d'administració. | ||
+ | :*'''Port 5222''' | ||
+ | <source>firewall-cmd --add-port=5222/tcp --permanent</source> | ||
+ | :*'''Port 5269''' | ||
+ | <source>firewall-cmd --add-port=5269/tcp --permanent</source> | ||
+ | :*'''Port 5443''' | ||
+ | <source>firewall-cmd --add-port=5280/tcp --permanent</source> | ||
+ | |||
+ | Una vegada oberts els ports, haurem de recarregar el firewall perquè aquestes noves normes tinguin efecte | ||
+ | <source>firewall-cmd --reload</source> | ||
+ | |||
+ | ==Ports i interfícies== | ||
+ | Segons la [https://docs.ejabberd.im/admin/configuration/#port-number-ip-address-and-transport-protocol documentació pública d'aquest programa], podem buscar com cal configurar el servidor ejabberd segons les nostres necessitats. | ||
+ | Per defecte, el programa s'instal·larà sota <code>/usr/local/etc/ejabberd/</code>; de manera que allà trobarem l'arxiu de configuració, dins el subdirectori. De la mateixa manera, des d'inici, aquest arxiu fa que el programa escolti només per '''IPv6'''; cosa que ens impedeix accedir-hi, de moment. Haurem de modificar l'arxiu <code>/usr/local/etc/ejabberd/ejabberd.yml</code> amb un editor de text que ens vagi bé i buscar les línies següents: | ||
+ | :*'''Línia 49:''' editar | ||
+ | <source> | ||
+ | ip: "0.0.0.0" | ||
+ | </source> | ||
+ | |||
+ | :*'''Línia 57:''' editar | ||
+ | <source> | ||
+ | ip: "0.0.0.0" | ||
+ | </source> | ||
+ | |||
+ | :*'''Línia 62:''' editar | ||
+ | <source> | ||
+ | ip: "0.0.0.0" | ||
+ | </source> | ||
+ | |||
+ | D'aquesta manera, fem que el servidor escolti en totes les interfícies IPv4 que tingui la màquina on està executant-se. | ||
+ | |||
+ | ==Certificats SSL== | ||
+ | Per defecte, l'arxiu de configuració contempla que usarem certificats de Let's Encrypt i figuren rutes per a usar xifrat SSL a les línies '''39''' i '''40''' del <code>ejabberd.yml</code> | ||
+ | <source> | ||
+ | - "/etc/letsencrypt/live/localhost/fullchain.pem" | ||
+ | - "/etc/letsencrypt/live/localhost/privkey.pem" | ||
+ | </source> | ||
+ | |||
+ | L'opció que tenim més fàcil és crear certificats auto-signats i canviar aquestes rutes per les que corresponguin. Ho farem de la següent manera, des del directori <code>/root</code> per conveniència. | ||
+ | <source> | ||
+ | openssl genrsa -des3 -out practica.ejabberd.key 2048 | ||
+ | openssl req -new -key practica.ejabberd.key -out practica.ejabberd.csr | ||
+ | openssl x509 -req -days 365 -in practica.ejabberd.csr -signkey practica.ejabberd.key -out practica.ejabberd.crt | ||
+ | </source> | ||
+ | |||
+ | Si llistem amb la comanda <code>ls</code> els arxius que hi ha al directori on hem creat el certificat i la clau veurem | ||
+ | <source> | ||
+ | practica.ejabberd.crt | ||
+ | practica.ejabberd.csr | ||
+ | practica.ejabberd.key | ||
+ | </source> | ||
+ | |||
+ | Ara és qüestió de posar l'arxiu ''.crt'' i ''.key'' a un lloc conegut que ''ejabberd'' pugui llegir. Normalment, i és un mètode estàndard, aquest tipus d'arxius es desen sota <code>cd /etc/pki/tls/ | ||
+ | </code> al subdirectori <code>certs</code> o bé <code>private</code> segons sigui un certificat o una clau privada, respectivament. Ho fem: | ||
+ | <source> | ||
+ | [root@ejabberd tls]# mv /root/practica.ejabberd.crt /etc/pki/tls/certs/practica.ejabberd.crt | ||
+ | [root@ejabberd tls]# mv /root/practica.ejabberd.key /etc/pki/tls/private/practica.ejabberd.key | ||
+ | </source> | ||
+ | |||
+ | Aleshores modificarem les línies '''39''' i '''40''' de <code>/usr/local/etc/ejabberd/ejabberd.yml</code> per a concordar les rutes de la clau i el certificat segons correspongui: | ||
+ | <source> | ||
+ | - "/etc/pki/tls/certs/practica.ejabberd.crt" | ||
+ | - "/etc/pki/tls/private/practica.ejabberd.key" | ||
+ | </source> | ||
+ | |||
+ | Farem un restart del servei ejabberd: | ||
+ | <source> | ||
+ | [root@ejabberd tls]# /usr/local/sbin/ejabberdctl stop | ||
+ | [root@ejabberd tls]# /usr/local/sbin/ejabberdctl start | ||
+ | </source> | ||
+ | |||
+ | :*'''Problema: ''' si fem un <code>netstat</code> veurem que els ports d'ejjaberd no estan llistats perquè el servidor no ha arrencat. Als logs de <code>/usr/local/var/log/ejabberd/error.log</code> ens hi apareix el missatge | ||
+ | <source> | ||
+ | 2018-12-13 20:12:13.997 [error] <0.350.0>@ejabberd_pkix:add_file:250 Failed to read PEM file /etc/pki/tls/private/practica.ejabberd.key: at line 1: encrypted certificate | ||
+ | 2018-12-13 20:12:13.997 [critical] <0.350.0>@ejabberd_pkix:stop_ejabberd:356 ejabberd initialization was aborted due to invalid certificates configuration | ||
+ | 2018-12-13 20:12:41.360 [error] <0.350.0>@ejabberd_pkix:add_file:250 Failed to read PEM file /etc/pki/tls/private/practica.ejabberd.key: at line 1: encrypted certificate | ||
+ | 2018-12-13 20:12:41.360 [critical] <0.350.0>@ejabberd_pkix:stop_ejabberd:356 ejabberd initialization was aborted due to invalid certificates configuration | ||
+ | </source> | ||
+ | |||
+ | :*'''Solució:''' els certificats que espera ejabber són del tipus PEM, i nosaltres no els hem creat així. Per a simplificar, puc utilitzar l'script <code>/etc/pki/tls/certs/make-dummy-cert</code> que em permet crear ràpidament un certificat PEM amb la comanda | ||
+ | <source> | ||
+ | make-dummy-cert practicam08.ejabberd.pem | ||
+ | </source> | ||
+ | |||
+ | Una vegada creat, editarem l'arxiu de configuració d'ejabberd en conseqüència: haurem d'esborrar una de les 2 línies ja que el certificat creat ja conté la clau privada i el certificat junt; de manera que només fa falta dir-li un arxiu a ejabberd per a utilitzar. | ||
+ | |||
+ | Després de modificar la configuració, tornarem a engegar el servei de IM i mirarem si ha engegat bé. Ara sí. | ||
+ | <source> | ||
+ | root@ejabberd certs]# /usr/local/sbin/ejabberdctl start | ||
+ | |||
+ | [root@ejabberd certs]# /usr/local/sbin/ejabberdctl status | ||
+ | The node ejabberd@localhost is started with status: started | ||
+ | ejabberd 18.12.24 is running in that node | ||
+ | </source> | ||
+ | |||
+ | ==Usuari administrador== | ||
+ | Editarem la línia '''103''' de l'arxiu de configuració i hi posarem | ||
+ | <source>- allow: local</source> | ||
+ | que permetrà registrar usuaris als propis usuaris locals del sistema. Per defecte està en blanc i està restringit i dóna un error de <code>could_not_register</code> a l'executar la comanda. | ||
+ | |||
+ | També editarem la línia '''30''' per a definir un nom de host per a aquell node | ||
+ | <source> | ||
+ | - "ejabberd" | ||
+ | </source> | ||
+ | |||
+ | Crearem un usuari administrador des de la consola (o via SSH) a la màquina on s'executa el servei d'IM | ||
+ | <source>/usr/local/sbin/ejabberdctl register admin ejabberd contrasenya</source> | ||
+ | |||
+ | <source>[root@ejabberd ~]# /usr/local/sbin/ejabberdctl register admin ejabberd contrasenya | ||
+ | WARNING: It is not recommended to run ejabberd as root | ||
+ | User admin@ejabberd successfully registered | ||
+ | </source> | ||
+ | |||
+ | Ara podem navegar a http://ejabberd:5280/admin (havent modificat prèviament l'arxiu <code>/etc/hosts</code> del client i accedir amb les credencials creades abans: | ||
+ | {{imatge|M08UF3PT211.png||thumb|Pàgina principal de la interfície web}} | ||
+ | |||
+ | ==Virtual Hosts== | ||
+ | Una sola instància d'ejabberd pot gestionar més d'un "domini" XMPP utilitzant ''Virtual Hosts''; com un servidor web ''Apache'' o ''Nginx''. En el nostre cas, només hem configurat un sol domini (@ejabberd). De manera que els nostres usuaris tindran un ''login'' del tipus usuari@ejabberd amb la seva contrasenya per a poder utilitzar el servei. | ||
+ | |||
+ | ==Registre d'usuaris== | ||
+ | De la mateixa manera que hem afegit l'usuari administrador de la web GUI, afegirem 2 usuaris més que seran els clients que faran login des del Fedora amfitrió i un altre Fedora Virtual.Per a registrar-los ho farem amb la comanda <code>register</code> d'<code>ejabberdctl</code> | ||
+ | <source> | ||
+ | [root@ejabberd ~]# /usr/local/sbin/ejabberdctl register gsola96 ejabberd passwordguillem | ||
+ | User gsola96@ejabberd successfully registered | ||
+ | |||
+ | [root@ejabberd ~]# /usr/local/sbin/ejabberdctl register jugalo ejabberd passwordjulian | ||
+ | User jugalo@ejabberd successfully registered | ||
+ | </source> | ||
+ | |||
+ | Un cop donats d'alta, podrem provar d'iniciar sessió al servidor i intentar xatejar. |
Revisió de 11:25, 15 abr 2020
Contingut
Firewall
Per a poder comunicar-nos amb el servidor de IM, haurem d'obrir 3 ports al firewall; 2 necessaris per a la comunicació entre clients-servidor i servidor-servidor (en casos de servidors federats) i un 3r que serà el que ens permetrà accedir a la pàgina web d'administració.
- Port 5222
firewall-cmd --add-port=5222/tcp --permanent
- Port 5269
firewall-cmd --add-port=5269/tcp --permanent
- Port 5443
firewall-cmd --add-port=5280/tcp --permanent
Una vegada oberts els ports, haurem de recarregar el firewall perquè aquestes noves normes tinguin efecte
firewall-cmd --reload
Ports i interfícies
Segons la documentació pública d'aquest programa, podem buscar com cal configurar el servidor ejabberd segons les nostres necessitats.
Per defecte, el programa s'instal·larà sota /usr/local/etc/ejabberd/
; de manera que allà trobarem l'arxiu de configuració, dins el subdirectori. De la mateixa manera, des d'inici, aquest arxiu fa que el programa escolti només per IPv6; cosa que ens impedeix accedir-hi, de moment. Haurem de modificar l'arxiu /usr/local/etc/ejabberd/ejabberd.yml
amb un editor de text que ens vagi bé i buscar les línies següents:
- Línia 49: editar
ip: "0.0.0.0"
- Línia 57: editar
ip: "0.0.0.0"
- Línia 62: editar
ip: "0.0.0.0"
D'aquesta manera, fem que el servidor escolti en totes les interfícies IPv4 que tingui la màquina on està executant-se.
Certificats SSL
Per defecte, l'arxiu de configuració contempla que usarem certificats de Let's Encrypt i figuren rutes per a usar xifrat SSL a les línies 39 i 40 del ejabberd.yml
- "/etc/letsencrypt/live/localhost/fullchain.pem" - "/etc/letsencrypt/live/localhost/privkey.pem"
L'opció que tenim més fàcil és crear certificats auto-signats i canviar aquestes rutes per les que corresponguin. Ho farem de la següent manera, des del directori /root
per conveniència.
openssl genrsa -des3 -out practica.ejabberd.key 2048 openssl req -new -key practica.ejabberd.key -out practica.ejabberd.csr openssl x509 -req -days 365 -in practica.ejabberd.csr -signkey practica.ejabberd.key -out practica.ejabberd.crt
Si llistem amb la comanda ls
els arxius que hi ha al directori on hem creat el certificat i la clau veurem
practica.ejabberd.crt practica.ejabberd.csr practica.ejabberd.key
Ara és qüestió de posar l'arxiu .crt i .key a un lloc conegut que ejabberd pugui llegir. Normalment, i és un mètode estàndard, aquest tipus d'arxius es desen sota cd /etc/pki/tls/
al subdirectori certs
o bé private
segons sigui un certificat o una clau privada, respectivament. Ho fem:
[root@ejabberd tls]# mv /root/practica.ejabberd.crt /etc/pki/tls/certs/practica.ejabberd.crt [root@ejabberd tls]# mv /root/practica.ejabberd.key /etc/pki/tls/private/practica.ejabberd.key
Aleshores modificarem les línies 39 i 40 de /usr/local/etc/ejabberd/ejabberd.yml
per a concordar les rutes de la clau i el certificat segons correspongui:
- "/etc/pki/tls/certs/practica.ejabberd.crt" - "/etc/pki/tls/private/practica.ejabberd.key"
Farem un restart del servei ejabberd:
[root@ejabberd tls]# /usr/local/sbin/ejabberdctl stop [root@ejabberd tls]# /usr/local/sbin/ejabberdctl start
- Problema: si fem un
netstat
veurem que els ports d'ejjaberd no estan llistats perquè el servidor no ha arrencat. Als logs de/usr/local/var/log/ejabberd/error.log
ens hi apareix el missatge
- Problema: si fem un
2018-12-13 20:12:13.997 [error] <0.350.0>@ejabberd_pkix:add_file:250 Failed to read PEM file /etc/pki/tls/private/practica.ejabberd.key: at line 1: encrypted certificate 2018-12-13 20:12:13.997 [critical] <0.350.0>@ejabberd_pkix:stop_ejabberd:356 ejabberd initialization was aborted due to invalid certificates configuration 2018-12-13 20:12:41.360 [error] <0.350.0>@ejabberd_pkix:add_file:250 Failed to read PEM file /etc/pki/tls/private/practica.ejabberd.key: at line 1: encrypted certificate 2018-12-13 20:12:41.360 [critical] <0.350.0>@ejabberd_pkix:stop_ejabberd:356 ejabberd initialization was aborted due to invalid certificates configuration
- Solució: els certificats que espera ejabber són del tipus PEM, i nosaltres no els hem creat així. Per a simplificar, puc utilitzar l'script
/etc/pki/tls/certs/make-dummy-cert
que em permet crear ràpidament un certificat PEM amb la comanda
- Solució: els certificats que espera ejabber són del tipus PEM, i nosaltres no els hem creat així. Per a simplificar, puc utilitzar l'script
make-dummy-cert practicam08.ejabberd.pem
Una vegada creat, editarem l'arxiu de configuració d'ejabberd en conseqüència: haurem d'esborrar una de les 2 línies ja que el certificat creat ja conté la clau privada i el certificat junt; de manera que només fa falta dir-li un arxiu a ejabberd per a utilitzar.
Després de modificar la configuració, tornarem a engegar el servei de IM i mirarem si ha engegat bé. Ara sí.
root@ejabberd certs]# /usr/local/sbin/ejabberdctl start [root@ejabberd certs]# /usr/local/sbin/ejabberdctl status The node ejabberd@localhost is started with status: started ejabberd 18.12.24 is running in that node
Usuari administrador
Editarem la línia 103 de l'arxiu de configuració i hi posarem
- allow: local
que permetrà registrar usuaris als propis usuaris locals del sistema. Per defecte està en blanc i està restringit i dóna un error de could_not_register
a l'executar la comanda.
També editarem la línia 30 per a definir un nom de host per a aquell node
- "ejabberd"
Crearem un usuari administrador des de la consola (o via SSH) a la màquina on s'executa el servei d'IM
/usr/local/sbin/ejabberdctl register admin ejabberd contrasenya
[root@ejabberd ~]# /usr/local/sbin/ejabberdctl register admin ejabberd contrasenya WARNING: It is not recommended to run ejabberd as root User admin@ejabberd successfully registered
Ara podem navegar a http://ejabberd:5280/admin (havent modificat prèviament l'arxiu /etc/hosts
del client i accedir amb les credencials creades abans:
Virtual Hosts
Una sola instància d'ejabberd pot gestionar més d'un "domini" XMPP utilitzant Virtual Hosts; com un servidor web Apache o Nginx. En el nostre cas, només hem configurat un sol domini (@ejabberd). De manera que els nostres usuaris tindran un login del tipus usuari@ejabberd amb la seva contrasenya per a poder utilitzar el servei.
Registre d'usuaris
De la mateixa manera que hem afegit l'usuari administrador de la web GUI, afegirem 2 usuaris més que seran els clients que faran login des del Fedora amfitrió i un altre Fedora Virtual.Per a registrar-los ho farem amb la comanda register
d'ejabberdctl
[root@ejabberd ~]# /usr/local/sbin/ejabberdctl register gsola96 ejabberd passwordguillem User gsola96@ejabberd successfully registered [root@ejabberd ~]# /usr/local/sbin/ejabberdctl register jugalo ejabberd passwordjulian User jugalo@ejabberd successfully registered
Un cop donats d'alta, podrem provar d'iniciar sessió al servidor i intentar xatejar.