Parte Dos de La Guia de Instalacion Servidor Debian

Published on December 2016 | Categories: Documents | Downloads: 82 | Comments: 0 | Views: 667
of 76
Download PDF   Embed   Report

Comments

Content

5.1.1 Servidor IMAP/IMAPS
Objetivo
Instalar un servidor de e-mail que soporte el protocolo IMAPS.

Instalación
root@server:~# aptitude install dovecot-imapd

Configuración
Toda la configuración está almacenada en el archivo /etc/dovecot/dovecot.conf. Luego de la instalación de dovecot, se necesita indicar cuáles son los protocoles que se pretenden activar en el archivo de configuración. En este caso, los protocolos IMAP e IMAPS:

/etc/dovecot/dovecot.conf

# [...]

# Protocols we want to be serving: imap imaps pop3 pop3s managesieve # If you only want to use dovecot-auth, you can set this to "none". #protocols = imap imaps protocols = imap imaps

# [...]

El servidor de e-mail dovecot sólo acepta conexiones encriptadas vía TLS (Transport Layer Security) o SSL(Secure Sockets Layer). Ambos requieren certificados digitales. Los certificados SSL para dovecot son generados automáticamente durante la instalación. Sin embargo, podemos utilizar los Certificados ssl Auto-firmados que se generaron previamente:

/etc/dovecot/dovecot.conf

# [...]

## ## SSL settings ##

# IP or host address where to listen in for SSL connections. Remember to also # add imaps and/or pop3s to protocols setting. Defaults to same as "listen" # setting if not specified. #ssl_listen =

# SSL/TLS support: yes, no, required. </usr/share/doc/dovecotcommon/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. #ssl_cert_file = /etc/ssl/certs/dovecot.pem #ssl_key_file = /etc/ssl/private/dovecot.pem

ssl_cert_file = /etc/ssl/certs/server.crt ssl_key_file = /etc/ssl/private/server.key.insecure

# If key file is password protected, give the password here. Alternatively # give it when starting dovecot with -p parameter. Since this file is often # world-readable, you may want to place this setting instead to a different # root owned 0600 file by using !include_try <path>. #ssl_key_password =

# [...]

La localización de los buzones de correo debe indicarse también, para evitar ambigüedades. En este caso se encuentran en un sub-directorio del directorio home de cada usuario llamada ”Maildir”:

/etc/dovecot/dovecot.conf

# [...]

## ## Mailbox locations and namespaces ##

# Location for users' mailboxes. This is the same as the old default_mail_env # setting. The default is empty, which means that Dovecot tries to find the # mailboxes automatically. This won't work if the user doesn't have any mail # yet, so you should explicitly tell Dovecot the full location. # # If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u) # isn't enough. You'll also need to tell Dovecot where the other mailboxes are # kept. This is called the "root mail directory", and it must be the first # path given in the mail_location setting. # # There are a few special variables you can use, eg.: # # # # # # # See </usr/share/doc/dovecot-common/wiki/Variables.txt> for full list. # Some examples: %u - username %n - user part in user@domain, same as %u if there's no domain %d - domain part in user@domain, empty if there's no domain %h - home directory

# # # 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 # # </usr/share/doc/dovecot-common/wiki/MailLocation.txt> # #mail_location = mail_location = maildir:~/Maildir

# [...]

Las ramas del árbol Maildir debe generarse a partir del home de cada usuario. Para esto, debe ser ejecutado el comando maildirmake.dovecot por cada usuario ya creado. El comando más abajo muda la identidad del usuario corriente para un usuario “fribeiro” y crea la rama Maildir en elhome del mismo usuario. Este comando debe repetirse con cada usuario ya existente:

root@server:~# su - fribeiro -c 'maildirmake.dovecot ~/Maildir'

Esta rama también debe ser creada sobre el directorio /etc/skel. El contenido de /etc/skelse utiliza como modelo para el directorio home de los usuarios que sean creados en el futuro. Así, cuando se activaran nuevos usuarios, las ramas de Maildir se generarían automáticamente:

root@server:~# maildirmake.dovecot /etc/skel/Maildir

Reiniciar el servidor:

root@server:~# /etc/init.d/dovecot restart

Verificación
Verificar el servicio imap para las direcciones locales:

root@server:~# telnet 127.0.0.1 imap Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready. a001 login fribeiro password a001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in a002 examine inbox * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS ()] Read-only mailbox. * 0 EXISTS * 0 RECENT * OK [UIDVALIDITY 1291979249] UIDs valid * OK [UIDNEXT 1] Predicted next UID * OK [HIGHESTMODSEQ 1] Highest a002 OK [READ-ONLY] Select completed. a003 logout

* BYE Logging out a003 OK Logout completed. Connection closed by foreign host.

Desde otro sistema, verificar si son rechazadas las conexiones IMAP simples sim TLS por ser consideradas inseguras, una vez se envíen las contraseñas en texto simple:

fribeiro@laptop:~$ telnet 192.168.1.100 imap Trying 192.168.1.100... Connected to 192.168.1.100. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS LOGINDISABLED] Dovecot ready. a001 login fribeiro password * BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, but your client did it anyway. If anyone was listening, the password was exposed. a001 NO [CLIENTBUG] Plaintext authentication disallowed on non-secure (SSL/TLS) connections. a002 logout * BYE Logging out a002 OK Logout completed. Connection closed by foreign host.

Sin embargo, las conexiones IMAPS deben ser aceptadas a partir de cualquier sistema:

fribeiro@laptop:~# openssl s_client -connect 192.168.1.100:imaps CONNECTED(00000003)

depth=0 /C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan verify error:num=18:self signed certificate verify return:1 depth=0 /C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan verify return:1 --Certificate chain 0 s:/C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan i:/C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan --Server certificate -----BEGIN CERTIFICATE----MIICBzCCAXACCQCBpikwVIulPjANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQGEwJQ VDERMA8GA1UECBMIUG9ydHVnYWwxETAPBgNVBAoTCEhvbWUgTGFuMRMwEQYDVQQD FAoqLmhvbWUubGFuMB4XDTEwMTEwNTEyMDkxNFoXDTExMTEwNTEyMDkxNFowSDEL MAkGA1UEBhMCUFQxETAPBgNVBAgTCFBvcnR1Z2FsMREwDwYDVQQKEwhIb21lIExh bjETMBEGA1UEAxQKKi5ob21lLmxhbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC gYEAwvRP1cWKzoUPPtSUVK+G/HFgaoToc50Ir3gmBbhlycXPJvRbVwfF2+wBXdoS pNzJdmi6iA0cwaiy2BiUpH4WCk+nZGrGyJDUafxOdaUt8G/64lmSeUedBf3sSoQ6 9iR+fq85uTCJkbe2ZXgkfYZ/djnnkX9BnA7fD7szWbv6StMCAwEAATANBgkqhkiG 9w0BAQUFAAOBgQCLnbmCLs8jwnwG8zL1a8BWxarjitmLbqwXgo+qXtzu0qeFrZJ2 f42bk9M3I83SeQUKTGvK9Mj7CXmorKEsDv18F6rzQO9x2UInrwXYN9BcMVg5YHsf

HQkwhzgWXZNWJT0drFgNKsugvug7dE1UWVFJgafXwACQIFOaLkqpLdznDw== -----END CERTIFICATE----subject=/C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan issuer=/C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan --No client certificate CA names sent --SSL handshake has read 1094 bytes and written 319 bytes --New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol Cipher : TLSv1 : DHE-RSA-AES256-SHA

Session-ID: CF0CD4E5B509B27A41516D693EE5C8BF874FD19444FF2D28F5EAB078A5038324 Session-ID-ctx: Master-Key: 98478963F48B5C45438DE5312A266B9C3E23BF0FC1E75CEF7FC633B363CE131266BAB1751 3E1357AB3074900F5D057CC Key-Arg : None

Start Time: 1291980431 Timeout : 300 (sec)

Verify return code: 18 (self signed certificate) --* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready. a001 login fribeiro password a001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in a002 examine inbox * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS ()] Read-only mailbox. * 0 EXISTS * 0 RECENT * OK [UIDVALIDITY 1291979249] UIDs valid * OK [UIDNEXT 1] Predicted next UID * OK [HIGHESTMODSEQ 1] Highest a002 OK [READ-ONLY] Select completed. a003 logout * BYE Logging out a003 OK Logout completed. closed

Configuración de los clientes
Como verificación final, puede crearse una cuenta en un cliente de e-mail, como Thunderbird: Para esto, debe seleccionarse el protocolo IMAP, la conexión requiere TLS (puerto 143) o SSL (puerto 993) y la dirección será la del servidor (192.168.1.100 o mail.home.lan, en caso de que haya configurado previamente un Servidor DNS para la red local).

Si se configuró el acceso sin TLS o SSL, el acceso será negado:

Certificados auto-firmados
Dado que los certificados son auto-firmados, en los clientes e-mail aparecerá una ventana donde consta que no conocen la autoridad del certificado.

Una verificación debe indicar que el certificado utilizado es realmente el que queremos usar:

Una vez verificado el certificado, este podrá ser añadido a la lista de excepciones de seguridad.

5.1.2 Quotas
Objetivo
Establecer un límite a la capacidad de almacenamiento de e-mails en el servidor IMAP. A partir de las especificaciones de nuestro servidor, el sistema de cuotas será implementado teniendo el cuenta lo siguiente: # 1. Como nuestro servidor sólo dispone del protocolo imap, 1. sólo debe activarse el sistema de cuotas asociado a este protocolo. Sin embargo, dovecot también soporta cuotas en el protocolo pop3. # 2. El límite de la cuota tendrá como base el espacio disponible en el disco. Sin embargo, el sistema de cuotas de dovecot 2. acepta como límites una cantidad de mensajes. # 3. La limitación se aplica a todos los usuarios por igual, aunque dovecotsoporta la definición de cuotas por usuario.

Configuración
El sistema de cuotas en dovecot se realiza con plugins. Basta con activar esos plugins y configurar sus opciones. Son necesarios 2 plugins: # quota: 1. se encarga de todo el sistema de gestión de cuotas; # imap_quota: 2. reporta información sobre las cuotas, usando el protocolo imap. Toda la configuración se efectúa en el archivo de configuración/etc/dovecot/dovecot.conf:

/etc/dovecot/dovecot.conf

# [...]

## ## IMAP specific settings ##

protocol imap { # Login executable location. #login_executable = /usr/lib/dovecot/imap-login

# IMAP executable location. Changing this allows you to execute other # binaries before the imap process is executed. # # This would write rawlogs into user's ~/dovecot.rawlog/, if it exists: # mail_executable = /usr/lib/dovecot/rawlog /usr/lib/dovecot/imap

# </usr/doc/dovecot-common/wiki/Debugging.Rawlog.txt> # # This would attach gdb into the imap process and write backtraces into # /tmp/gdbhelper.* files: # mail_executable = /usr/lib/dovecot/gdbhelper /usr/lib/dovecot/imap # #mail_executable = /usr/lib/dovecot/imap

# Maximum IMAP command line length in bytes. Some clients generate very long # command lines with huge mailboxes, so you may need to raise this if you get # "Too long argument" or "IMAP command line too large" errors often. #imap_max_line_length = 65536

# Maximum number of IMAP connections allowed for a user from each IP address. # NOTE: The username is compared case-sensitively. #mail_max_userip_connections = 10

# Support for dynamically loadable plugins. mail_plugins is a space separated # list of plugins to load.

#mail_plugins =

mail_plugins = quota imap_quota

#mail_plugin_dir = /usr/lib/dovecot/modules/imap

# [...]

En seguida, debe definirse el tipo y los valores de la cuota. En este ejemplo es impuesto un límite de 20 Mb de almacenamiento en el maildir de cada usuario. La configuración también está almacenada en /etc/dovecot/dovecot.conf.

/etc/dovecot/dovecot.conf

# [...]

## ## Plugin settings ##

plugin { # Here you can give some extra environment variables to mail processes. # This is mostly meant for passing parameters to plugins. %variable # expansion is done for all values.

# Quota plugin. Multiple backends are supported: # dirsize: Find and sum all the files found from mail directory. # disk I/O. # # # # # Quota limits are set using "quota_rule" parameters, either in here or in # userdb. It's also possible to give mailbox-specific limits, for example: # # quota_rule = *:storage=1048576 quota_rule2 = Trash:storage=102400 Extremely SLOW with Maildir. It'll eat your CPU and

dict: Keep quota stored in dictionary (eg. SQL) maildir: Maildir++ quota fs: Read-only support for filesystem quota

# User has now 1GB quota, but when saving to Trash mailbox the user gets # additional 100MB. # # Multiple quota roots are also possible, for example: # # # # quota = dict:user::proxy::quota quota2 = dict:domain:%d:proxy::quota_domain quota_rule = *:storage=102400 quota2_rule = *:storage=1048576

# Gives each user their own 100MB quota and one shared 1GB quota within

# the domain. # # You can execute a given command when user exceeds a specified quota limit. # Each quota root has separate limits. Only the command for the first # exceeded limit is excecuted, so put the highest limit first. # Note that % needs to be escaped as %%, otherwise "% " expands to empty. # 95 # 80 quota_warning = storage=95%% /usr/local/bin/quota-warning.sh

quota_warning2 = storage=80%% /usr/local/bin/quota-warning.sh

#quota = maildir

quota = maildir quota_rule = *:storage=20M

# [...]

Reiniciar el servidor:

root@server:~# /etc/init.d/dovecot restart

Verificación
Verificar que el servicio IMAP soporta las cuotas:

root@server:~# telnet 127.0.0.1 imap

Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready. a001 capability * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS QUOTA STARTTLS AUTH=PLAIN a001 OK Capability completed. a002 logout * BYE Logging out a002 OK Logout completed. Connection closed by foreign host.

La respuesta al comandocapability debe mostrar que el servicio soporta las cuotas.

Clientes
La mayor parte de los clientes de e-mail actuales pueden proveerle al usuario informaciones sobre cuotas. En el caso de thunderbird, este soporte está proveído por add-ons, Para esto, debe buscar: “quotas” en el sitiohttps://addons.mozilla.org/thunderbird. Después de la instalación, es posible obtener otras informaciones acerca del estado del buzón de correo con relación al límite impuesto por las cuotas:

En muchos clientes, borrar un e-mail implica una copia en la carpeta “Trash” y no borrar el original. Si la cota ya haya sido superada, esta operación podrá ser negada con un error

“Cuota Excedida”. En este caso, el mensaje debe ser borrado directamente sin la copia en “Trash”. En el thunderbird, las teclas Shift+ Del permiten borrar un mensaje sin enviarlo al “Trash”.

5.2.1 Servidor SMTP
Un servidor SMTP debe representar una preocupación constante en el ámbito de la seguridad. Si el servidor esté apenas configurado, puede ser eventualmente utilizado por terceros, para el envío de mensajes en nombre de otro o para envío de spam. Esto puede ocasionar situaciones graves, como la inclusión del dominio en las listas negras (donde quedaría impedido para enviar e-mails genuinos), o puede ocasionar consecuencias legales.

Objetivo
Instalar un servidor de envío dee-mails basado en el protocolo SMTP para la red local.

Instalación
root@server:~# aptitude install postfix

La instalación ofrece una serie de configuraciones predefinidas.

Seleccionar la opción Site Internet:

También será solicitado el nombre de e-mail que debe ser “home.lan”:

Configuración
Aunque el usuario root recibe e-mails, es preferible que estos sean redirigidos hacia un usuario “humano”. Estos “aliases” son definidos en el archivo /etc/aliases:

/etc/aliases

# See man 5 aliases for format postmaster: root: fribeiro root

Siempre que se edita el archivo /etc/aliases, la base de datos correspondiente debe ser actualizada:

root@server:~# newaliases

El origen de los e-mails enviados, o sea, la parte que sigue al ”@”, se define en la única línea del archivo/etc/mailname:

/etc/mailname

home.lan

La configuración restante se almacena en el archivo /etc/postfix/main.cf. Durante la Instalación del servidor IMAP, quedó definida que la localización y el tipo de buzones era “Maildir”. La configuración de postfix debe indicar que la entrega del correo debe ser hecha en la misma localización, lo que se hace en el archivo /etc/postfix/main.cf:

/etc/postfix/main.cf

# [...] # Entregar correio em ~/Mailbox home_mailbox = Maildir/ # [...]

Definir las direcciones por donde el postfix acepte recibir las conexiones:

/etc/postfix/main.cf

# [...] # Interfaces por onde são aceites ligações

inet_interfaces = 127.0.0.1, 192.168.1.100 # [...]

Definir también la lista de clientes privilegiados (aquellos que pueden, por ejemplo, usar el servidor para enviar e-mails para otro dominio (relay)):

/etc/postfix/main.cf

# [...] # Clientes de confianca mynetworks = 127.0.0.0/8, 192.168.1.0/24 # [...]

Definir la lista de dominios para los cuales el servidor es el destino final:

/etc/postfix/main.cf

# Emails para estes dominios sao entregues neste servidor mydestination = home.lan, server.home.lan, localhost.home.lan, localhost

Conexiones encriptadas
Las conexiones al servidor pueden generarse de modo encriptado (TLS) (smtpd_use_tls = yes) También puede especificarse que sólo sean aceptadas las autenticaciones (smtpd_tls_auth_only = yes). Pueden utilizarse también los Certificados Autofirmados que se generaron previamente, en lugar de los generados automáticamente durante la instalación de postfix:

/etc/postfix/main.cf

# [...] # TLS parameters # smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_cert_file = /etc/ssl/certs/server.crt smtpd_tls_key_file = /etc/ssl/private/server.key.insecure smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache # [...]

Seguridad
Deben definirse una restricciones rigurosas para el acceso al servidor SMTP.

/etc/postfix/main.cf

# [...] ## Seguranca # Aceitar ligacoes apenas a partir da rede local smtpd_client_restrictions = permit_mynetworks, reject

# Utilizadores locais podem enviar emails para qualquer endereco smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

# Rejeitar ligacoes de clientes que nao saibam o seu hostname

smtpd_helo_restrictions = reject_unknown_sender_domain

# Rejeitar email de dominios que nao existem smtpd_sender_restrictions = reject_unknown_sender_domain

# [...]

Reiniciar el servicio SMTP:

root@server:~# /etc/init.d/postfix restart

Verificación
Para esto de conectarse al servidor smtp:

root@server:~# telnet localhost smtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 server.home.lan ESMTP Postfix (Debian/GNU) EHLO localhost 250-server.home.lan 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN

250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM: fribeiro 250 2.1.0 Ok RCPT TO: fribeiro 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> Subject: test testing 123 . 250 2.0.0 Ok: queued as A2BF81ED81 QUIT 221 2.0.0 Bye Connection closed by foreign host.

La línea 250-STARTTLS indica que el servidor acepta conexiones encriptadas. Sin embargo, en esta prueba no se utiliza TLS, porque la conexión se hace desde el propio sistema, que está considerado como seguro..

Configuración de clientes
En un cliente de e-mail, como Thunderbird, cree una cuenta de correo con salida (SMTP), indicando como dirección la del servidor (192.169.1.100) y el puerto 25. En la zona de seguridad, no se debe activar la autenticación. En las opciones de conexión segura,

pueden ser usado el protocolo TLS o ninguno. El protocoloSSL no podrá ser usado (por ahora).

Enviar algunos mensajes a destinatarios reales y ficticios: Deben ser entregados los emails que tengan como destinatarios los usuarios válidos del domínio home.lan (por ejemplo: [email protected]). Los e-mails para los destinatarios ficticios del dominio home.lan serão recusado imediatamente (ex. [email protected]). Demais emails (mesmo para utilizadores e domínios válidos) serán rechazados por los servidores de destino. En este caso, y después de algún tiempo, nuestro servidor generará un mensaje donde se informa el rechazo del pedido.

5.2.2 Servidor SMTP com autenticación
Cuando se instala el Servidor SMPT, su uso se limita a la red interna. Si es necesario acceder al servidor a partir del exterior (por ejemplo, a partir de Internet) debe preverse un mecanismo que limite su acceso sólo a los usuarios autorizados. Esto con el fin de prevenir el riesgo de que nuestro servidor sea considerado como un open relay.

Objetivo
Complementar la instalación del Servidor SMPT con un mecanismo de autenticación de usuarios, en este caso vamos a emplear el soporte sasl de dovecot.

Configuración

La configuración está divida en dos partes. Primero, la configuración de dovecot para que trabaje con postfix. Y segundo, la configuración de postfix para autenticar usuarios en dovecot:

Dovecot
Se debe modificar el archivo que está almacenado en la siguiente dirección /etc/dovecot/dovecot.conf.

/etc/dovecot/dovecot.conf

# [...] auth default { # Space separated list of wanted authentication mechanisms: # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi mechanisms = plain login # [...] # It's possible to export the authentication interface to other programs: socket listen { #master { # Master socket is typically used to give Dovecot's local delivery # agent access to userdb so it can find mailbox locations. It can # however also be used to disturb regular user authentications. # WARNING: Giving untrusted users access to master socket may be a # security risk, don't give too wide permissions to it! #path = /var/run/dovecot/auth-master

#mode = 0600 # Default user/group is the one who started dovecot-auth (root) #user = #group = #} client { # The client socket is generally safe to export to everyone. Typical use # is to export it to your SMTP server so it can do SMTP AUTH lookups # using it. path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } # [...]

Reiniciar el servicio dovecot:

root@server:~# /etc/init.d/dovecot restart

Postfix

Se debe modificar el archivo que está almacenado en la siguiente dirección /etc/postfix/main.cf: Se deben añadir los parámetros SASL:

/etc/postfix/main.cf

# [...] # SASL parameters smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes # [...]

Las restricciones de seguridad deben permitir el acceso a los usuarios autenticados vía sasl:

/etc/postfix/main.cf

# [...] ## Seguranca # Aceita ligações apenas a partir da rede local ou utilizadores autenticados smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

# Utilizadores locais ou autenticados podem enviar emails para qualquer endereco

# Rejeitar todos os outros smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination # [...]

Reiniciar el servicio postfix:

root@server:~# /etc/init.d/postfix restart

Configuración de clientes
En las opciones de seguridad dentro de la configuración del servidor smtp de los clientes, debe indicarse cuál usuario se autenticará:

Ao enviar uma mensagem, será pedida a respectiva password.

5.2.3 Relay SMTP
Antes de iniciar
Teóricamente, el servidor SMTP que fue configurado para la red local puede enviar e-mails para cualquier destinatario. Pero en la práctica, es poco probable que dichos e-mails lleguen a su destino final. Esto ocurre porque los proveedores de acceso a internet, con el

fin de filtrar el envío de mensajes no solicitados (spam), imponen reglas muy estrictas para aceptar y re-encaminar e-mails. Asimismo, aunque el e-mail llegara a su destino, cualquier respuesta eventual estaría dirigida para el remitente (por ejemplo [email protected]) de un dominio que no existe fuera de la red local. Y por tanto no llegaría de vuelta. Por tanto, si se quiere enviar correos hacia el exterior, se deben resolver dos cuestiones:


El servidor smtp de nuestro proveedor de acceso a internet (ISP) debe aceptar una conexión de nuestro servidor.  La dirección de correo del remitente debe referir a un dominio válido, para que pueda recibir respuestas. Para resolver estas cuestiones, lo más simple es utilizar servidores con direcciones válidas. De esta forma, al enviar e-mails para el exterior, debe ocurrir lo siguiente:


Nuestro servidor enviará el e-mail a través de un servidor SMTP externo. En caso necesario, deberá autenticarse como usuario válido.  Nuestra dirección de e-mail debe ser sustituida por una dirección de correo electrónico válido en el exterior. En este caso, vamos a utilizar el servidor SMTP de Gmail (smtp.gmail.com) y una dirección de Gmail ([email protected]).

Instalación
La instalación de los paquetes de autenticación:

root@server:~# aptitude install libsasl2-modules sasl2-bin

Configuración
saslauthd
El arranque automático del servicio saslauthd se configura en el archivoo /etc/default/saslauthd:

/etc/default/saslauthd

# # Settings for saslauthd daemon # Please read /usr/share/doc/sasl2-bin/README.Debian for details. #

# Should saslauthd run automatically on startup? (default: no) START=yes

#[...]

Reiniciar el servicio saslauthd:

root@server:~# /etc/init.d/saslauthd restart

relay
Para usar un servidor smtp intermedio (o relay), se configura postfix en el archivo /etc/postfix/main.cf: En primer lugar, se indicará el servidor smtp de Gmail como “relay”.

/etc/postfix/main.cf

# [...] # # relay #

relayhost = [smtp.gmail.com]

Luego, se configurará una conexión encriptada (tls) y autenticada (sasl_auth), así como la localización de los archivos con los parámetros de autenticación (password_maps):

/etc/postfix/main.cf

# [...] #

# SASL SUPPORT FOR SERVERS # # The following options set parameters needed by Postfix to enable # Cyrus-SASL support for authentication of mail servers. # smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous

Los parámetros de autenticación del servidor smtp de Gmail están almacenados en el archivo/etc/postfix/sasl/sasl_passwd:

/etc/postfix/sasl/sasl_passwd

[smtp.gmail.com]

pinguim.ribeiro:myGmailPassword

Por seguridad, el archivo /etc/postfix/sasl/sasl_passwd sólo debe permitir el acceso del usuario root:

root@server:# chmod 600 /etc/postfix/sasl/sasl_passwd

Siempre que el archivo /etc/postfix/sasl/sasl_passwd fuese alterado, la base de datos correspondiente debe ser regenerada:

root@server:# postmap /etc/postfix/sasl/sasl_passwd

mapeo de direcciones
Al enviar e-mails al exterior, las direcciones internas ([email protected]) deben ser substituidas por direcciones externas ([email protected]).

Por tanto Postfix debe ser configurado para usar el archivo para mapear direcciones. Para esto se debe modificar el archivo /etc/postfix/main.cf:

/etc/postfix/main.cf

smtp_generic_maps = hash:/etc/postfix/generic

El archivo para mapear direcciones consiste en una lista de direcciones locales con sus correspondientes direcciones externas. El tamaño de la lista no está limitado, por lo que puede ser aumentada para contener las direcciones de todos los usuarios locales. Este fichero se encuentra en /etc/postfix/generic:

/etc/postfix/generic

[email protected]

[email protected]

Siempre que el archivo /etc/postfix/generic sea modificado, debe regenerarse la base de datos correspondiente:

root@server:# postmap /etc/postfix/generic

Reiniciar postfix:

root@server:~# /etc/init.d/postfix restart

5.2.4 Teste Open Relay
Objetivo
Es crucial asegurarse de que el servidor de envío de e-mail (SMTP) no sea accesible ni pueda ser utilizado por terceros (open relay). En caso contrario, nuestro servidor puede ser utilizado para el envío de spam y acabar en una lista negra de servidores abiertos (blacklist). Esto haría imposible enviar e-mails legítimos a través de otros servidores. La mejor manera de certificar que nuestro servidor nunca sea utilizado como open relay es hacer el siguiente test.

Verificación
En http://spamlinks.net/prevent-secure-relay-test.htm existen varias conexiones a servicios que verifican la seguridad de un servidor SMTP, haciendo varios intentos de acceso a nuestro servidor a partir de diferentes métodos.

Una de las pruebas utiliza una conexión telnet desde uno de los servidores del test. Éste intenta conectarse en seguida a nuestro servidor SMTP y el resultado del test se muestra en la ventana de telnet:

server:# telnet rt.njabl.org 2500 Trying 69.28.95.130... Connected to rt.njabl.org. Escape character is '^]'.

If you are excluded from testing, connect again on port 2501 to force the test.

testing 81.84.15.97 Net::SMTP>>> Net::SMTP(2.29) Net::SMTP>>> Net::SMTP>>> Net::SMTP>>> Net::SMTP>>> Net::SMTP>>> Net::Cmd(2.26) Exporter(5.58) IO::Socket::INET(1.27) IO::Socket(1.28) IO::Handle(1.24)

>>> EHLO rt.njabl.org <<< 250-server.home.lan <<< 250-PIPELINING <<< 250-SIZE 10240000 <<< 250-VRFY

<<< 250-ETRN <<< 250-STARTTLS <<< 250-ENHANCEDSTATUSCODES <<< 250-8BITMIME <<< 250 DSN >>> MAIL FROM:<[email protected]> <<< 250 2.1.0 Ok >>> RCPT TO:<[email protected]> <<< 554 5.7.1 <rt.njabl.org[69.28.95.130]>: Client host rejected: Access denied >>> RSET <<< 250 2.0.0 Ok >>> MAIL FROM:<[email protected]> <<< 250 2.1.0 Ok >>> RCPT TO:<[email protected]> <<< 554 5.7.1 <rt.njabl.org[69.28.95.130]>: Client host rejected: Access denied # [...] >>> RSET <<< 250 2.0.0 Ok >>> MAIL FROM:<[email protected]> <<< 250 2.1.0 Ok >>> RCPT TO:<relaytest%[email protected]>

<<< 554 5.7.1 <rt.njabl.org[69.28.95.130]>: Client host rejected: Access denied Can't relay Connection closed by foreign host.

En este caso, todas las tentativas de acceso fallaron. Por tanto, nuestro servidor puede considerarse como razonablemente seguro.

5.3.1 amavisd-new
Objetivo
Integrar un sistema de filtros en el servidor smtp. Después de la configuración, en el momento en que el servidor smtp (postfix) reciba un email, va a enviarlo al sistema de filtros (amavisd-new) que invocará diversos filtros y alterará los encabezados de acuerdo con los resultados, para devolverlo luego al servidor smtp.

Instalación
root@server:~# aptitude install amavisd-new

El paquete amavisd-new sugiere la instalación de otros paquetes, necesarios para analizar archivos comprimidos, con el fin de que su contenido sea examinado:

root@server:~# aptitude install arj cabextract cpio lha lzop nomarch ripole tnef unrar zoo

Configuración
La configuración consiste en indicarle al servidorsmtp (postfix) para que envíe los e-mail al sistema de filtros y los vuela a recibir luego de su análisis. Para esto, debe modificar el archivo /etc/postfix/main.cf:

/etc/postfix/main.cf

# [...] #

# amavisd-new scanner # content_filter = amavis:[127.0.0.1]:10024 receive_override_options = no_address_mappings

Luego, debe configurar el postfix o servicio para que reciba los e-mails filtrados por amavisd-new, lo que se configura en el archivo /etc/postfix/master.cf:

/etc/postfix/master.cf

# [...] # # amavisd-new scanner # amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_generic_maps=

127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions=

-o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient _checks -o local_header_rewrite_clients= -o local_recipient_maps= -o relay_recipient_maps= -o strict_rfc821_envelopes=yes

Reiniciar el servicio SMTP:

root@server:~# /etc/init.d/postfix restart

Verificación
Debe asegurar que los servicios funcionen:

root@server:~# netstat -tap

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address PID/Program name # [...] tcp LISTEN tcp LISTEN # [...] 0 0 localhost:10024 3672/amavisd (maste 0 0 localhost:10025 3759/master *:* Foreign Address State

*:*

Comprobar que amavisd-new acepte conexiones:

root@server:~# telnet localhost 10024 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready quit 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel Connection closed by foreign host.

Comprobar también que postfix pueda recibir de vuelta los mensajes filtrados:

root@server:~# telnet localhost 10025 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

220 server.home.lan ESMTP Postfix (Debian/GNU) quit 221 2.0.0 Bye Connection closed by foreign host.

El sistema de filtros está operando. El paso siguiente debe ser la instalación y configuración de los filtros.

5.3.2 Filtro Anti-vírus
Objetivo
Integrar un anti-virus en el sistema de filtros de e-mails.

Instalación
Ver instalación de ClamAV y instalación de amavisd-new.

Configuración
Debemos activar el filtro anti-virus en el archivo /etc/amavis/conf.d/15-content_filter_mode:

/etc/amavis/conf.d/15-content_filter_mode

# [...]

# # Default antivirus checking mode # Please note, that anti-virus checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines:

@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

# [...]

Adicionar el usuario clamav al grupo amavis:

root@server:~# adduser clamav amavis

Reiniciar los servicios:

root@server:~# /etc/init.d/amavis restart root@server:~# /etc/init.d/clamav-daemon restart

Verificación
Para esto, puede simularse el envío de un e-mail con un “virus”, usando como contenido el archivo de pruebasEICAR:

root@server:~# telnet 127.0.0.1 10024 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready EHLO localhost 250-[127.0.0.1] 250-VRFY 250-PIPELINING

250-SIZE 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 XFORWARD NAME ADDR PORT PROTO HELO SOURCE MAIL FROM:<postmaster> 250 2.1.0 Sender <postmaster> OK RCPT TO:<postmaster> 250 2.1.5 Recipient <postmaster> OK DATA 354 End data with <CR><LF>.<CR><LF> X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* . 250 2.7.0 Ok, discarded, id=02582-02 - INFECTED: Eicar-TestSignature(69630e4574ec6798239b091cda43dca0:69) QUIT 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel Connection closed by foreign host.

El “vírus” fue correctamente detectado. El servidor de e-mail tiene ahora un filtro anti-virus integrado. Los mensajes que contengan virus no serán entregados. En lugar del mensaje, será entregada una notificación de la detección del e-mail con virus.

5.3.3 Filtro Anti-spam

Objetivo
Integrar un filtro anti-spam al sistema de filtros de e-mails.

Instalación
Ver instalación de Spamassassin y instalación de amavisd-new].

Configuración
La configuración consiste en activar el filtro anti-spam en el archivo /etc/amavis/conf.d/15content_filter_mode:

/etc/amavis/conf.d/15-content_filter_mode

# [...]

# # Default SPAM checking mode # Please note, that anti-spam checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines:

@bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

# [...]

De manera predeterminada, los e-mails considerados spam son ubicados en cuarentena sin que información alguna llegue al destinatario. En esta configuración queremos que los e-mails indiquen apenas la probabilidad despam, dejándole al usuario que elija las

acciones a realizar. Las configuraciones personalizadas se almacenan en el archivo /etc/amavis/conf.d/50-user:

/etc/amavis/conf.d/50-user

use strict;

# # Place your configuration directives here. those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file They will override

$sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt above that level = undef; # add spam info headers if at, or

$sa_tag2_level_deflt = 6.31; that level $sa_kill_level_deflt = 9999;

# add 'spam detected' headers at

# triggers spam evasive actions

#------------ Do not modify anything below this line ------------1; # insure a defined return

La “sensibilidad” del filtroanti-spam puede ser afinada alterando el valor $sa_tag2_level_deflt: Si tiene un valor más bajo, entonces serán necesarios menos indicadores para que un mensaje sea considerado como spam. Sin embargo, este valor no debe ser inferior a 5, porque corremos el riesgo de que todos los mensajes aun los legítimos, sean considerados como spam.

Reiniciar el servicio amavisd-new:

root@server:~# /etc/init.d/amavis restart

5.4.1 Fetchmail
Objetivo
La instalación del paquete fetchmail permite la descarga de e-mails alojados en servidores externos en nuestro servidor local. fetchmail soporta varios protocolos de acceso y esquemas de autenticación.

Instalación
root@server:~# aptitude install fetchmail

Configuración
La configuración será definida por el usuario. Consiste en la creación del archivo de configuración de fetchmail y en la creación de una tarea periódica que ejecuto el fetchmail para que recoja los e-mails.

Configuración personal
Cada usuario debe crear en su home el archivo .fetchmailrc. Por ejemplo, el usuario fribeiro deberá guardar su configuración personal de fetchmail en/home/fribeiro/.fetchmailrc:

/home/fribeiro/.fetchmailrc

poll pop.gmail.com proto pop3 user "pinguim.ribeiro" pass "password" is "[email protected]" options ssl keep

En este ejemplo, fetchmail descargará los e-mails del usuario pinguim.ribeiro del servidor pop.gmail.com, utilizando el protocolo pop3 y una conexión ssl, para luego redirigirlos al usuario [email protected]. La opción keep mantiene los mensajes en el servidor, lo que es útil en la fase de pruebas. Después, esta opción puede ser retirada. Con algunos servidores pop3, es necesario añadir la opción uidl, que obliga al cliente a mantener una lista de los mensajes ya descargados, lo que garantiza que los nuevos mensajes serán descargados.

Por seguridad, como el archivo contiene contraseñas, sólo puede ser accesible al propio usuario:

fribeiro@server:~$ chmod 600 .fetchmailrc

Ejecución periódica
Luego, debe ser creada una tarea periódica para ejecutar el fetchmail cada 10 minutos, por ejemplo:

fribeiro@server:~$ crontab -e # m h dom mon dow command

*/10 * * * * /usr/bin/fetchmail &> /dev/null

Verificación
Es posible probar la ejecución del fetchmail con el comando fetchmail -v, desde uno de los clientes:

fribeiro@server:~$ fetchmail -v fetchmail: 6.3.18 querying pop.gmail.com (protocol POP3) at Sat 22 Jan 2011 02:25:43 PM WET: poll started Trying to connect to 209.85.227.109/995...connected. fetchmail: Server certificate: fetchmail: Issuer Organization: Google Inc fetchmail: Issuer CommonName: Google Internet Authority fetchmail: Subject CommonName: pop.gmail.com fetchmail: pop.gmail.com key fingerprint: 6B:C4:63:05:87:1E:72:88:ED:81:C5:A2:51:6B:B7:B6 fetchmail: POP3< +OK Gpop ready for requests from 94.132.12.38 f33pf1347527wej.11 fetchmail: POP3> CAPA

fetchmail: POP3< +OK Capability list follows fetchmail: POP3< USER fetchmail: POP3< RESP-CODES fetchmail: POP3< EXPIRE 0 fetchmail: POP3< LOGIN-DELAY 300 fetchmail: POP3< X-GOOGLE-VERHOEVEN fetchmail: POP3< UIDL fetchmail: POP3< . fetchmail: POP3> USER pinguim.ribeiro fetchmail: POP3< +OK send PASS fetchmail: POP3> PASS * fetchmail: POP3< +OK Welcome. fetchmail: POP3> STAT fetchmail: POP3< +OK 0 0 fetchmail: No mail for pinguim.ribeiro at pop.gmail.com fetchmail: POP3> QUIT fetchmail: POP3< +OK Farewell. fetchmail: 6.3.18 querying pop.gmail.com (protocol POP3) at Sat 22 Jan 2011 02:25:45 PM WET: poll completed fetchmail: normal termination, status 1

5.5.1 Roundcube
Objetivo

El paquete Roundcube, con su interfaz basada en la tecnología ajax, permite la consulta de e-mails de una manera fácil e cómoda.

Instalación
root@server:~# aptitude install roundcube roundcube-sqlite

Durante esta fase, se solicitará información para la configuración de la base de datos:

El tipo de base de datos a seleccionar será sqlite:

Configuración
La instalación de roundcube genera automáticamente un archivo de configuración para integrarse con el servidorapache2. Sin embargo, por seguridad, la configuración no está activada automáticamente. Para activarla, es necesario editar el archivo de configuración que se encuentra en /etc/apache2/conf.d/roundcube:

/etc/apache2/conf.d/roundcube

# Those aliases do not work properly with several hosts on your apache server # Uncomment them to use it or adapt them to your configuration Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/ Alias /roundcube /var/lib/roundcube

[...]

roundcube debe restringir el acceso apenas a nuestro servidor de e-mail, lo que puede ser configurado en el archivo /etc/roundcube/main.inc.php:

/etc/roundcube/main.inc.php

#[...]

// the mail host chosen to perform the log-in // leave blank to show a textbox at login, give a list of hosts // to display a pulldown menu or set one host as string. // To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// $rcmail_config['default_host'] = 'localhost';

#[...]

Para que o roundcube cree correctamente la dirección e-mail de los nuevos usuarios, debe indicarse el nombre del dominio “home.lan”:

/etc/roundcube/main.inc.php

#[...]

// This domain will be used to form e-mail addresses of new users // Specify an array with 'host' => 'domain' values to support multiple hosts $rcmail_config['mail_domain'] = 'home.lan';

#[...]

La dirección e-mail, así como otros parámetros, pueden afinarse posteriormente en las configuraciones deroundcube.

Obligar conexiones seguras
OOpcionalmente, en caso de que se tenga configurado Apache2 con soporte SSL, las conexiones seguras (https) pueden ser configuradas como obligatorias en el archivo de configuración /etc/roundcube/main.inc.php:

/etc/roundcube/main.inc.php

#[...]

// enforce connections over https // with this option enabled, all non-secure connections will be redirected. // set the port for the ssl connection as value of this option if it differs from the default 443 $rcmail_config['force_https'] = TRUE;

#[...]

Reiniciar el servicio apache2:

root@server:~# /etc/init.d/apache2 restart

Verificación
Desde un navegador de internet, escriba la dirección de acceso a la interfaz webmailhttp://192.168.1.100/roundcube:

La página de roundcube deberá aparecer y, si configuró la opción de conexiones seguras, la dirección debe comenzar por https. roundcube dispone de muchas opciones de configuración, como la lengua de la interfaz, el huso horario y el e-mail del usuario. Se sugiere una visita a lasconfiguraciones personales (Settings), luego del primer login.

6.1.1 Logwatch
Objetivo
Intalar el paquete Logwatch, para recibir diariamente por e-mail, un resumen de los archivos log del sistema. O logwatch se ejecuta diariamente, analiza los archivos log y envía un resumen por e-mail al administrador (root) del sistema. Es importante que el alias del root esté correctamente definido para un usuario ‘humano’, en el archivo /etc/aliases Este paso ya tuvo que haberse realizado durante la configuración de Servidor SMTP.

Instalación
root@server:~# aptitude install logwatch

Verificación
logwatch enviará sus resultados por e-mail para el root; Sin embargo, este paso también puede ejecutarse en un terminal:

root@server:~# logwatch

################### Logwatch 7.3.6 (05/19/07) #################### Processing Initiated: Thu Jan 6 14:28:31 2011

Date Range Processed: yesterday ( 2011-Jan-05 ) Period is day. Detail Level of Output: 0 Type of Output/Format: stdout / text Logfiles for Host: server ##################################################################

--------------------- Disk Space Begin ------------------------

Filesystem /dev/sda1 /dev/sda6

Size 2.5G 5.2G

Used Avail Use% Mounted on 1.3G 139M 1.3G 5.1G 51% / 3% /home

---------------------- Disk Space End -------------------------

###################### Logwatch End #########################

6.2.1 Munin
Objetivo
El paquete munin permite monitorizar diversos parámetros de uno o varios sistemas, por ejemplo, el estado y carga de los servicios, temperaturas, espacio en disco, etc. munin funciona según una arquitectura cliente-servidor, en que un sistema servidor recoge y organiza datos recibidos de varios sistemas clientes. Para monitorizar sólo un servidor, debe instalarse y configurarse los paquetes cliente y servidor en el mismo sistema. El paquete munin utiliza una interfaz web. Por tanto, es necesario instalar un servidor http. Para más informaciones, puede consultar la instalación deApache2 y Apache2 SSL, si prefiere conexiones seguras.

Instalación
Cliente Del lado del cliente, la instalación consiste en instalar el paquete cliente y algunos extras:

root@server:~# aptitude install munin-node munin-plugins-extra

Servidor Del lado del servidor es necesaria la instalación del paquete munin:

root@server:~# aptitude install munin

Configuración
Cliente La configuración del sistema cliente consiste en añadir la dirección del servidor, a la lista de direcciones que pueden establecer conexión con el cliente. La dirección debe añadirse en el formato de expressão regular. En nuestro caso, como el cliente y el servidor es lo mismo, es suficiente añadir la dirección 127.0.0.1. Esta configuración debe efectuarse en el archivo /etc/munin/munin-node.conf:

/etc/munin/munin-node.conf

# [..]

# A list of addresses that are allowed to connect.

This must be a

# regular expression, since Net::Server does not understand CIDRstyle # network notation unless the perl module Net::CIDR is installed. You # may repeat the allow line as many times as you'd like

allow ^127\.0\.0\.1$

# [..]

El servicio cliente debe ser reiniciado:

root@server:~# /etc/init.d/munin-node restart

Servidor En el servidor deben añadirse a la configuración las direcciones de los clientes a contactar, lo que puede hacerse en el archivo /etc/munin/munin.conf:

/etc/munin/munin.conf

# [...]

# a simple host tree [server.home.lan] address 127.0.0.1

use_node_name yes

# [...]

En caso de que existan más clientes, sólo se requiere añadir los nombres respectivos y sus direcciones en bloques semejantes a los del listado. También debe definirse un rango de direcciones IP, a partir de las cuales se pueda acceder a la interfaz webmunin: la opción Allow from 192.168.1.0/24 sólo permite el acceso a partir de la red interna. En caso de que se pretenda acceder desde cualquier dirección, se debe especificar Allow from All. Esta configuración se almacena en el archivo /etc/apache2/conf.d/munin:

/etc/apache2/conf.d/munin

Alias /munin /var/cache/munin/www <Directory /var/cache/munin/www> Order allow,deny #Allow from localhost 127.0.0.0/8 ::1 Allow from 192.168.1.0/24 # Allow from all Options None

# [...]

Segurança
Debido a que munin ofrece mucha información acerca de las características del sistema, su nivel de acceso debe ser restringido. El servidor httpd apache2 puede proteger un directorio, dando acceso sólo a los usuarios devidamente autenticados y autorizados. Como se pretende el máximo de seguridad, la autenticación se realizará mediante el método de autenticación “Digest” del apache2, que transmite los datos de forma segura.

La configuración se realiza en dos etapas. En primer lugar, debe crearse el archivo de autorizaciones para el recurso Munin en el servidor apache2, con los usuarios y sus respectivas contraseñas:

root@server:~# htdigest -c /etc/munin/munin-htpasswd Munin fribeiro Adding password for fribeiro in realm munin. New password: Re-type new password:

La opción -c crea un archivo de nuevo. Para añadir otro usuario, esta opción debe ser omitida. En segundo lugar, modificamos la configuración de apache2 para exigir un usuario y contraseña válidos, para acceder al directorio /munin. Esto puede hacerse en el archivo /etc/apache2/conf.d/munin:

/etc/apache2/conf.d/munin

# [...]

# This file can be used as a .htaccess file, or a part of your apache # config file. # # For the .htaccess file option to work the munin www directory # (/var/cache/munin/www) must have "AllowOverride all" or something # close to that set. #

AuthUserFile /etc/munin/munin-htpasswd AuthName "Munin" AuthType Digest require valid-user

# [...]

El módulo de autenticación auth_digest debe estar activo:

root@server:~# a2enmod auth_digest

Reiniciar el servidor apache2:

root@server:~# /etc/init.d/apache2 restart

Verificación
Verificar el funcionamiento de munin, Debe abrir un navegador de Internet e indicar http://192.168.1.100/muninen la barra de direcciones:

Plugins
Es posible expandir la funcionalidad de munin, recurriendo a diversos plugins disponibles en el sitio de Internet del proyecto, en http://muninexchange.projects.linpro.no. Pero su configuración se escapa del ámbito de esta guía.

7.1.1 Fail2Ban
Objectivo
Fail2Ban es una aplicación que analiza continuamente los ficheros log y bloquea las direcciones Internet de donde se hayan originado varias tentativas fallidas de acceso con contraseña inválida.

Fail2Ban es extremadamente eficaz en la prevención de ataques de fuerza bruta y ataques de negación de servicio(DoS).

Instalación
root@server:~# aptitude install fail2ban whois

Configuración
La configuración que resulta de la instalación de fail2ban activa el puerto ssh. Sin embargo, es posible monitorizar y proteger otros puertos. La documentación de fail2ban aconseja que toda la configuración se realice en archivos con la extensión .local. Estos pueden ser creados copiando el archivo de la configuración original, con la extensión .conf:

root@server:~# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Toda la configuración será efectuada, a partir de este momento, en el archivo /etc/fail2ban/jail.local. En una primera etapa, definimos cuáles son las direcciones que no estarán sujetas a restricciones (la dirección local y la red local), por cuánto tiempo estarán bloqueadas las direcciones de donde provengan las amenazas (1800 segundos (30 minutos)) y después de cuántas tentativas (3 tentativas permitidas). Esta configuración debe realizarse en el archivo /etc/fail2ban/jail.local:

/etc/fail2ban/jail.local

# [...]

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host ignoreip = 127.0.0.1 192.168.1.0/24 bantime = 1800

maxretry = 3

# [...]

También se define la dirección e-mail que recibirá las alertas:

/etc/fail2ban/jail.local

# [...]

# # Destination email address used solely for the interpolations in # jail.{conf,local} configuration files. destemail = root@localhost

# [...]

Luego, debe configurarse la acción a realizar cuando se detecta un posible ataque. En este caso, la dirección IP del atacante es bloqueada y u e-mail es enviado al administrador del sistema.

/etc/fail2ban/jail.local

# [...]

# # ACTIONS #

# Default banning action (e.g. iptables, iptables-new,

# iptables-multiport, shorewall, etc) It is used to define # action_* variables. Can be overriden globally or per # section within jail.local file banaction = iptables-multiport

# [...]

# # Action shortcuts. To be used to define action parameter

# [...]

# Choose default action. 'action' with the

To change, just override value of

# interpolation to the chosen action shortcut (e.g. action_mwl, etc) in jail.local

action_mw,

# globally (section [DEFAULT]) or per specific section action = %(action_mwl)s

# [...]

Por último, se definen los parámetros del servicio que se pretende proteger. Para esto, se edita la sección JAILSdel archivo /etc/fail2ban/jail.local:

/etc/fail2ban/jail.local

# [...]

# # JAILS #

# [...]

[ssh]

enabled = true port filter logpath = ssh = sshd = /var/log/auth.log

maxretry = 3

# [...]

Ahora debe reiniciarse el servicio fail2ban:

root@server:~# /etc/init.d/fail2ban restart

Verificación
Durante cada (re)inicio del servicio fail2ban se envía un e-mail de notificación al administrador del sistema:

Subject: [Fail2Ban] ssh: started

From: Fail2Ban <[email protected]> To: root@localhost Date: Tue, 13 Jan 2011 22:14:28 +0000 (WET)

Hi,

The jail ssh has been started successfully.

Regards,

Fail2Ban

En de que sea necesaria una acción defensiva, el administrador también será notificado:

Subject: [Fail2Ban] ssh: banned 219.143.232.144 From: Fail2Ban <[email protected]> To: root@localhost Date: Tue, 13 Jan 2011 22:25:06 +0000 (WET)

Hi,

The IP 219.143.232.144 has just been banned by Fail2Ban after 3 attempts against ssh.

Here are more information about 219.143.232.144:

% [whois.apnic.net node-1] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html

inetnum: netname: country:

219.143.232.0 - 219.143.233.127 Sinotrans-Air-Transport-Development-Co-Ltd CN

descr: 16F Building A Jinyun Plaza,NO.43 Xizhimen South Street,Xicheng District, Beijing,P.R.China admin-c: tech-c: status: changed: mnt-by: source: HC55-AP HC55-AP ASSIGNED NON-PORTABLE [email protected] 20071010 MAINT-CHINANET-BJ APNIC

person: nic-hdl: e-mail: address: address:

Hostmaster of Beijing Telecom corporation CHINA HC55-AP [email protected] Beijing Telecom No. 107 XiDan Beidajie, Xicheng District Beijing

TELECOM

phone: fax-no: country: changed: mnt-by: source:

+86-010-58503461 +86-010-58503054 cn [email protected] 20040115 MAINT-CHINATELECOM-BJ APNIC

Lines containing IP:219.143.232.144 in /var/log/auth.log

Dec 21 23:40:54 server sshd[4311]: Did not receive identification string from 219.143.232.144 Dec 21 23:44:19 server sshd[4318]: Invalid user globus from 219.143.232.144 Dec 21 23:44:19 server sshd[4318]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.143.232.144 Dec 21 23:44:21 server sshd[4318]: Failed password for invalid user globus from 219.143.232.144 port 43536 ssh2 Dec 21 23:44:22 server sshd[4320]: Invalid user marine from 219.143.232.144 Dec 21 23:44:22 server sshd[4320]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.143.232.144

Regards,

Fail2Ban

El paquete Fail2Ban puede proteger servidores e-mail, ftp, web, etc. Para esto debe editarse el archivo /etc/fail2ban/jail.local para incluir los servicios que se planee proteger.

7.2.1 Rootkit Hunter
Objetivo
Instalar el paquete rkhunter, un sistema de detección de rootkits que alerta por e-mail al administrador del sistema, en caso de que detecte alteraciones en el sistema que indiquen la presencia de un rootkit.

Instalación
root@server:~# aptitude install rkhunter

Configuración
La configuración predeterminada del paquete rkhunter suele ser suficiente. El archivo /etc/default/rkhunter define que las actualizaciones de la base de datos tengan una periodicidad semanal, la verificación de rootkits diaria y que los resultados sean enviados por e-mail al administrador del sistema (root). Para esto, debe actualizarse la base de datos de propiedades de los archivos de rkhunter:

root@server:~# rkhunter --propupd [ Rootkit Hunter version 1.3.6 ] File updated: searched for 162 files, found 127

Utilización
rkhunter puede ser ejecutado desde la línea de comandos:

root@server:~# rkhunter --check [ Rootkit Hunter version 1.3.6 ]

Checking system commands...

Performing 'strings' command checks Checking 'strings' command [ OK ]

Performing 'shared libraries' checks Checking for preloading variables ] Checking for preloaded libraries ] Checking LD_LIBRARY_PATH variable ] [ Not found [ None found [ None found

Performing file properties checks Checking for prerequisites /bin/bash /bin/cat /bin/chmod /bin/chown /bin/cp /bin/date /bin/df /bin/dmesg /bin/echo [ OK ] [ OK ] [ OK ] [ OK ] [ OK ] [ OK ] [ OK ] [ OK ] [ OK ] [ OK ]

/bin/egrep

[ OK ]

# [...]

System checks summary =====================

File properties checks... Files checked: 127 Suspect files: 0

Rootkit checks... Rootkits checked : 243 Possible rootkits: 0

Applications checks... All checks skipped

The system checks took: 2 minutes and 37 seconds

All results have been written to the log file (/var/log/rkhunter.log)

One or more warnings have been found while checking the system. Please check the log file (/var/log/rkhunter.log)

Actualización de la base de datos
La base de datos del rkhunter se actualiza cada semana de forma automática. Pero, es posible proceder a su actualización siempre que sea necesario:

root@server:~# rkhunter --update [ Rootkit Hunter version 1.3.6 ]

Checking rkhunter data files... Checking file mirrors.dat ] Checking file programs_bad.dat Checking file backdoorports.dat Checking file suspscan.dat ] Checking file i18n/cn ] Checking file i18n/de ] Checking file i18n/en ] Checking file i18n/zh ] Checking file i18n/zh.utf8 ] [ No update [ No update [ No update [ No update [ No update [ Updated ] [ Updated ] [ No update [ No update

7.3.1 Debsecan
Objetivo
debsecan efectúa una evaluación de la seguridad del sistema y relata las vulnerabilidades conocidas y asociadas a los paquetes instalados en el sistema, notificando al administrador (root) de los resultados.

Instalación
root@server:~# aptitude install debsecan

Configuración
Debsecan puede configurarse para ser ejecutado diariamente a través de una tarea programada (cron). Sus resultados se envían por e-mail al administrador del sistema (root):

root@server:~# debsecan-create-cron

Utilización
La tarea programada durante la configuración enviará un e-mail al administrador con el resultado del análisis de seguridad:

Subject: Debian security status of server To: [email protected] Date: Tue, 8 Feb 2011 22:33:39 +0000 (WET)

From: [email protected] (root)

Security report based on general data

If you specify a proper suite, this report will include information regarding available security updates and obsolete packages. the correct suite, run "dpkg-reconfigure debsecan" as root. To set

*** Fixed vulnerabilities

CVE-2010-4250 <http://security-tracker.debian.org/tracker/CVE-2010-4250> - linux-base - linux-headers-2.6.32-5-amd64 - linux-headers-2.6.32-5-common - linux-image-2.6.32-5-amd64 - linux-libc-dev

*** New vulnerabilities

CVE-2010-4022... <http://security-tracker.debian.org/tracker/CVE-2010-4022> - libgssapi-krb5-2, libk5crypto3, libkrb5support0, libkrb5-3 (low urgency)

CVE-2011-0281... <http://security-tracker.debian.org/tracker/CVE-2011-0281> - libgssapi-krb5-2, libk5crypto3, libkrb5support0, libkrb5-3

CVE-2011-0282... <http://security-tracker.debian.org/tracker/CVE-2011-0282> - libgssapi-krb5-2, libk5crypto3, libkrb5support0, libkrb5-3

*** Vulnerabilities

CVE-2007-2379 The jQuery framework exchanges data using JavaScript... <http://security-tracker.debian.org/tracker/CVE-2007-2379> - libjs-jquery (remotely exploitable, low urgency)

CVE-2010-2943 The xfs implementation in the Linux kernel before... <http://security-tracker.debian.org/tracker/CVE-2010-2943> - linux-image-2.6.32-5-amd64, linux-libc-dev, linux-base, linux-headers-2.6.32-5-common, linux-headers-2.6.32-5-amd64 (remotely exploitable, high urgency)

CVE-2010-3435 The (1) pam_env and (2) pam_mail modules in Linux-PAM... <http://security-tracker.debian.org/tracker/CVE-2010-3435> - libpam0g, libpam-modules, libpam-runtime (low urgency)

# [...]

CVE-2011-0536 CVE-2010-3847 opens new vulnerability <http://security-tracker.debian.org/tracker/CVE-2011-0536> - libc6-dev, libc-dev-bin, locales, libc-bin, libc6

CVE-2011-0755 Integer overflow in the mt_rand function in PHP... <http://security-tracker.debian.org/tracker/CVE-2011-0755> - php5-gd, php5-sqlite, php-pear, php5-common, php5-pspell, php5-mcrypt, php5-cli, libapache2-mod-php5, php5, php5-mysql (remotely exploitable, medium urgency)

TEMP-0546164-933E0D php5's pear is vulnerable to symlink attacks <http://security-tracker.debian.org/tracker/TEMP-0546164-933E0D> - php5-gd, php5-sqlite, php-pear, php5-common, php5-pspell, php5-mcrypt, php5-cli, libapache2-mod-php5, php5, php5-mysql (low urgency)

TEMP-0612034-33CBAD aptitude tempfile <http://security-tracker.debian.org/tracker/TEMP-0612034-33CBAD> - aptitude (low urgency)

De forma opcional, debsecan también puede ejecutarse en la línea de comandos:

root@server:~# debsecan CVE-2010-4015 libpq5 (remotely exploitable, medium urgency)

CVE-2007-2379 libjs-jquery (remotely exploitable, low urgency) CVE-2011-0413 isc-dhcp-common (remotely exploitable, high urgency) CVE-2010-4698 libgd2-xpm (remotely exploitable, medium urgency) CVE-2010-4022 libgssapi-krb5-2 (low urgency) CVE-2011-0281 libgssapi-krb5-2 CVE-2011-0282 libgssapi-krb5-2 CVE-2010-3435 libpam0g (low urgency) CVE-2010-3853 libpam0g (low urgency) CVE-2010-4706 libpam0g (low urgency) CVE-2010-4707 libpam0g (low urgency) CVE-2010-4708 libpam0g (low urgency) CVE-2010-2943 linux-image-2.6.32-5-amd64 (remotely exploitable, high urgency) CVE-2010-3699 linux-image-2.6.32-5-amd64 (remotely exploitable, low urgency) CVE-2010-3865 linux-image-2.6.32-5-amd64 (high urgency) CVE-2010-4075 linux-image-2.6.32-5-amd64 (low urgency) CVE-2010-4076 linux-image-2.6.32-5-amd64 (low urgency) CVE-2010-4077 linux-image-2.6.32-5-amd64 (low urgency) CVE-2010-4565 linux-image-2.6.32-5-amd64 (low urgency) CVE-2010-4655 linux-image-2.6.32-5-amd64 # [...]

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close