Prosody IM y usuarios locales – Redes PYMES

Índice general de la serie: Redes de Computadoras para las PYMES: Introducción

Este artículo es continuación de:

¡Hola amigas y amigos!

Continuamos adicionando servicios de redes basados en la autenticación de usuarios locales al pequeño servidor del grupo de Entusiastas del Software Libre, específicamente de CentOS.

Las condiciones de trabajo del grupo cambiaron a mejor. Disponen ahora como sede de una casa de tres plantas con sótano y necesitan implementar un servidor de mensajería instantánea y transferencia de archivos entre estaciones de trabajo, para paliar la dificultad que supone el subir y bajar escaleras o el mucho caminar. ;-).  Para ello se proponen utilizar el programa Prosody.

Están decididos a publicar el servicio Chat en Internet solamente para los Entusiastas, y planean unir su servidor de mensajería instantánea con otros servidores XMPP compatibles ubicados en la Red de Redes. Para ello compraron el nombre de dominio desdelinux.fan y hasta el momento actual la dirección IP asociada a ese nombre la maneja su proveedor de acceso a Internet.

El servicio de Chat mediante Prosody les permitirá intercambiar mensajes instantáneos, transferir archivos, realizar conferencias con voz y vídeo, etcétera.

¿Qué es Prosody Instant Messenger?

Prosody es un servidor de comunicaciones moderno basado en el protocolo XMPP. Está concebido para una fácil instalación y configuración, y un eficiente manejo de los recursos del sistema. Prosody es un programa de Fuente Abierta – Open Source creado bajo la permisiva licencia MIT/X11.

XMPP es una alternativa no comercial para proveer los servicios de mensajería instantánea. Se puede implementar en un ambiente empresarial de producción, en una red familiar, red privada de vecinos, etcétera. Soporta una amplia gama de software cliente para escritorios y plataformas móviles. Mediante XMPP se puede brindar éste servicio a cualquier dispositivo.

Adicionalmente, se pueden enlazar varias instalaciones de Prosody y de otros servicios que sean compatibles con el protocolo XMPP, y formar una red de mensajería en la que tendremos el control total del tráfico de mensajes y archivos que ocurrirá de una forma totalmente segura.

Prosody y la autenticación contra usuarios locales

En el Mapa del Sitio de Prosody IM encontramos el enlace a la página Proveedores de Autenticación, la cual expresa que a partir de la versión 0.8 del Prosody se soportan varios proveedores de autenticación mediante plugins. Se pueden emplear los drivers incorporados del programa, o se puede integrar con proveedores de almacenamiento y autenticación externos mediante sus APIs.

Proveedores de autenticación que podemos emplear

Nombre      Descripción
--------------  ---------------------------------------------------------
internal_plain   Autenticación por defecto. Las contraseñas en texto plano
        se almacenan utilizando el almacenamiento incorporado.

internal_hashed  Las contraseñas codificadas mediante un algoritmo interno
        se almacenan utilizando el almacenamiento incorporado.

cyrus       Integración con Cyrus SASL (LDAP, PAM, ...)

anonymous    Mecanismo de autenticación mediante SASL 'ANONYMOUS' con
        nombre de usuario aleatorio que no requiere credenciales
        de autenticación.

XMPP utiliza para la autenticación el protocolo estándar Capa Segura de Autenticación Simple – Simple Authentication and Secure Layer (SASL), para validar las credenciales de los clientes. Prosody incorpora la librería SASL que por defecto valida las credenciales contra las cuentas existentes en su almacenamiento incorporado.

Desde la versión 0.7 del Prosody, se soporta el proveedor externo Cyrus SALS que puede validar las credenciales suministradas por usuarios externos contra otras fuentes como son: PAM, LDAP, SQL y otras. También permite el uso de GSSAPI para los Servicios de Un Solo Inicio de Sesión – Single Sign-on Services.

En éste artículo sobre Prosody, para lograr la autenticación frente a usuarios locales vía PAM, utilizaremos el proveedor de autenticación «cyrus» que aporta el paquete «cyrus-sasl» y que funciona integrado con el demonio saslauthd.

cyrus-sasl y saslauthd

[root@linuxbox ~]# yum install cyrus-sasl

El demonio saslauthd ya está instalado

[root@linuxbox ~]# getsebool -a | grep saslauthd
saslauthd_read_shadow --> off

[root@linuxbox ~]# setsebool saslauthd_read_shadow on
[root@linuxbox ~]# getsebool -a | grep saslauthd
saslauthd_read_shadow --> on

[root@linuxbox ~]# systemctl status saslauthd
● saslauthd.service - SASL authentication daemon.
   Loaded: loaded (/usr/lib/systemd/system/saslauthd.service; 
   disabled; vendor preset: disabled)
   Active: inactive (dead)

[root@linuxbox ~]# systemctl enable saslauthd
Created symlink from /etc/systemd/system/multi-user.target.wants/saslauthd.service to 
/usr/lib/systemd/system/saslauthd.service.

[root@linuxbox ~]# systemctl start saslauthd
[root@linuxbox ~]# systemctl status saslauthd
● saslauthd.service - SASL authentication daemon.
   Loaded: loaded (/usr/lib/systemd/system/saslauthd.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2017-04-29 10:31:20 EDT; 2s ago
  Process: 1678 ExecStart=/usr/sbin/saslauthd -m $SOCKETDIR -a $MECH $FLAGS (code=exited, status=0/SUCCESS)
 Main PID: 1679 (saslauthd)
   CGroup: /system.slice/saslauthd.service
           ├─1679 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           ├─1680 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           ├─1681 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           ├─1682 /usr/sbin/saslauthd -m /run/saslauthd -a pam
           └─1683 /usr/sbin/saslauthd -m /run/saslauthd -a pam

Prosody y lua-cyrussasl

[root@linuxbox ~]# yum install prosody
----
Dependencias resueltas

================================================================================
 Package              Arquitectura Versión                Repositorio     Tamaño
================================================================================
Instalando:
 prosody              x86_64       0.9.12-1.el7           Epel-Repo       249 k
Instalando para las dependencias:
 lua-expat            x86_64       1.3.0-4.el7            Epel-Repo        32 k
 lua-filesystem       x86_64       1.6.2-2.el7            Epel-Repo        28 k
 lua-sec              x86_64       0.5-4.el7              Epel-Repo        31 k
 lua-socket           x86_64       3.0-0.10.rc1.el7       Epel-Repo       176 k

Resumen de la transacción
================================================================================
Instalar  1 Paquete (+4 Paquetes dependientes)
----

[root@linuxbox ~]# getsebool -a | grep prosody
prosody_bind_http_port --> off
[root@linuxbox ~]# setsebool prosody_bind_http_port on
[root@linuxbox ~]# getsebool -a | grep prosody
prosody_bind_http_port --> on

[root@linuxbox ~]# systemctl enable prosody
Created symlink from /etc/systemd/system/multi-user.target.wants/prosody.service to /usr/lib/systemd/system/prosody.service.
[root@linuxbox ~]# systemctl status prosody
● prosody.service - Prosody XMPP (Jabber) server
   Loaded: loaded (/usr/lib/systemd/system/prosody.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

[root@linuxbox ~]# systemctl start prosody
[root@linuxbox ~]# systemctl status prosody
● prosody.service - Prosody XMPP (Jabber) server
   Loaded: loaded (/usr/lib/systemd/system/prosody.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2017-04-29 10:35:07 EDT; 2s ago
  Process: 1753 ExecStart=/usr/bin/prosodyctl start (code=exited, status=0/SUCCESS)
 Main PID: 1756 (lua)
   CGroup: /system.slice/prosody.service
           └─1756 lua /usr/lib64/prosody/../../bin/prosody

[root@linuxbox ~]# tail /var/log/prosody/prosody.log
Apr 29 10:35:06 general info    Hello and welcome to Prosody version 0.9.12
Apr 29 10:35:06 general info    Prosody is using the select backend for connection handling
Apr 29 10:35:06 portmanager info    Activated service 's2s' on [::]:5269, [*]:5269
Apr 29 10:35:06 portmanager info    Activated service 'c2s' on [::]:5222, [*]:5222
Apr 29 10:35:06 portmanager info    Activated service 'legacy_ssl' on no ports
Apr 29 10:35:06 mod_posix   info    Prosody is about to detach from the console, disabling further console output
Apr 29 10:35:06 mod_posix   info    Successfully daemonized to PID 1756

[root@linuxbox ~]# yum install lua-cyrussasl

Creamos el virtual host «chat.desdelinux.fan» a partir del «example.com» que instala el Prosody

[root@linuxbox ~]# cp /etc/prosody/conf.d/example.com.cfg.lua \
/etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua

[root@linuxbox ~]# nano /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua
-- Section for VirtualHost chat

VirtualHost "chat.desdelinux.fan"

-- Assign this host a certificate for TLS, otherwise it would use the one
-- set in the global section (if any).
-- Note that old-style SSL on port 5223 only supports one certificate,
-- and will always use the global one.
        ssl = {
                 key = "/etc/pki/prosody/chat.key";
                certificate = "/etc/pki/prosody/chat.crt";
        }

------ Components ------
-- You can specify components to add hosts that provide special services,
-- like multi-user conferences, and transports.
-- For more information on components, see http://prosody.im/doc/components

---Set up a MUC (multi-user chat) room server on conference.chat.desdelinux.fan:
Component "conference.chat.desdelinux.fan" "muc"
name = "Entusiastas"  -- ES EL NOMBRE DE LA SALA DE CONFERENCIAS A DECLARAR
                      -- CUANDO SE VA A UNIR A LA SALA
restrict_room_creation = true

-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
--Component "proxy.chat" "proxy65"

---Set up an external component (default component port is 5347)
--
-- External components allow adding various services, such as gateways/
-- transports to other networks like ICQ, MSN and Yahoo. For more info
-- see: http://prosody.im/doc/components#adding_an_external_component
--
--Component "gateway.chat"
--  component_secret = "password"

authentication = "cyrus"
cyrus_service_name = "xmpp"
cyrus_require_provisioning = false
cyrus_application_name = "prosody"
cyrus_server_fqdn = "chat.desdelinux.fan"

Ajustamos el grupo propietario del archivo /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua

[root@linuxbox ~]# ls -l /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua 
-rw-r-----. 1 root root 1361 abr 29 10:45 /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua

[root@linuxbox ~]# chown root:prosody /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua 
[root@linuxbox ~]# ls -l /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua 
-rw-r-----. 1 root prosody 1361 abr 29 10:45 /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua

Comprobamos la configuración

[root@linuxbox ~]# luac -p /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua
[root@linuxbox ~]#

Certificados SSL para conexiones seguras

Para conectarnos al servidor Prosody -tanto desde la red local como desde Internet- y lograr que las credenciales viajen encriptadas de forma segura, debemos generar los certificados SSL – Security Socket Layer declarados en el archivo de configuración del host virtual /etc/prosody/conf.d/chat.desdelinux.fan.cfg.lua:

[root@linuxbox ~]# cd /etc/prosody/certs/

[root@linuxbox certs]# openssl req -new -x509 -days 365 -nodes \
-out "chat.crt" -newkey rsa:2048 -keyout "chat.key"
Generating a 2048 bit RSA private key
.....+++
..........+++
writing new private key to 'chat.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CU
State or Province Name (full name) []:Cuba
Locality Name (eg, city) [Default City]:Habana
Organization Name (eg, company) [Default Company Ltd]:DesdeLinux.Fan
Organizational Unit Name (eg, section) []:Entusiastas
Common Name (eg, your name or your server's hostname) []:chat.desdelinux.fan
Email Address []:buzz@desdelinux.fan

Modificamos las opciones globales de configuración

Solamente editaremos las siguientes opciones en el archivo /etc/prosody/prosody.cfg.lua:

[root@linuxbox certs]# cp /etc/prosody/prosody.cfg.lua \
/etc/prosody/prosody.cfg.lua.original

[root@linuxbox ~]# nano /etc/prosody/prosody.cfg.lua
-- Prosody Example Configuration File
--
-- Information on configuring Prosody can be found on our
-- website at http://prosody.im/doc/configure
--
-- Tip: You can check that the syntax of this file is correct
-- when you have finished by running: luac -p prosody.cfg.lua
-- If there are any errors, it will let you know what and where
-- they are, otherwise it will keep quiet.
--
-- The only thing left to do is rename this file to remove the .dist ending, and fill in the
-- blanks. Good luck, and happy Jabbering!


---------- Server-wide settings ----------
-- Settings in this section apply to the whole server and are the default settings
-- for any virtual hosts

-- This is a (by default, empty) list of accounts that are admins
-- for the server. Note that you must create the accounts separately
-- (see http://prosody.im/doc/creating_accounts for info)
-- Example: admins = { "user1@example.com", "user2@example.net" }
admins = { "buzz@chat.desdelinux.fan", "trancos@chat.desdelinux.fan" }

-- Enable use of libevent for better performance under high load
-- For more information see: http://prosody.im/doc/libevent
--use_libevent = true;

-- This is the list of modules Prosody will load on startup.
-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
-- Documentation on modules can be found at: http://prosody.im/doc/modules
modules_enabled = {

    -- Generally required
        "roster"; -- Allow users to have a roster. Recommended ;)
        "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
        "tls"; -- Add support for secure TLS on c2s/s2s connections
        "dialback"; -- s2s dialback support
        "disco"; -- Service discovery

    -- Not essential, but recommended
        "private"; -- Private XML storage (for room bookmarks, etc.)
        "vcard"; -- Allow users to set vCards
    
    -- These are commented by default as they have a performance impact
        --"privacy"; -- Support privacy lists
        --"compression"; -- Stream compression (Note: Requires installed lua-zlib RPM package)

    -- Nice to have
        "version"; -- Replies to server version requests
        "uptime"; -- Report how long server has been running
        "time"; -- Let others know the time here on this server
        "ping"; -- Replies to XMPP pings with pongs
        "pep"; -- Enables users to publish their mood, activity, playing music and more
        "register"; -- Allow users to register on this server using a client and change passwords

    -- Admin interfaces
        "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
        --"admin_telnet"; -- Opens telnet console interface on localhost port 5582
    
    -- HTTP modules
        "bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
        --"http_files"; -- Serve static files from a directory over HTTP

    -- Other specific functionality
        "posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
        --"groups"; -- Shared roster support
        --"announce"; -- Send announcement to all online users
        --"welcome"; -- Welcome users who register accounts
        --"watchregistrations"; -- Alert admins of registrations
        --"motd"; -- Send a message to users when they log in
        --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
};

bosh_ports = {
               {
                 port = 5280;
                 path = "http-bind";
                 interface = "127.0.0.1";
                }
}

bosh_max_inactivity = 60
-- Use if proxying HTTPS->HTTP on the server side
consider_bosh_secure = true
-- Allow access from scripts on any site with no proxy (requires a modern browser)
cross_domain_bosh = true

-- These modules are auto-loaded, but should you want
-- to disable them then uncomment them here:
modules_disabled = {
    -- "offline"; -- Store offline messages
    -- "c2s"; -- Handle client connections
    -- "s2s"; -- Handle server-to-server connections
};

-- Disable account creation by default, for security
-- For more information see http://prosody.im/doc/creating_accounts
allow_registration = false;

-- These are the SSL/TLS-related settings. If you don't want
-- to use SSL/TLS, you may comment or remove this
ssl = {
    key = "/etc/pki/prosody/localhost.key";
    certificate = "/etc/pki/prosody/localhost.crt";
}

-- Force clients to use encrypted connections? This option will
-- prevent clients from authenticating unless they are using encryption.

c2s_require_encryption = true

-- Force certificate authentication for server-to-server connections?
-- This provides ideal security, but requires servers you communicate
-- with to support encryption AND present valid, trusted certificates.
-- NOTE: Your version of LuaSec must support certificate verification!
-- For more information see http://prosody.im/doc/s2s#security

s2s_secure_auth = false

-- Many servers don't support encryption or have invalid or self-signed
-- certificates. You can list domains here that will not be required to
-- authenticate using certificates. They will be authenticated using DNS.

--s2s_insecure_domains = { "gmail.com" }

-- Even if you leave s2s_secure_auth disabled, you can still require valid
-- certificates for some domains by specifying a list here.

--s2s_secure_domains = { "jabber.org" }

-- Select the authentication backend to use. The 'internal' providers
-- use Prosody's configured data storage to store the authentication data.
-- To allow Prosody to offer secure authentication mechanisms to clients, the
-- default provider stores passwords in plaintext. If you do not trust your
-- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed
-- for information about using the hashed backend.

-- authentication = "internal_plain"
authentication = "cyrus"
cyrus_service_name = "xmpp"
cyrus_require_provisioning = false

-- Select the storage backend to use. By default Prosody uses flat files
-- in its configured data directory, but it also supports more backends
-- through modules. An "sql" backend is included by default, but requires
-- additional dependencies. See http://prosody.im/doc/storage for more info.

--storage = "sql" -- Default is "internal" (Note: "sql" requires installed
-- lua-dbi RPM package)

-- For the "sql" backend, you can uncomment *one* of the below to configure:
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }

-- Logging configuration
-- For advanced logging see http://prosody.im/doc/logging
log = {
    -- Log everything of level "info" and higher (that is, all except "debug" messages)
    -- to /var/log/prosody/prosody.log and errors also to /var/log/prosody/prosody.err
    debug = "/var/log/prosody/prosody.log"; -- Change 'info' to 'debug' for verbose logging
    error = "/var/log/prosody/prosody.err"; -- Log errors also to file
    -- error = "*syslog"; -- Log errors also to syslog
    -- log = "*console"; -- Log to the console, useful for debugging with daemonize=false
}

-- POSIX configuration, see also http://prosody.im/doc/modules/mod_posix
pidfile = "/run/prosody/prosody.pid";
--daemonize = false -- Default is "true"

------ Additional config files ------
-- For organizational purposes you may prefer to add VirtualHost and
-- Component definitions in their own config files. This line includes
-- all config files in /etc/prosody/conf.d/

Include "conf.d/*.cfg.lua"

Modificaciones en la configuración del Dnsmasq en linuxbox

Archivo /etc/dnsmasq.conf

Solo agregar el valor cname=chat.desdelinux.fan,linuxbox.desdelinux.fan:

[root@linuxbox ~]# nano /etc/dnsmasq.conf
-----
# -------------------------------------------------------------------
# R E G I S T R O S   C N A M E    M X    T X T
# -------------------------------------------------------------------
# Este tipo de registro requiere de una entrada
# en el archivo /etc/hosts
# ej: 192.168.10.5 linuxbox.desdelinux.fan linuxbox
# cname=ALIAS,REAL_NAME
cname=mail.desdelinux.fan,linuxbox.desdelinux.fan
cname=chat.desdelinux.fan,linuxbox.desdelinux.fan
----

[root@linuxbox ~]# service dnsmasq restart
[root@linuxbox ~]# service dnsmasq status

[root@linuxbox ~]# host chat
chat.desdelinux.fan is an alias for linuxbox.desdelinux.fan.
linuxbox.desdelinux.fan has address 192.168.10.5
linuxbox.desdelinux.fan mail is handled by 1 mail.desdelinux.fan.

Archivo /etc/resolv.conf

[root@linuxbox ~]# nano /etc/resolv.conf 
search desdelinux.fan
nameserver 127.0.0.1
# Para consultas DNS externas o 
# que no sean del dominio desdelinux.fan
# local=/desdelinux.fan/
nameserver 172.16.10.30

Modificaciones en el DNS externo en el ISP

Dedicamos todo el artículo «Servidor DNS Autoritario NSD + Shorewall – Redes PYMES» al tema de cómo declarar los registros SRV relativos al XMPP para que el servicio de Mensajería Instantánea pudiera salir a Internet, e incluso para que el servidor Prosody se puediera federar con el resto de los servidores XMPP compatibles existentes en la Web.

Reiniciamos Prosody

[root@linuxbox ~]# service prosody restart
Redirecting to /bin/systemctl restart  prosody.service
[root@linuxbox ~]# service prosody status
Redirecting to /bin/systemctl status  prosody.service
● prosody.service - Prosody XMPP (Jabber) server
   Loaded: loaded (/usr/lib/systemd/system/prosody.service; enabled; vendor preset: disabled)
   Active: active (running) since dom 2017-05-07 12:07:54 EDT; 8s ago
  Process: 1388 ExecStop=/usr/bin/prosodyctl stop (code=exited, status=0/SUCCESS)
  Process: 1390 ExecStart=/usr/bin/prosodyctl start (code=exited, status=0/SUCCESS)
 Main PID: 1393 (lua)
   CGroup: /system.slice/prosody.service
           └─1393 lua /usr/lib64/prosody/../../bin/prosody

[root@linuxbox ~]# tail -f /var/log/prosody/prosody.log
  • Es muy saludable abrir una nueva consola con el comando anterior en ejecución, y observar la salida del «debug» del Prosody mientras se reinicia el servicio.

Configuramos Cyrus SASL

[root@linuxbox ~]# nano /etc/sasl2/prosody.conf
pwcheck_method: saslauthd
mech_list: PLAIN

[root@linuxbox ~]# service saslauthd restart
Redirecting to /bin/systemctl restart  saslauthd.service
[root@linuxbox ~]# service saslauthd status

-- Por si...
[root@linuxbox ~]# service prosody restart

Configuración PAM

[root@linuxbox ~]# nano /etc/pam.d/xmpp
auth     include  password-auth
account    include  password-auth

Comprobaciones de la autenticación PAM

  • Para comprobar, tenemos que ejecutar el comando siguiente EXACTAMENTE como se indica a continuacón, pues se trata de ejecutar un comando como el usuario «prosody» y no como el usuario «root»:
[root@linuxbox ~]# sudo -u prosody testsaslauthd -s xmpp -u trancos -p trancos
0: OK "Success."

[root@linuxbox ~]# sudo -u prosody testsaslauthd -s xmpp -u legolas -p legolas
0: OK "Success."

[root@linuxbox ~]# sudo -u prosody testsaslauthd -s xmpp -u legolas -p Lengolas
0: NO "authentication failed"

El proceso de autenticación contra los usuarios locales funciona correctamente.

Modificamos el FirewallD

Mediante la utilidad gráfica «Cortafuegos«, para la zona «public» activamos los servicios:

  • xmpp-bosch
  • xmpp-client
  • xmpp-server
  • xmpp-local

De igual forma para la zona «external» activamos los servicios:

  • xmpp-client
  • xmpp-server

Y abrimos los puertos tcp 5222 y 5269.

Finalmente, hacemos los cambios en Tiempo de ejecución a Permanentes y recargamos el FirewallD.

Cliente XMPP Psi

Para conectarnos con el servidor de Mensajería Instantánea Prosody recién instalado, podemos escoger entre los diversos clientes que existen:

  • Empathy
  • Gajim
  • Kadu
  • Psi
  • Psi Plus
  • Pidgin
  • Telepathy
  • Weechat

La lista prosigue. Nosotros escogimos al Psi+. Para tenerlo instalado hacemos uso del comando preferido para ello o lo hacemos mediante las herramientas gráficas disponible para esa tarea. Una vez instalado, lo ejecutamos, y al final del artículo damos una serie de imágenes que esperamos les sean de utilidad.

Resumen

  • Podemos instalar un servicio de Mensajería Instantánea basado en Prosody para los usuarios locales del sistema, y prescindir de la creación de los usuarios internos del Prosody o de otros tipos de almacenamiento de credenciales de autenticación.
  • Las credenciales de autenticación viajaran encriptadas desde el cliente al servidor, y las respuestas de éste último al cliente también.
  • Podemos instalar en un solo servidor, más de un servicio basado en autenticación local mediante PAM.
  • Hasta ahora, el servidor linuxbox.desdelinux.fan brinda los siguientes servicios a la Red PYME:
    • Resolución de Nombres de Dominio o DNS.
    • Otorgamiento dinámico de direcciones IP o DCHP
    • Servicio de Tiempo de Red o NTP
    • Copias de seguridad mediante SSH desde clientes UNIX/Linux, o mediante el WinSCP para clientes Microsoft Windows.
    • Servicio de Mensajería Instantánea – Chat. También disponible desde Internet.
    • Servicio de intercambio de archivos mediante el propio Chat. También disponible desde Internet
    • Servicio de Teleconferencias que Usted podrá configurar en el Prosody.

Y todos los servicios anteriores con un par de herramientas gráficas para la configuración del Cortafuegos – FirewallD, y para la Gestión de Usuarios y Grupos del sistema verdaderamente fáciles de utilizar si tenemos los conocimientos básicos sobre lo que queremos hacer.

Importante

No deje de visitar la siguiente URL para tener una información completa sobre el Prosody: http://prosody.im.

¡Hasta la próxima entrega!


10 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Guillermo dijo

    Qué interesantísimas todas tus aportaciones, muchísimas gracias por todas ellas.

  2.   IWO dijo

    Mil felicidades Federico por otro gran articulo.
    Aquí el autor nos obsequia («regala») con el «howto know» de como implementar el servicio de Chat mediante Prosody que utiliza el protocolo XMPP en una red para intercambiar mensajes instantáneos, transferir archivos, realizar conferencias con voz y vídeo, autenticando contra usuarios locales a través de conexiones seguras.
    Además como es habitual en toda la serie PYMES el autor nos facilita la integración del servicio a configurar con el resto de los servicios y/o parámetros que ya están en funcionamiento en una red:
    1- Las modificaciones que debemos hacer al servicio DNS para incluir el servicio Chat y todo funcione correctamente.
    2- La configuración (y comprobaciones) del PAM para autenticar localmente el servicio Chat.
    3- Lo que debemos hacer en el Cortafuegos para la red local y la «Red de Redes» para permitir el servicio Chat, y ello con un nivel adecuado de seguridad.
    4- Y por ultimo la comprobación del Chat desde un cliente XMPP.
    Nada a guardar el post en un directorio de TIPS para cuando haya que implementar este servicio.

  3.   federico dijo

    Espero te sean útiles de alguna forma. Gracias por comentar

  4.   federico dijo

    Amigo IWO, cogiste la verdadera esencia del artículo. Solo agregar que estamos implementando servicios para una red UNIX/Linux, aunque todos sus clientes sean Microsoft Windows. Puede que muchos lectores aun no se hayan percatado de ese pequeño detalle. 😉

  5.   Zodiac Carburus dijo

    Muy buen aporte amigo Fico. Sabes que he seguido todos tus artículos y en éstos 4 últimos he aprendido muchas cuestiones que desconocía por tener el velo del Directorio Activo y del Controlador de Dominio puesto en mi misma cara. Prácticamente nací con el NT 4 y sus PDC y BDC. Desconocía que podía simplificar la autenticación en una red a una sola máquina con Centos u otro Linux. Ahora estoy aprendiendo una nueva filosofía que veo es tan vieja como el origen de la historia de las redes. Aunque poco me comentas sobre lo que vas a publicar 😉 pienso continuaras con LDAP y después el Directorio Activo basado en Samba 4?. Gracias por tu entrega a la causa del software libre. Esperaré tus próximos artículos, Fico.

  6.   Eduardo Noel dijo

    Tigre, fenomenal artículo!!!!!

    Colega, hay un pequeño detalle, en la parte del DNS, apuntas todo el dominio de desdelinux.fan a la IP 172.16.10.10, este servidor lo tienes implementado en Debian (el de DNS), ahora, este de chat, es en CentOS, así que como es lógico tiene una dirección IP diferente, que lo que te faltó fue redirigir todo el tráfico en el cortafuegos para esta IP donde estaría ubicado el servicio de mensajería instantanea, ya que en estos momentos apunta al mismo servidor de DNS y este no tiene el servicio de mensajería.

    Por lo demás todo espléndido, un fuerte abrazo.

  7.   federico dijo

    Gracias Eduardo por comentar. Leíste bien el párrafo:

    De igual forma para la zona «external» activamos los servicios:

    xmpp-client
    xmpp-server

    Y abrimos los puertos tcp 5222 y 5269.

    Permito la salida del protocolo XMPP por la interfaz ens34. Recuerda que el post en continuación, incluso desde el artículo del Squid. 😉

  8.   federico dijo

    Amigo Zodiac: me haces declarar mis sopresas con antelación. No, ahora no va LDAP. Va el núcleo de un servidor de correo basado en Postfix, Dovecot, Squirrelmail, y con autenticación PAM, que sería el último de ésta mini serie. Más ná. ;-). Después si viene el resto hasta llegar al Samba 4 AD-DC. Chao!.

  9.   Eduardo Noel dijo

    Si mi amigo, si lo leí, pero no veo por ningún lado el PREROUTING hacia el otro servidor, échale un ojo.

  10.   federico dijo

    Eduardo: Haz la instalación. Conecta una Laptop con una IP de la subnet 172.16.10.0/24. Instala un cliente Chat en ella y conéctate al Prosody. Así lo hice y así funcionó. 😉
    El FirewallD es el del CentOS que hará el PREROUTING a su manera.