viernes, 11 de noviembre de 2011

Postfix - Configuración y Puesta en Marcha I

Introducción

Esto es una breve introducción de como configurar nuestro propio servidor de correo basado en Postfix (http://www.postfix.org). Postfix es un MTA (Mail Transfer Agent) que nace como una alternativa para sustituir al viejo y archi reconocido Sendmail (http://www.sendmail.org). ¿Qué cual es la diferencia entonces? Sendmail ha sido un MTA (al igual que Postfix) que ha evolucionado con el tiempo, inicialmente Sendmail fue un MTA que nació con muchas deficiencias, incluso aquellos geeks que han leído un poco sobre el tema, se acordarán del famoso gusano Morris (http://en.wikipedia.org/wiki/Morris_worm) el cual, entre otros atributos, explotaba una vulnerabilidad de Sendmail. Incluso, durante aquella época, populaba un chiste entre los geeks el cual decía: "¿y cual es la nueva vulnerabilidad de Sendmail para hoy?". Bien, no es que Sendmail sea malo, por el contrario, como cualquier software, éste ha evolucionado con el tiempo y mejorado mucho más. Si algo hay que saber sobre Sendmail, es que es uno de los servidores de correo más utilizados en el mundo. 
Pero bueno, no vinimos aquí a saber de Sendmail, como lo dije al principio, esta vez vamos a conocer a un viejo también archi conocido Postfix. Postfix nace como una alternativa más segura, más rápida, más simple de administrar y lo suficientemente compatible con Sendmail. Postfix es una creación de Wietse Zweitze Venema (http://www.porcupine.org/wietse/).
Para este documento asumo como distribución de Linux, las siguientes: Redhat 9, Fedora Core 3 ó Fedora Core 4 basadas en el sistema de paquetes rpm.

HOWTO
  • Descargamos el RPM de la distribución que tengamos, para ello nos podemos apoyar en Rpmfind.net y buscar allí el término "postfix" para encontrar un grande listado de recursos en donde podemos descargar esta maravilla de servidor de correo.
  • Instalamos el RPM que descargamos con los famosos comandos RPM, por ejemplo:
    rpm -i postfix-1.1.12-1.i386.rpm
  • Es bueno hacer las siguientes anotaciones:
- Si ya tenemos Sendmail funcionando en nuestra máquina, es bueno que detengamos el servicio para no entrar en conflicto con nuestra nueva adquisición. Para ello basta con que ejecuten los siguientes comandos:

/etc/init.d/sendmail stop
chkconfig --level 345 sendmail off

- Si lo que tenemos es un Sendmail levantado por Gateways antivirus como MailScanner, entonces hacemos lo siguiente:
    /etc/init.d/MailScanner stop 
  • Si todo se instaló sin problemas, entonces nos vamos para /etc/postfix.
    cd /etc/postfix
  • Una vez en el directorio de configuración de Postfix, por seguridad nos hacemos una copia del archivo main.cf.
    cp main.cf main.cf.ori
     
    El ".ori" no es de "orines", "orinoco" ni nada por el estilo, el ".ori" es de "original". Esto es bueno hacerlo por si no somos muy diestros al editar archivos y por si algo va mal, pues ponemos el archivo de configuración original y listo, "no ha pasado nada".

DEL ARCHIVO DE CONFIGURACION

El formato general del archivo de configuración (main.cf) sigue el siguiente formato. (El siguiente texto es tomado textualmente de la documentación ofiicial de Postfix. http://www.postfix.org/postconf.5.html).
  • Cada línea de configuración obedece al formato "parametro = value". Los espacios en blanco alrededor del signo "=" son ignorados, igualmente sucede con los espacios en blanco al final de cada línea.
  • Líneas vacías y líneas que solo contengan espacios en blanco son ignoradas. Igualmente se ignoran todas las líneas que cuyo primer caracter no sea el espacio en blanco sino el caracter "#".
  • Cada línea válida de configuración comienza con texto diferente de espacio en blanco. Sin embargo, una línea que comience con espacio en blanco, seguirá siendo una línea de configuración válida.
  • El valor asignado a un parámetro puede hacer referencia a los valores de otros parámetros:
    • Las expresiones"$name", "${name}" o "$(name)" son recursivamente reemplazadas por el valor del parámetro al que están haciendo referencia.
    • La expresión "${name?value}" se extiende a "value" cuando "$name" no está vacía. Solo se soporta en versiones de Postfix 2.2 ó superiores.
    • La expresión "${name:value}" se extiende a "value" cuiando "$name" está vacía. Solo se soporta en versiones de Postfix 2.2 ó superiores.
  • Cuando un mismo parámetro es definido varias veces, solo aplica a la configuración, la última instacia encontrada del mismo.
  • En cualquier otro caso, el orden de los parámetros definidos en main.cf no es importante.

DEL RELAY

La verdad es que Postfix es tan bueno, que por defecto sin decirle nada es capaz de hacer Relay a todo el conjunto de clientes que se encuentren en la misma subred de cada interface de red que tengamos conectada al sistema. Por ejemplo, suponiendo que tenemos una máquina con tres interfaces de red así:
10.1.0.254  MASK 255.255.0.0
192.168.1.254          MASK 255.255.255.0
200.1.2.3  MASK 255.255.255.248

Suponiendo que la interface con la IP 200.1.2.3 es nuestra interface externa, Postfix es capaz de hacerle Relay por defecto a todos los clientes que se encuentren en la subred 10.1.0.0/255.255.0.0 y la subred 192.168.1.0/255.255.255.0. Postfix también sabe que la interface 200.1.2.3 es la externa y que a esa subred no se le debe hacer Relay. Sin embargo hay dos parámetros en el archivo de configuración de Postfix, que pueden sintonizar al gusto de ustedes el tema del Relay. Ambos parámetros son los siguientes:
 
mynetworks_style 
mynetworks
  
No voy a entrar a explicarlos, son sumamente simples y como Postfix le hace Relay por defecto a los clientes que se encuentran en la misma subred creo que no hace falta entrar ahora en esos detalles. Si se pasan por esta página http://www.postfix.org/BASIC_CONFIGURATION_README.html, se van a dar cuenta lo simples que son.
Entre otras cosas, ¿qué es el Relay?. Tomen esta explicación del concepto de Open Relay.
- http://es.wikipedia.org/wiki/Open_Relay

sábado, 27 de agosto de 2011

OpenVPN I

Es un software que brinda una solución de conectividad punto a punto en capa
2 o en capa 3, basada en SSL (Secure Sockets Layer) y VPN (Virtual Private Network). Posee validación jerárquica de usuarios y hosts remotos.
Es una aplicación multiplataforma, que surge para facilitar la configuración de
vpn's dejando atrás soluciones complejas como sería IPsec.

Seguridad en OPENVPN, este implementa dos modos:

claves estáticas pre-compartidas: se posee una clave que se comparte entre todos los clientes y servidor, de forma que cualquiera que posea dicha clave podrá encriptar/desencriptar los mensajes.

SSL/TLS usando certificados y claves RSA: se utilizan dos claves, una pública y otra privada. La pública será entregada a todos y usada para encriptar los datos, mientras que la privada será usada para desencriptar los menajes recibidos.

VPN (Virtual Private Network)

Una Red Privada Virtual o VPN (por sus siglas en Inglés, Virtual Private Network), es una tecnología de red que permite extender la red local (o LAN) sobre una red no controlada (por ejemplo “Internet”) garantizando a los usuarios un acceso seguro consiguiendo las cuatro características básicas de seguridad, estas son:

  • Autenticación y autorización

  • Integridad

  • Confidencialidad

  • No repudio



Existen varios tipos de técnicas, tanto a nivel de capa 3 o a nivel de capa 2. Cuando las redes están conectadas a través de internet, precisaremos de la capa IP para alcanzar las otras redes, por lo tanto se implementa lo que se denomina una VPN de acceso remoto.


jueves, 25 de agosto de 2011

IPsec II

Propósito de diseño

IPsec fue proyectado para proporcionar seguridad en modo transporte (extremo a extremo) del tráfico de paquetes, en el que los ordenadores de los extremos finales realizan el procesado de seguridad, o en modo túnel (puerta a puerta) en el que la seguridad del tráfico de paquetes es proporcionada a varias máquinas (incluso a toda la red de área local) por un único nodo. IPsec puede utilizarse para crear VPNs en los dos modos, y este es su uso principal. Hay que tener en cuenta, sin embargo, que las implicaciones de seguridad son bastante diferentes entre los dos
modos de operación. La seguridad de comunicaciones extremo a extremo a escala Internet se ha desarrollado más lentamente de lo esperado. Parte de la razón a esto es que no ha surgido infraestructura de clave pública universal o universalmente de confianza (DNSSEC fue originalmente previsto para esto); otra parte es que muchos usuarios no comprenden lo suficientemente bien ni sus necesidades ni las opciones disponibles como para promover su inclusión en los productos de los vendedores. Como el Protocolo de Internet no provee intrínsecamente de ninguna capacidad de seguridad, IPsec se introdujo para proporcionar servicios de seguridad tales como:

1. Cifrar el tráfico (de forma que no pueda ser leído por nadie más que las partes a las que está dirigido)
2. Validación de integridad (asegurar que el tráfico no ha sido modificado a lo largo de su trayecto)
3. Autenticar a los extremos (asegurar que el tráfico proviene de un extremo de confianza)
4. Anti-repetición (proteger contra la repetición de la sesión segura).

Podemos establecer dos modos básicos de operación de IPsec: modo transporte y modo túnel.

Modo transporte

En modo transporte, sólo la carga útil (los datos que se transfieren) del paquete IP es cifrada o autenticada. El enrutamiento permanece intacto, ya que no se modifica ni se cifra la cabecera IP; sin embargo, cuando se utiliza la cabecera de autenticación (AH), las direcciones IP no pueden ser traducidas, ya que eso invalidaría el hash. Las capas de transporte y aplicación están siempre
aseguradas por un hash, de forma que no pueden ser modificadas de ninguna manera (por ejemplo traduciendo los números de puerto TCP y UDP). El modo transporte se utiliza para comunicaciones ordenador a ordenador.
Una forma de encapsular mensajes IPsec para atravesar NAT ha sido definido por RFCs que describen el mecanismo de NAT transversal.

Modo túnel

En el modo túnel, todo el paquete IP (datos más cabeceras del mensaje) es cifrado o autenticado. Debe ser entonces encapsulado en un nuevo paquete IP para que funcione el enrutamiento. El modo túnel se utiliza para comunicaciones red a red (túneles seguros entre routers, p.e. para VPNs) o comunicaciones ordenador a red u ordenador a ordenador sobre Internet.