Esta es la versión en sysadminsdecuba del manual de Arian Molina Aguilera (@linuxcuba en telegram), me toca ser su editor, 😀 .
Entendiendo que es Cluebringer Policyd, para que se utiliza y su implementación en Zimbra
Cluebringer Policyd (Policyd V2) es un servicio multi-plataforma que permite implementar políticas de seguridad anti-spam para servidores MTA. PolicyD es un software desarrollado en C que permite implementar políticas de seguridad en nuestro servidor MTA con facilidad: control de acceso, gestión de EHLO/HELO, gestión de SPF, Greylisting, cuotas, accounting e integración con amavis. Para poder ver todas las funcionalidades que nos ofrece este sistema, aconsejo que se den una vuelta por su sitio web oficial.
Les comento que cuando vi esta variante de control se me hizo la vida un poco más fácil, porque es una herramienta mediante la cual puedes establecer políticas de manera muy rápida y de efecto casi inmediato.
A partir de la versión 7.1 de Zimbra, se añadió este servicio, el cual nos permite tener un control exhaustivo del correo que entrada y salida de nuestro servidor, aparte de darle nuevas funcionalidades al sistema de antispam. El sistema de Policyd por defecto viene deshabilitado en el sistema cuando instalamos Zimbra y no lo podemos habilitar mediante la administración web de manera estándar.
Vamos a entrar en contenido, primero nos autenticamos en nuestro server con el usuario Zimbra, y hacemos las verificaciones iniciales para el servicio cbpolicyd.
#nos logueamos con el usuario zimbra su - zimbra #comprobamos si esta instalado y si existe el servicio zmprov gs `zmhostname` | grep zimbraServiceInstalled #instalamos el servicio de no estar zmprov ms `zmhostname` +zimbraServiceInstalled cbpolicyd
Si entramos a la consola de administración de Zimbra veremos que es servicio esta listado con el resto pero esta deshabilitado(si estoy usando las imágenes del anual de Arian).
#habilitamos el servicio zmprov ms `zmhostname` +zimbraServiceEnabled cbpolicyd #comprobamos que fue habilitado correctamente zmprov gs `zmhostname` | grep zimbraServiceEnabled | grep cbpolicyd #esta debe ser la salida del comandoanterior zimbraServiceEnabled: cbpolicyd
Después de un par de minutos, zmconfigd detecta que tenemos el servicio habilitado y automáticamente instala la base de datos y nos inicia el servicio de Policyd. Esperamos un par de segundos y verificamos que el servicio está funcionando correctamente.
zmcbpolicydctl status #mostrando como resultado policyd is running
Una vez el servicio de Policyd esté funcionando, hemos de indicarle al servidor de postfix (MTA de Zimbra) que cuando llegue un correo, lo reenvié al puerto 10031, que es donde escucha por defecto Policyd:
zmprov mcf +zimbraMtaRestriction "check_policy_service inet:127.0.0.1:10031" zmprov ms `zmhostname` zimbraMtaEnableSmtpdPolicyd TRUE #Habilitamos el módulo a emplear, AccessControl: Para el control de acceso a los correos de entrada y salida. zmprov ms `zmhostname` zimbraCBPolicydAccessControlEnabled TRUE zmprov ms `zmhostname` zimbraCBPolicydCheckHeloEnabled TRUE zmprov ms `zmhostname` zimbraCBPolicydCheckSPFEnabled TRUE #Reiniciamos los servicios de Policyd y de postfix, para que se apliquen los cambios que hemos realizado zmcbpolicydctl restart && zmmtactl restart
Ya tenemos el servicio habilitado y corriendo. En la documentación oficial de la wiki de Zimbra las modificaciones en cada uno de los módulos habilitados se hace directamente en las bases de datos mediante sentencias sql pero nos haremos más fácil la vida haciendo accesible la web administrativa de Policyd.
Creamos enlaces simbólicos para la Web de Policyd
Los enlaces tenemos que hacerlos con el usuario root por lo tanto debemos salir del usuario Zimbra que hemos usado hasta ahora lo hacemos con exit, ademas vamos a hacer uno para las versiones 8.6.x de Zimbra y otro para los que usen la versión 8.7.x y superior
#Zimbra8.6.x ln -s /opt/zimbra/cbpolicyd/share/webui/ /opt/zimbra/httpd/htdocs/policyd #Editamos la configuración de módulo de administración de policyd nano /opt/zimbra/cbpolicyd/share/webui/includes/config.php #Zimbra 8.7.x o superior ln -s /opt/zimbra/common/share/webui/ /opt/zimbra/data/httpd/htdocs/policyd #Editamos la configuración de módulo de administración de policyd nano /opt/zimbra/common/share/webui/includes/config.php #En el fichero de configuracion comentamos la linea $DB_DSN="mysql:host=localhost;dbname=cluebringer"; #Agregamos debajo de ella agregamos lo siguiente $DB_DSN="sqlite:/opt/zimbra/data/cbpolicyd/db/cbpolicyd.sqlitedb";
Ya con esto garantizamos que la Web de Administración funcione correctamente y podemos acceder a la misma a través de la dirección http://zimbra.subdominio.localdomain:7780/policyd/index.php nos mostrará la pagina siguiente:
Volvemos a autenticar con el usuario Zimbra su - zimbra
#si no tienen ccze instalenlo se los recomiendo tailf /opt/zimbra/log/cbpolicyd.log | ccze
Ahora vamos a la segunda y mejor parte de este manual que donde configuramos las políticas a aplicar.
Vamos a Policies->Groups
creamos un grupo voy a llamarlo «g_nacionales», en la parte superior de Policy Lists vamos a Actions->Add
Después de crear la política tenemos que habilitarla marcamos la política y vamos a Action->change
que mostrar para actualizar la política y decir que no esta deshabilitada como se crea por defecto.
Una vez habilitada solo nos queda agregarle los miembros los miembros no son mas que los usuarios que van a formar parte de ese grupo y que solo van a enviar correos nacionales, lo hacemos en Action->Members
y agregamos a nuestro primer usuario, y agregariamos usuario@dominio.
Para no seguir el tedioso proceso para todos los usuarios que vamos a agregar en ese grupo encontré una variante, alternativa que les comparto en este otro articulo (primero terminen este, :P), recomiendo agreguen un usuario va a ser útil para el desarrollo de esa variante.
Lo que crees en policyd debe ser habilitado porque todo se crea deshabilitado por defecto, por lo que tienes que seleccionar
cada uno y usa Action->Change
y en disabled poner no para habilitarlo.
Con esto ya tenemos nuestro primer usuario agregado al grupo «g_nacionales» ahora continuamos con las acciones que vamos a aplicarle.
Creamos en Policies->Groups
el grupo dominio_cu y agregamos un miembro a este grupo @*.cu es decir todos los dominios .cu, vamos a Action->change
y habilitamos el grupo y quedaria de la siguiente forma.
Ya tenemos los grupos ahora vamos a crear las políticas para garantizar la comunicación de entre los grupos, para eso vamos a Policies->Main
y en Actions->Add
vamos a agregar la política para la entrada de correos, hemos utilizado el nombre p_nacionales_in con una prioridad de 15 como se ve a continuación.
Una vez creada la política vamos a agregarle como miembro la restricción de que solo permita la entrada de el grupo dominio_cu para las cuentas del grupo g_nacionales:
El resultado va a ser una vista como la siguiente y recuerden habilitarla.
Nuevamente vamos a Policies->Main
y en Actions->Add
donde vamos a agregar p_nacionales_out con una prioridad de 15 como vemos a continuación.
En esta política vamos a agregar como miembro con la configuración de salida de correos para dominios nacionales.
El resultado va a ser la siguiente vista y recuerden habilitarlo.
Para los no programadores el símbolo ‘!‘ es la negación es decir lo contrario por tanto !%dominio_cu quiere decir los que no sean cu.
Hasta aquí hemos creado las políticas con sus respectivos miembros una para la entrada desde los dominios .cu y otra para la salida de correos hacia los dominios .cu, ahora vamos a crear las reglas de control de acceso en las que se deniegue la entrada y la salida desde y hacia los dominios .cu para los usuarios miembros de grupo g_nacionales.
Para agregar las reglas de control de acceso vamos a AccessControl->Configure
y en Actions->Add.
Se vincula esta regla a la política p_nacionales_in y el veredicto es REJECT devolviendo en el mensaje de error al usuario que envía el correo el mensaje: Este usuarios solo puede recibir correos de dominios .cu
Recuerda que también tienes que habilitar esta regla.
Creamos la regla de control de acceso para la salida de correos nacionales
Se vincula esta regla a la política p_nacionales_out y el veredicto es REJECT devolviendo en el mensaje de error al usuario que envía el correo el mensaje: Su cuenta de correo solo puede enviar correos nacionales.
Recuerda que también tienes que habilitar esta regla.
Con esto concluimos la configuración, cbpolicyd puede usarse para muchas otras configuraciones como las cuotas de los usuarios pero eso es tema de otro articulo. Hasta la próxima.