Archive for May 2010

Ejabberd: web_admin sobre https (https://yourserver:5280/admin)

http://www.ejabberd.im/

Ejabberd es un de los mas conocidos servidores xmpp que hay para utilizar en cualquier GNU/Linux, ha sido mi elección en todas mis implementaciones.
Algo realmente necesario es cambiar el acceso normal al administrador web de ejabberd (http a https) para una mayor seguridad.

Podemos dejar el acceso normal para la red local y bajo https para otro segmento (WAN, etc) yo prefiero dejar todo directamente bajo https, la documentación oficial de cómo hacerlo se encuentra en el sitio comercial de ejabberd [0] [1], tambien disponen de más información en el Wiki oficial de Debian [2], y tambien aqui [3].

Básicamente son 2 pasos, generar el certificado que en Debian al instalar ejabberd ya se realiza generando un certificado tomando el hostname del servidor, podemos utilizar ese (/etc/ejabberd/ejabberd.pem) o generarnos uno nuevo.

1
2
3
4
5
lupin:~# cd /etc/ejabberd
lupin:~# openssl req -new -x509 -newkey rsa:1024 -days 365 -keyout privkey.pem -out ejabberd.pem
lupin:~# openssl rsa -in privkey.pem -out privkey.pem
lupin:~# cat privkey.pem >> ejabberd.pem
lupin:~# rm privkey.pem
lupin:~# cd /etc/ejabberd
lupin:~# openssl req -new -x509 -newkey rsa:1024 -days 365 -keyout privkey.pem -out ejabberd.pem
lupin:~# openssl rsa -in privkey.pem -out privkey.pem
lupin:~# cat privkey.pem >> ejabberd.pem
lupin:~# rm privkey.pem

Nos queda buscar en /etc/ejabberd/ejabberd.cfg la sección “web_admin” y dejar tal cual se muestra a continuación.

1
2
3
4
5
6
7
 {5280, ejabberd_http, [
                         http_poll,
                         web_admin,
                         tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
                        ]}
 
]}.
 {5280, ejabberd_http, [
                         http_poll,
                         web_admin,
                         tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
                        ]}

]}.

Listo! de ahora en mas, administran su ejabberd mediante un acceso seguro.
Que sería: https://youserver:5280/admin

[0] http://www.process-one.net/en/ejabberd/guide_en#htoc73
[1] http://www.ejabberd.im/node/3802
[2] http://wiki.debian.org/Ejabberd_Configuration
[3] http://sysmonblog.co.uk/2008/06/ot-installing-ejabberd-on-debian-ubuntu.html

Instalando Slackware 13.1

En este mismo instante, mientras redacto este post a la vez tambien instalo Slackware 13.1 en mi desktop, siendo que tenia Debian Lenny (stable) me decidí probar despues de muchos años a Slackware nuevamente, una de las distribuciones pioneras en el ambiente GNU.

Lo usaré unos dias con xfce como dektop y veremos qué tan bien funciona, que estoy seguro que será muy bien no por nada tiene fama de ser muy estable y segura que son mis 2 principales requisitos al usar alguna distribución GNU/Linux.

Y no, no estoy casado con Debian fuera de que es mi primera elección siempre, teniendo en cuenta los años que llevo usandola (desde el 2003 sistemáticamente) estoy abierto a usar otras distros Linux e inclusive algún Unix (OpenSolaris me tienta) y a la par tengo un FreeBSD (virtualizado con KVM) donde estoy probando la instalación de un mail server con Qmail :D

ngen.com.ar/wiki en stand-by

Tenia proyectado publicar documentación extensa en http://ngen.com.ar/wiki pero por el momento esta en stand-by, aunque hay un dokuwiki vacío alli, estoy probando mediawiki en mi server de casa, me voy a tomar entonces un tiempo para hacer pruebas y al final tendré que elegir alguno.

En el caso de mediawiki mi decisión esta demorada porque quiero usar Postgres, como en Debian Lenny la versión estable es la 8.3, hay que hacer unos malabares para que mediawiki se instale exitosamente, algo que no quiero hacer porque tambien espero mantener mediawiki actualizado al dia.
En principio estoy viendo lo que sucede con squeeze, apenas entre en estado “freeze” empezaré de nuevo con las pruebas.

OpenVPN: establecer túnel como servicio (rápido y sucio)

No tengo mucho que decir sobre OpenVPN, es actualmente la niña bonita en lo que a tecnologías VPN se refiere, sobre todo por la flexibilidad frente a soluciones mas estructuradas tales como IPSec.
Vamos a lo concreto, el objetivo de este corto post es que una PC/Server (con GNU/Linux) actuando como cliente se mantenga conectado todo el tiempo a otro servidor remoto con OpenVPN por supuesto.

Tampoco voy a explicar cómo poner en producción un servidor principal, internet tiene ya bastantes tutoriales al respecto.
Asi que teniendo en cuenta que ya tenemos en nuestro cliente los siguientes archivos necesarios para conectarnos los cuales “generalmente” son:

  • ca.crt
  • forest.key
  • forest.crt
  • server.conf

Los 3 primeros se generan en el servidor remoto y se envían mediante un canal seguro a cada cliente para que con ellos se pueda establecer el túnel, el archivo /etc/openvpn/server.conf (puede tener cualquier otro nombre) es el que se usará de forma automática por el script de arranque (en /etc/init.d/openvpn).
Al existir entonces un /etc/openvpn/server.conf con un simple:

1
lupin:~# /etc/init.d/openvpn restart
lupin:~# /etc/init.d/openvpn restart

es suficiente para establecer el túnel.

Agrego un server.conf de ejemplo que utilizo:

12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 lupin:~# cat /etc/openvpn/server.conf 
client
dev tun
proto udp
remote remoteserver.dnsalias.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/forest.crt
key /etc/openvpn/forest.key
ns-cert-type server
comp-lzo
verb 4
mute 20
keepalive 10 60
status openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log
 
lupin:~# cat /etc/openvpn/server.conf 
client
dev tun
proto udp
remote remoteserver.dnsalias.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/forest.crt
key /etc/openvpn/forest.key
ns-cert-type server
comp-lzo
verb 4
mute 20
keepalive 10 60
status openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log

Y listo, revisando /var/log/openvpn.log (para asegurarnos)

12
3
4
5
6
7
8
9
10
11
lupin:~# tail -f /var/log/openvpn.log Tue May 25 10:20:28 2010 us=740030 OPTIONS IMPORT: --ifconfig/up options modified
Tue May 25 10:20:28 2010 us=740083 OPTIONS IMPORT: route options modified
Tue May 25 10:20:28 2010 us=740121 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Tue May 25 10:20:28 2010 us=740507 ROUTE default_gateway=x.x.x.x
Tue May 25 10:20:28 2010 us=750255 TUN/TAP device tun0 opened
Tue May 25 10:20:28 2010 us=750385 TUN/TAP TX queue length set to 100
Tue May 25 10:20:28 2010 us=750483 /sbin/ifconfig tun0 10.8.0.2 pointopoint 10.8.0.1 mtu 1500
Tue May 25 10:20:28 2010 us=754493 /sbin/route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.8.0.1
Tue May 25 10:20:28 2010 us=756558 /sbin/route add -net 10.8.0.0 netmask 255.255.255.224 gw 10.8.0.1
Tue May 25 10:20:28 2010 us=758375 Initialization Sequence Completed
lupin:~# tail -f /var/log/openvpn.log 
Tue May 25 10:20:28 2010 us=740030 OPTIONS IMPORT: --ifconfig/up options modified
Tue May 25 10:20:28 2010 us=740083 OPTIONS IMPORT: route options modified
Tue May 25 10:20:28 2010 us=740121 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Tue May 25 10:20:28 2010 us=740507 ROUTE default_gateway=x.x.x.x
Tue May 25 10:20:28 2010 us=750255 TUN/TAP device tun0 opened
Tue May 25 10:20:28 2010 us=750385 TUN/TAP TX queue length set to 100
Tue May 25 10:20:28 2010 us=750483 /sbin/ifconfig tun0 10.8.0.2 pointopoint 10.8.0.1 mtu 1500
Tue May 25 10:20:28 2010 us=754493 /sbin/route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.8.0.1
Tue May 25 10:20:28 2010 us=756558 /sbin/route add -net 10.8.0.0 netmask 255.255.255.224 gw 10.8.0.1
Tue May 25 10:20:28 2010 us=758375 Initialization Sequence Completed

El “Initialization Sequence Completed” es sinónimo de una conexión exitosa, resta por supuesto verificar que pueden llegar al/los hosts remotos con ICMP (ping para los amigos) u otro protocolo.

Bienvenido Lúpin (nuevo server)

Desde el día de ayer tengo un nuevo integrante en mi casa :D
lupin

Lúpin es una máquina que recibí estos dias por un trabajo, es un:

  • Asus P5P800-MX
  • Intel(R) Celeron(R) CPU 2.53GHz
  • 1gb DDR400
  • 80GB SATA II
  • El disco está roto, tiene algún problema mecánico y hace un ruido de esos que asustan, asi que le puse 2 de 120gb que tengo en casa, le instalé Debian Lenny GNU/Linux con un kernel “linux-image-openvz-686″ para usarlo como server de virtualización además del que tengo en mi propio desktop.
    Le agregué 2 placas de red extras a la onboard, una RTL-8169 PCI y una RaLink RT2561/RT61 PCI también esta última para usarla en mi siempre postergado proyecto de integrarme con un nodo a BAL y la verdad que funciona que da gusto, al principio le habia puesto un kernel linux-libre [1] y [2] que para Debian esta ya empaquetado [3] siendo muy fácil tener un kernel 100% libre de blobs [4];
    Pero al final quedó un kernel con soporte OpenVZ by Debian con el compromiso de compilar otro sin blobs (pero con OpenVZ), algo que tendré que aprender a hacer (no compilar, eso lo he hecho decenad de veces, sino limpiar el kernel de blobs).

    Tiene instalado Firehol para administrar las reglas de iptables, nginx como webserver sirviendo http://lupin.cmiranda.com.ar que para no estar vacío lo apunté a mi /home/ftp/ donde tengo algunas cosas que comparto libremente en mi wifi público [5], claro que teniendo una conexión residencial común y silvestre, mi upload no es gran cosa por lo que le tuve que agregar un (a mi /etc/nginx/nginx.conf)

    1
    
        limit_rate 8k;
        limit_rate 8k;

    Para limitar a 8Kbs la transferencia de cualquier *.iso que esta publicado alli.

    El propósito real por el momento es tener este equipo no mas que unos pocos meses, despues buscaré alguna escuela a la que donarlo (con GNU/Linux por supuesto).

    Porqué Lúpin…………?
    La imagen que esta arriba es la del personaje principal y que tambien le daba nombre a la revista

    La Revista Lúpin fué una revista de historietas argentina. Su contenido incluía historietas de aventuras con una dosis de humor, aunque su mayor repercusión la logró por su contenido técnico y científico.

    Esa es la definición corta que nos dá Wikipedia [6], pero la realidad es que prácticamente cualquier adulto actual de 30 años en adelante tuvo contacto con esta revista cuando era niño, tengo una frase para referirme a la revista y es “si habré fracasado intentando armar los proyectos que en ella venían” y es porque además de las historieras vinieron a lo largo de 40 años de publicación un sinnúmero de proyectos de bricolage, electrónica, experimentos científicos y cualquier otra cosa que implicara un estímulo intelectual para todos los niños y lo de “fracasar” es porque me divertía mas intentando armar todos proyectos que lograr un resultado real :D
    Hoy ya no existe la revista original, entonces en un arranque de nostalgia no pude resistirme de nombrarlo como lúpin a mi nuevo server hogareño.

    [1] http://fsfla.org/svnwiki/selibre/linux-libre/
    [2] http://es.wikipedia.org/wiki/Linux-libre
    [3] http://lists.debian.org/debian-devel-announce/2009/04/msg00010.html
    [4] http://es.wikipedia.org/wiki/Blob_Binario
    [5] http://ngen.com.ar/blog/?p=9
    [6] http://es.wikipedia.org/wiki/Lúpin