Linuxiando un Rato

jueves, octubre 02, 2008

Richard Stallman en español: El software libre en Educación

En este vídeo, el mismísimo creador del proyecto GNU habla sobre la importancia de la enseñanza de tecnologías libres en las escuelas.



Algo para pensar

jueves, septiembre 18, 2008

Que tan rapido puede ser crackeada tu contraseña?

Aquí hay un resumen de aproximadamente cuanto tiempo tardaría descifrar una contraseña si se usara un computador rápido común de Clase D (doble núcleo o doble procesador):

Usando solo números:

  • 5 números - crackeada casi inmediatamente
  • 6 números - crackeada casi inmediatamente
  • 7 números - crackeada casi inmediatamente
  • 8 números - 10 segundos
  • 9 números - 90 segundos

Usando mayúsculas/minúsculas (pero no ambas)
  • 1 a 5 letras - crackeada casi inmediatamente
  • 6 letras - 30 segundos
  • 7 letras - 13 minutos
  • 8 letras - 348 minutos
  • 9 letras - cerca de 6 días
  • 10 letras - 163 días

Usando combinaciones de mayúsculas+minúsculas+números+símbolos
  • 4 caracteres - 8.5 segundos
  • 5 caracteres - 13.5 minutos
  • 6 caracteres - 22 horas
  • 7 caracteres - 87 días
  • 8 caracteres - 23 años

Ahora ves porque siempre se sugiere escoger una contraseña de 8 caracteres o mas?

Cualquiera puede crackear un contraseña usando computadoras Clase D, las cuales son bastante económicas y accesibles actualmente.

Si usas passwords con una combinación de números, letras mayúsculas y minúsculas, y símbolos; por ejemplo B33r&Mug, incluso a un computador Clase F (supercomputadoras) le tomaría alrededor de 84 días descifrarlos.

La seguridad ante todo!!

Traducido por mi de este articulo.

sábado, octubre 14, 2006

Un año más


Exactamente así me sentí esta mañana, un año más viejo y físicamente más acabado pero mental y anímicamente mejor que otros años.

Solo espero poder seguir escribiendo los pocos artículos que mis ocupaciones me dejan y seguir ayudando a la comunidad del software libre en la medida de mis posibilidades.

Agradezco a mis amigos y a mi familia por todo el apoyo que me han dado.

Recuerden: No se es un año mas viejo, se es un año mas experimentado.

lunes, septiembre 11, 2006

Conceptos sobre firewalls de filtrado de paquetes

Alejandro Rincón Linares
Administrador de servidores GNU/Linux
Red UDNET – Universidad Distrital


Abstract:

La masificación de Internet, la globalización de la información y el potencial casi infinito que ofrece la red para ofrecer productos y servicios han hecho de la información uno de los activos mas valiosos para las organizaciones actuales y de la seguridad informática uno de los campos mas delicados e indispensables para las empresas y organizaciones que se basan en la difusión de información y la realización de transacciones en la red.

En este ámbito, los firewalls de filtrado de paquetes se convierten en la primera línea de defensa contra ataques malintencionados e intentos de intrusión en todo tipo de redes. GNU/Linux ofrece la posibilidad de implementar este tipo de firewalls mediante iptables, sistema incorporado en su kernel (núcleo del sistema operativo).

La filosofía de software libre que se encuentra detrás de GNU/Linux hacen que este tipo de implementaciones puedan ser rápidamente adoptadas, fácilmente personalizables y extensibles y de muy bajo costo; lo cual beneficia a grandes, medianas y pequeñas empresas e instituciones.


Conceptos básicos:

Firewall: Un firewall (cortafuegos) es un sistema de control montado en un dispositivo físico por medio del cual tiene que pasar obligatoriamente todo el tráfico de paquetes entre dos o más redes y que tiene por objetivo controlar el tráfico entre diferentes zonas.

Para que sirve un firewall: Un firewall se encarga de filtrar el tráfico entre las redes que une, denegando o aceptando conexiones basándose en reglas o listas de control de acceso.

Estas reglas o listas de control de acceso definen el conjunto de decisiones que serán tomadas basándose en las características especificas de cada paquete (tipo de paquete o protocolo, origen, destino, estado de conexión, etc.) y las medidas que para ellos se estipule en las directivas de seguridad implementadas (aceptar, denegar, rechazar, contabilizar, alterar, etc.)

Tipos de firewall: Un firewall puede ser un dispositivo de hardware especializado o un sistema de software instalado en un servidor que será en encargado de enrutar el tráfico entre dos o más redes.

Clasificación de los Firewall:

1. Filtros de paquetes (stateless packet filtering):

Estos firewall se basan en un conjunto de reglas que especifican la acción a tomar dependiendo de las características del paquete analizado:

  • IP origen
  • IP destino
  • Puerto de origen (en paquetes TCP o UDP)
  • Puerto de destino (en paquetes TCP o UDP)
  • Cabeceras de estado (en paquetes TCP)

Este tipo de firewall no almacena un registro de que conexiones han sido establecidas con éxito, debido a esto y al hecho de que las cabeceras TCP/IP de un paquete pueden ser falsificadas estos filtros son susceptibles a Spoofing de paquetes.

2. Filtros de circuito (stateful packet filtering):

Además del filtro de paquetes tradicional, este tipo de firewall crea y mantiene una tabla donde se registran todas las conexiones establecidas con éxito (es decir, todas aquellas cuyo paso hubiera sido permitido inicialmente por el filtro de paquetes).

Esto significo una mejora en el desempeño al permitir que los paquetes que pertenecen a conexiones ya establecidas y validas pasen a través del firewall sin tener que ser analizados nuevamente, y una mayor confiabilidad al verificar la validez de las conexiones evitando que paquetes con cabeceras falsificadas vulneren la seguridad del entorno que se pretende proteger.

3. Filtros a nivel de aplicación:

Estos firewall son grandes suites que, además de realizar filtrado de paquetes con control de estado de conexión, incluyen o utilizan software de Proxy para protocolos específicos.

Este software de Proxy analiza los paquetes a nivel de contenido y puede, por ejemplo:

  • Filtrar contenidos en transferencias HTTP o FTP
  • Examinar el tráfico de correo electrónico en busca de SPAM o virus

Este tipo de firewall es ideal para entornos corporativos que dispongan del capital necesario para mantener este tipo de soluciones, ya que se requiere una gran capacidad de procesamiento para que el análisis del trafico sea realizado de manera optima y no se convierta en un cuello de botella, adicionalmente los servicios de soporte y actualización de definiciones de virus y filtros suelen ser vendidos por suscripción anual y a un precio bastante alto.


Políticas de filtrado

En la etapa de filtrado, cada paquete puede tener 3 destinos:

  1. Entrada (INPUT): Paquetes cuyo destino es el firewall
  2. Salida (OUTPUT): Paquetes cuyo origen es el firewall
  3. Enrutamiento (FORWARD): Paquetes que pasan a través del firewall desde y hacia otras maquinas.



Cada uno de los tres destinos tiene asociado una política por defecto y conjunto de reglas que son comparadas una a una y de forma secuencial con las características del paquete analizado. Si a dicho paquete no corresponde ninguna de las reglas existentes, le es aplicada la política por defecto.

Si el paquete coincide con alguna regla, se toma la acción establecida para dicha regla y sale de la cadena de análisis.




Las políticas por defecto en la tabla de filtrado pueden ser:

  1. ACEPTAR: Se permite el paso del paquete a su destino
  2. DENEGAR: Se prohíbe el paso del paquete a su destino. El paquete es descartado silenciosamente
  3. RECHAZAR: Se prohíbe el paso del paquete a su destino. Se envía un mensaje de error al emisor del paquete.

Se recomienda elegir la política de DENEGAR frente a la política de RECHAZAR debido a:

  • se duplica el tráfico de red
  • ofrece información útil a un posible atacante
  • en caso de paquetes con cabeceras falsificadas, los mensajes de error puede ser redirigidos por un atacante y utilizados para atacar un equipo de terceros

- Aceptar todo de forma predeterminada




Con este esquema es posible tener inmediatamente un firewall que permita acceder a todos los servicios proporcionados en la red tanto para servidores como para estaciones cliente, ya que todo el trafico estará permitido por defecto y el administrador generara reglas explicitas para el trafico que desea bloquear.

La desventaja de este método radica en que es prácticamente imposible prever todo el trafico que se debe denegar y es posible que solo se pueda bloquear el trafico no deseado después de detectado, es decir, no se prevendrán los ataques sino que se reaccionara ante ellos.


- Denegar todo de forma predeterminada




Este esquema requiere mas tiempo de diseño, ya que se debe tener un esquema de red completo, incluyendo el listado de los servicios que se prestan y de los cuales se va a ser cliente para generar las reglas de aceptación correspondientes pero ofrece un esquema seguro por defecto. Este es el esquema recomendado.


Algunos esquemas de Firewall generalmente utilizados:


- protección de host (Personal Firewall)





- firewall bastión




- firewall con DMZ





- firewall bastión y firewall de contención (perimetral)




Alejandro Rincón Linares
alejandro{punto}rincon{arroba}gmail{punto}com

jueves, agosto 10, 2006

ntop: Una interfaz Web para análisis de trafico de red

Este es un articulo que fue publicado en el segundo ejemplar de Essentia Libre


ntop: Una interfaz Web para análisis de trafico de red
http://www.ntop.org

Como administrador de servidores basados en GNU/Linux y mas específicamente aquellos encargados de administrar el trafico entre varias redes (como proxy, firewall o simple enrutador) uno de los retos a los que me he tenido que enfrentar es el análisis de trafico de red, que consiste (entre algunas cosas) en observar como esta siendo utilizado nuestro ancho de banda para determinar posibles abusos, vulnerabilidades o falencias en nuestro esquema de red y servicios para tomar las decisiones preventivas o correctivas necesarias para conservar (y si es posible, mejorar) la calidad de los servicios de red que preste nuestra organización.

Para ese tipo de situaciones recomiendo Ntop, una herramienta de software libre que permite obtener estadísticas de la utilización de nuestro canal que pueden ser consultadas desde nuestro navegador Web (Firefox, espero).

La instalación de ntop es bastante sencilla, en la pagina http://www.ntop.org/ puede descargarse el código fuente de ntop o versiones binarias listas para instalar en nuestro sistema operativo tipo UNIX favorito. También existe una versión gratis para Windows limitada a capturar máximo 2000 paquetes pero se puede comprar una licencia para utilizarla sin restricciones.

¿Si ntop es software libre, por que debo pagar una licencia para usarlo sin restricciones en Windows? Aunque el tema del licenciamiento bastante álgido, mencionare solo algunas causas: Para generar binarios en Windows se requiere (mínimo) una licencia de Windows y (minino) una licencia de un IDE como Visual C++ o Borland C++ Builder para compilarlos, las cuales no son nada baratas. El valor obtenido por estas licencias es utilizado en gran parte para sufragar dichos gastos.

Pero bueno, volvamos al tema. Una vez descargado e instalado ntop, solo sera necesario modificar algunos parámetros sencillos el el archivo ntop.conf (usualmente ubicado en /etc/ntop.conf) para ajustarlo a nuestra red:

--interface: este parámetro indica el dispositivo de red en el cual se llevara a cabo el análisis de trafico. Por lo general se configura el dispositivo que corresponde a la tarjeta de red externa de nuestra maquina pero puede configurarse cualquiera e incluso especificar varios dispositivos, un ejemplo de esta linea seria:

 --interface eth1

--http-server: indica el puerto sobre el cual se ejecutara el servidor Web de ntop y al cual dirigiremos nuestro navegador, el puerto por defecto es el 3000 pero puede escogerse cualquier puerto disponible por encima del 1024 (puede ejecutarse en un puerto inferior, pero ntop debería ser ejecutado por el usuario root lo cual es completamente desaconsejado); un ejemplo de esta linea seria:

 --http-server 3000

--local-subnets: aqui establecemos el (los) segmento(s) de red que corresponden a nuestra Intranet para que ntop pueda determinar cual trafico es local y cual es externo, un ejemplo de esta linea seria:

 --local-subnets 192.168.1.0/255.255.255.0

Si nuestra red tiene varios segmentos (por ejemplo en una red con DMZ) podemos especificarlos en este parámetro, separando cada segmento con una coma.


--daemon: Especifica que ntop se ejecutara como un servicio del sistema, y podremos gestionarlo mediante los clasicos parámetros start, restart, status o stop de cualquier otro servicio. Si no desea que ntop se gestione como servicio del sistema puede omitir este parámetro comentariandolo con un #. En este caso puede ejecutar ntop desde la consola con el comando:

 ntop @/etc/ntop.conf

y detenerlo presionado Ctrl+C.


Una vez instalado y configurado, ntop puede ser ejecutado. En caso de estar configurado como servicio del sistema puede ser iniciado ejecutando el comando (en sistemas Red Hat, Fedora Core):

 service ntop start

si ntop no esta configurado para ejecutarse como servicio, el comando para iniciarlo seria:

 ntop @/etc/ntop.conf

Con ntop ejecutándose en el sistema simplemente abrimos un navegador web y abrimos la URL correspondiente. Por ejemplo, si el firewall en el cual instalamos ntop tiene la IP 192.168.1.1 y el puerto de ntop es el 3000, escribimos en la barra de direcciones del navegador http://192.168.1.1:3000/ (no sobra decir que este puerto debe estar abierto en el firewall para ser accedido únicamente desde ciertas direcciones y etc.). Veremos una pagina como la siguiente:




Donde encontraremos gráficos y resúmenes del trafico de nuestra red. En esta pagina podemos desplazarnos hasta la sección “Historical Data” y hacer clic en el icono para ver estadísticas mas detalladas. Un gráfico bastante útil es que nos permite ver el historial de trafico de nuestra red discriminado por protocolo:



También es posible ver la distribución de nuestro canal en orden de utilización haciendo clic en IP -> Summary ->Traffic



Aquí podemos seleccionar el trafico que deseamos ver:

En la sección “Hosts” (parte superior izquierda) seleccionaremos si el trafico que nos interesa es local (Local Only), remoto (Remote Only) o todo el trafico sin importar su origen (All). La exactitud de este análisis depende de la configuración de la variable --local-subnets de la cual ya hablamos.

En la sección “Data” (parte superior derecha) seleccionaremos el sentido del trafico que nos interesa: los datos enviados desde nuestra red hacia el exterior (Sent Only), los datos recibidos por nuestra red (Received Only) o todo el trafico sin importar su origen (All).

Adicionalmente podemos ordenar la tabla en orden ascendente o descendente según la cantidad total de datos recibido o trasmitidos, o discriminados por protocolo haciendo clic en el encabezado de la columna correspondiente.

Al hacer clic en algún host de nuestro interés, veremos las estadísticas detalladas acerca del su trafico que ntop ha recopilado hasta el momento:



El ultimo aspecto que mencionare acerca de ntop es la utilidad para exportar las estadísticas de trafico recopiladas por ntop (haciendo clic en Utils -> Data Dump):



donde podremos exportar los datos como archivos de texto separado por comas, XML, o arreglos en lenguajes de programación como PHP, Perl o Python; jugosa información para ser analizada con herramientas externas como hojas de calculo o ser almacenados en bases de datos como MySQL y PostgreSQL.

Como conclusión, ntop es una herramienta excelente para conocer a fondo la utilización de nuestro canal y la información que presenta sirve para optimizar nuestro firewall (permitiendo detectar trafico en puertos o en máquinas en las cuales no debería haberlo) o detectar abusos por parte de nuestros clientes (usuarios que indiscriminadamente utilizan todo el ancho de banda disponible o utilizan software P2P en una red en la cual no esta permitido, etc.).


Pros:

  • Fácil instalación, configuración y uso.
  • Las tablas y gráficos que tanto nos gustan.
  • Su interfaz Web: Ubicuidad y portabilidad en su máxima expresión


Contras (o bueno, el único que le encontré):

  • Al ser básicamente un sniffer con una interfaz bonita, dependiendo de las características de la maquina en la cual se instale y la cantidad de trafico a analizar, paulatinamente puede consumir los recursos del sistema hasta dejarlo completamente saturado. Recomiendo utilizar MRTG para análisis continuo de nuestro trafico y ntop en casos puntuales o análisis de rutina limitados a máximo 24 o 48 horas.


Calificación: 10/10

miércoles, marzo 22, 2006

Como bloquear Gtalk embebido en Gmail sin bloquear Gmail con Squid

En el lugar donde trabajo se tiene como política denegar el acceso a clientes de mensajería instantánea como Gtalk, MSN, Yahoo Messenger y otros.

Recientemente Google puso a disposición de los usuarios de Gmail el servicio de Gtalk embebido en la interfaz de Gmail, lo cual me puso a pensar ¿Como bloqueo este Gtalk embebido sin bloquear el acceso a Gmail?

Buscando en Google encontré esta esta URL:

http://www.cetico.org/tech/2006/02/
como-bloquear-em-seu-proxy-acesso-ao-google-talk-interno-do-gmail.html


donde se explica el procedimiento para aplicar este bloqueo en un proxy implementado con Squid y reproduzco la solución en este articulo.

En primer lugar es necesario modificar el archivo squid.conf para crear una ACL del tipo ulr_regex como la siguiente:

acl gtalk url_regex -i mail.google.com/mail/channel/bind
y después crear una denegación como la siguiente:
http_access deny gtalk
que preceda cualquier regla del tipo
http_access allow
Esto puede ser adicionado a una ACL existente que bloquee el acceso a clientes de mensajería instantánea. En mi caso yo utilizo una ACL de tipo url_regex con las siguientes expresiones:
mail.google.com/mail/channel/bind
webmessenger
messenger.msn.com
google.com:5222
msg.yahoo.com
messenger.hotmail.com
msgr.hotmail.com
e-messenger
meeebo.com


Alejandro Rincón Linares
alejandro{punto}rincon{arroba}gmail{punto}com

viernes, febrero 24, 2006

Instalando Qmail y reemplazando Sendmail

Anterior: Introducción


Para los propósitos meramente educativos de esta guia, vamos a hacer algunas suposiciones:

  • El dominio de nuestro servidor es midominio.org. En cualquier parte de esta guia en la que aparezca la cadena de caracteres midominio.org, usted deberá cambiarla por el nombre de su dominio de correo electrónico.

  • sysadmin y sysadmin@ midominio.org son respectivamente una cuenta shell y una cuenta de correo con propósitos administrativos. Si usted utiliza otras cuentas con ese propósito, ya sabe: buscar y reemplazar.

  • CO, Cundinamarca y Bogotá corresponden a mi ubicación geográfica. Modificar según sea necesario.

  • El archivo de configuración del servidor Apache no ha sido modificados. Si su DocumentRoot es diferente a /var/www/html, su directorio de CGI's es diferente a /var/www/cgi-bin, o ha modificado otros parámetros deberá modificar los comandos de la guia para que se ajusten a su sistema. Recuerde: no se limite a “copiar y pegar”.



Prerequisitos:

Red Hat Enterprise Linux 4/ Fedora Core 3 o 4/ CentOS 4.0, 4.1 o 4.2 (como ya mencione varias veces, esta guia solo comprende la instalación en estas distribuciones, para otras, consulte la guia original de Qmailrocks) con mínimo los siguientes juegos de paquetes:
gcc
gcc-c++
make y configure
diff y pathutils
openssl y openssl-devel
apache
php
mysql
squirrelmail
expect
gdbm-devel
xinetd
openssl097a
perl
perl-suidperl


Si su instalación es mínima o muy personalizada, seguramente requerirá de muchos paquetes mas. Para evitarse problemas recomiendo usar up2date, yum o apt-get para RPM. Si encuentra alguna dependencia que no este listada aquí puede hacérmelo saber en los comentarios de esta entrada junto con su nombre/nick/apodo. Actualizare la guia y le daré el crédito correspondiente.

Software que NO debe estar ejecutándose ni instalado:

Servicios SMTP (Postfix, Exim)
Servicios IMAP
Servicios POP3

Sendmail puede estar instalado. La guia explica como desinstalarlo.



Descarga de Qmailrocks y compilación de Qmail:

En una terminal iniciar sesión con el usuario root. Crear el directorio donde se almacenaran los instaladores de Qmail y demás software a utilizar, ubicarse en dicho directorio, descargar los instaladores y descomprimirlos ejecutando los siguientes comandos:
mkdir /downloads
cd /downloads
wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz
tar zxvf qmailrocks.tar.gz


Ejecutar el script que crea automáticamente los directorios, usuarios y archivos especiales, descomprime el software daemontools y establece los permisos necesarios ejecutando el comando:
/downloads/qmailrocks/scripts/install/qmr_install_linux-s1.script


Instalar los parches para activar las características de autenticación SMTP, TLS, cuotas de usuario y otros ejecutando el comando:
/downloads/qmailrocks/scripts/util/qmail_big_patches.script


Compilar, instalar y configurar Qmail ejecutando ejecutando los siguientes comandos:
cd /usr/src/qmail/qmail-1.03
make man && make setup check
./config-fast midominio.org


Generar el certificado que permitirá encriptar la comunicación utilizando TLS ejecutando el comando:
make cert


Este es un ejemplo de la configuración del certificado, cambiar según se requiera:
Country Name (2 letter code) [GB]:CO
State or Province Name (full name) [Berkshire]:Cundinamarca
Locality Name (eg, city) [Newbury]:Bogotá
Organization Name (eg, company) [My Company Ltd]:Mi Institución
Organizational Unit Name (eg, section) []:Departamento de Sistemas
Common Name (eg, your name or your server's hostname) []:midominio.org
Email Address []:sysadmin@midominio.org


Configurar los permisos del certificado ejecutando el comando:
chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem




Instalando ucspi-tcp y daemontools:

Aplicar el parche especifico para RH 9/RHEL/Fedora/Slackware, compilar e instalar ucspi-tcp:
cd /usr/src/qmail/ucspi-tcp-0.88/
patch < /downloads/qmailrocks/patches/ucspi-tcp-0.88.errno.patch
make && make setup check


Aplicar el parche especifico para RH 9/RHEL/Fedora/Slackware, compilar e instalar daemontools:
cd /package/admin/daemontools-0.76
cd /package/admin/daemontools-0.76/src
patch < /downloads/qmailrocks/patches/daemontools-0.76.errno.patch
cd /package/admin/daemontools-0.76
package/install


Ejecutar el comando:
ps -aux


y verificar que el proceso svscanboot se este ejecutando




Instalando Ezmlm y Autoresponder:

Descomprimir, compilar e instalar EZmlm:
cd /downloads/qmailrocks/
tar zxvf ezmlm-0.53-idx-0.41.tar.gz
cd ezmlm-0.53-idx-0.41
make && make setup


Descomprimir, compilar e instalar Autoresponder:
cd /downloads/qmailrocks
tar zxvf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make && make install




Instalando Vpopmail con soporte MySQL:

Configurar la conexión MySQL para vpopmail ejecutando los siguientes comandos:
mkdir ~vpopmail/etc
chown vpopmail:vchkpw ~vpopmail/etc
echo "localhost|0|vpopmail|password|vpopmail" > ~vpopmail/etc/vpopmail.mysql


En el ultimo comando la palabra password debe ser cambiada por la contraseña que tendrá el usuario vpopmail de MySQL

Establecer los permisos necesarios para los archivos de configuración de la conexión MySQL para vpopmail ejecutando los siguientes comandos:
chown vpopmail:vchkpw ~vpopmail/etc/vpopmail.mysql
chmod 640 ~vpopmail/etc/vpopmail.mysql


Crear la base de datos y establecer los permisos necesarios para el usuario de vpopmail ingresando como root a la consola de MySQL ejecutando el comando (se solicitara la contraseña del usuario root de MySQL):
mysql -u root -p


en la consola de MySQL ejecutar las siguientes sentencias SQL:
CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost IDENTIFIED BY 'password';


En el ultimo comando la palabra password debe ser cambiada por la contraseña que tendrá el usuario vpopmail de MySQL, posteriormente salir de la consola ejecutando el comando:
quit


Probar los datos del usuario de vpopmail ejecutando el comando:
mysql -u vpopmail -p


Después de introducir la contraseña deberá desplegarse el prompt de la consola de MySQL, posteriormente salir de la consola ejecutando el comando:
quit




Descomprimir, compilar e instalar Vpopmail:

Ejecutar los siguientes comandos:
cd /downloads/qmailrocks
tar zxvf vpopmail-5.4.9.tar.gz
cd vpopmail-5.4.9
./configure --enable-logging=p --enable-auth-module=mysql --disable-passwd --enable-clear-passwd --disable-many-domains --enable-auth-logging --enable-sql-logging --enable-valias --disable-mysql-limits
make && make install-strip




Instalando Vqadmin, Maildrop y Qmailadmin:


Descomprimir, compilar e instalar Vqadmin:
cd /downloads/qmailrocks
tar zxvf vqadmin-2.3.6.tar.gz
cd vqadmin-2.3.6
./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html
make && make install-strip


Modificar el archivo de configuración de Apache ejecutando el comando:
vi /etc/httpd/conf/httpd.conf


y modificar la sección:
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory /var/www/cgi-bin>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>


por:
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory /var/www/cgi-bin>
AllowOverride All
Options None
Order allow,deny
Allow from all
</Directory>


Nota: Solo cambiar la palabra None por la palabra All, pero debe modificarse la sección referente al directorio /var/www/cgi-bin

Posteriormente, adicionar lo siguiente al final del mismo archivo:
#Configuracion para Vqadmin
<Directory /var/www/cgi-bin/vqadmin>
deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
</Directory>


Salvar el archivo y salir del editor.

Editar el archivo de autenticación de vqadmin:
cd /var/www/cgi-bin/vqadmin/
vi .htaccess


modificar el contenido del archivo .htaccess de:
AuthType Basic
AuthUserFile /usr/local/apache/conf/vqadmin.passwd
AuthName vQadmin
require valid-user
satisfy any


a:
AuthType Basic
AuthUserFile /var/www/passwords/.htpasswd
AuthName vQadmin
require valid-user
satisfy any


Salvar el archivo y salir del editor.

Modificar los permisos del archivo .htaccess ejecutando los siguientes comandos:
chown apache .htaccess
chmod 644 .htaccess


Crear el correspondiente archivo que contiene el nombre de usuario y la contraseña encriptada de acceso a Vqadmin ejecutando los comandos:
mkdir /var/www/passwords
htpasswd -bc /var/www/passwords/.htpasswd admin password


En el ultimo comando la palabra password debe ser cambiada por la contraseña que tendrá el usuario de acceso a Vqadmin

Modificar los permisos del archivo .htpasswd ejecutando el siguiente comando:
chmod 644 /var/www/passwords/.htpasswd


Reiniciar el servicio Apache ejecutando el comando:
service httpd restart


Probar el funcionamiento de Vqadmin abriendo en un navegador web la URL y crear el dominio midominio.org:
http://midominio.org/cgi-bin/vqadmin/vqadmin.cgi


Debe desplegarse una ventana de autenticación y al introducir los datos de acceso configurados previamente debe aparecer la ventana principal de Vqadmin. Hacer clic en el enlace “Add Domain”, en la pagina que aparece introducir en el campo “Domain Name” el valor “midominio.org”, en el campo “Postmaster Password ” introducir la contraseña del administrador del dominio. Hacer clic en el botón “Add Domain”.

Descomprimir, compilar e instalar maildrop:
cd /downloads/qmailrocks
tar zxvf maildrop-1.6.3.tar.gz
cd maildrop-1.6.3
./configure --prefix=/usr/local --exec-prefix=/usr/local --enable-maildrop-uid=root --enable-maildrop-gid=vchkpw --enable-maildirquota
make && make install-strip && make install-man


Descomprimir, compilar e instalar Qmailadmin:
cd /downloads/qmailrocks
tar zxvf qmailadmin-1.2.3.tar.gz
cd qmailadmin-1.2.3
./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html
make && make install-strip


Probar la instalación de Qmailadmin abriendo una ventana de navegador e ingresando a la URL:
http://midominio.org/cgi-bin/qmailadmin


Si la instalación fue exitosa, deberá aparecer la pagina de login de Qmailadmin



Finalizando la instalación de Qmail:

Ejecutar el script de finalización de la instalación de Qmail:
/downloads/qmailrocks/scripts/finalize/linux/finalize_linux.script


Editar el archivo /var/qmail/supervise/qmail-pop3d/run ejecutando el comando:
vi /var/qmail/supervise/qmail-pop3d/run


y modificar:
mail.example.com


por:
midominio.org


Salvar el archivo y salir del editor.

Editar el archivo /var/qmail/supervise/qmail-smtpd/run ejecutando el comando:
vi /var/qmail/supervise/qmail-smtpd/run


y modificar:
mail.example.com


por:
midominio.org


Salvar el archivo y salir del editor.

Detener Qmail ejecutando el comando:
qmailctl stop


Establecer un relay selectivo para localhost ejecutando los comandos:
echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
qmailctl cdb


Establecer los alias administrativos de Qmail ejecutando los comandos:
echo sysadmin@midominio.org > /var/qmail/alias/.qmail-root
echo sysadmin@midominio.org> /var/qmail/alias/.qmail-postmaster
echo sysadmin@midominio.org> /var/qmail/alias/.qmail-mailer-daemon


Crear los enlaces simbólicos y establecer los permisos necesarios para los archivos de alias administrativos ejecutando los comandos:
ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*




Desinstalación de Sendmail:

Buscar los paquetes de instalación de sendmail en la base de datos RPM ejecutando el comando:
rpm -qa | grep sendmail


la salida del comando debe ser similar a esta:
sendmail-8.13.4-2
sendmail-cf-8.13.4-2


Detener el servicio y desinstalar sendmail ejecutando los comandos:
service sendmail stop
rpm -e --nodeps sendmail
rpm -e --nodeps sendmail-cf


Crear los enlaces simbólicos correspondientes para el comando sendmail de Qmail ejecutando los comandos:
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail




Pruebas Finales:

Ejecutar el script que verifica la instalación de Qmail:
/downloads/qmailrocks/scripts/util/qmr_inst_check


deberá aparecer el mensaje:
Congratulations, your Qmailrocks.org Qmail installation looks good!


Verificar la correcta ejecución de Qmail ejecutando los comandos:
qmailctl stop
qmailctl start
qmailctl stat


deberá obtenerse una salida como la siguiente:
/service/qmail-send: up (pid 29956) 2 seconds
/service/qmail-send/log: up (pid 29960) 2 seconds
/service/qmail-smtpd: up (pid 29963) 2 seconds
/service/qmail-smtpd/log: up (pid 29968) 2 seconds
/service/qmail-pop3d: up (pid 29971) 2 seconds
/service/qmail-pop3d/log: up (pid 29972) 2 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0


Probar el funcionamiento del servicio POP3 ejecutando el comando:
telnet localhost 110


el servidor debe responder con una salida como la siguiente:
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK <26343.1130771165@midominio.org>


escribir lo siguiente y presionar la tecla Enter:
user postmaster@midominio.org


el servidor debe responder con una salida como la siguiente:
+OK


escribir lo siguiente y presionar la tecla Enter:
pass password


En el ultimo comando la palabra password debe ser cambiada por la contraseña que fue asignada al usuario postmaster del dominio midominio.org. El servidor debe responder con una salida como la siguiente:
+OK


escribir lo siguiente y presionar la tecla Enter:
quit


el servidor debe responder con una salida como la siguiente:
+OK
Connection closed by foreign host.


Probar el funcionamiento del servicio SMTP y la capacidad de encriptacion TLS ejecutando el comando:
telnet localhost 25


el servidor debe responder con una salida como la siguiente:
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 midominio.org ESMTP


escribir lo siguiente y presionar la tecla Enter:
ehlo localhost


el servidor debe responder con una salida como la siguiente:
250-midominio.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-STARTTLS
250-PIPELINING
250 8BITMIME


verificar que la linea 250-STARTTLS sea desplegada, ya que informa la capacidad de encriptar comunicaciones de correo utilizando TLS. Posteriormente escribir lo siguiente y presionar la tecla Enter:
starttls


el servidor debe responder con una salida como la siguiente:
220 ready for tls


ejecutar dos veces el siguiente comando:
quit


el servidor debe responder con una salida como la siguiente y cerrar la conexión:
Connection closed by foreign host.




¡Felicitaciones!

Si usted ha llegado hasta aquí sin problemas, ya tiene un servidor de correo con Qmail completamente funcional.

Si no necesita as demás funcionalidades que ofrece Qmailrocks, puede considerar el trabajo como finalizado exitosamente.

Si desea instalar las demás funcionalidades, el siguiente paso es consultar la segunda entrega (aun por publicar).

Actualizacion: Gracias a David Souto por sus correcciones acerca de la configuración de Apache para Vqadmin.

Alejandro Rincón Linares
alejandro{punto}rincon{arroba}gmail{punto}com

Anterior: Introducción

Instalando Qmail al estilo Qmailrocks en RHEL4/Fedora Core/CentOS

Introducción: ¿A que viene este cuento?

Hace algún tiempo me vi en la necesidad de implementar un sistema de correo electrónico seguro, confiable, fácilmente extensible y fácil de administrar.

Después de mucho buscar encontré la guia de Qmailrocks que me ofrecía un procedimiento perfectamente documentado de instalación de un sistema tal y como lo necesitaba.

Hemos instalado con éxito el sistema en Red Hat Enterprise Linux 4, Fedora Core 3 y 4, y CentOS 4.x, hemos agregado algunas cositas que se ajustaban a las necesidades particulares del proyecto y el resultado es esta guia, una especialización de la guia Qmailrocks para las distribuciones mencionadas.

Al decir “hemos” quiero dejar en claro que este no es el trabajo de una sola persona, Luis Fernando Muñoz, mi compañero de trabajo y amigo, realizo la primera instalación estilo Qmailrocks que tuvimos en producción y creanme, fue un verdadero dolor de cabeza. Posteriormente repetimos la instalación varias veces en un servidor de prueba para poder documentar el proceso y los inconvenientes que se presentaron en el proceso y el resultado fue un manual de procedimientos en el cual se basa esta serie de articulo.


¿Que incluye Qmailrocks?

Qmailrocks es, básicamente, Qmail con muchos, muchísimos complementos que lo hacen verdaderamente poderoso, aquí se listan algunos de ellos:

- Qmail con muchos parches maravillosos que hacen muchas cosas y harán las delicias de niños y grandes (SMTP autenticado, TLS, cuotas de usuario, entre otros)

- Vpopmail, para soporte de usuarios y dominios virtuales. La base de datos de usuarios es almacenada en una base de datos MySQL (se puede instalar sin MySQL, referirse a la guia original en este caso)

- Vqadmin y Qmailadmin: Administración de usuarios y dominios virtuales desde interfaces Web.

- Ezmlm: Listas de correo fáciles de crear y moderar.

- ClamAV: Antivirus, software libre, actualizaciones automáticas...¿quien necesita mas?

- Spamassassin: Deteccion de SPAM de ultima generación (subirá su auto estima al descubrir que no le ofrecen tanto Viagra, pero perderá importantes ofertas de negocio de acaudalados Nigerianos...)

- Squirrelmail: Webmail muy sencillo escrito en PHP pero bastante extensible instalándole plugins

El listado completo puede ser consultado en la guia original de Qmailrocks.


Consideraciones importantes:

Esta “guia” por llamarla de alguna manera, es una aproximación muy especifica a una instalación Qmail al estilo Qmailrocks y presupone conocimientos suficientes en sistemas Linux basados en Red Hat como para no tener que explicar lo que se esta haciendo. Si necesita información mas detallada acerca de los procedimientos le sugiero seguir la guia original de Qmailrocks (la cual esta en ingles). Si quiere instalar Qmailrocks para otras distribuciones de Linux (Debian, SuSe o Slackware) o para otros sistemas operativos tipo Unix (Solaris, FreeBSD) la guia original es su mejor elección.

Habiendo dejado esto claro, los dejo con el siguiente “Disclaimer”, basado en el original que se puede encontrar en el sitio de Qmailrocks:



DISCLAIMER:

Antes de proceder a instalar Qmail según esta guia lea cuidadosamente, entienda, entienda, entienda y entienda esto:

¡¡LA RESPONSABILIDAD DE LO QUE HAGA ES SUYA!!

Si, tal como lo leyó, así usted se queje mil veces que siguió este texto a rajatabla y las cosas no le funcionaron, si por hacer lo que dice aquí su servidor exploto, lo dejo su novia y lo mordió su perro lo lamento mucho, pero no comparto con usted ninguna responsabilidad.

Así como la guia oficial de Qmailrocks es resultado de una instalación muy particular de Qmail que funciono muy bien en el caso del autor, esta guia es una instalación muy particular de una instalación al estilo Qmailrocks que funciono para mi; lo cual implica que no existe ninguna garantía de que funcione para su caso particular sin ningún esfuerzo. Seguramente tendrá muchos dolores de cabeza, errores de compilación, de ejecución, de sintaxis, etc.

Otro factor adicional, soy humano y puedo cometer errores. Aunque he realizado esta instalación muchas veces y he corregido el manual de procedimientos una y otra vez, esta guia no es perfecta. Le suplico que no se limite solo a “copiar y pegar” y “buscar y reemplazar”. Si encuentra algún error de sintaxis, procedimiento, ortografía, etc. por favor hagamelo saber. Con mucho gusto corregiré la guia y le otorgare el crédito merecido.

Si usted es lo suficientemente experimentado seguramente podrá salir victorioso de los inconvenientes que se le presenten. Si usted no tiene conocimientos en Linux, compilación e instalación de software, análisis de logs, o diagnostico y solución de problemas; lo mejor es que no siga leyendo esto y busque otra alternativa.

Veo que siguió leyendo, me alegra mucho y espero que su experiencia instalando y usando Qmailrocks sea tan grata como lo ha sido para mi. En este punto existen dos posibilidades:

a) usted tiene la suficiente experiencia en sistemas Linux como para asumir este nuevo reto o

b) usted no se dejo amedrentar y tiene la firme determinación de aprender como se hace esto cueste lo cueste y esta dispuesto a asumir las consecuencias, sean muy malas o muy buenas. Si este es su caso, felicitaciones, va por un muy buen camino.

En cualquiera de las dos situaciones sugiero que...

¡REALICE MINIMO UNA INSTALACIÓN DE PRUEBA EN UNA MAQUINA QUE NO ESTE EN PRODUCCIÓN!

Esto no solo aplica para Qmail, también es valido para cualquier software que quiera instalar en un servidor en producción.

Una ultima cosa: Este Blog no es un foro de soporte, y mi e-mail no es el consultorio de un brujo que resolverá todos sus problemas. El hecho de hacer publica esta guia no implica que me voy a convertir en su “pringao”. Puede encontrar información muy valiosa en la lista de correo de Qmailrocks, en las muchas listas de correo y foros acerca del tema que se encuentran en Internet o preguntándole al que todo lo sabe: Google (lo mas seguro es que Google lo haya traído hasta aquí, así que puede llevarlo a otros sitios que también le sean útiles). Si después de todo eso aun cree que necesita soporte de mi parte, puede contactarme: doy soporte técnico por contrato y cobro por horas.

Resumiendo en tres sencillas frases:

- ¡LA RESPONSABILIDAD DE LO QUE HAGA ES SUYA!

- ¡REALICE MINIMO UNA INSTALACIÓN DE PRUEBA EN UNA MAQUINA QUE NO ESTE EN PRODUCCIÓN!

- ¡NO SOY PROFESOR DE LINUX NI DOY SOPORTE TECNICO GRATIS!


Habiendo llegado hasta este punto, procedamos con la primera entrega de esta Guia:

Primera Entrega: Instalando Qmail y reemplazando Sendmail.

Alejandro Rincón Linares
alejandro{punto}rincon{arroba}gmail{punto}com

Instalación de MediaWiki en RHEL/Fedora/CentOS

1. Requerimientos:

Servidor Web Apache con soporte de PHP versión 4.1.2 o superior (recomendado 4.3.x o 5.0.x)

Un servidor de Bases de Datos MySQL versión 4.0.x (recomendado), la versión 3.2.x también es compatible

2. Instalación:

Descargar la ultima versión de MediaWiki de la URL http://wikipedia.sourceforge.net/

Copiar el archivo en el directorio especificado (un directorio en la ruta de publicación del servidor Web)

Descomprimir el archivo y cambiar el nombre al directorio resultante:

tar xzvf mediawiki-x-x.x.tar.gz
mv mediawiki-x-x.x wiki


Dar permisos de escritura al servidor Web sobre el directorio wiki/config:
cd wiki
chmod a+w config


En caso de tener activado el modo seguro en PHP, deshabilitarlo temporalmente editando el archivo /etc/php.ini, cambiando la línea
safe_mode On


por
safe_mode Off


Reiniciar el servidor Web:
/etc/init.d/httpd restart


Desde un navegador Web, abrir la URL correspondiente al wiki instalado

Diligenciar el formulario introduciendo los datos correspondientes:

  • Nombre del sitio
  • e-mail de contacto (email del encargado de administrar el wiki)
  • nombre del usuario de administración del wiki y su respectivo password
  • nombre de la base de datos a crear
  • usuario de conexión a la BD (usuario de MySQL)
  • password del usuario (password del usuario de MySQL)
  • en caso de que la BD y el usuario no sean creados previamente, proporcionar el password de root de MySQL para que el asistente de instalación ejecute los pasos anteriormente mencionados (recomendado, pero por seguridad solo proporcionar el password de root si la instalación esta siendo realizada en un equipo que se encuentra dentro de la Intranet, en caso contrario crear el usuario y la BD desde la línea de comandos utilizando una conexión SSH y utilizar estos datos en la instalación)


Una vez terminada la instalación, copiar el archivo config/LocalSettings.php al directorio de Instalación del wiki:
mv config/LocalSettings.php .


eliminar el directorio config:
rm -rf config


En caso de haber deshabilitado el modo seguro en PHP, habilitarlo nuevamente editando el archivo /etc/php.ini, cambiando la linea
safe_mode Off


por
safe_mode On


* Reiniciar el servidor Web:
/etc/init.d/httpd restart


3. Habilitar la carga de imágenes:

Para habilitar la carga de imágenes, el directorio images debe tener permisos de escritura para el usuario con el que se ejecuta el servidor web, para ello se ejecutan los comandos:
chgrp -R apache images
chmod -R g+w images


Posteriormente, se debe editar el archivo LocalSettings.php modificando la línea
# $wgEnableUploads                = true;


por
$wgEnableUploads                = true;


Opcional: Wiki protegido por contraseña

Para hacer obligatoria la autenticación utilizando un nombre de usuario y un password para ingresar al wiki:

Adicionar las siguientes líneas al archivo de configuración del servidor Apache (usualmente /etc/httpd/conf/httpd.conf):
deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow


Crear un archivo llamado .htaccess en el directorio de instalación del wiki y editarlo (con el editor vi en este caso):
cd /ruta/instalacion/wiki
vi .htaccess


incluir estas líneas en la ventana del editor:
AuthType Basic
AuthUserFile /ruta/almacenamiento/passwords/.htpasswd
AuthName "Nombre descriptivo del wiki"
require valid-user
satisfy any


Hacer que el usuario con el que se ejecuta el servidor Web sea propietario del archivo .htaccess y asignar los permisos adecuados:
chown apache .htaccess
chmod 644 .htaccess


Crear el correspondiente archivo .htpasswd que almacenara los nombres de usuario y los passwords encriptados y asignarle los permisos adecuados:
htpasswd -bc /ruta/almacenamiento/passwords/.htpasswd usuario password_usuario
chmod 644 /ruta/almacenamiento/passwords/.htpasswd


Reiniciar el servidor Web:
/etc/init.d/httpd/restart


Alejandro Rincón Linares
alejandro{punto}rincon{arroba}gmail{punto}com

¡Bienvenidos a Linuxiando un Rato!

Saludos,

La intención de este espacio es compartir algunas de las experiencias que he tenido en los años que llevo aprendiendo Linux y brindar la posibilidad de discutir al respecto mediante comentarios.

No puedo asegurar una actualización muy periódica de este Blog pero si intentare publicar pequeños artículos que considere puedan interesarle a la comunidad.

Espero que lo disfruten y espero sus comentarios.


Locations of visitors to this page