====== Postfix, Dovecot Squirrelmail y sasl para correo seguro ======
Cuando instalamos postfix o migramos servidores de windows para linux notamos que la mejoria es enorme pero muchas veces no nos damos cuenta que siempre quedan algunos huecos de seguridad abiertos. Uno de ellos son los puertos smtp sin autenticar, o sea, que haciendole telnet a los servidores de correo se pueden enviar correos anonimos.
A continuacion se explica como aunteticar el smtp, aclarando las condiciones siguientes:
En el momento del tutorial se requería instalado debian etch 4.0, postfix, dovecot, squirrelmail y usuarios Unix con autenticacion PAM. Hay que adaptarlo para LDAP u otras integraciones.
aptitude install postfix-tls sasl2-bin libsasl2 libsasl2-modules
ahora editamos el fichero /etc/postfix/main.cf
y añadimos las sgtes líneas
preferentemente antes de las clases donde se define la salida nacional e internacional para los usuarios
PARA SEGURIDAD SASL
smtp_sasl_auth_enable = no
smtpd_helo_required = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
disable_vrfy_command = yes
y su usa politicas de salida nacional e internacional, estas deben quedar asi
smtpd_sender_restrictions =
...
permit_sasl_authenticated,
reject
smtpd_recipient_restrictions =
...
permit_sasl_authenticated,
reject
cuando pongo los tres puntos suspensivos en estas clases es porque suponemos que tenemos ya cosas creadas ahi, ellas e respetan y solo se les incluye el parametro que relaciono.
Crear el fichero /etc/postfix/sasl/smtpd.conf
luego
touch /etc/postfix/sasl/smtpd.conf
luego editamos ese fichero
mc -e /etc/postfix/sasl/smtpd.conf
y le pones dentro estas dos lineas
pwcheck_method: saslauthd
mech_list: plain login
editamos /etc/default/saslauthd
borramos todo loque tiene dentro y ponemos estas lineas
START=yes
MECHANISMS="pam"
MECH_OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
THREADS=5
OPTIONS="-c"
Hacemos los sgte:
rm -r /var/run/saslauthd/
mkdir -p /var/spool/postfix/var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /var/run
adduser postfix sasl
asegurese que en el main.cf del postfix no haya ninguna ip de la red local y que solo exista las ip de los servidores que te hacen smtp permitido
Ahora reiniciemos los servicios postfix y saslauth
/etc/init.d/postfix restart
/etc/init.d/saslauthd start
En el squirrelmail en el //config.php// busque y configure estos parametros de este modo
$pop_before_smtp = true;
$smtp_auth_mech = 'login';
$imap_auth_mech = 'login';
para chequear si el sasl esta trabajando y partiendo que el usuario es pepe y la contraseña es 123 ejecute esto en la consola de ese server
testsaslauthd -u pepe -p 123
si esta bien devolvera
0: OK "Success."
si esta mal devolvera esto otro
0: NO "authentication failed"
Para probar que haciendo telnet no se puede enviar correo pruebelo así
telnet localhost 25
luego ejecute esto
ehlo nombre del servidor
seguido de esto
mail from: usuario@dominio
luego
rcpt to: miusuario@midominio
si le da un mensaje como este
554 5.7.1 : Relay access denied
entonces ya no tiene problema, si le deja enviar el correo, aún estas en un verdadero problema
otra cosa, borre el contenido del fichero //dovecot.conf// y póngale esto dentro
protocols = imap pop3
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:%h/Maildir
mail_extra_groups = mail
protocol imap {
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
auth default {
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
socket listen {
client {
# Assuming the default Postfix $queue_directory setting
path = /var/spool/postfix/private/auth
mode = 0660
# Assuming the default Postfix user and group
user = postfix
group = postfix
}
}
user = root
}
dict {
}
plugin {
}