Beruflich Dokumente
Kultur Dokumente
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 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.
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/
Procedimientos.
Todos los procedimientos deben realizarse como el usuario root.
Comando
----------------------------------------------*+ 1
2
/usr/sbin/sendmail.postfix
/usr/sbin/sendmail.sendmail
Si estuviera presente sendmail, detenga ste (es el MTA predeterminado en CentOS 5 y Red Hat
Enterprise Linux 5) e inicie postfix:
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:
Estado o provincia.
Ciudad.
Unidad o seccin.
Direccin de correo.
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
cd
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
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
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'
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
vim /etc/dovecot.conf
En el parmetro protocols, se deben activar todos los servicios (imap, imaps, pop3 y pop3s).
#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
mail_location = mbox:~/mail:INBOX=/var/mail/%u
chkconfig saslauthd on
chkconfig dovecot on
chkconfig postfix on
service saslauthd start
service dovecot start
service postfix restart
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.
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.
$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.
#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:
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
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:
Comando
----------------------------------------------1
*+ 2
/usr/sbin/sendmail.postfix
/usr/sbin/sendmail.sendmail
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:
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:
$ 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
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
mail_location
protocols
=
=
mbox:~/mail:INBOX=/var/mail/%u
imap
pop3
lmtp
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.
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 &
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
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
Servidores de Correos
Clientes de Correos
Postfix
Postfix
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
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 =
mydestination
hash:/etc/postfix/virtual
OJO:
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
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
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
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
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
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
Configurando SAMBA
Primero debemos configurar la direccin local de nuestro servidor samba,
debemos poner la direccin IP del servidor y el hostname:
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
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.
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.
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
# http
# ftp
# ftp
# ssh
# dns
# samba
# samba
# https
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$
Codigo:
sexo
porno
facebook.com
FIREWALL
BIND / NAMED
BIND
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/
queremos):
Codigo:
shell# cat /etc/sysconfig/named
ROOTDIR=/var/named/chroot
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.
Codigo:
$TTL 345600
@ IN SOA ns1.midominio.com. contacto.midominio.com. (
2012051414 ; serial
7200
; refresh
1800
; retry
1209600
; expire
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
FIREWALL
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.
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.
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
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
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
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;
#
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
FIREWALL
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
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
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:
DESHABILITAR SELINUX
IMPORTANTE:
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"
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
INTRODUCCION
IMPORTANTE:
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:
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:
Si tu proveedor tiene una sola tarjeta de red, entonces todos los virtuales pasan
por la misma interfaz.
Tu te encargas de tu seguridad.
Tu configuras todo.
Tu te encargas de respaldar.