Vous êtes sur la page 1sur 84

Acerca de Postfix.

Postfix, originalmente conocido por los nombres VMailer e IBM Secure Mailer, es un popular agente
de transporte de correo (MTA o Mail Transport Agent), creado con la principal intencin de ser una
alternativa ms rpida, fcil de administrar y segura que Sendmail. Fue originalmente escrito por
Wietse Venema durante su estancia en el Thomas J. Watson Research Center de IBM.
URL: http://www.postfix.org/.

Acerca de Dovecot.
Dovecot es un servidor de POP3 e IMAP de fuente abierta que funciona en Linux y sistemas
basados sobre Unix y diseado con la seguridad como principal objetivo. Dovecot puede utilizar
tanto el formato mbox como maildir y es compatible con las implementaciones de los servidores
UW-IMAP y Courier IMAP.
URL: http://dovecot.procontrol.fi/.

Acerca de SASL y Cyrus SASL.


SASL (Simple Authentication and Security Layer) es un estructura para la seguridad de datos en
protocolos de Internet. Desempareja mecanismos de la autenticacin desde protocolos de
aplicaciones, permitiendo, en teora, cualquier mecanismo de autenticacin soportado por SASL
para ser utilizado en cualquier protocolo de aplicacin que capaz de utilizar SASL. Actualmente
SASL es un protocolo de la IETF (Internet Engineering Task Force) que ha sido propuesto como
estndar. Est especificado en el RFC 2222 creado por John Meyers en la Universidad Carnegie
Mellon.
Cyrus SASL es una implementacin de SASL que puede ser utilizada del lado del servidor o del
lado del cliente y que incluye como principales mecanismos de autenticacin soportados a
ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI y PLAIN. El cdigo fuente incluye tambin
soporte para los mecanismos LOGIN, SRP, NTLM, OPT y KERBEROS_V4.
URL: http://asg.web.cmu.edu/sasl/sasl-library.html.

Acerca de DSA.
DSA (Digital Signature Algorithm o Algoritmo de Firma digital) es un algoritmo creado por el NIST
(National Institute ofStandards and Technology o Instituto Nacional de Normas y Tecnologa de
EE.UU.), publicado el 30 de agosto de 1991, como propuesta para el proceso de firmas digitales.
Se utiliza para firmar informacin, ms no para cifrar sta.
URL: http://es.wikipedia.org/wiki/DSA

Acerca de RSA.
RSA, acrnimo de los apellidos de sus autores, Ron Rivest, Adi Shamir y Len Adleman, es un
algoritmo para el ciframiento de claves pblicas que fue publicado en 1977, patentado en EE.UU.

en 1983 por el el Instituto Tecnolgico de Michigan (MIT).RSA es utilizado ampliamente en todo el


mundo para los protocolos destinados para el comercio electrnico.
URL: http://es.wikipedia.org/wiki/RSA

Acerca de X.509.
X.509 es un estndar ITU-T (estandarizacin de Telecomunicaciones de
la International Telecommunication Union ) para infraestructura de claves pblicas
(PKI o Public Key Infrastructure). Entre otras cosas, establece los estndares para certificados de
claves pblicas y un algoritmo para validacin de ruta de certificacin. Este ltimo se encarga de
verificar que la ruta de un certificado sea vlida bajo una infraestructura de clave pblica
determinada. Es decir, desde el certificado inicial, pasando por certificados intermedios, hasta el
certificado de confianza emitido por una Autoridad Certificadora (CA o Certification Authority).
URL: http://es.wikipedia.org/wiki/X.509

Acerca de OpenSSL.
OpenSSL es una implementacin libre, de cdigo abierto, de los
protocolos SSL (Secure Sockets Layer o Nivel de Zcalo Seguro) y TLS (Transport Layer Security
o Seguridad para Nivel de Transporte). Est basado sobre el extinto proyecto SSLeay, iniciado por
Eric Young y Tim Hudson, hasta que stos comenzaron a trabajar para la divisin de seguridad de
EMC Corporation.
URL: http://www.openssl.org/

Equipamiento lgico necesario.


Instalar los paquetes postfix, dovecot, cyrus-sasl y cyrus-sasl-plain:

yum -y install postfix dovecot cyrus-sasl cyrussasl-plain


Si acaso estuviese instalado, elimine el paquete cyrus-sasl-gssapi, ya que este utiliza el mtodo de
autenticacin GSSAPI, mismo que requerira de la base de datos de cuentas de usuario de un
servidor Kerberos:

yum remove cyrus-sasl-gssapi


De igual manera, si estuviese instalado, elimine el paquete cyrus-sasl-md5, ya que este utiliza los
mtodos de autenticacin CRAM-MD5 y Digest-MD5, mismos que requeran asignar las claves de
acceso para SMTP a travs del mandato saslpasswd2. Outlook carece de soporte para estos
mtodos de autenticacin.

yum remove cyrus-sasl-md5

Procedimientos.
Todos los procedimientos deben realizarse como el usuario root.

Definiendo Postfix como agente de transporte de correo


predeterminado.
El mandato alternatives, con la opcin alternatives--config mta, se utiliza para conmutar el servicio
de correo electrnico del sistema y elegir que paquete utilizar. Slo es necesario utilizar ste si
previamente estaban instalados Sendmail o Exim. S este es el caso, ejecute lo siguiente desde
una terminal y defina Postfix como agente de transporte de correo (MTA, Mail TransportAgent),
seleccionado ste.

alternatives --config mta


Lo anterior devolver una salida similar a la siguiente, donde deber elegir
entre postfix y sendmail como MTA predeterminado del sistema:
Hay 2 programas que proporcionan 'mta'.
Seleccin

Comando

----------------------------------------------*+ 1
2

/usr/sbin/sendmail.postfix
/usr/sbin/sendmail.sendmail

Presione Intro para mantener la seleccin actual[+] o escriba el nmero de la seleccin:


1

Si estuviera presente sendmail, detenga ste (es el MTA predeterminado en CentOS 5 y Red Hat
Enterprise Linux 5) e inicie postfix:

service sendmail stop


chkconfig sendmail off
service postfix start
chkconfig postfix on

SELinux y Postfix.
A fin de que SELinux permita a Postfix escribir el el directorio de entrada de correo electrnico
(/var/spool/mail/), es necesario habilitar la siguiente poltica:

setsebool -P allow_postfix_local_write_mail_spool 1
Solo en CentOS 5 y Red Hat Enterpise Linux 5, a fin de que SELinux permita la lectura de correo
electrnico, es necesario habilitar la siguiente poltica:

setsebool -P mail_read_content 1
En CentOS 6 y Red Hat Enterpise Linux 6, esta poltica dej de existir, pues se volvi innecesaria.

Configuracin de Postfix.
Generando firma digital y certificado para ambos servicios.
Acceda al directorio /etc/pki/tls/.

cd /etc/pki/tls/
La creacin de la firma digital y certificado requiere utilizar una clave con algoritmo RSA de 2048
octetos (bits), con estructuraX.509 y sin DES. En el ejemplo a continuacin, se establece una
validez por 1825 das (cinco aos) para el certificado creado:

openssl req -x509 -nodes -newkey rsa:2048 -days 1825


\
-out certs/dominio.tld.crt -keyout
private/dominio.tld.key
Lo anterior solicitar se ingresen varios datos:

Cdigo de dos letras para el pas.

Estado o provincia.

Ciudad.

Nombre de la empresa o razn social.

Unidad o seccin.

Nombre del anfitrin.

Direccin de correo.

La salida debe devolver algo similar a lo siguiente:


Generating a 1024 bit DSA private key
writing new private key to 'smtp.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) [GB]:MX
State or Province Name (full name) [Berkshire]:Distrito Federal
Locality Name (eg, city) [Newbury]:Mexico
Organization Name (eg, company) [My Company Ltd]:Empresa, S.A. de C.V.
Organizational Unit Name (eg, section) []:Direccion Comercial
Common Name (eg, your name or your server's hostname) []:*.dominio.tld
Email Address []:webmaster@dominio.com

Si defini un nombre de anfitrin absoluto (ejemplo: mail.dominio.tld), el certificado slo ser vlido
cuando el servidor de correo electrnico sea invocado con el nombre definido en el
campo Common Name. Es decir, slo podr utilizarlo cuando se definamail.dominio.tld como
servidor SMTP/IMAP/POP3 con soporte TLS desde el cliente de correo electrnico. Funcionar

incorrectamente si se invoca al servidor como, por mencionar un ejemplo, correo.dominio.tld. Es


por eso que se sugiere utilizar*.dominio.com si se planea acceder hacia el mismo servidor con
diferentes subdominios del mismo dominio.
A fin de facilitar a los clientes de correo electrnico el poder gestionar una futura actualizacin de
certificado, conviene aadir una huella distintiva indubitable (fingerprint) al certificado.

openssl x509 -subject -fingerprint -noout -in


certs/dominio.tld.crt
Es indispensable que todos los archivos de claves y certificados tengan permisos de acceso de
slo lectura para el usuario root:

chmod 400 certs/dominio.tld.crt


private/dominio.tld.key
Regrese al directorio de inicio del usuario root.

cd

Archivo de configuracin /etc/postfix/master.cf.


Editar el archivo /etc/postfix/master.cf:

vim /etc/postfix/master.cf
Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, debe descomentar las siguientes lneas
resaltadas en negrita:

smtp
inet n
n
smtpd
submission inet n
n
smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o
smtpd_client_restrictions=permit_sasl_authenticated,
reject
smtps
inet n
n
smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o
smtpd_client_restrictions=permit_sasl_authenticated,
reject
Si utiliza CentOS 6 o Red Hat Enterprise Linux 6, debe descomentar las siguientes lneas
resaltadas en negrita:

smtp
inet n
n
smtpd
submission inet n
n
smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes

-o
smtpd_client_restrictions=permit_sasl_authenticated,
reject
-o milter_macro_daemon_name=ORIGINATING
smtps
inet n
n
smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o
smtpd_client_restrictions=permit_sasl_authenticated,
reject
-o milter_macro_daemon_name=ORIGINATING

Archivo de configuracin /etc/postfix/main.cf.


A continuacin, se debe editar el archivo /etc/postfix/main.cf:

vim /etc/postfix/main.cf
Respetando el resto del contenido original de este archivo y asumiendo que el nombre de anfitrin
del servidor esmail.dominio.com y que se va a utilizar para gestionar el correo electrnico
de dominio.com, solo se deben localizar y configurar los siguientes parmetros:
# Todo lo siguiente solo requiere descomentarse o bien modificar la lnea
# correspondiente que est descomentada.
# Definir el nombre de anfitrin del sistema (hostname).
myhostname = mail.dominio.com
# Definir el dominio principal a gestionar.
mydomain = dominio.com
myorigin = $mydomain
# Definir se trabaje por todas las interfaces.
# De modo predeterminado solo trabaja por la interfaz de retorno del sistema
# (loopback), es decir, solo escucha peticiones a travs de sobre 127.0.0.1
#inet_interfaces = localhost
inet_interfaces = all
# Si se van a manejar ms dominios de correo electrnico, aadirlos tambin.
mydestination = $myhostname, $mydomain, localhost.localdomain, localhost
# Definir tus redes locales, ejemplo asume que tu LAN es 192.168.1.0/24
mynetworks = 192.168.1.0/24, 127.0.0.0/8
# Si se van a manejar ms dominios de correo electrnico, aadirlos tambin.
relay_domains = $mydestination
# Importante para poder utilizar procmail para filtrar correo.
mailbox_command = /usr/bin/procmail

# Todo lo siguiente est ausente en la configuracin.


# Aadir todo al final del archivo main.cf
#
smtpd_tls_security_level = may
smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
# Las rutas deben corresponder a las del certificado y firma digital creados.
smtpd_tls_key_file = /etc/pki/tls/private/dominio.tld.key
smtpd_tls_cert_file = /etc/pki/tls/certs/dominio.tld.crt
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# Descartar SSLv2, slo utilizar SSLv3 y TLSv1 y slo permitir
# cifrados mayores a 128-bit.
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium, high

# Soporte para autenticar a travs de SASL.


# smtpd_sasl_local_domain = # Solo como referencia.
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

A fin de ahorrar tiempo realizando bsqueda de los parmetros anteriores, todo lo anterior tambin
se puede configurar utilizando el mandato postconf, del siguiente modo:
postconf -e 'myhostname = mail.dominio.com'
postconf -e 'mydomain = dominio.com'
postconf -e 'myorigin = $mydomain'
postconf -e 'inet_interfaces = all'
postconf -e 'mydestination = $myhostname, $mydomain, localhost.localdomain, localhost'
postconf -e 'mynetworks = 192.168.1.0/24, 127.0.0.0/8'
postconf -e 'relay_domains = $mydestination'
postconf -e 'mailbox_command = /usr/bin/procmail'
postconf -e 'smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt'
postconf -e 'smtpd_tls_key_file = /etc/pki/tls/private/dominio.tld.key'
postconf -e 'smtpd_tls_cert_file = /etc/pki/tls/certs/dominio.tld.crt'
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'smtpd_tls_mandatory_protocols = SSLv3, TLSv1'
postconf -e 'smtpd_tls_mandatory_ciphers = medium, high'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

Archivo de configuracin /etc/aliases.

Se debe editar tambin el archivo /etc/aliases:

vim /etc/aliases
Se debe definir que el correo del usuario root se entregue al cualquier otro usuario del sistema. El
objetivo de esto es que jams se tenga necesidad de utilizar la cuenta del usuario root y se prefiera
en su lugar una cuenta de usuario sin privilegios. Solo se requiere descomentar la ltima lnea de
este archivo, que como ejemplo entrega el correo del usuario root al usuario marc y definir un
usuario existente en el sistema

#root: marc
root: fulano
Al terminar, se ejecuta el mandato postalias para generar el archivo /etc/aliases.db que ser
utilizado por Postfix:

postalias /etc/aliases

Configuracin de Dovecot en CentOS 5 y Red Hat Enterprise Linux


5.
Parmetros del archivo /etc/dovecot.conf.
Editar el archivo /etc/dovecot.conf:

vim /etc/dovecot.conf
En el parmetro protocols, se deben activar todos los servicios (imap, imaps, pop3 y pop3s).

protocols = imap imaps pop3 pop3s


De modo predeterminado, el soporte SSL de Dovecot est activo. Verifique que el
parmetro ssl_disable tenga el valor no o bien solo est comentado.

#ssl_disable = no
Y se especifican las rutas del certificado y clave a travs de los
parmetros ssl_cert_file y ssl_key_file, del siguiente modo:

ssl_cert_file = /etc/pki/tls/certs/dominio.tld.crt
ssl_key_file = /etc/pki/tls/private/dominio.tld.key

Configuracin de Dovecot en CentOS 6 y Red Hat Enterprise Linux


6.
CentOS 6 y Red Hat Enterprise Linux 6 utilizan la versin 2.0 de Dovecot y por lo cual cambia
radicalmente la configuracin respecto de la versin 1.0.x, utilizada en CentOS 5 y Red Hat
Enterprise Linux 5.

Parmetros del archivo /etc/dovecot/dovecot.conf.

Edite el archivo /etc/dovecot/dovecot.conf y descomente el parmetro protocolos, estableciendo


como valor pop3 imap lmtp.

# Protocols we want to be serving.


protocols = imap pop3

Parmetros del archivo /etc/dovecot/conf.d/10-mail.conf.


Alrededor de la lnea 30 del archivo /etc/dovecot/conf.d/10-mail.conf,
establezca mbox:~/mail:INBOX=/var/mail/%u como valor del parmetro mail_location.

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Parmetros del archivo /etc/dovecot/conf.d/10-ssl.conf.


En el archivo /etc/dovecot/conf.d/10-ssl.conf, descomente las siguientes lneas resaltadas en
negrita:

# SSL/TLS support: yes, no, required.


<doc/wiki/SSL.txt>
ssl = yes
# PEM encoded X.509 SSL/TLS certificate and private
key. They're opened before
# dropping root privileges, so keep the key file
unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily
generate self-signed
# certificate, just make sure to update the domains
in dovecot-openssl.cnf
ssl_cert = </etc/pki/tls/certs/dominio.tld.key
ssl_key = </etc/pki/tls/private/dominio.tld.key

Iniciar servicios y aadir stos al arranque del sistema.


Se deben aadir al arranque del sistema e iniciar (o reiniciar) los
servicios saslauthd, dovecot y postfix:

chkconfig saslauthd on
chkconfig dovecot on
chkconfig postfix on
service saslauthd start
service dovecot start
service postfix restart

Soporte para LMTP.


Si utiliza CentOS 6 o Red hat Enterprise Linux 6, es decir Dovecot 2.0 y Postfix 2.6.6, podr
utilizar LMTP (Local MailTransfer Protocol) o protocolo de transporte local de correo. Este protocolo
esta basado sobre el protocolo SMTP y est diseado como una alternativa a SMTP para
situaciones donde el lado receptor carece de cola de correo (queue mail), como un MTA que
entiende conversaciones SMTP. Puede ser utilizado como una forma alternativa y ms eficiente
para el transporte de correo entre Postfix y Dovecot.
Edite el archivo /etc/dovecot/dovecot.conf y aada lmtp a los valores del parmetro protocolos, de
la siguiente forma.

# Protocols we want to be serving.


protocols = imap pop3 lmtp
A fin de poder hacer uso de LMTP de manera apropiada, es necesario aadir las siguientes dos
opciones en el archivo/etc/postfix/main.cf:

mailbox_transport = lmtp:unix:/var/run/dovecot/lmtp
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp
O bien ejecutar lo siguiente:

postconf -e 'virtual_transport =
lmtp:unix:/var/run/dovecot/lmtp'
postconf -e 'mailbox_transport =
lmtp:unix:/var/run/dovecot/lmtp'
Y reiniciar los servicios dovecot y postfix.

service dovecot restart


service postfix restart

Modificaciones necesarias en el muro cortafuegos.


Si se utiliza un cortafuegos con polticas estrictas, como por ejemplo Shorewall, es necesario abrir,
adems de los puertos 25, 110, 143 y 587 por TCP (SMTP, POP3, IMAP y Submission,
respectivamente), los puertos 465, 993 y 995 por TCP (SMTPS,IMAP y POP3S, respectivamente).
Editar el archivo /etc/shorewall/rules:

vim /etc/shorewall/rules
Las reglas para el archivo /etc/shorewall/rules de Shorewall correspondera a algo similar a lo
siguiente:

#ACTION
SOURCE DEST PROTO DEST
SOURCE
#
PORT
PORT(S)1
ACCEPT net
fw
tcp
25,110,143,465,587,993,995
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO
NOT REMOVE

Para que tomen efecto los cambios, hay que reiniciar el servicio Shorewall.

service shorewall restart

Requisitos en la zona de reenvo en el servidor DNS.


Es indispensable que exista un DNS que resuelva correctamente el dominio y apunte el servicio de
correo electrnico hacia la IP del servidor de correo electrnico recin configurado. Asumiendo que
se hizo correctamente todo lo mencionado en este documento, la nica forma en que se
imposibilitara la llegada y/o salida del correo electrnico se est utilizando un enlace ADSL con IP
dinmica (restringido por le proveedor para utilizar el puerto 25) o bien que el servidor DNS que
resuelve el dominio, est apuntando hacia otra direccin IP para el servicio de correo electrnico.
En el DNS se requieren al menos los siguientes registros, donde xx.xx.xx.xx corresponde a la IP
del servidor de correo electrnico.

$TTL 86400
@
IN

@
@
@
@
@
mail
www
ftp

IN
IN
IN
IN
IN
IN
IN
IN

SOA
dns1.isp.com alguien.algo.com (
2010061901 ; Nmero de serie
28800 ; Tiempo de refresco
7200 ; Tiempo entre reintentos
604800 ; tiempo de espiracin
86400 ; Tiempo total de vida
)
NS
dns1.isp.com.
NS
dns2.isp.com.
A
a.b.c.d
MX
10
mail
TXT
"v=spf1 a mx -all"
A
xx.xx.xx.xx
A
a.b.c.d
A
a.b.c.d

Comprobaciones.
A travs de terminal.
Realice una conexin con el mandato nc (netcat) o bien el mandato telnet, al puerto 25 del sistema.
Ingrese el mandato EHLOcon el dominio configurado. La salida deber devolver, entre todas las
funciones del servidor, una lnea que indica STARTTLS. La salida puede ser similar a la siguiente:

nc 127.0.0.1 25
220 emachine.alcancelibre.org ESMTP Postfix
EHLO dominio.com
250-mail.dominio.com
250-PIPELINING
250-SIZE 10240000

250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
QUIT
Para salir, solo escriba QUIT y pulse la tecla ENTER.

A travs de clientes de correo electrnico.


Utilice cualquier cliente de correo electrnico con soporte para TLS/SSL y configure ste para
conectarse hacia el sistema a travs de IMAPS (puerto 993) o bien POP3S (puerto 995). Tras
aceptar el certificado del servidor, el sistema deber permitir autenticar, con nombre de usuario y
clave de acceso y realizar la lectura del correo electrnico.

Configuracin de GNOME Evolution.


Para GNOME Evolution, la configuracin de IMAP o POP3, se realiza seleccionando el tipo de
servidor, definiendo el nombre del servidor utilizado para crear el certificado, nombre de usuario y
usar encriptacin segura TLS.

Configuracin IMAP, en GNOME Evolution.


Se hace lo mismo para la configuracin de SMTP (utilizar conexin segura TLS), pero
considerando adems que tambin se puede utilizar el puerto 587 (submission) en caso de que el
proveedor de acceso a Internet del cliente haya restringido el uso del puerto 25 (smtp).

Configuracin SMTP, GNOME Evolution.

Configuracin Mozilla Thunderbird.


Para Mozilla Thunderbird, se define el nombre del servidor utilizado para crear el certificado,
usuario y usar conexin segura TLS.

Configuracin IMAP, Mozilla Thunderbird.


Se hace lo mismo para la configuracin de SMTP (utilizar conexin segura TLS), pero
considerando adems que tambin se puede utilizar el puerto 587 (submission) en caso de que el
proveedor de acceso a Internet del cliente haya restringido el uso del puerto 25 (smtp).

Configuracin SMTP, Mozilla Thunderbird.

Modificaciones necesarias en el muro cortafuegos.


Si se utiliza un cortafuegos con polticas estrictas, como por ejemplo Shorewall, es necesario abrir,
adems de los puertos 25, 110, 143 y 587 por TCP (SMTP, POP3, IMAP y Submission,
respectivamente), los puertos 465, 993 y 995 por TCP (SMTPS,IMAP y POP3S, respectivamente).
La regla para el archivo /etc/shorewall/rules de Shorewall correspondera a algo similar a lo
siguiente:

#ACTION
SOURCE DEST PROTO DEST
SOURCE
#
PORT
PORT(S)1
ACCEPT all
fw
tcp
25,110,143,465,587,993,995
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO
NOT REMOVE
http://www.alcancelibre.org/staticpages/index.php/como-postfix-tls-y-auth
SEGUNDA INFORMACION

Preparativos.
A fin de poder realizar todas las pruebas correspondientes a cada protocolo, instale los
paquetes netcat (nc), dovecot y postfixo bien sendmail.
Si elige utilizar sendmail, ejecute lo siguiente:

yum -y install mailx nc dovecot sendmail


Si elige utilizar postfix, ejecute lo siguiente:

yum -y install mailx nc dovecot postfix


Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, omita el siguiente paso. Si utiliza CentOS
6 o Red Hat Enterprise Linux 6, edite el archivo /etc/dovecot/conf.d/10-mail.conf:

vim /etc/dovecot/conf.d/10-mail.conf
Alrededor de la lnea 30 del archivo /etc/dovecot/conf.d/10-mail.conf,
establezca mbox:~/mail:INBOX=/var/mail/%u como valor de la opcin mail_location.
# See doc/wiki/Variables.txt for full list. Some examples:
#
#
mail_location = maildir:~/Maildir
#
mail_location = mbox:~/mail:INBOX=/var/mail/%u
#
mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
mail_location = mbox:~/mail:INBOX=/var/mail/%u

Si se va a utilizar Sendmail como MTA predeterminado, es importante definir un grupo de acceso


de correo en la configuracin de Dovecot. Si se va a utilizar Postfix se puede omitir los dos
siguientes pasos.

Alrededor de la lnea 115 del archivo /etc/dovecot/conf.d/10-mail.conf, localice la


opcin mail_privileged_group, descomente sta y defina como valor el grupo mail:
# Group to enable temporarily for privileged operations. Currently this is
# used only with INBOX when either its initial creation or dotlocking fails.
# Typically this is set to "mail" to give access to /var/mail.
mail_privileged_group = mail

Alrededor de la lnea 122 del archivo /etc/dovecot/conf.d/10-mail.conf, localice la


opcin mail_access_groups, descomente sta y defina tambin como valor el grupo mail:
# Grant access to these supplementary groups for mail processes. Typically
# these are used to set up access to shared mailboxes. Note that it may be
# dangerous to set these if users can create symlinks (e.g. if "mail" group is
# set here, ln -s /var/mail ~/mail/var could allow a user to delete others'
# mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it).
mail_access_groups = mail

Se requiere que los usuarios locales pertenezcan al grupo mail para que lo anterior represente un
problema de seguridad.

Nota.
Es importante sealar Postfix crea automticamente los buzones de entrada con permiso 0600 (-rw-------) y por tanto
impide utilizar buzones de entrada compartidos, mientras que Sendmail lo hace con permiso 0660 (-rw-rw----) y por
tanto permite utilizar buzones de entrada compartidos. En ambos casos los permisos predeterminados de los buzones
de entrada slo se pueden cambiar modificando y compilando de nuevo el cdigo fuente.
Si se utiliza Sendmail como MTA predeterminado, debido al permiso 0660 con el que son creados los buzones de
entrada,a Dovecot le ser imposible generar automticamente las carpetas e ndices IMAP, pues ste fallar al copiar
el grupo al que pertenece el buzn de entrada cuando ste tiene permisos de lectura y escritura para grupo. Por lo
tanto se obtendran continuamente los siguientes errores en la bitcora /var/log/maillog:

Mar 21 22:31:45 mail dovecot: pop3(fulano): Error:


mkdir(/home/fulano/mail/.imap/INBOX) failed: Operation not
permitted
Mar 21 22:31:45 mail dovecot: pop3(fulano): Error: Couldn't
open INBOX: Internal error occurred. Refer to server log for
more information. [2013-03-21 22:31:45]
Mar 21 22:31:45 mail dovecot: pop3(fulano): Couldn't open
INBOX top=0/0, retr=0/0, del=0/0, size=0
Es por sto que, en el caso de utilizar Sendmail como MTA predeterminado, se requiere configurar que Dovecot
tenga privilegios de acceso sobre el grupo mail. De otro modo el administrador del sistema estara obligado a crear
manualmente los directorios ~/mail/.imap/INBOX de todos los usuarios locales o cambiar manualmente los permisos
de todos los buzones de entrada de 0660 a 0600 y repetir cualquiera de las dos operaciones cada vez que se genere
un nuevo usuario.
Si se utiliza Postfix como MTA predeterminado, es innecesario definir valor alguno en las
opciones mail_privileged_groupy mail_access_groups pues los buzones de entrada se crean con permiso 0600 y
por tanto carecen de permisos de lectura y escritura para grupo.

Guarde el archivo y salga del editor de texto.


Inicie y active el servicio dovecot ejecutando:

service dovecot start


chkconfig dovecot on
Establezca sendmail o postfix, como agente de transporte de correo (MTA, Mail Transport Agent)
predeterminado del sistema, utilizando el mandato alternatives, del siguiente modo:

alternatives --config mta


Lo anterior devolver una salida similar a la siguiente, donde deber elegir
entre postfix y sendmail como MTA predeterminado del sistema:

Hay 2 programas que proporcionan 'mta'.


Seleccin

Comando

----------------------------------------------1
*+ 2

/usr/sbin/sendmail.postfix
/usr/sbin/sendmail.sendmail

Presione Intro para mantener la seleccin actual[+] o escriba el nmero de la seleccin:


2

Si eligi utilizar sendmail en lugar de postfix, detenga este ltimo (es el MTA predeterminado
en CentOS 6 y Red Hat Enterprise Linux 6) e inicie el servicio sendmail:

service postfix stop


chkconfig postfix off
service sendmail start
chkconfig sendmail on
Si eligi utilizar postfix en lugar de sendmail, detenga este ltimo> (es el MTA predeterminado
en CentOS 5 y Red Hat Enterprise Linux 5) e inicie el servicio postfix:

service sendmail stop


chkconfig sendmail off
service postfix start
chkconfig postfix on
En todo momento podr conmutar de nuevo entre Sendmail o Postfix, como MTA predeterminado
del sistema, utilizando este mismo procedimiento.

Protocolos utilizados.
SMTP (Simple Mail Transfer Protocol).
Es un protocolo estndar de Internet del Nivel de Aplicacin utilizado para la transmisin de
correo electrnico a travs de una conexin TCP/IP. Es el nico protocolo utilizado para la
transmisin de correo electrnico a travs de Internet. Est basado sobre texto simple y es
relativamente sencillo. A lo largo de los aos han sido muchas las personas que han editado o
contribuido a las especificaciones de SMTP, entre las cuales estn Jon Postel, Eric Allman, Dave
Crocker, Ned Freed, Randall Gellens, John Klensin y Keith Moore.
Para determinar el servidor SMTP para un dominio dado, se utilizan los registros MX (Mail
Exchanger) en la Zona de Autoridad correspondiente al ese mismo dominio contestado por
un Servidor DNS. Despus de establecerse una conexin entre el remitente (el cliente) y el
destinatario (el servidor), se inicia una sesin SMTP, ejemplificada a continuacin.
Cliente:
$ nc 127.0.0.1 25
Servidor: 220 nombre.dominio ESMTP Sendmail 8.13.1/8.13.1; Sat, 18 Mar
2006 16:02:27 -0600
Cliente:
HELO localhost.localdomain
Servidor: 250 nombre.dominio Hello localhost.localdomain [127.0.0.1],
pleased to meet you
Cliente:
MAIL FROM:<fulano@localhost.localdomain>
Servidor: 250 2.1.0 <fulano@localhost.localdomain>... Sender ok
Cliente:
RCPT TO:<fulano@localhost.localdomain>

Servidor:
Cliente:
Servidor:
Cliente:

250 2.1.5 <fulano@localhost.localdomain>... Recipient ok


DATA
354 Enter mail, end with "." on a line by itself
Subject: Mensaje de prueba
From: fulano@localhost.localdomain
To: fulano@localhost.localdomain

Hola. ste es un mensaje de prueba.


Adios.
.
Servidor: 250 2.0.0 k2IM2RjA003987 Message accepted for delivery
Cliente:
QUIT
Servidor: 221 2.0.0 nombre.dominio closing connection
Servidor: Connection closed by foreign host.
La descripcin completa del protocolo original STMP est definida en el RFC 821, aunque el
protocolo utilizado hoy en da, tambin conocido
como ESMTP (Extended Simple Mail Transfer Protocol), est definido en el RFC
2821. SMTP trabaja sobreTCP en el puerto 25.

POP3 (Post Office Protocol version 3).


Es un protocolo estndar de Internet del Nivel de Aplicacin que recupera el correo electrnico
desde un servidor remoto a travs de una conexin TCP/IP iniciada desde un cliente local. El
diseo de POP3 y sus predecesores permite a los usuarios recuperar el correo electrnico
mientras estn conectados en una red y manipular los mensajes recuperados sin necesidad de
permanecer conectados. A pesar de que muchos clientes de correo electrnico incluyen soporte
para dejar el correo en el servidor, todos los clientes de POP3 recuperan todos los mensajes y los
almacenan como mensajes nuevos en la computadora o anfitrin utilizado por el usuario, eliminan
los mensajes en el servidor y terminan la conexin.
Despus de establecerse una conexin entre el cliente y el servidor, se inicia una sesin POP3,
ejemplificada a continuacin.
Cliente:
Servidor:
Cliente:
Servidor:
Cliente:
Servidor:
Cliente:
Servidor:
Cliente:
Servidor:

$ nc 127.0.0.1 110
+OK dovecot ready.
USER fulano
+OK
PASS clave de accceso
+OK Logged in.
STAT
+OK 1 728
LIST
+OK 1 messages:
1 728
.
Cliente: RETR 1
Servidor: +OK 728 octets
Return-Path: <fulano@localhost.localdomain>
Received: from localhost.localdomain (localhost.localdomain
[192.168.1.254])
by localhost.localdomain (8.13.1/8.13.1) with SMTP id
k2IM2RjA003987

for <fulano@localhost.localdomain>; Sat, 18 Mar 2006


16:03:21 -0600
Date: Sat, 18 Mar 2006 16:02:27 -0600
Message-Id:
<200603182203.k2IM2RjA003987@localhost.localdomain>
Subject: Mensaje de prueba
From: fulano@localhost.localdomain
To: fulano@localhost.localdomain
Status: O
Content-Length: 43
Lines: 2
X-UID: 202
X-Keywords:
Hola. ste es un mensaje de prueba.
Adios.
.
Cliente: QUIT
Servidor: +OK Logging out.
Connection closed by foreign host.
POP3 est definido en el RFC 1939. POP3 trabaja sobre TCP en el puerto 110.

IMAP (Internet Message Access Protocol).


Es un protocolo estndar de Internet del Nivel de Aplicacin utilizado para acceder hacia el
correo electrnico almacenado en un servidor remoto a travs de una conexin TCP/IP iniciada
desde un cliente local.
La versin ms reciente de IMAP es la 4 revisin 1 y est definida en el RFC 3501. IMAP trabaja
sobre TCP en el puerto 143.
Fue diseado por Mark Crispin en 1986 como una alternativa ms moderna que resolviera las
deficiencias del protocolo POP3. Las caractersticas ms importantes de IMAP incluyen:
Soporte para los modos de operacin conectado (connected) y desconectado
(disconnected), permitiendo a los clientes de correo electrnico permanezcan
conectados el mismo tiempo que su interfaz permanezca activa, descargando los

mensaje, por partes o completos segn se requiera.


A diferencia de POP3, permite accesos simultneos desde mltiples clientes y
proporciona los mecanismos necesarios para que stos detecten los cambios hechos
por otro cliente de correo electrnico que est conectado de manera concurrente al

mismo buzn de correo.


Permite a los clientes obtener individualmente cualquier parte MIME acrnimo
de Multi-Purpose Internet MailExtensions o Extensiones de correo de Internet de
propsitos mltiples, as como tambin obtener porciones de las partes individuales

o bien los mensajes completos.


Permite vigilar la informacin de estado de los mensajes de correo electrnico que se
mantengan en el servidor a travs de banderas definidas en el protocolo. Por ejemplo,
si el estado del mensaje es ledo, no ledo, respondido oeliminado.

Incluye soporte para mltiples buzones de correo electrnico, permitiendo crear,


renombrar o eliminar mensajes de correo electrnico presentes en el servidor dentro
de carpetas y mover stos mensajes entre distintas cuentas de correo electrnico. Esta
caracterstica tambin permite al servidor proporcionar acceso hacia carpetas pblicas

y compartidas.
Incluye soporte para realizar bsquedas del lado del servidor a travs de mecanismos
que permiten obtener resultados de acuerdo a varios criterios, permitiendo evitar que
los clientes de correo electrnico tengan que descargar todos los mensajes desde el

servidor.
Las especificaciones del protocolo IMAP definen un mecanismo explcito mediante el
cual puede ser mejorada su funcionalidad a travs de extensiones. Un ejemplo es la
extensin IMAP IDLE, la cual permite sincronizar ente el servidor y el cliente a travs
de avisos.

Despus de establecerse una conexin entre el cliente y el servidor, se inicia una sesin IMAP,
ejemplificada a continuacin.
Cliente:
$ nc 127.0.0.1 143
Servidor: * OK dovecot ready.
+OK dovecot ready.
Cliente: x LOGIN fulano clave de acceso
Servidor: x OK Logged in.
Cliente: x SELECT inbox
Servidor: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft
\*)] Flags permitted.
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1100569382] UIDs valid
* OK [UIDNEXT 203] Predicted next UID
x OK [READ-WRITE] Select completed.
Cliente: x FETCH 1 (flags body[header.fields (subject)])
Servidor: * 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (SUBJECT)] {30}
Subject: Mensaje de prueba
)
x OK Fetch completed.
.
Cliente: x FETCH 1 (body[text])
Servidor: * 1 FETCH (BODY[TEXT] {45}
Hola. ste es un mensaje de prueba.
Adios.
)
x OK Fetch completed.
Cliente: x LOGOUT
Servidor: * BYE Logging out
x OK Logout completed.
Connection closed by foreign host.

Referencias.

http://www.ietf.org/rfc/rfc2222.txt
http://www.ietf.org/rfc/rfc821.txt
http://www.ietf.org/rfc/rfc2821.txt
http://www.ietf.org/rfc/rfc1939.txt
http://www.ietf.org/rfc/rfc3501.txt

TERCERA INFORMACION
Un servidor de correo es una aplicacin de red ubicada en un servidor en internet, cuya funcin
es parecida al Correo postal tradicional, slo que en este caso lo que se maneja son los correos
electrnicos (a veces llamados mensajes o e-mails), a los que se hace circular a travs de redes
de transmisin de datos. A diferencia del correo postal, por este medio slo se pueden enviar
como adjuntos, ficheros de cualquier extensin, y no bultos o paquetes o documentacin, al viajar
la informacin en formato electrnico.

Instalacin.
Tecleamos la siguiente orden.
yum -y install mailx nc dovecot postfix

Accedemos al fichero /etc/dovecot/conf.d/10-mail.conf

gedit /etc/dovecot/conf.d/10-mail.conf &

Descomentamos las siguientes lneas.

mail_location
protocols

=
=

mbox:~/mail:INBOX=/var/mail/%u
imap

pop3

lmtp

Para iniciar el servicio dovecot y mantenerlo arrancado de forma permanente, escribimos en la


terminal las siguientes dos lneas.

service dovecot start


chkconfig dovecot on

Escribimos tambin estas dos lneas en el terminal.

service postfix start


chkconfig postfix on

Para escribir un mail a algun usuario, podemos escribir en la terminal mail usuario, o nc
127.0.0.1 25 escribimos el asunto y el cuerpo del mail. Terminamos con un punto al final del mail.

Si queremos ver nuestra bandeja de entrada desde la terminal, simplemente escribimos maildesde
nuestro usuario.

Para leer un mensaje solo tenemos que escribir el nmero del mensaje deseado.

Prueba del email

Instalamos los siguientes paquetes:


yum -y install postfix dovecot cyrus-sasl cyrus-sasl-plain
Y desinstalamos estas otras:
yum remove cyrus-sasl-gssapi
yum remove cyrus-sasl-md5
Escribimos la siguiente lnea para que SElinux nos permita el servicio postfix.
setsebool -P allow_postfix_local_write_mail_spool 1

Acceda al directorio /etc/pki/tls/


cd /etc/pki/tls/
Se crea primero un archivo de parmetros DSA:
openssl dsaparam 1024 -out dsa1024.pem

Creamos el certificado DSA:


openssl req -x509 -nodes -newkey dsa:dsa1024.pem -days 1095 -out certs/smtp.crt -keyout
private/smtp.key

Al terminar, ya no ser necesario conservar el archivo dsa1024.pem, mismo que puede eliminarse
con plena seguridad.

rm -f dsa1024.pem
cambiamos los permisos de acceso de solo lectura para el usuario root:
chmod 400 certs/smtp.crt private/smtp.key
Cambiamos al directorio cd /etc/pki/dovecot/
cd /etc/pki/dovecot/
Eliminamos los certificados de prueba creados durante la instalacin.
rm -f private/dovecot.pem certs/dovecot.pem
Escribimos las siguientes lneas para crear otro certificado firmado
openssl req -x509 -nodes -newkey rsa:1024 -days 1095 -out certs/dovecot.pem -keyout
private/dovecot.pem
openssl x509 -subject -fingerprint -noout -in certs/dovecot.pem

Es indispensable que todos los archivos de claves y certificados tengan permisos de acceso de
solo lectura para el usuario root:
chmod 400 private/dovecot.pem certs/dovecot.pem
Regrese al directorio de inicio del usuario root.
cd
Editar el archivo /etc/postfix/master.cf:
gedit /etc/postfix/master.cf &

Descomentamos las siguientes lneas.


submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING

A continuacin, en una terminal ponemos todas estas lneas


postconf -e 'myhostname = mail.red20.local'
postconf -e 'mydomain = red20.local'
postconf -e 'myorigin = $mydomain'
postconf -e 'inet_interfaces = all'
postconf -e 'mydestination = $myhostname, $mydomain, localhost.localdomain, localhost'
postconf -e 'mynetworks = 172.16.13.120/16, 127.0.0.0/8'
postconf -e 'relay_domains = $mydestination'
postconf -e 'mailbox_command = /usr/bin/procmail'
postconf -e 'smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt'
postconf -e 'smtpd_tls_key_file = /etc/pki/tls/private/smtp.key'
postconf -e 'smtpd_tls_cert_file = /etc/pki/tls/certs/smtp.crt'
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'

postconf -e 'smtpd_tls_session_cache_timeout = 3600s'


postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
Accedemos al archivo /etc/dovecot/conf.d/10-ssl.conf
gedit /etc/dovecot/conf.d/10-ssl.conf &
Y modificamos las siguientes lneas.
ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

En una terminal ponemos las siguientes lneas para que arranque desde el sistema e iniciar los
servicios.

chkconfig saslauthd on
chkconfig dovecot on
chkconfig postfix on
service saslauthd start
service dovecot start
service postfix restart

Configuracin de GNOME Evolution.


Para acceder al cliente de correo Evolution, picamos sobre Aplicaciones -> Oficina ->
Correo y calendario Evolution.

Mediante el asistente, le ponemos un nombre significativo a la cuenta, nombre


completo y direccin de correo.

En el apartado Recepcin de correo, ponemos nuestro nomrbe, y como nombre de


nuestro servidor mail.red20.local.

Y en el apartado Envo de correo especificamos SMTP como Tipo de servidor y ponemos como
servidor mail.red20.local

http://arandasri.blogspot.mx/2013/01/servidor-de-correo-centos-63.html
Otra informacin

Servidor GNU/Linux CentOS Desde 0 (cero) ::


Servidor Postfix - (Parte 8)

En esta ocasin hablaremos de Postfix, el servidor de correos de


preferencia y actualidad en la mayora de los servidores gnu/linux en
Internet, tambin considerado un tema algo complejo debido a la multitud
de cosas que se puede hacer por el lado del administrador con los
correos, desde correr aplicaciones al momento de recibir un correo con
cierta caracterstica, hasta el procedimiento de lidear con los dominios
virtuales, buzones y reenvo de correos a otros servidores (respaldo o
relay).

El tema es algo completo que posiblemente nos lleve mas de una


publicacin, pero trataremos de ser lo mas amenos y amplios en el tema
ya que la mayora del material esta en ingles y el poco material que esta
en castellano se encuentra cortado en diversos temas (nadie habla de
TODO sobre postfix).

Servidores de Correos

Los Servidores de correos tienen la ardua tarea de recibir todo el correo


electrnico que llegue a su puerto de red 25 (smtp), posteriormente debe
hacer "algo" con ese correo, que puede ser desde ignorarlo, guardarlo o
reenviarlo.
En el procedimiento de ignorarlo es porque simplemente el correo no
corresponde con los dominios que este sostiene.
En el caso de guardarlo es porque existe el dominio en el servidor y
existe una cuenta que se asocia con el receptor, por lo cual prosigue a
guardarlo en el buzn de correo (Maildir/).
Y el procedimiento de reenvo consiste bsicamente en que ese dominio
lo reconoce, pero esta en otro servidor dentro de la red que puede saber
que hacer con ese correo, por lo cual lo reenva (transporte) hacia la IP
del otro Servidor de Correos.

Clientes de Correos

Son las aplicaciones y plataformas de software que nos brindan un


ambiente visual y practico para interactuar con el Servidor de Correos y
utilizar sus servicios como son: bajar correo, consultar y enviar correo.
Como recomendacin existen aplicaciones de software libre muy buenas
como: Evolution, Thunderbird y Outlook.

Postfix

Postfix

es el servidor de correos preferente en Internet, de los mas

seguros y con la capacidad de manipular las diversas secciones por


donde va pasando correo electrnico, desde su recepcin hasta su
salida. Podemos tanto validar cabeceras o disparar una aplicacin si
fuese en caso de tener un sistema automtico de respuesta.
El servidor de correo regularmente trabaja en los puertos: 25 y 587.
El puerto 25 es conocido como SMTP.
El puerto 587 es conocido como submission.

Regularmente algunos ISP (Proveedores de Internet) mantienen


bloqueado el puerto 25 para evitar que sus usuarios hagan envo de
correos, ya sea para evitar la generacin de SPAM o bien porque no se
incorpora en el servicio de Internet comn.
El puerto 587 (submission) es una alternativa para cuando se tiene el 25
bloqueado, pero claro, es por obviedad que si tu servidor no tiene el
puerto 25 abierto, entonces deberas enviar tu correo a un Servidor que
si pueda usar el 25, a lo que llamamos relay.

IMAP y POP3
Es el servicio que se encarga de proporcionar todo el correo electrnico
almacenado en el buzn del usuario que se esta autenticando con el
servidor de correos, el POP3 generalmente trabaja en el puerto 110. En
este mtodo POP3 la descarga del correo es en modo plano, as que
cualquier que intervenga la conexin puede cachar tambin nuestros
mails.
Existe tambin la posibilidad de manejar un servicio POP3 Seguro en
donde se cifre la conexin mediante TLS o SASL, el servicio de POP3
Seguro funciona sobre el puerto 995.
Es importante recordar que en POP3 cada vez que se descarga el
correo, es eliminado del servidor, por lo cual mantener varios gestores de
correos bajando del POP3 de nuestra cuenta, puede hacer que nuestros

correos queden algunos en un PC, otros en otro PC, y as en cualquier


dispositivo que tengamos conectado al POP3.
El servicio IMAPs es muy parecido a POP3, con la diferencia que al
momento que se descarga el correo, este continua presente en el
servidor, solamente cuando eliminamos un correo es cuando se elimina
del servidor.
IMAP funciona en el puerto 143 y tambin existe una versin de IMAP
Seguro que funciona en el puerto 993.

Configurando POSTFIX
Una configuracin bsica y recomendada de postfix es aquella que
simplemente nos brinda el servicio de envi y recepcin de correos
utilizando como medio de conexin al servicio una autentican mediante
TLS o SASL.
Codigo:
shell# cat /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = all

myhostname = mail.miservidor.com
mydomain = miservidor.com
myorigin = $mydomain
mydestination = $myhostname, $mydomain, localhost.$mydomain, mail.
$mydomain, localhost, /etc/postfix/dominios.cf, hash:/etc/postfix/virtual
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtp_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtp_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions =

permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,
hash:/etc/postfix/access,reject_unknown_sender_domain
mynetworks = 127.0.0.0/8, 192.168.1.0/24
smtpd_tls_auth_only = no
smtpd_use_tls = yes
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtp_tls_key_file = /etc/postfix/ssl/smtpd.key
smtp_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtp_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtp_tls_session_cache_database =
btree:/var/lib/postfix/smtp_tls_session_cache
smtpd_tls_security_level = may
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
relay_domains = $mydestination
smtpd_error_sleep_time = 0
smtp_connect_timeout = 0
home_mailbox = Maildir/
mailbox_command =

Explicaremos las partes que mantienen archivos incorporados a la


configuracin, para una mejor comprensin:
Codigo:
mydestination = $myhostname, $mydomain, localhost.$mydomain, mail.
$mydomain, localhost, /etc/postfix/dominios.cf, hash:/etc/postfix/virtual

mydestination

indica a postfix todos los posibles destinos que sern validos

para tomar el correo, entre los parmetros destacan dos


archivos/etc/postfix/dominios.cf y hash:/etc/postfix/virtual.
/etc/postfix/dominios.cf

Contiene los dominios que soporta nuestro servidor, o bueno, los


dominios que tenemos funcionando en el servidor. En mi caso tengo:
Codigo:
shell# cat /etc/postfix/dominios.cf
midominio.com
midominio2.com
midominio3.com

hash:/etc/postfix/virtual

Contiene la asociacin de nuestros correos electrnicos con las cuentas

de usuario en el sistema. Por ejemplo si el correo del usuario "carlos" es


"carlitos.perez@midominio.com", al existir una "diferencia" entre el
usuario y el nombre del correo, debemos indicarle a postfix que hara con
ese correo que reciba y sepa donde depositara el correo.
En mi caso tengo:
Codigo:
shell# cat /etc/postfix/virtual
midomino.com anything
carlitos.perez@midominio.com carlos
jorge.ruiz@midominio.com jruiz
midominio2.com anything
webmaster@midominio2.com andres
soporte@midominio2.com pedro

OJO:

antes de declarar las asociaciones debemos declara el dominio

original con el valor de "anything".


En el caso de los archivos que sean hash de postfix (como "virtual"),
despus de hacer modificaciones debemos crear la BD de esa
configuracin nueva o modificacin, por lo cual debemos ejecutar el
comando:
Codigo:
shell# postmap /etc/postfix/virtual

Esto har que postmap guarde la configuracin con un nombre


de virtual.db. Que es el archivo que finalmente lee Postfix.
hash:/etc/postfix/access

Nos permite indicar que dominios o correos (usuario@dominio) podrn


ser aceptados por Postfix, ya sea bien para recibir y/o enviar. En mi caso
tengo:
Codigo:
shell# cat /etc/postfix/access
miservidor.com OK
miservidor2.com OK
miservidor3.com OK
192.168 RELAY

Los valores OK indican que puedes recibirlos y enviarlos.


El valor RELAY indica que las direcciones IP 192.168 pueden hacer uso
del RELAY del servidor (despus hablaremos sobre Relays).
Una vez creado o realizado cambios a /etc/postfix/access debemos
incorporarlo a BD:
Codigo:
shell# postmap /etc/postfix/access

http://www.sie-group.net/hoja/qqnbu8kservidor_gnu_linux_centos_desde_0__cero_____servidor_postfix____parte_8_.htm
l

Que es un FTP ?
Un FTP (File Transfer Protocol) es un servicio que nos permite transferir
archivos hacia un servidor, ya sea en subida o bajada. En un FTP existe
la posibilidad de que los usuarios existentes en el sistema tengan su
propia cuenta y accedan a esta misma para transferir archivos.

Tipos de FTP

En si no son "tipos", son solo mtodos de como transferir los archivos,


existe el mtodo "plano" en donde al conectarte al FTP se envan los
datos y archivos de forma original (sin proteccin ni encriptaciones).
Y el otro mtodo es el FTPS que consiste en la comunicacin entre
cliente - servidor por un medio cifrado (o protegido), brindndote mayor
seguridad durante todo el proceso de autenticacin y transferencia de los
archivos hacia el server o viceversa. Tambin llamado como FTP Seguro.

Clientes FTP
Los clientes FTP son los encargados de conectarnos hacia el servicio
FTP para interactuar con el mismo, actualmente existen Clientes Visuales
muy buenos que nos permitan mantener mas de una conexin a hacia el
mismo y otros FTP. Como recomendacin usen Filezilla, disponible en
Sistema GNU/Linux y Windows.

Servidores FTP

Para GNU/Linux existe: proftpd y vsftpd, ambos son Servidores FTP con
ventajas y desventajas.
Nosotros explicaremos como configurar de forma sencilla y bsica un
FTP con vsftpd, y con los requerimientos de seguridad bsicos.

Instalacin y Configuracin

Instalando vsftpd desde los repositorios oficiales:


Codigo:

shell# yum install -y vsftpd


# estableciendo para el inicio del sistema
shell# cd /etc/init.d/
shell# chkconfig --levels 2345 vsftpd on
# iniciando proftpd
shell# /etc/init.d/vsftpd start

En la configuracion no permitiremos conexiones como invitados


(anonymous o guest), solo permitiremos 5 clientes maximo conectados al
server y solo 2 conexiones por IP.
Codigo:
shell# cat /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Bienvenido al FTP midominio.com.
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

max_clients=5
max_per_ip=2

Firewall
La siguientes lineas son recomendaciones para la configuracin de su
firewall (iptables) que les permitir abrir los puertos del FTP:
Codigo:
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT # ftp
iptables -A INPUT -p udp --dport 20:21 -j ACCEPT # ftp
http://www.sie-group.net/hoja/3yvscreri5servidor_gnu_linux_centos_desde_0__cero_____servidor_ftp____parte_7_.html

Samba es uno de los servicios que utilizan los protocolos de


compartimiento de informacin usado comnmente en Sistemas
Operativos Microsoft, basndose en los puertos 137-139 (netbios-ssn) y
445 (microsoft-ds).
Los puertos mencionados se usan para compartir la informacin y la
difusin del compartido para reconocimiento en las redes locales,
tambin con soporte workgroup, claves y cuentas de acceso.

Conceptos
Es importante conocer ciertos conceptos al momento de manejar las
declaraciones y variables en la configuracin de SAMBA, ya que no nos
detendremos durante las lineas de configuracin a explicarlo.
Codigo:
interfaces = lo eth0 192.168.1.0/24

Se declaran las interfaces y redes que desees aceptar en tu servidor


samba: lo (localhost), eth0 (tarjeta de red local), 192.168.1.0/24 ( IPs
192.168.1.1 al 192.168.1.254)
Codigo:
workgroup = HOMELINUX

Nombre del Grupo de Trabajo, muy necesario en Windows para permitir


la visualizacin de los equipos y compartidos en redes windows.
Codigo:
security = user

En versiones antiguas se acostumbraba usar shared[/b] y [i]domain, en


versiones actuales solo se opta por user, aunque esto no evita usemos
las configuraciones antiguas, pero desde un principio se marcan

como deprecated (obsoleto).


Esta configuracin permitir que los directorios compartidos se
comporten segn sus privilegios que se les asigne tanto en la
configuracin de SAMBA como en los permisos que tengas las carpetas y
archivos.
Codigo:
hosts allow = 127. 192.168.1. 192.168.2.

Si tenemos mas de una red local y queremos que nuestro servidor acepte
las vistas de otras redes, podemos permitirlas con esta variable.
Codigo:
name resolve order = wins lmhosts hosts bcast

Esto permitir agilizar mas nuestro servidor samba, haciendo que cada
vez que se busquen compartidos primero se consulte nuestro servidor
Samba, despus cualquier otro servidor esclavo y finalmente intenta
buscando en el lmhosts, despus con los hosts locales, despus el DNS
y finalmente haciendo un mensaje de difusin al broadcast para
encontrar el compartido.
Codigo:
remote announce = 192.168.2.255/DOMINIO2, 192.168.3.255/DOMINIO3

Si queremos que nuestro Servidor SAMBA aparezca visible rpidamente

en nuestra red local y/o en otras redes conectadas, podemos hacer que
este se anuncie automticamente con esta configuracin.
Recordemos que debemos declarar las direcciones de difusin
(broadcast) y NO las direcciones IP de los servidores de las subredes o
redes.
Codigo:
valid users = pedro, jorge, luis

Si el directorio sera solo para ciertos usuarios, podemos definirlo con esta
variable.
Codigo:
create mask = 0xxx

Cada vez que se cree un directorio en el compartido, podemos hacer que


este tome ciertos permisos, deberamos usar esta declaracin y sustituir
las "x" por los 3 valores numricos del permiso (Ejm: 0755).

Configurando SAMBA
Primero debemos configurar la direccin local de nuestro servidor samba,
debemos poner la direccin IP del servidor y el hostname:

shell# cat /etc/samba/lmhosts


Codigo:
127.0.0.1 localhost
192.168.1.1 server

Instalando SAMBA:
Codigo:
# instalando paquetes
shell# yum install -y samba

Configuracin recomendada:
shell# cat /etc/samba/smb.conf
Codigo:
[global]
workgroup = HOMELINUX ; nombre del grupo
server string = Samba Server CentOS
interfaces = lo eth0 192.168.1.0/24 # smaba en red 192.168.1.0
netbios name = HOMELINUX ; nombre en netbios
encrypt passwords = yes ; encriptar passwords windows
log file = /var/log/samba/%m.log ; log
max log size = 50 ; dimencion del log
security = user ; tipo de seguridad en compartidos
passdb backend = smbpasswd ; db de passwords
local master = yes ; es compartido maestro
os level = 33 ; nivel del sistema

load printers = yes ; cargar impresoras


cups options = raw ; impresoras cups
[backups] ; asi aparece el nombre del compartido
path = /home/backups ; directorio a compartir
comment = Backups Server CentOS ; comentario
browseable = yes ; sera encontrable
writable = yes ; podran escribirle cosas
guest ok = yes ; cualquier puede ver el compartido
directory mask = 0744 # permisos del directorio
[printers] ; impresoras
comment = All Printers ; comentario
path = /var/spool/samba ; directorio
browseable = yes ; encontrable
guest ok = yes ; cualquier puede verlo
writable = no ; no se permite hacer cambios
printable = yes ; se puede usar para imprimir

Probando y corroborando erratas en el archivo de


configuracion smb.conf:
Codigo:
shell# testparm

Estableciendo en arranque automtico


Codigo:
# correr el servidor
shell# cd /etc/init.d/
shell# chkconfig --levels 235 smb on
shell# chkconfig --levels 235 nmb on
shell# /etc/init.d/nmb start
shell# /etc/init.d/smb start

Cuentas de Usuario
Si la configuracion que optas en tu Servidor SAMBA es por
autentificacion de cuentas, entonces es importante sepas como agregar
las cuentas de usuario y clave.
Es importante mencionar dos cosas:
1- Las cuentas de usuario, no tienen que tener un "/home" en el servidor.
2- Las claves de usuario no tienen que ser iguales a las claves de un
usuario existente en el sistema.
Sencillo... Si mi usuario es "angel" y tengo cuenta en el Sistema
GNU/Linux (directorio /home), mi clave de acceso a SAMBA puede
ser totalmente distintaal que tengo para logearme a mi /home.

Creando cuentas de usuario sin /home y sin shell.


Codigo:
shell# adduser -d /var/tmp -s /bin/false mi_usuario

Poniendo password a la autentificacion por samba:


Codigo:
shell# smbpasswd -a mi_usuario

Firewall
La siguientes lineas son recomendaciones para la configuracin de su
firewall (iptables) que les permitir abrir los puertos de samba:
Codigo:
iptables -A INPUT -p tcp --dport 135:139 -j ACCEPT
iptables -A INPUT -p udp --dport 135:139 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -j ACCEPT
http://www.sie-group.net/hoja/yg4ar8ltservidor_gnu_linux_centos_desde_0__cero_____servidor_samba____parte_6_.htm
l

En esta entrega hablaremos sobre SQUID uno de los Proxys mas usados
en Servidores Locales y en Linea, principalmente por ser cdigo libre y
mantenerse actualizado constantemente.

SQUID - Proxy
Squid es conocido como un Proxy Web y de Red, nos permite no solo
limitar el acceso a contenido en Internet, as como: paginas, archivos,
videos y msica. Tambin nos permite limitar el ancho de banda
consumido tanto para transferencia locales (en la red) como para
transferencias en Internet.
Si quieres limitar el ancho de banda, ofreciendo solo el ancho necesario
para la red y que nadie se quede con el Internet lento, Squid es la mejor
opcin para repartir el ancho de banda.

Listas de Control de Acceso


Las Listas de Control de Acceso (ACL) son reglas que se definen en el
archivo de configuracin para especificar ya bien sea las direcciones IPs,
un archivo con un conjunto de palabras o un conjunto de paginas web a
las cuales les aplicaremos un control de restriccin.
Una ACL tiene una forma de definirse muy simple, que es: acl <nombre>

<tipo> <argumento o archivo>

Acceso y Denegacin
Existe un argumento base que finalmente aplicaremos a las ACLs o
cualquier otro control que restringiremos. Nos referimos al
evento http_access, la forma de declararse es: http_access <tipo>
<argumentos>

Configurando
En nuestro primer archivo de configuracin explicaremos en las mismas
lineas su significado:
shell# cat /etc/squid/squid.conf

Codigo:
# sitios que denegaremos el acceso
acl denegados url_regex "/etc/squid/sitios_denegados"
# sitios que aseguraremos el acceso
acl inocentes url_regex "/etc/squid/sitios_inocentes"
# extenciones de archivo validaz
acl extvalidas urlpath_regex "/etc/squid/extenciones_validas"

# extenciones no validaz
acl extnovalidas urlpath_regex "/etc/squid/extenciones_novalidas"
# configuracion para una sola IP (eth0)
acl sie_center src 192.168.1.0/24
# configuracion para 2 IPs, la IP de la eth0 (192.168.1.1) y eth1
(10.10.10.1)
#acl sie_center src 192.168.1.1 10.10.10.0/24

acl manager proto cache_object


acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
# puerto seguro "https"
acl SSL_ports port 443
# especificando puertos que filtraremos
acl Safe_ports port 80

# http

acl Safe_ports port 20

# ftp

acl Safe_ports port 21

# ftp

acl Safe_ports port 22

# ssh

acl Safe_ports port 53

# dns

acl Safe_ports port 137

# samba

acl Safe_ports port 445

# samba

acl Safe_ports port 443

# https

acl Safe_ports port 2049 # nfs

acl Safe_ports port 3130 # squid cache


acl Safe_ports port 3128 # squid
acl Safe_ports port 5901 # vnc
acl CONNECT method CONNECT
#accesos
http_access allow manager localhost
http_access allow sie_center !denegados !extnovalidas
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
icp_access allow all
# Puerto de Squid transparente
http_port 3128 transparent
#Delay pools
#delay_pools 1
#delay_class 1 1
#delay_parameters 1 20480/1024
#acl limitados url_regex "/etc/squid/sitios_limitados"
#delay_access 1 allow sie_center extvalidas limitados
hierarchy_stoplist cgi-bin ?
# dimencion memoria cache y directorio
cache_mem 32 MB
cache_dir ufs /mnt/squid 700 16 256

# cache_dir ufs /mnt/squid 100 16 256


cache_mgr mi@mail.com
# squid Log
access_log /var/log/squid/access.log squid
# cache Log
cache_log /var/log/squid/cache.log
# opciones de Tuenleo de Cache
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp:

1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440


refresh_pattern .

0 20% 4320

# puerto de Cache
icp_port 3130
# error direcotry
error_directory /usr/share/squid/errors/es
# core Log
coredump_dir /var/cache/squid
# store Log
cache_store_log /var/log/squid/store.log

Especificando
En el archivo de configuracin mencionado se especificaron rutas a
archivos donde tomaremos los datos a denegar, a continuacin
mostraremos los contenidos de cada uno:
shell# cat extenciones_novalidas

Codigo:
\.mov$
\.rm$
\.vob$
\.wma$
\.wmv$
\.wav$
\.pif$
\.run$
\.bin$

shell# cat sitios_denegados

Codigo:

sexo
porno
facebook.com

Proteccin del Ancho de Banda


En Squid tenemos la posibilidad de proteger nuestro ancho de banda, y
nos referimos a las siguientes caractersticas:

Limitar el ancho de banda en transferencias de archivos locales.

Limitar transferencia de archivo en descarga en linea.

Limitar transferencia de archivos con cierta extensin.

Limitar ancho de banda en navegacin en ciertas paginas o todas.

Para explotar estas caractersticas es necesario aprender sobre delay


pols,

para esto les presentaremos otra publicacin explicando ampliamente

esta opcion debido a que es mas compleja que la configuracin general


que les mostramos.
continua pendiente este tema...

FIREWALL

La siguientes lineas son recomendaciones para la configuracin de su


firewall (iptables) que les permitir abrir los puertos del Squid (Proxy).
Codigo:
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p udp --dport 3125 -j ACCEPT

En el siguiente ejemplo de la regla iptables, sirve para cuando tenemos


un servidor funcionando como "router", vaya que lo tenemos con dos
tarjetas de red: eth0 (al internet) y eth1 (a la red / 192.168.1.0/24), para
evitar los usuarios nos pasen por alto el proxy ponemos una regla
automatica que desvie los paquetes que vayan a cualquier IP.
Ejemplo con 2 tarjetas de red:
Codigo:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth0 -p tcp --dport 80
-j DNAT --to 192.168.1.1:3128

Ejemplo con 1 tarjeta de red:


Codigo:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -s 192.168.1.0/24


-j REDIRECT --to-port 3128
http://www.sie-group.net/hoja/86f1qh2hsservidor_gnu_linux_centos_desde_0__cero_____servidor_proxy____parte_5_.html

En esta entrega aprenderemos un poco sobre configuracin de DNSs a


nivel de consola, daremos de alta algunos registros para resolucin
exterior y interior.
Como el tema es muy extenso y puede ser que algunos lectores sean
muy exigente o tengan conocimiento nulos y por consiguiente nos
reservaremos a ofrecerlo solo a usuarios que ya conozcan tericamente
el funcionamiento de un DNS.
Un DNS es un Servicio que ofrece la resolucin o traduccin de nombres
de dominio ha direcciones lgicas (IP) y tambin el modo inverso
(Resolucin Inversa) que la resolucin o traduccin de una direccin
lgica a nombre de dominio.
En internet existen Dominios Maestros (DNSs Maestros) que serian los
que manejan el dominio de Raz (mx, com, jp, es, edu, org, gov, etc...) en
nuestra experiencia hemos nota que algunos DNSs que mantienen los
registros MX tardan mucho en buscar las actualizaciones de los
dominios, por lo consiguiente es recomendable no estn moviendo mucho la
configuracin de un Servidor DNS ya que puede que la actualizacin que
hagamos no se vea reflejada al instante.
Si estamos configurando un DNS Local, entonces veremos la
actualizacin al instante.

BIND / NAMED

BIND

es un Servidor DNS que predomina en los Servidores en Internet,

bind mantiene un archivos de configuracin llamado named.conf donde se


declaran las Zonas (dominios) y despliegan las resoluciones internas y
externas.
BIND podemos lanzarlo como un Servidor de DNS Enjaulado (chroot) o
Normal, lo mas recomendable para Servidores Locales es manejarlo
como Enjaulado (chroot), pero si mantenemos un Servidor Local (o en
Internet) con mucha demanda de Resolucin de Nombre de Dominio
entonces es mejor manejarlo normal.
Primero instalamos bind:
Codigo:
shell# yum install bind-chroot

Permisos de bind:
Codigo:

shell# cd /var/
shell# chmod 755 named/chroot/var/
shell# chmod 755 named/chroot/var/named/
shell# chmod 755 named/chroot/var/run/
shell# chmod 777 named/chroot/var/run/named/
shell# cd /var/named/chroot/var/named
shell# ln -s ../../ chroot

Si quieres aprender mas sobre las Zonas puedes ver los ejemplos ya
realizados en:
Codigo:
shell# cp /usr/share/doc/bind-x.x.x/sample/var/named/named.local
/var/named/chroot/var/named/
shell# cp /usr/share/doc/bind-x.x.x/sample/var/named/named.root
/var/named/chroot/var/named/

Creando el archivo de configuracin:


Codigo:
shell# touch /var/named/chroot/etc/named.conf

Cerciorarnos que se ejecutara enjaulado, ya que de no serlo entonces el


archivo de configuracin lo estara leyendo de /etc/named.conf (lo cual no

queremos):
Codigo:
shell# cat /etc/sysconfig/named
ROOTDIR=/var/named/chroot

Confgurando el deamon al iniciar sistema:


Codigo:
shell# cd /etc/init.d/
shell# chkconfig --levels 235 named on
shell# /etc/init.d/named start

Zonas de Dominio
Daremos el ejemplo de como configurar una Zona de
Dominio: midominio.com.
shell# cat /var/named/chroot/etc/named.conf

Codigo:
options {
directory "/var/named/";

listen-on-v6 { none; };
listen-on port 53 { 127.0.0.1; 10.10.10.1;};
forwarders { 8.8.8.8; 208.67.222.222; };
dnssec-enable yes;
# dnssec-validation yes;
dnssec-lookaside "." trust-anchor dlv.isc.org.;
};
acl slaves {
10.10.10.2; # nuestra IP de la eth1
10.10.10.3; # nuestra IP de la eth2
};
acl internals {
127.0.0.1;
10.10.10.1;
};
view "internal" {
match-clients { internals; };
recursion yes;
zone "midominio.com" {
type master;
file "/var/named/internals/db.midominio.com";
};
zone "10.10.10.in-addr.arpa" {
type master;
file "/var/named/db.10.10.10";
};

};
view "external" {
match-clients { any; };
recursion no;
zone "midominio.com" {
type master;
file "/var/named/externals/db.midominio.com";
allow-transfer { slaves; };
};
zone "10.10.10.in-addr.arpa" {
type master;
file "/var/named/db.10.10.10";
};
};
key "TRANSFER" {
algorithm hmac-md5;
secret "Nuestro Hash Generado==";
};
server 10.10.10.1 {
keys {
TRANSFER;
};
};

La Resolucin Inversa:
shell# cat /var/named/chroot/var/named/db.10.10.10
Codigo:

$TTL 604800
@ IN SOA midominio.com. root.midominio.com. (
2012051414 ; serial
8H ; refresh
2H ; retry
4W ; expire
1D ) ; minimum ttl
;
@ IN NS ns1.midominio.com.
225 IN PTR midominio.com.
225 IN PTR otrodominio.com.
225 IN PTR masdominios.com.

La solucin para las peticiones externas:


[b]shell# cat /var/named/chroot/var/named/externals/db.midominio.com

Codigo:
$TTL 345600
@ IN SOA ns1.midominio.com. contacto.midominio.com. (
2012051414 ; serial
7200

; refresh

1800

; retry

1209600

; expire

300 ) ; negative cache ttl


;
@ IN NS ns1
IN NS ns2
IN MX 10 server
IN A 67.23.225.225
midominio.com. IN A 10.10.10.1
ns1 IN A 10.10.10.1
mail IN A 10.10.0.1
server IN A 10.10.10.1
www IN CNAME midominio.com.

La solucin para las peticiones internas:


shell# cat /var/named/chroot/var/named/internals/db.midominio.com

Codigo:
$include "/var/named/externals/db.midominio.com"
pedro IN A 10.10.10.20
luis IN A 10.10.10.21
andres IN A 10.10.10.22
pablo IN A 10.10.10.23
contabilidad IN A 10.10.10.24

Recomendacin / Gua Administrador Linux DNS (PDF)

FIREWALL

La siguientes lineas son recomendaciones para la configuracin de su


firewall (iptables) que les permitir abrir los puertos del DNS (Servidor de
Nombre de Dominio) y/o DHCP.
Codigo:
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
http://www.sie-group.net/hoja/dkk6i1dservidor_gnu_linux_centos_desde_0__cero_____servidor_dns____parte_4_.html

Este tema le dedicaremos una publicacin completa debido a que existen


dos herramientas muy buenas que son dnsmasq y dhcpd. Es importante el
usuario conozca la diferencia entre ambas y desde el punto de vista
aplicativo cual seria la mas recomendable.
Un DHCP es un servicio que permite la asignacin automtica de
direcciones IP a los equipos que se conecten a la red, generalmente un
DHCP debe contener una tabla de asignaciones que posteriormente se
volque a un LOG para mayor informacin para el Administrador.
Que es un DHCP Autoritativo ?

(authoritative) frecuentemente es un termino

que en las configuraciones de los DHCPs se hace presente, debido a que


esta variable se establece cuando se desea que nuestro DHCP sea muy

exigente, vaya, si una IP que tiene un HOST se repite con otro HOST que
nuestro DHCP tiene en su tabla de asignaciones, entonces le cambia el
IP por uno que no se repita. Y un DHCP No Autoritativo es aquel que solo
asigna IPs y no corrobora si un Host tiene un IP Repetido.
Por recomendacin debemos usar un DHCP como Autoritativo para evitar
que usuarios tramposos pongan el IP Manualmente (asumiendo que no
tenemos rango para IPs Manuales), si se diera el caso entonces el DHCP
les reasignara un IP Nuevo automticamente.

TERMINOS EN SERVIDORES DNS


Resolucin de DNS

es obtener la Direccin IP a partir del Dominio o

Hostname.
Ejemplo: shell# host midominio.com
Codigo:
midominio.com has address 10.10.10.1
midominio.com mail is handled by 10 server.midominio.com.

Resolucin Inversa (rDNS)

es un termino que se usa para realizar lo contrato

de un DNS. Que seria obtener el Hostname de la IP que consultamos.


Ejemplo: shell# host 10.10.10.1
Codigo:

1.10.10.10.in-addr.arpa domain name pointer server.midominio.com.

DNSMASQ
Para ambientes caseros es recomendable dnsmasq ya que es mas que un
DHCP Server, sino que tambin incluye un DNS Server, permitiendo de
forma automtica la creacin de los registros de dominios a partir del
HOSTNAME de la maquina a la que se le asigna la IP Automtica, las
tablas de routas DNS se van actualizando por dnsmasq y a su vez
asignando IPs en el rango que deseemos.
Un buen ejemplo de la configuracin de dnsmasq es la siguiente:
Codigo:
# instalando paquetes
shell# yum install -y dnsmasq

shell# cat /etc/dnsmasq.conf

Codigo:
# resolv-file=/etc/resolv.conf # ruta del directorio
server=10.10.10.1 # el servidor DNS
domain=midominoilocal.com # dominio local
interface=eth0 # interface que escucha

dhcp-range=10.10.10.200,10.10.10.253 # rango a asignar


dhcp-lease-max=150 # maximo de tiempo de difucion
dhcp-authoritative # dhcp autoritativo
log-queries # generar log de intentos de consulta al dhcp
log-dhcp # los del dhcp (a quien asigno, a que MACs)
conf-dir=/etc/dnsmasq.d # donde esta el deamon
# dhcp-boot=pxelinux.0 # booteo por red
# enable-tftp # habiltar tftp
# tftp-root=/home/tftp # ruta del tftp
# dhcp-boot=/home/tftp/pxelinux.0,server,10.10.10.1

Iniciar servicio
Codigo:
shell# cd /etc/init.d/
shell# chkconfig --levels 235 dnsmasq on
shell# /etc/init.d/dnsmasq start

DHCPD
Esta aplicacin es un DHCP puro, que permite de forma muy simple y
con instrucciones sencillas empezar a formar tu servicio DHCP, tomando
en cuenta de la asignacin de IPs a partir de un rango especifico
deseado, a travs de la MAC y con capacidad para definir Gateways y

otras rutas a conveniencia.


DHCPD es un deamon que encontramos en ambiente de Servidores
GNU/Linux ya que lo mas comn al momento de montar un DHCP es que
este servicio lo proporcione un servidor que a su vez pueda hacerla de
DNS, pero claro, ya todo depende la cantidad de consultas de DNS y
rDNS (Resolucin Inversa de DNS) tengamos en la red.
Nosotros te recomendamos la siguiente configuracin:
Codigo:
shell# yum install -y dhcp

shell# cat /etc/dhcp/dhcpd.conf

Codigo:
ddns-update-style interim;
ignore client-updates;
authoritative;
# un host de una mac especifica ponerle una ip
#host mihost {
# option host-name "mihost.homelinux.com";
# hardware ethernet AA:BB:CC:EE:FF:GG;
# fixed-address 10.10.10.x;
#

subnet 10.10.10.0 netmask 255.255.255.0 {

option routers 10.10.10.1;


option subnet-mask 255.255.255.0;
option domain-name "homelinux.com";
option nis-domain "homelinux.com";
option domain-name-servers 10.10.10.1;
range 10.10.10.11 10.10.10.50;
default-lease-time 86400;
max-lease-time 608400;
# option netbios-name-server 10.10.10.1;
# option ntp-server 10.10.10.1;
# max-lease-time 608400;
}
# otra subred
#subnet 192.168.1.0 netmask 255.255.255.0 {
# option routers 192.168.1.1;
# option subnet-mask 255.255.255.0;
# option domain-name "otrared.homelinux.com";
# option domain-name-servers 192.168.1.1;
# range 192.168.1.50 192.168.1.100;
# default-lease-time 86400;
# max-lease-time 608400;
#}

Y para configurar que cierta interfaz en especifico tenga el DHCP


escuchando:

shell# cat /etc/sysconfig/dhcpd

Codigo:
# estableciendo la "eth1" como escucha
DHCPARGS=eth1

Iniciar servicio
Codigo:
shell# cd /etc/init.d/
shell# chkconfig --levels 235 dhcpd on
shell# /etc/init.d/dhcpd start

Recomendacin / DHCP CentOS

FIREWALL

La siguientes lineas son recomendaciones para la configuracin de su


firewall (iptables) que les permitir abrir los puertos del DNS (Servidor de
Nombre de Dominio) y/o DHCP.
Codigo:

iptables -A INPUT -p tcp --dport 53 -j ACCEPT


iptables -A INPUT -p udp --dport 53 -j ACCEPT
http://www.sie-group.net/hoja/3251yw5awservidor_gnu_linux_centos_desde_0__cero_____servidor_dhcp____parte_3_.html

INTERFACES
Si tenemos una o varios IPs estticas pero solo contamos con una sola
tarjeta de red, lo mas correcto seria configurar hebras de la misma
configuracin donde solo vamos poniendo las dems IPs asociando
estas nuevas IPs con un valor de ethX compartido.
shell# cd /etc/sysconfig/network-scripts/
shell# cat ifcfg-eth0

Codigo:
# ip estatica 1 -- eth0
DEVICE=eth0
BOOTPROTO=statix
ONBOOT=yes
IPADDR=10.10.10.1
NETMASK=255.255.255.0
NETWORK=10.10.10.0
GATEWAY=10.10.10.254
TYPE=Ethernet
HWADDR=aa:bb:cc:dd:ee:ff
DNS1=ip.dns.local
DNS1=ip.dns.gateway

HOSTNAME=miserver.midominio.com
DOMAIN=midominio.com

shell# cat ifcfg-eth0:0

Codigo:

# ip estatica 2 -- eth0:0
DEVICE=eth0:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.10.10.2
NETMASK=255.255.255.0
GATEWAY=10.10.10.254
TYPE=Ethernet
HWADDR=aa:bb:cc:dd:ee:ff

shell# cat ifcfg-eth0:1

Codigo:
# ip estatica 3 -- eth0:1
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.10.10.3
NETMASK=255.255.255.0
GATEWAY=10.10.10.254

TYPE=Ethernet
HWADDR=aa:bb:cc:dd:ee:ff

Reiniciamos.
Codigo:

# reiniciar para cargar cambios


shell# /etc/init.d/network restart
# ver las interfaces
shell# ifconfig -a

DESHABILITAR SELINUX
IMPORTANTE:

en la versin 6.3 parece ya no incluirse SELinux, as que

puedes omitir este paso.


El SELinux es un firewall integrado en CentOS que mas que ayudar,
siempre ya un montn de problemas, lo mas recomendable es montarnos
nuestras propias reglas de firewall y no depende de la automatizacin, ya
que SELinux es tan delicado, que por el simple echo de hacerle PING al
server, nos bannea el IP y no podemos conectarnos de ninguna forma.

Otro error muy comn por el cual suele bannearnos nuestra IP, es
cuando estamos escaneando los puertos de nuestro server desde fuera,
con la finalidad de corroborar si el puerto se abri como desebamos y
resulto que SELinux nos banneo el IP por presunto escaneo de puertos
tomado como un posible atacante en busca de informacin.
Codigo:
# deshabilitando selinus
shell# system-config-securitylevel-tui
Security Level: ( ) Enables (*) Disables
SELinux: "Disables"

Damos Ok y reiniciamos: shell# reboot

UPDATE CENTOS
Ya configurado todo, debemos rehacer update:
Codigo:
# importamos llaves de servidores default
shell# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-*
shell# yum update -y

REPOSITORIOS
Es bueno tener otros Repositorios habilitados ya que comnmente los
repos (repositorios) por default no tienen muchos mas archivos que
suelen ser necesarios a la hora de querer otras aplicaciones o
implementacines de seguridad en nuestro server:
Codigo:
# paquete necesario
shell# yum install -y rpm-libs
shell# yum install -y yum-utils
# entramos al directorio de repos local
shell# cd /etc/pki/rpm-gpg/
# bajando repos
shell# wget http://apt.sw.be/RPM-GPG-KEY.dag.txt
shell# wget http://rpms.famillecollet.com/RPM-GPG-KEY-remi
shell# wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-67.noarch.rpm
# repo RPMForge para Cento6
shell# wget http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforgerelease-0.5.2-2.el6.rf.i686.rpm

# repo ATRpms
shellt# wget http://dl.atrpms.net/el6.3-i386/atrpms/stable/atrpms-repo-65.el6.i686.rpm

# actualizacion
shell# rpm --import *
shell# rpm -UvH *.rpm
shell# yum install -y yum-priorities
shell# yum update -y

PAQUETES BASE
Todo sistema GNU/Linux siempre usa un conjunto de paquetes que se
requiere en todas partes y por cualquier software independiente, te
recomiendo instales estos paquetes como base (los primero que instales
en tu server):
Codigo:
shell# yum install -y fetchmail wget bzip2 unzip zip nmap openssl lynx
fileutils gcc gcc-c++
http://www.sie-group.net/hoja/rm22servidor_gnu_linux_centos_desde_0__cero_____repositorios_y_paquetes_base___
_parte_2_.html

Les presentamos una serie de publicaciones enfocadas orientar en como


levantar un Servidor GNU/Linux CentOS desde 0 (cero).
El manual esta planificado sobre un GNU/Linux CentOS ya que es el
Sistema Operativo de preferencia a nivel Servidores Dedicados que
podemos encontrar por parte de proveedores lideres como: SIE-Group,
GoDaddy y HostDime.

INTRODUCCION
IMPORTANTE:

en todo momento si tienes una versin menor a CentOS 6,

puedes considerar seguir el manual siempre y cuando en la parte de


"REPOS" (repositorios) instales los repositorios que vayan para tu
versin.
En este manual practico aprenders como instalar un servidor GNU/Linux
basado en la distribucin CentOS, he utilizado la versin 6 (seis),
asumiendo que ya tenemos instalado CentOS aprenders sobre todos los
servicios que debe contar un servidor, la instalacin y configuracin
bsica de los servicios.
Estas implementacines son recomendadas al 100% para Servidores
Dedicados (en la nube), pero debes tomar en cuenta que en todo
momento pueden servirte tambin para un Servidor Local.

TIPOS DE SERVICIOS

HOSTING
Generalmente cuando tienes un primer acercamiento a servidores y
pretender levantar un sitio web con contenido bsico y servicios muy
comunes (face connect, blog, comments, etc...) lo mas sencillo es
contratar un servidor de Hosting en donde el proveedor de Hosting te
proporciona una cantidad limitada o especifica de espacio en disco duro
para almacenamiento de datos, acceso a servicios externos necesarios
como: MySQL, Postfix (servidor de correo) y DNS (para el dominio).
En un Servicio de Hosting existen limitaciones muy marcadas como:

Tienes un espacio limitado en disco duro para almacenamiento de datos.

El servicio de Base de Datos MySQL es limitado a cierto numero de bases


creadas y peso en consumo total.

El servidor Postfix (SMTP) esta limitado a un numero de correos de salida


diarios.

El ancho de banda es limitado a cierto consumo.

No tienes acceso a un DNS, solo a establecer tu propio dominio.

Existe una limitacin en la creacin de subdominios.

El servidor FTP te limita a cierto numero de cuentas.

No puedes requerir mas servicios, mas los que ya se mencionaron.

Pero una vez que crece mas tu pagina y pasa de ser a pagina comn (o
blog) a una plataforma de servicios, es cuando en realidad vez la gran
necesidad de mejor adquirir un servidor debido a las grandes limitaciones
de un servicio de Hosting.
La alternativa a un Hosting, seria la contratacin de un Servidor Dedicado
o Servidor Dedicado Virtual.

DEDICADOS
Los servidores dedicados se dividen en dos, los servidores dedicados y
dedicados virtuales:
Un Servidor Dedicado Virtual es bsicamente una maquina virtual
(VirtualBox, VMWare o Xen) que corre en un servidor fsico real, el nico
detalle es que si tu proveedor tiene 10 virtuales corriendo, entonces toda
la RAM es compartida entre los 10 virtuales. Y entre otras limitaciones:

No puedes crear mas virtuales dentro de tu virtual.

El ancho de banda es compartido.

Si la maquina virtual tiene limitaciones, entonces tu sistema operativo las


hereda.

Si tu proveedor tiene una sola tarjeta de red, entonces todos los virtuales pasan
por la misma interfaz.

En un Servidor Dedicado, bsicamente se te esta arrendando un equipo de


computo fsico completo, gozando de todos los servicios como si tuvieses
la maquina puesta en tu propia casa o negocio.
Las ventajas son muy amplias:

Puedes instalar cualquier servicio (FTP, Apache, Bind, MySQL, Asterisk,


Icecast, Virtuales, VNC, SSH, etc..).

Tienes acceso a una consola para manejar tu equipo.

Instalar cualquier aplicacin personalizada.

Cambiar al gusto capacidades del Buzn de Correos.

Crear rutas para tus Servidores Locales.

Las limitaciones (posiblemente) que ya dependen de tu nivel de


conocimientos y destreza, son:

Tu te encargas de tu seguridad.

Tu configuras todo.

Tu te encargas de respaldar.

Debes tener amplios conocimientos.

Es recomendable un servidor dedicado cuando tus exigencias y


necesidades sobre pasan a un servicio de hosting comn.
http://www.sie-group.net/hoja/9miurhuservidor_gnu_linux_centos_desde_0__cero_____introduccion____parte_1_.html