PolicyD es un software desarrollado en C que permite implementar políticas de seguridad en nuestro servidor MTA con facilidad dado que nos proprociona un interface web muy simple: gestión de EHLO/HELO, gestión de SPF, Greylisting y cuotas. La versión que instalé es la 2.0.10 (Cluebringer) en un sistema CentOS 5 con servidor Postfix y MySQL. Los requisitos previos son:
- MySQL, PostgreSQL, or SQLite
- Net::Server >= 0.96
- Net::CIDR
- Config::IniFiles
- Cache::FastMmap
- Mail::SPF
- PHP 5+ con soporte PDO para tu DB (si vas a usar la interface web, muy recomendable)
Descargamos el software
wget http://sourceforge.net/projects/policyd/files/2.0.x%20%28Stable%29/v2.0.10/cluebringer-2.0.10.tar.bz2/download?use_mirror=biznetnetworks
y descomprimimos
for file in cluebringer-2.0.10.tar.bz2; do tar jxf "${file}"; done
Configuramos MySQL
Entramos en la carpeta /cluebringer-2.0.10/database y ejecutamos mysql
mysql -u root -p
Enter password
...
> CREATE DATABASE policyd;
> GRANT ALL ON policyd TO 'policyduser'@'localhost' IDENTIFIED BY 'password';
> quit
Creamos el fichero de tablas que necesita PolicyD en formato MySQL:
for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql
do
./convert-tsql mysql $i
done > policyd.mysql
lo cargamos en nuestra base de datos:
mysql -u root -p policyd < policyd.mysql
y volvemos a la carpeta superior.
Instalamos el software
cp -r cbp /usr/local/lib/policyd-2.0/
cp cbpadmin /usr/local/bin/
cp cbpolicyd /usr/local/sbin/
Creamos un usuario
useradd -d /etc/cluebringer -u 125 cluebringer
Y configuramos
Creamos una carpeta para el fichero de configuración mkdir /etc/cluebringer en la que copiamos cluebringer.conf, las directivas de este fichero son muy claras. En mi caso inhabilité el protocolo Bizanga y cargo todos los módulos aunque no los use, en cuanto al resto:
# User to run this daemon as user=cluebringer group=cluebringer # Filename to store pid of parent process (imprescindible para poder activar el servicio) pid_file=/var/run/cbpolicyd/cbpolicyd.pid ... # File to log to instead of stdout log_file=/var/log/cbpolicyd.log ... log_detail=tracking,policies # IP to listen on, * for all host=* # Port to run on port=10031 ... [database] #DSN=DBI:SQLite:dbname=policyd.sqlite DSN=DBI:mysql:database=policyd;host=localhost Username=policyduser Password=password #
y para terminar necesitamos un par de ficheros de inicialización que pueden descargarse aquí. Están modificados para correr en CentOS 5 sin complicarme la vida, la versión original para correr sobre Ubuntu puede encontrarse aquí. Los renombramos y los movemos, ambos deben tener de propietario root:
- postfix-cluebringer.init.txt lo renombramos a cluebringer y lo movemos a /etc/init.d, permisos 755
- postfix-cluebringer.default lo renombramos a postfix-cluebringer y lo movemos a /etc/default, permisos 644
Arrancar el daemon
/etc/init.d/cluebringer start
y echamos un vistazo a /var/log/cbpolicyd.log para ver si todo va bien. Si no aparecen errores ejecutamos /etc/init.d/cluebringer status y nos mostrará los procesos activos y el bind al puerto 10031:
3619 ? Ss 0:02 /usr/bin/perl /usr/local/sbin/cbpolicyd --config /etc/cluebringer.conf 5713 ? S 0:03 /usr/bin/perl /usr/local/sbin/cbpolicyd --config /etc/cluebringer.conf 16205 ? S 0:03 /usr/bin/perl /usr/local/sbin/cbpolicyd --config /etc/cluebringer.conf 21529 ? S 0:03 /usr/bin/perl /usr/local/sbin/cbpolicyd --config /etc/cluebringer.conf 32730 ? S 0:03 /usr/bin/perl /usr/local/sbin/cbpolicyd --config /etc/cluebringer.conf tcp 0 0 :::10031 :::* LISTEN 3619/perlPara que el programa arranque automáticamente en los reinicios:
chkconfig --add cluebringer
chkconfig --level 2345 cluebringer on
Instalar WebUI
Copiamos la carptea /webui a nuestro directorio web:
cp -r webui /var/www/.../webui
y abrimos el fichero /includes/config.php para configurar el acceso a la base de datos:
# mysql:host=localhost;dbname=policyd # # pgsql:host=xx;dbname=yyy # # sqlite:////full/unix/path/to/file.db?mode=0666 # #$DB_DSN="sqlite:////tmp/cluebringer.sqlite"; $DB_DSN="mysql:host=localhost;dbname=policyd"; $DB_USER="policyduser"; $DB_PASS="password";Para terminar protegemos nuestra carpeta con clave: creamos un .htaccess en /webui
# /var/www/.../webui/.htaccess AuthUserFile /usr/share/cluebringer/webui/.htpasswd AuthGroupFile /dev/null AuthName "user and password" AuthType Basic <LIMIT GET> require valid-user </LIMIT>
creamos el usuario con su clave
htpasswd -c /usr/share/cluebringer/webui/.htpasswd elusuario
y modificamos httpd.conf
<Directory "/var/www/.../webui"> AllowOverride AuthConfig Order allow,deny Allow from all </Directory>
Integración con Postfix
Para indicarle a Postfix que use PolicyD modificamos las directivas smtpd_recipient_restrictions y smtpd_end_of_data_restrictions añadiéndole check_policy_service inet:127.0.0.1:10031 al principio de la lista, importante. Ya podemos reiniciar Postfix:
postfix reload
En el próximo artículo veremos como configurar los chequeos EHLO/HELO y el establecimiento de cuotas para los buzones, la gestión SPF y el Greylisting los realizo por otro lado.
Enlaces: Postfix + Centos + Policyd V2 + MySQL (2.0.7), Using Policyd to limit mail (Ubuntu, Apache vHosts, Nginx), start-stop-daemon script for CentOS 5.!
Siguiente artículo: Uso básico de PolicyD Cluebringer: Creación de cuentas y miembros
Siguiente artículo: Uso básico de PolicyD Cluebringer: Creación de cuentas y miembros
No hay comentarios:
Publicar un comentario