lunes, 30 de junio de 2008

Curso Capacitacion SwL, parte II

La verdad es que estoy un poco defraudado por el tema del Curso.En 12 horas sé que no se puede pretender ser un gurú del tema, ni pretender hacer grandes avances sobre nada.La parte de BIND que más me interesaba, fue sólo un acercamiento al fichero de configuración.Mucho lirili, pero poco lerele.Dónde están, que es un ROOT Server? Qué es , cómo se configura un Servidor Secundario de DNS? Cómo va el DNS-DHCP? En fin...Lo peor de todo es que nos ponemos a instalar BIND en un LIVE CD! y peta.Error al escribir en memoria.En menos de un minuto San Google.es me dio la respuesta.Deshabilitar apparmor.Joer, ni siquiera el "profesor" sabía de la existencia de apparmor! El caso es que se lo comenté y toda la clase pudo instalar BIND,guau!!!!!
Repito, la culpa no la tiene el docente,pero hay que ser un poco serios.El tipo tiene nivel, eso sí, a mi de nada me vale que configures la consola con el logo de NMAP para que todos flipen, si luego nos perdemos más cosas.Por cierto, con el BIND funcionando como servidor local(ni siquiera creamos una zona),nos largamos media hora antes(19:30) de terminar.Ya que me voy a hacer 200 Km y el próximo finde casi seguro que me toca dormir en un sofá, por favor, vamos a preparar las clases!
Ya por último,a mi me dice muy poco el afán de personalizar-galeguizar una Ubuntu 8.04 si luego fallamos en que considero básico.
Salud y gnuismo.
PD:Por cierto, pienso volver el próximo fin de semana.

sábado, 28 de junio de 2008

Curso Capacitación Software Libre

Estoy en Santiago, en un Curso de Capacitación de Software Libre. Concretamente en el módulo II,de Servicios Básicos de Red.Ahora mismo estamos viendo SAMBA; cosillas básicas pero que siempre cunden repasar.La verdad es que el nivel general, a priori, no parece muy alto, pero el profesor tiene una pinta de friki! Lo bueno es que la clase parece amena.Los PC tienen Ubuntu 8.04 en Live CD! y de momento todo parece funcionar.Espero dentro de una hora comenzar con BIND, a ver si no me quedo dormido antes!
Salud y gnuismo!

viernes, 27 de junio de 2008

Soy CCNA!

Con unos cuantos meses de retraso...por fin soy CCNA! El examen no me ha parecido difícil.La verdad es que estaba un poco nervioso,pero una vez contestada la primera pregunta,van como rosquillas....El examen fue un suplicio;debía comenzar a las 09:00 horas y lo terminé a las 18:45 de la tarde.SI! Algo así como unas 6-7 horas en la Academia, por culpa de no sé que error en la descarga de los exámenes!Lo bueno es que es sólo una anécdota.
Por fin tengo o tendré tiempo para mirar, leer y probar las cosas que, unas veces por cansancio y otras por ¿obligación moral? había dejado aparcadas.Entre ellas:
  • MAC, MAC, MAC. Voy a quemar el disco duro de tanto usarlo!
  • Acabar el libro "Seguridad en Servidores Linux".
  • Preparar el Artículo "Clustering HA con Squid". Después del artículo que me han publicado el año pasado,a finales de 2008 entregaré el segundo volumen.Tengo mucho que leer, muchas configuraciones que probar.Me gustan los retos.
Por lo demás todo como casi siempre.Mucho GNU/Linux en la oficina, y algún que otro "brown" resuelto con más o menos soltura.
Salud y gnuismo para todos!

jueves, 12 de junio de 2008

SSL Dovecot

Notas sencillas sobre como configurar Dovecot con SSL.

1.- Descargamos el fichero http://dovecot.org/doc/mkcert.sh
#!/bin/sh

# Generates a self-signed certificate.
# Edit dovecot-openssl.cnf before running this.

OPENSSL=${OPENSSL-openssl}
SSLDIR=${SSLDIR-/etc/ssl}
OPENSSLCONFIG=${OPENSSLCONFIG-dovecot-openssl.cnf}

CERTDIR=$SSLDIR/certs
KEYDIR=$SSLDIR/private

CERTFILE=$CERTDIR/dovecot.pem
KEYFILE=$KEYDIR/dovecot.pem

if [ ! -d $CERTDIR ]; then
echo "$SSLDIR/certs directory doesn't exist"
exit 1
fi

if [ ! -d $KEYDIR ]; then
echo "$SSLDIR/private directory doesn't exist"
exit 1
fi

if [ -f $CERTFILE ]; then
echo "$CERTFILE already exists, won't overwrite"
exit 1
fi

if [ -f $KEYFILE ]; then
echo "$KEYFILE already exists, won't overwrite"
exit 1
fi

$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 365 || exit 2
chmod 0600 $KEYFILE
echo
$OPENSSL x509 -subject -fingerprint -noout -in $CERTFILE || exit 2

2.- Creamos el fichero /etc/dovecot/dovecot-openssl.cnf
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
# country (2 letter code)
C=ES

# State or Province Name (full name)
ST=Madrid

# Locality Name (eg. city)
L=Leganes

# Organization (eg. company)
O=ISIDISI

# Organizational Unit Name (eg. section)
OU=IMAP SSL Server

# Common Name (*.example.com is also possible)
CN=imap.isidisi.com

# E-mail contact
emailAddress= info@isidisi.com

[ cert_type ]
nsCertType = server

3.- Hacemos backup de los certificados que vienen por defecto en Dovecot:
mv /etc/ssl/private/dovecot.pem /etc/ssl/private/dovecot.pem.bak
mv /etc/ssl/certs/dovecot.pem /etc/ssl/certs/dovecot.pem.bak

4.- Modificamos /etc/dovecot/dovecot.conf

protocols = imap imaps
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem

5.- Reiniciamos dovecot
[root@imap.isidisi.com] /etc/init.d/dovecot restart
Restarting mail server: dovecot.

martes, 3 de junio de 2008

BSC, simplemente alucinante!

A quién no le gustaría administrar esto ?

Backup IOS Router Cisco

Bueno... ya falta cada vez menos para el examen final de CCNA. Repasando esta tarde, no recordaba(en realidad sí, pero era una escusa para postear!!!!) cómo hacer un backup del IOS y ni como cambiar password a un router.Es muy fácil.

Backup IOS.
  • Tener un tftp server funcionando
  • Modo enable, hacemos un show flash, y deberíamos ver algo como esto:
System flash directory:
File Length Name/status
1 4306080 c820-sy6-xxxxx.xxxxxxx
[4306144 bytes used, 4082464 available, 8388608 total]
8192K bytes of processor board System flash (Read/Write)
  • Luego un copy flash tftp, y deberíamos ver algo como esto:
router-01#copy flash tftp Source filename []? c820-sy6-xxxx.xxxx Address or name of remote host []? 192.168.12.253 Destination filename [c827-y6-mz.121-1.XB]? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
En pocos segundos tendremos en nuestra máquina una imagen del IOS sana y salva.Sólo falta quemar un CD para mayor seguridad y meterlo en la caja fuerte.Aunque muchos no lo sepan, las imágenes de IOS cuestan €, y bajarlas de la "mula" no es del todo "legal".

Recuperar contraseña.
  • Con el router mosqueado, lo reiniciamos y cuando veamos:
System Bootstrap, Version 12.2(4r)XM1, RELEASE SOFTWARE (fc1)
TAC Support: http://www.cisco.co
Copyright (c) 2001 by cisco Systems, Inc.
C800/SOHO series (Board ID: 13-62) platform with 24576 Kbytes of main memory

pulsamos CTRL+Pausa.
  • Entramos en modo ROMmom, y escribimos
rommon 2 > confreg 0x2142
rommon 2 > reset
  • Después de un par de minutos...voilá:
Would you like to enter the initial configuration dialog? [yes]
Sencillo, no, pues a trastear!

VPN y Perl

NO soy programador, con lo cual, asumo los errores y barbaridades de este post.
Supuesto: Se necesita chequear el acceso a una red, y en caso de no poder acceder a la misma, levantar el cliente de Cisco VPN para GNU/Linux.
Solucion: Script en perl que compruebe vía ICMP la disponibilidad el router remoto y en caso de no poder llegar a esta red,levantar el cliente de Cisco.He estado trasteando un poco con CPAN y demás, y esto es lo que he conseguido.

#!/usr/bin/perl
use Net::Ping;
$gateway = "192.168.1.254";
$p = Net::Ping->new();
if($p->ping($gateway))
{
print "El gateway $gateway responde\n";

}
else
{
print "El gateway no responde\n";
system ("matavpnc");
print "Lanzando conexion VPN\n";
system ("vpnc-connect miempresa");
system ("ping -c 5 192.168.1.254");
system ("route -n");

}
$p->close();


Pero esto no es todo.Como sabréis, el Cliente de Cisco crea subinterfaces del tipo tun0, tun1...por cada una de las conexiones VPN.Si sólo existe esa conexión el script anterior nos llega, pero qué sucede si existen más conexiones establecidas? Fácil. El cliente retorna un error indicando que no puede crear la interfaz tun0 por que ya está en uso.Para solucionarlo, he estado probando un script en bash que compruebe si está corriendo(muy fácil comprobando el pid o ps) ya el vpnc-connect, y en caso afirmativo, añada --local-port 0 o --local-port n+1 como parámetro a vpnc-connect..Con ps aux y awk encontré la pista para seguir adelante.
#!/bin/bash
for i in `ps aux|grep vpnc-connect| awk '{ print $2 }'`;
do
kill -9 $i
done
echo "Fin Script MataVPN"

Este ejemplo en concreto mata todos los procesos vpnc-connect, y no hace exactamente lo que queremos, pero el awk '{ print $2 }' creo que es la clave.
Salud y gnuismo para todos!