Apache + SSL

En secciones anteriores instalamos y configuramos Apache de una forma basica, ahora configuraremos otros parametros para poder tener soporte para SSL y tener comunicaciones seguras (cifradas).

Configuración de apache2 para soporte SSL

En secciones anteriores ya se configuro el archivo /etc/conf.d/apache2 para que cargara el modulo de SSL.

Ahora solo configuraremos los certificados y el archivo de el default virtal host para soporte SSL

Configurar apache2 para uso de certificados x509 (SSL)

Este articulo ayudara a configurar apache2 para uso de certificados x509 (SSL) para comunicación segura (cifrada) usando certificados expedidos por CAcert.

Requerimientos:

  • Tener instalado apache con soporte SSL

  • Debes de tener una cuenta creada en cacert.org

Primero debemos generar nuestra llave privada con la que firmaremos nuestra solicitud de certificado. La nombraremos con nuestro nombre de host a el que le asignaremos el certificado, por ejemplo: www.tuxjm.net

# cd /etc/apache2/ssl
# openssl genrsa -out www.tuxjm.net.key 1024
Generating RSA private key, 1024 bit long modulus
...................++++++
.............................++++++
e is 65537 (0x10001)

Ahora generaremos la solicitud de certificado con nuestra llave privada:

# openssl req -new -key www.tuxjm.net.key -out www.tuxjm.net.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:MX
State or Province Name (full name) [Some-State]:Baja California
Locality Name (eg, city) []:Tijuana
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TuxJM Inc.
Organizational Unit Name (eg, section) []:Hosting
Common Name (eg, YOUR name) []:www.tuxjm.net
Email Address []:jmedina@tuxjm.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Acabamos de generar la solicitud de certificado y se guardo en el archivo: /etc/apache2/ssl/www.tuxjm.net.csr Veamos el contenido:

# cat www.tuxjm.net.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIB9jCCAV8CAQAwgbUxCzAJBgasj3dmdk1YMRgwFgYDVQQIEw9CYWphIENhbGlm
b3JuaWExEDAOBgNVBAcTB1RpanVhbmExJasdfasdfAoTHUNhbGNvbSBkZSBNZXhp
Y28gUy5BLiBkZSBDLlYuMRAwDgYDVQQLEwdIb3N0aW5nMRowGAYDVQQDExF3d3cu
Y2FsY29aasd3bS5teDEkMCIGCSqGSIb3DQEJARYVam1lZGluYUBjYWxjb20uY29t
Lm14MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGJBAR4lRhch4l92exwzHH
X+HQuX1NIJU4nkF46SCWvgQIP36Qs2XgOkTJKSf9Rasdasdfae33P6QHCozdjqq+
LTcF1H6f5z+L7K2TZx5eVje03jkdindcnMAUnR5EYl9QfdXGdGLFR3IWXIcPA9mB
s1asd3djHhgUVF1PGk0FawIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAB3PX3qOI
GadYTXuRxx34Vbol2w5jWXuyHtlbwqPlnY6M00PyWpfcGNPppeQV23232qocgHcl
UwADN20b3//89yMeoqEzNy1RPjyNrzSufPml6Mx+RrTBypnmTlDUb2WTThrnzUNl
Ok+azrk1BRYu2gYLEFNif56OaHnXjV3vR0Q=
-----END CERTIFICATE REQUEST-----

Ahora copiaremos desde el inicio de la linea:

-----BEGIN CERTIFICATE REQUEST-----
Hasta la linea final:
-----END CERTIFICATE REQUEST-----

Entonces iniciaremos sesión en cacert.org y crearemos un nuevo certificado para servidor (Server Certificates) y el contenido de el CSR lo pegaremos en la pagina de creación de certificados para que nos devuelva un certificado, el resultado que nos muestre lo pegaremos en un archivo llamado con el nombre de el host y con terminación .crt (La terminación no es obligatoria pero si es útil para reconocer los tipos de archivos).

# vim www.tuxjm.net.crt
-----BEGIN CERTIFICATE-----
MIIEFzdopemeAwIBAgIDAdBFMA0GCSqGSIb3DQEBBQUAMHkxEDAOBgNVBAoTB1Jv
b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y
dEBjYWNlcnQub3JnMB4XDTA2MDExMjIxNTAxNloXDTA2MDcxMTIxNTAxNlowHDEa
MBgGA1UEAxMRd3d3LmNhbGNvbS5jb20ubXgwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
MIGJAoGBAMYkEBHiVGFyHiX3Z7HDMcdf4dC5fU0glTieQXjpIJa+BAg/fpCzZeA6
RMkpJ/1HQOzpsdfasdfasdfKjN2Oqr4tNwXUfp/nP4vsrZNnHl5WPTNSEIZoWbyc
wBSdHkRiX1B91cZ0YsVHchZchw8D2YGzWmHo0aMeGBRUXU8aTQVrAgMBAAGjgYgw
gYUwDAYDVR0TAQH/BAIwADA0BgNVHSUELTArBggrBgEFBQcDAgYIKwYBBQUHAwEG
CWCGSAGG+EIEAQYKKwYBBAGCNwoDAzALBgNVHQ8EBAMCBaAwMgYIKwYBBQUHAQEE
JjAkMCIGCCsGAQUFBzABhhZasdafOi8vb2NzcC5jYWNlcnQub3JnMA0GCSqGSIb3
DQEBBQUAA4ICAQAIeqiyZECg7z7/hiynO0ZsY96WQ+oUAZS2XCjL67maOrawTIWJ
RN+9Na3sqw23DE5GnqY6IhG6NLLRiKqJt34Fxvjq1pUdTyEJdsBRQZZQxPa6gKph
/AwYiUR39Rd+rRIwx7cvEjabH6amympo4cAalFmhITv+8wc9UT5JGZnJbnNK1Y9O
5BW6d8YTI2vQenHMT6y5sowLm65vPEdF2KD1bCHQ/3QTW0wMuV9bGQyTsNeBRB+9
ZGaXaP3IiC8ZmSbBj1Uh5+l5OcZhW6ucCQ5QKOGTVMrqyRD7kVXFAARf7jTU3Mq4
2VZcORTCerAjzpnyYAosQRztxYHGFjmL3f+4fBOqyxbm7tsPkv/bOrBOKS85wvyY
aB8EVasdf4kELIvOQ8U0uxolxwewI6rbZk2/QddAbjy/Hv4diM4f8VMhnEgkOUof
x2bKrl59gpjZZCwwNscom2CM5dOh+yps+Y4SRPcoy8psk0ItaY1ASi42Wr0iEyDb
C3OHJasdftSlIBrM2Uk1b/dNmxVUJfHS1qDLnEYsXhAiVIgHEVZGv7cfZuh7PnQn
qOMPfasd3stvinU4mIfwYUMECfp0NdnNVY9rTA0HPCv9zD3V3Ez6plbrG2Z0sf8G
kZAls42oev3hRtpxnWVqP+FAi7nrGDCpNg3q1tuJ82YOOVU39dmeUSDNMW==
-----END CERTIFICATE-----

Ahora agregaremos esta información a la configuración de el virtual host predeterminado de apache, editar el archivo:

# vim ../modules.d/41_mod_ssl.default-vhost.conf

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again. A test
#   certificate can be generated with `make certificate' under
#   built time. Keep in mind that if you've both a RSA and a DSA
#   certificate you can configure both in parallel (to also allow
#   the use of DSA ciphers, etc.)
###SSLCertificateFile conf/ssl/server.crt
SSLCertificateFile conf/ssl/www.tuxjm.net.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)

###SSLCertificateKeyFile conf/ssl/server.key
SSLCertificateKeyFile conf/ssl/www.tuxjm.net.key

Ahora re iniciar apache2:

# /etc/init.d/apache2 restart
 * Stopping apache2 ...                                                                                              [ ok ]
 * Starting apache2 ...                                                                                              [ ok ]

Ahora prueba entrar con un navegador a tu servidor web pero usando https://IP-o-Nombre-Del-Servidor

Configuración de un virtual host dedicado a Postfix Admin

TODO.

Configuración de restricciones de acceso y comunicación segura con (mod_ssl)

TODO

SquirrelMail

Instalaremos nuestro cliente de correo web (Webmail), Squirrelmail se encuentra en portage y además se instala con varios plugins predeterminados y con opción para instalar otros más.

Plugins Predeterminados:

El paquete de Squirrelmail viene con los siguientes plugins predeterminados, a continuación se explicara para que es cada uno.

Plugin de Compatibilidad: Este plugin permite el acceso a funciones y variables especiales a otros plugins para que sea compatible con otras versiones de SquirrelMail. Esto elimina la necesidad de duplicación de ciertas funciones en los diferentes plugins. Tambien provee funcionalidades que ayudan a revisar que un plugin ha sido instalado y configurado correctamente.

Admin Add: Este plugin permite modificar fácilmente los archivos de configuración y administración de SquirrelMail.

Retrieve User Data: Este plugin recupera el nombre completo y la dirección de correo electrónico de el usuario de SquirrelMail de una fuente externa (actualmente LDAP, Microsoft AD, MySQL, /etc/passwd, PostgreSQL, archivos de texto Plano, bases de datos estilo DB, VPoPMail) y las guarda a el archivo de preferencias de el usuario. Tus usuarios no tienes que escribir su nombre y dirección de correo electrónico antes de escribir el primer correo. Si quieres prevenir o reducir el mal uso de tu sistema de correos, puedes denegar les la posibilidad de que puedan cambiar su nombre e email (la linea From en las cabeceras del correo). Tambien puedes recuperar la información de el usuario en cada inicio de sesión para que sea actualizado con tu fuente externa. Si no deseas usar uno de los fuentes de datos soportados, puedes escribir una extensión para accesar otros tipos de fuentes de datos.

Plugins Opcionales

Además de los plugins predeterminados, podemos instalar otros opcionalmente. Para instalar los plugins opcionales se hará mediante la configuración de las diferentes USE flags.

Si se agrega el USE flag filter se instalar el siguiente plugin:

Amavis-New + SQL + SpamAssassin + Quarantine: Este plugin permite a los usuarios cambiar un grupo pre-definido de preferencias de SpamAssassin cuando dichas preferencias están almacenadas en una base de datos SQL en lugar de un archivo de configuración. Tambien te permite usar una base de datos para poner en cuarentena correo cuestionable. Este plugin fue diseñado con el uso en corporaciones en mente, y difiere de otros plugins porque trabaja con amavisd-new en lugar de usar a SpamAssassin directamente. La mayoría de el código reside en una clase externa para que pueda ser reusada en tus propias herramientas de administración.. Y además tiene soporte para llamadas SOAP para realizar tareas comunes.

Si se agrega el USE flag crypt se instalar el siguiente plugin:

G/PGP Encryption: Este es un plugin de uso general para cifrar (encryption), descifrar (decryption), y firmas digitales para SquirrelMail que implementa el estándar OpenPGP GPG.

Principales Características:

  • Importación de Llaves desde un keyring o un archivo ASCII armor

  • Búsqueda de Llaves e importación desde los keyservers.

  • Creación de Par de Llaves

  • Cifrado desde Compose/Componer

  • Descifrar al leer un mensaje cifrado

  • Cifra, Descifra y firma archivos adjuntos

  • Firma mensajes y verifica las firmas

  • Soporte de System Keyring para uso con servidores corporativos

  • Soporte para pgp/mime

  • Traducido a los lenguajes: Español, Aleman, Italiano, Francés, Brasileño, Portugués, Holandés y Lituano.

Si se agrega el USE flag ldap se instalar el siguiente plugin:

LDAP Prefs Backend: Este plugin sirve para recuperar las preferencias de un directorio LDAP, a diferencia de el plugin que se menciona arriba, este hace uso extensivo de cache para reducir el overhead the el servidor LDAP. Desde el punto de vista de el usuario esto es muy importante ya que las preferencias serán guardadas al finalizar la sesión mientras serán puestas en un cache.

Si se agrega el USE flag ssl se instalar el siguiente plugin:

Secure Login: Este es un plugin simple que automáticamente establece una conexión SSL al inicio de sesión si es que no ha sido requerida por el hyperlink llamo la pagina o por un bookmark.

Este plugin es provisto para prevenir la transmisión en texto plano de la contraseña y de el contenido de el correo por el Internet cuando el usuario manualmente entra a la URL sin incluir https://...

Este plugin requiere de el de Compatibilidad.

Show SSL Link: Este plugin colocara una liga para conexión SSl en la pagina de login.php si la url de el navegador no es https://. Es muy simple y da a el usuario final la oportunidad de iniciar sesión con https.

Este plugin Tambien requiere de el de Compatibilidad.

Si se agrega el USE flag nls se instalar el siguiente plugin:

Traducciones: Esto agregara el soporte para que el usuario pueda elegir el lenguaje de la interfaz web.

spell: Este no es un plugin, más bien agrega soporte para poder usar un corrector ortográfico para SquirrelMail usando las bibliotecas GNU Aspell.

Instalacion de SquirrelMail

Bien después de explicar para que es cada uno de los plugins, definiremos que plugins opcionales deseamos instalar, por ahora instalaremos SquirrelMail con soporte para crypt, mysql, nls, spell y ssl. Los demás plugins no nos son de mucha utilidad en esta configuración.

Revisando las USE flags predeterminadas:

# emerge -pv mail-client/squirrelmail

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] mail-client/squirrelmail-1.4.9a  USE="crypt mysql nls spell ssl
   -filter -ldap -postgres -vhosts" 0 kB

Total size of downloads: 0 kB

Bien, como vemos por default tiene los use flags para los plugins que necesitamos.

Ahora si instalaremos SquirrelMail:

# emerge mail-client/squirrelmail

Por default se instalara en la ruta /var/www/localhost/htdocs/squirrelmail

Configuracion de SquirrelMail con compatibilidad para Courier IMAP

Antes de usar nuestro webmail tendremos que configurarlo para que haga uso de nuestro servidor Courier IMAP adecuadamente.

La mayoría de las configuraciones se hacen con un script en perl que tiene varios menús para su configuración. El script esta en el directorio /var/www/localhost/htdocs/squirrelmail/config/

cd /var/www/localhost/htdocs/squirrelmail/config
# perl conf.pl
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Command >> D

Elegiremos la opción D, para elegir las opciones predefinidas para Courier-IMAP.

SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
    bincimap    = Binc IMAP server
    courier     = Courier IMAP server
    cyrus       = Cyrus IMAP server
    dovecot     = Dovecot Secure IMAP server
    exchange    = Microsoft Exchange IMAP server
    hmailserver = hMailServer
    macosx      = Mac OS X Mailserver
    mercury32   = Mercury/32
    uw          = University of Washington's IMAP server

    quit        = Do not change anything
Command >> courier

              imap_server_type = courier
         default_folder_prefix = INBOX.
                  trash_folder = Trash
                   sent_folder = Sent
                  draft_folder = Drafts
            show_prefix_option = false
          default_sub_of_inbox = false
show_contain_subfolders_option = false
            optional_delimiter = .
                 delete_folder = true

Press any key to continue...

Tecleamos Enter y por ultimo S para guardar los cambios.

C   Turn color on
S   Save data
Q   Quit

Command >> S

Data saved in config.php
Press enter to continue...       

Y ya podemos salir de la configuración:

Command >> q


Exiting conf.pl.
You might want to test your configuration by browsing to
http://your-squirrelmail-location/src/configtest.php
Happy SquirrelMailing!

Esto es suficiente para tener nuestro webmail con una configuracion basica pero funcional, si deseas personalizar más el webmail puedes hacerlo con este mismo programa.

Ahora si puedes entrar a http://IP-o-Nombre-Del-Servidor/squirrelmail/

Plugin: Mostrar quota para SquirrelMail

Ya que nuestro servidor lo configuramos para el uso de cuota en el buzón, opcionalmente podemos instalar un plugin para que en la interfaz web de nuestro webmail veamos el uso de la cuota de nuestra cuenta.

Quota Usage: Si tienes un servidor IMAP con la capacidad de QUOTA, puedes usar este plugin para ver el uso actual de la cuota (ambas: tamaño y conteo de mensajes), la cual es mostrada arriba de el listado de las carpetas. Si se desea, un mensaje de alerta puede ser mostrado a los usuarios en cuanto inician sesión. Si la cuota no ha sido definida para el usuario, nada sera mostrado.

Antes de instalar el plugin nos posicionaremos en el directorio de los plugins

# cd /var/www/localhost/htdocs/squirrelmail/plugins
# wget http://www.squirrelmail.org/plugins/quota_usage-1.3.1-1.2.7.tar.gz

Des comprimimos el paquete:

# tar -zxvf quota_usage-1.3.1-1.2.7.tar.gz

Nos posicionaremos en el directorio recién desempaquetado:

# cd quota_usage

Este plugin requiere que tenga un archivo de configuración config.php por lo que haremos una copia de el archivo de ejemplo:

# cp config.php.sample config.php

Muchas de las configuraciones están en el archivo config.php, no se recomienda editar el archivo a menos que sepa lo que esta haciendo.

# vim config.php

Ahora le diremos a SquirrelMail que cargue este plugin, por lo que entraremos nuevamente a el script de configuración:

# cd ../../config
# ./conf.pl

Entrar a la opción 8. Plugins

El plugin de quota_usage saldrá listado en la lista de plugins disponibles, teclear el numero de el plugin quota_usage, al teclearlo y dar Enter se ira a la lista de plugins instalados. Ahora ya puedes teclear S para guardar los datos y se guarden los cambios y solo entonces salir.

Ahora si puedes entrar a http://IP-o-Nombre-Del-Servidor/squirrelmail/

El plugin lo podrás ver al entrar y se vera algo así:

Se recomienda leer las siguientes paginas para personalizar y afinar los parámetros para tu webmail referentes a el limite de memoria de uso y tamaño de archivos adjuntos y otras cosas.

LowMemoryProblem

AttachmentSize

UnsafeImages

Soporte Multi Lenguajes en el Webmail

Para que nuestro webmail pueda ser cambiado al español nuestro sistema operativo requiere de la locale es_ES.ISO8859-1.

Para esto en Gentoo agregaremos la siguientes linea a el archivo /etc/locale.gen

es_ES ISO-8859-1

Y regeneraremos las locales de nuestro sistema:

# locale-gen
 * Generating 4 locales (this might take a while) with 1 jobs
 *  (1/4) Generating en_US.ISO-8859-1 ...                                                                             [ ok ]
 *  (2/4) Generating en_US.UTF-8 ...                                                                                  [ ok ]
 *  (3/4) Generating es_ES.UTF-8 ...                                                                                  [ ok ]
 *  (4/4) Generating es_ES.ISO-8859-1 ...                                                                             [ ok ]
 * Generation complete

Después de esto necesitamos re iniciar apache:

# /etc/init.d/apache2 restart

Y ahora vuelve a entrar a SquirrelMail y podrás cambiar tu webmail al español.

Ver este hilo en la lista de correos para más detalles:

Re: Setting es_ES as default in 1.4.8 (Solved)