Idiomes

blog de Tomàs

Com solucionar errors amb el SMTP-AUTH de Postfix (o qualsevol altre servidor de correu) darrere d'un firewall Cisco PIX

Tu has configurat l'autenticació en el correu sortint (SMTP-AUTH) en el teu servidor de correu (Postfix en el nostre cas) i funciona perfectament. Però de sobte quan el poses en producció els usuaris es queixen que no poden enviar correus.

Qué fas? Doncs intentes seguir pas a pas per comprovar el funcionament. És a dir, fas un telnet al port 25 i segueixes pas a pas l'autenticació. La conversa va més o menys així (les línies que comencen per "->" són les que escric jo, sense la part de "->"):

tomas@client:~$ telnet smtp.example.com 25
Trying 1.2.3.4...
Connected to smtp.example.com.
Escape character is '^]'.
220 smtp.example.com ESMTP server ready
-> EHLO example.com
250-smtp.example.com
250 AUTH CRAM-MD5 DIGEST-MD5
-> AUTH FOOBAR
504 Unrecognized authentication type.
-> AUTH CRAM-MD5
334 PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=
-> ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ==
235 Authentication successful.

Fent servir Kubuntu 9.10, o qualsevol distribució linux, des d'un dispositiu USB

Ara ja fa un any vam comentar com fer servir Kubuntu 8.10 des d'un USB. Ara, un any després, em trobava amb el mateix problema, amb la Kubuntu 9.10. Peró des d'aleshores hem fet alguns avenços.

La pròpia Ubuntu porta un programa per fer que un USB arrenqui amb ella mateixa. Al menu hi ha l'aplicació "K-> Aplicacions -> Sistema -> USB Startup Disk Creator" (o també amb la comanda /usr/bin/usb-creator-kde), que es molt senzilla.

Combatent el SPAM als comentaris del blog: Mollom

Pot passar que la teva feina faci que no puguis actualitzar el teu blog. Fins i tot arribes a no visitar-lo. Aleshores arriba una horda de spammers rabiosos, amb dèria per inundar el teu blog venent Viagres, Cialis i merda semblant. Aquest ha estat exactament el cas d'aquest blog. Resultat? Més de 350.000 comentaris de publicitat, la base de dades plena, no es podien afegir comentaris des de feia mesos... un desastre.

Renovar un certificat per HTTPS a l'IIS sense iniciar petició de renovació

Sembla que el procediment habitual per renovar un certificat per HTTPS a l'IIS es iniciar una petició de renovació, enviar-la a l'entitat certificadora (Verisign, per exemple), esperar l'arxiu de resposta i importar-ho dintre del teu IIS.

Però, què fer si ens envien la renovacio amb un CSR antic? Reps un email amb un tros del tipus:

-----BEGIN CERTIFICATE-----
AoGBAOv4w3UeEEarsyIXsBL1zdBi67fC7jFiqhbs0f7/tDRuvnQvj5V7NF7Awhah
9K3J9fPkOPMfTBMmQCFVTLAlUxioh1jLEZOWDPvrB8h7msO5gM1MpufOh4NRS79J
LvyOKdDtXGfYdVRj/TNpNTFu10wLO2y9o8HAkRUlkCDb/xS3AgMBAAGjggF6MIIB
djAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRw
Oi8vY3JsLnZlcmlzaWduLmNvbS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNy
f4&dBgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBz
(...)
-----END CERTIFICATE-----

Com importar això dintre del nostre IIS? S'han de seguir aquestes passes:

Primer exportem el certificat actual. Per fer-ho hem d'anar a les propietats del site, a l'apartat "Directory Security":

Iniciem l'assistent fent click a "Server Certificate" i anem a la següent pantalla:

Fem click a "Next" i anem a la següent pantalla:

On escollirem "Export the current certificate to a .pfx file". Despres ens demanara on ho volem guardar:

I una contrassenya per l'export. D'aquesta forma ja tenim el certificat exportat.

Si mirem el contingut de l'arxiu, veurem que es binari. Per convertir-ho al mateix format que el que hem rebut per email, podem fer servir openssl, amb aquesta comanda:

openssl pkcs12 -in cert.pfx -out cert.pem

Ens demanarà la contrassenya que hem posat abans al .pfx, i ens demanarà una contrassenya per posar-li a l'arixu .pem resultant.
Si editem aquest fitxer amb qualsevol editor de text, veurem que conté un "certificate" delimitat per les clausules "BEGIN CERTIFICATE" y "END CERTIFICATE", exactament igual que el que ens han enviat per correu. Només hem de substituir el text de l'anterior certificat pel nou. Un cop ho tinguem, ho hem de tornar a la forma binaria que "enten" l'IIS. Per fer-ho, un altre cop amb openssl:

openssl pkcs12 -export -in cert.pem -out cert-new.pfx

Ens demanarà la contrassenya que li hem posat al .pem, i una altra per posar-li al .pfx resultant.
Ara per posar-ho a l'IIS, primer hem de treure el que hi havia. A la plana de "Directory Security" d'abans hem d'iniciar l'assistent una altra vegada, però aquesta vegada escollir "Remove the current certificate":

Seguint "next next" acabarem treien el certificat antic:

I ara hem d'importar el certificat nou. En l'assistent veurem que ens ha aparegut una opció que abans no estava: "Import certificate from a .pfx file":

Ens demanarà quin fitxer volem importar, i haurem d'escollir el cert-new.pfx. Ens demanarà la contrassenya que hem posat, el port on volem que escolti (normalment deixarem el 443) i finalment haurem importat el certificat

Si mirem les propietats, veurem que ha canviat la data d'expiració. Ja tenim el certificat renovat!

Winexe empaquetat per Ubuntu/Kubuntu i Debian

Acabo de descobrir que a partir de debian lenny, i a Ubuntu/KUbuntu (no sé si a la 8.04 hi era, pero a la 8.10 segur que hi és), l'aplicacio winexe, de la que vam parlar aqui i feiem servir, per exemple, en els nostres scripts per matar processos o aconseguir una shell remota, s'instal·la amb el paquet wmi-client. És a dir, que per instal·lar-ho només haurem de fer:

apt-get install wmi-client

I llestos! Suposo que per SuSE i RedHat tambe deu estar empaquetada... algú m'ho pot confirmar?

Script per fer servir automàticament Kubuntu a un USB, des de windows (actualitzat)

Instruccions: Decarreguem l'arxiu amb les utilitats, el descomprimim en algun directori, i executem el script kubuntu810.bat. Escollim lletra d'unitat, escollim arquitectura, i llestos! No s'ha de fer res mes. El propi script s'encarrega de decarregar la ISO si no la tens.

Recorda que has d'escollir una unitat que sigui la primera partició primària del dispositiu, i que ha de tenir un sistema de fitxers FAT de mes de 750MB...

Em sembla que més fàcil impossible!

I per que publico això, així d'escuet? Doncs es que ahir em van renyar...
"Quin rollo d'entrada, el post de Kubuntu-USB! Per què no fots les comandes i punt? No veus que ningú no s'ho llegirà?"

Ok, ok, ok... no cal posar-se agressius :D Missatge rebut. I m'he posat mans a la obra.

He agafat les instruccions de PenDriveLinux que havien publicat per Ubuntu, USB Ubuntu 8.10 install from Windows, i ho he adaptat a Kubuntu. A més he afegit alguna coseta més, com que puguis escollir entre arquitectura de 32 o 64 bits, i que puguis fer servir un proxy per descarregar la ISO (apart d'afegir una "-f" a la comanda syslinux perquè sense ella em donava l'error "Not a removable drive").

Actualització 5/11
A PenDriveLinux ja ho han fet, amb aquest article, o sigui que ja he perdut l'exclusiva :P

Fent servir Kubuntu 8.10 des d'un dispositiu USB (flash drive, disc dur)

Acaba de sortir la nova fornada de Ubuntu i Kubuntu 8.10. Com cada nova versió, m'agrada fer una ullada a les novetats (sobretot perquè les actualitzacions acostumen a trencar-se de tant en tant). I aquesta vegada tenia més ganes encara de veure les novetats, perquè Kubuntu 8.10 (intrepid ibex) canvia la versió de l'escriptori KDE, i posa per defecte les KDE 4.1.

Sempre he pensat que gastar un CD per copiar la distribució i fer-la servir una sola vegada és un desperdici. Tots tenim un pendrive de 1GB que ens han regalat en alguna reunió, o que ens hem comprat (fins i tot el meu pare en té, que li'n vaig comprar un de 8GB per 10€ al MediaMarkt l'altre dia), i una unitat així, que és de ràpid accés i reutilitzable, sembla el millor lloc on fer les proves de la nostra distribució.

Instal·lar la Ubuntu en un pendrive és molt senzill, està documentat a molts llocs, com per exemple a PenDriveLinux, on tenen un article per instal·lar Ubuntu, amb uns scripts que ho fan tot. Per Kubuntu no he trobat enlloc que ho deixin tan senzill, però només s'han de fer unes petites modificacions.

D'entrada necessitem una unitat USB, ja sigui un disc dur, ja sigui un pendrive, un telefon mòbil... el que sigui.

Farem servir la primera partició física de la unitat. És a dir, que si només tenim particions lògiques, haurem de eliminar-les i crear-ne com a mínim una de física. Això és així perquè les particions lògiques se'ls assigna un valor a partir del 5 (els 4 primers estan reservats per les físiques), i necessitem que sigui la primera partició de totes, la que té el valor 1. Si només tenim una partició, aleshores cap problema, endavant!

També necessitem que aquesta partició tingui un sistema de fitxers FAT, ja sigui FAT16 o FAT32, i que sigui prou gran com perquè hi càpiga el CD de KUbuntu (750MB).

Un cop tenim el dispositiu amb la partició preparada, necessitem decarregar la ISO de KUbuntu 8.10. Quan l'haguem descarregat, haurem d'accedir al sistema de fitxers de la ISO. Això ho podrem fer des de windows amb el 7zip per exemple, i amb un simple mount des de linux:

mkdir /tmp/live-cd
mount -t iso9660 -o loop kubuntu-8.10-desktop-amd64.iso /tmp/live-cd

Ara hem de copiar a l'arrel de la unitat els directoris "casper dists install pics pool preseed .disk", el contingut del directori "isolinux" i els arxius "md5sum.txt README.diskdefines install/mt86plus". En la consola de linux, seria aquesta línia:

cp -r casper dists install pics pool preseed .disk isolinux/* md5sum.txt README.diskdefines install/mt86plus /tmp/live-cd

En l'entorn gràfic de linux i de windows, s'haurien d'arrossegar aquestes carpetes al directori corresponent. També haurem de canviar-li el nom a "isolinux.cfg" per "syslinux.cfg" i sobreescriure l'arxiu "text.cfg" amb aquestes dades:
text.cfg
default persist
label persist
  menu label ^Run KUbuntu Persistently saving changes back to USB
  kernel /casper/vmlinuz
  append  file=/preseed/kubuntu.seed boot=casper persistent initrd=/casper/initrd.gz quiet splash --
label live
  menu label ^Try KUbuntu without saving any changes to USB
  kernel /casper/vmlinuz
  append  file=/preseed/kubuntu.seed boot=casper initrd=/casper/initrd.gz quiet splash --
label live-install
  menu label ^Install KUbuntu
  kernel /casper/vmlinuz
  append  file=/preseed/kubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.gz quiet splash --
label check
  menu label ^Check CD for defects
  kernel /casper/vmlinuz
  append  boot=casper integrity-check initrd=/casper/initrd.gz quiet splash --
label memtest
  menu label Test ^memory
  kernel /install/mt86plus
label hd
  menu label ^Boot from first hard disk
  localboot 0x80

Finalment s'ha de fer que es pugui engengar l'ordinador amb aquest disc (és a dir, fer-lo bootable). Per fer-ho necessitem la utilitat syslinux, que podem trobar a la web de kernel.org en les seves versions tant windows com linux (tot i que un apt-get install syslinux ja t'ho instal·la). Un cop el tinguem haurem d'executar:

syslinux -maf UNITAT

On haurem de substituir "UNITAT" per /dev/sX1 en cas de linux y "X:" en cas de linux (canvia la X per la teva lletra).

I ja ho tenim. Només hem d'assegurar-nos que l'ordinador farà servir el disc USB en engegar, i llestos!

Com que és tan senzill (potser més senzill de fer que d'explicar), potser faig un script per fer-ho des de linux i un altre des de windows... Però això un altre dia!

Mirant remotament el "registre d'events" (event log) de windows: winloglist

Si volem comprovar des de la nostra consola linux el registre d'un servidor windows (sense haver de connectar-nos-hi per terminal server, podent fer un grep dels resultats, etc, etc, etc), aqui tenim la eina!

Els paràmetres que passem al psloglist son:
-d 1 perquè només tregui els logs de l'últim dia (no volem que ens matxaqui a logs)
-f we perquè només apareguin warnings i errors (normalment son els únics que interessen)
$2 aquest es el segon parametre que li passem. Si volem veure nomes el registre "application", o "system" (que son habitualment els que interessen) només ho has d'indicar

#!/bin/bash

[ $# -lt 1 ] && echo "Error, I need at least one argument" && echo "Use: $0 server [system|security|application]" && exit 1
PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
$PROGPATH/winpsexec.sh $1 "pstools\\psloglist -d 1 -f we $2"

Més utilitats per administrar windows remotament: winkill, winshell, wininfo

En la linia en la que estavem en posts anteriors , si hem plantat la llavor amb el psexec, ara fer utilitats es senzillissim. Tres exemples:

winshell.sh
Amb aquesta utilitat aconseguim un shell al servidor windows que volguem. No fa servir el psexec perque no li cal, el cmd esta al path.

#!/bin/bash

[ $# -ne 1 ] && echo "Error, I need one argument" && echo "Use: $0 server" && exit 1
PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
. $PROGPATH/winvars.sh

winexe //$1 "cmd" $PSCREDENTIALS

wininfo.sh
Amb aquesta utilitat podem aconseguir informació sobre el servidor. Memòria RAM física, versio de SO, uptime, numero de processadors, freqüència dels mateixos, i el driver de la tarja de video. Aquest últim detall sembla de poca importància, serveix per saber si una màquina es virtual o física. Si el driver es quelcom com "VMware SVGA II", aleshores es una màquina virtual. Si el driver es quelcom com "ATI Technologies Inc. 3D RAGE IIC PCI", aleshores es una màquina física.

#!/bin/bash

[ $# -ne 1 ] && echo "Error, I need one and only one argument" && exit 1
PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
$PROGPATH/winpsexec.sh $1 pstools\\psinfo

winkill.sh
Com el seu nom indica, serveix per matar algun procés de windows (prèviament podem haver sabut el pid fent servir el winps.sh).

#!/bin/bash

[ $# -ne 2 ] && echo "Error, I need two arguments" && echo "Use: $0 server pid" && exit 1
PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
$PROGPATH/winpsexec.sh $1 "pstools\\pskill $2"

Canviant-li la cara al nagios: nagios nuvola style

Siguem sincers. Nagios té moltes moltes coses bones. Però també en té de dolentes: guarda l'històric en fitxers de text no indexats, executa un CGI compilat, el sistema d'arxius de configuració es força farragós per fer altes i baixes de màquines (sobretot baixes)... i sobretot: es lleig. Potser lleig no és la paraula... és auster, simple, poc atractiu.

A mi (i suposo que no sóc l'únic) m'importa ben poc, perquè és una eina i fa la seva feina. No estic per gaudir de mirar-la, sinò perquè m'avisi quan les coses van malament, i m'expliqui per què van malament. Però en aquest món, els que prenen les decisions i compren coses, acostumen donar-li importància a l'aparença, moltes vegades més enllà de les funcionalitats. Aleshores si vols convèncer algú perquè faci servir nagios tindries moltes més possibiltats si fos maco.

Aquí es on entra el nagios nuvola style, per donar-li un altre aspecte molt diferent al nagios i fer-lo més agradable (a la pàgina completa d'aquest article podreu veure dues captures de pantall per comparar). Està fet pels mateixos que van desenvolupar el nagiosql, i tot i que té una pàgina a nagiosexchange, l'arxiu descarregable d'allà esta corrupte (falla un css, el status.css, i es veu tot molt diferent). Jo el vaig treure d'aquesta web, i el podeu descarregar d'aquí també.

Instal·lar-ho es senzillíssim. Només cal copiar els arxius dintre del directori "html" de la teva instal·lació. En una debian, per exemple, es tan senzill com:

wget http://tomas.cat/blog/sites/default/files/nagios-nuvola-1.0.3.tar_.gz
mkdir nuvola
cd nuvola
tar zxvf ../nagios-nuvola-1.0.3.tar_.gz
cp -a html/* /usr/share/nagios3/htdocs/
cp -a html/stylesheets/* /etc/nagios3/stylesheets/.

I llestos, ja hem millorat l'aspecte del nostre nagios!

Contingut sindicat