PPTP VPN Gateway with Debian

December 18th, 2006

PPTP VPN gateway can avoid various constraints : single connection, delay for switching VPN between two hosts, etc.

Here is an easy solution :

– Install Debian with ppp and pptp-linux packages
RTFM and create /etc/ppp/options.pptp file :

lock noauth nobsdcomp nodeflate

And /etc/ppp/peers/my-tunnel file :

pty "pptp SERVER-IP --nolaunchpppd"
name LOGIN
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam my-tunnel

where LOGIN is your PPTP login.

Put Microsoft CHAP parameters in /etc/ppp/chap-secrets file :

LOGIN PPTP PASSWORD *

where PASSWORD is your PPTP password.

Then, PPTP connection is ready.
Add it in interfaces file :

auto mobile
iface mobile inet ppp
provider my-tunnel
up sleep 10 && route add -net 192.168.x.0/24 dev ppp0
up route add -net 192.168.y.0/24 dev ppp0
up /etc/init.d/firewall start

In this example, 192.168.x.0/24 and 192.168.y.0/24 are in VPN network.

And /etc/init.d/firewall file is easy IPTables script :

#!/bin/sh

# just route it !
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/tcp_ecn
iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# MTU in tunnel (only for Windows machines... strange)
iptables -D FORWARD -p tcp  --tcp-flags SYN,RST SYN --jump TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -p tcp  --tcp-flags SYN,RST SYN --jump TCPMSS --clamp-mss-to-pmtu
(update : I use now "--set-mss 294" option after some problems with "--clamp-mss-to-pmtu")
iptables -L --line-numbers
iptables -L -t nat --line-numbers

Then, to enable or disable your PPTP VPN Gateway :

# ifup mobile
# ifdown mobile

My Acer Aspire laptop : RIP

December 6th, 2006

Today is a sad day. My famous Acer laptop is definitly dead. Hardware crash takes it suddenly while a classical compilation.

Acer Aspire

According to SMART informations, my laptop was up during about 11.000 hours, then more 458 days (not too bad for three-old-years laptop). It boots about 1.900 times. The only system on it was Debian Linux.

R.I.P.

SiRF protocol specification

November 18th, 2006

SiRF protocol is designed by SiRF for GPS material.
I don’t find a really clear specification, then I write it !

Format of SiRF packet :

****************************************************
* begin ** length ** payload ** checksum ** end *
****************************************************

begin (2 bytes) = 0xa0a2
length (2 bytes) = number of bytes in payload
checksum (2 bytes) = XOR of bytes in payload AND 0x7fff
end (2 bytes) = 0xb0b3

Example of SIRF message dump :
a0a2 0009 000000010203040506 0007 b0b3

power-on password sur IBM xSeries

November 4th, 2006

Vendredi 19h, me voilà arrivé à la dernière étape de la procédure d’installation d’un Pack Evolix Serveur. Il s’agit de mettre la touche finale avant le départ de la machine pour le datacenter, c’est-à-dire protéger le BIOS par un mot de passe.

“Facile!” me direz-vous, “Ou pas!” ajouterais-je. En effet, le mot de passe choisi va me coûter quelques précieuses heures. Je vous passe les détails sur le côté ergonomique du BIOS des machines IBM (auquel je ne m’habituerais jamais) pour aller à l’essentiel : activer ce fameux power-on password. Je valide donc mon choix avec précaution (ça serait bête de bloquer la machine) et je redémarre pour le test ultime. On me demande d’entrer mon mot de passe, et là, c’est le drame : error 189, invalid passwords. Your system is now locked.

Quelques redémarrages plus tard (précisons que ce genre de machine met quelques minutes à démarrer), je me rends à l’évidence, la machine est bloquée. Après une conférence avec moi-même (“je suis sûr d’avoir entré le bon mot de passe”, “d’ailleurs il faut le confirmer”, etc.), je me retrouve avec un problème bien stupide de mot de passe. Bien sûr, aucun manuel fourni ne précise comment réinitialiser le mot de passe du BIOS, et vu le prix de la machine, je vais éviter de me jeter tout de suite sur la carte-mère pour jouer avec les cavaliers à l’aveugle. Ravalant ma fierté, je me décide à appeler le support IBM… mais c’est pour mieux pointer du doigt le ridicule de ma situation : “voilà, j’ai mis un mot de passe et il marche plus”. Combien de fois me suis-je moqué (gentiment hein) des utilisateurs dans cette situation mais là, mon appel enregistré pourra faire le tour du callcenter. Enfin, précisons que plus de 10% des demandes à un support concernent un reset de mot de passe. Bref, il faut absolument que je me sorte de ces 10%. J’ai l’impression d’être plongé dans le feuilleton “Lost” où il faut que je trouve un moyen d’entrer ce #!@ de mot de passe avant l’explosion (de mes nerfs).

Je me décide à ouvrir le capot de l’engin et à trouver un manuel descriptif de ces jumpeurs qui ont l’air de me défier de leur trouver une utilité. Ma déception est assez grande, pas de manuel disponible !! Et oui, pour le PC de Madame Michu, on a le manuel de la carte-mère mais pour les serveurs des décideurs pressés, pas besoin (c’est pas pour rien qu’ils sont pressés). Soupir. Je rejette un coup d’oeil à la carte et là, je suis attiré par un cavalier au titre évocateur “PASSWORD RESET”. Mouarf, c’est si évident, pas besoin d’en faire un manuel. Mais ne faisons pas la fine bouche la machine est débloquée.

Je vais donc enfin savoir si la fatigue du vendredi soir m’a joué un tour en ré-essayant la même manipulation que la première fois. Et, bien l’erreur se reproduit (évidemment hein). Apparemment, le mappage du clavier dans le BIOS et au démarrage est différent car si le mot de passe contient un chiffre, ça bloque !! Est-ce trop compliqué d’écrire quelque part cette information ? Bref, avec le mot de passe test, ça fonctionne bien. Mais avec un mot de passe un peu plus complexe, le blocage se reproduit (au passage, rappelez-vous le délai de quelques minutes pour le redémarrage entre tous ces essais). Allez, nouvelle hypothèse : il faut utiliser un mot de passe compatible azerty/qwerty. J’ai deviné juste, et c’est l’occasion de sortir un nouvelle acronyme : WTFM, aka Write The F***ing Manuel. Bref, c’est enfin le bout du tunnel et deux bonnes heures plus tard, je suis enfin parvenu à activer le power-on password.

Mais ne croyez pas que cela soit complètement terminé. Il reste à choisir ce que l’on veut faire avec ce mot de passe. IBM propose deux modes : un blocage complet (le mot de passe est nécessaire pour toute opération) ou blocage transparent (le système peut démarrer mais le clavier reste inactif tant que le mot de passe n’est pas entré). À vrai dire, le principe du deuxième mode est sympa, car il permet à la machine de redémarrer sans présence humaine mais il bloque également l’accès au BIOS, au choix du périphérique de démarrage et même l’accès système au clavier. Mais c’est bien sûr trop beau pour être vrai car avec le 2e mode sous Linux, le clavier est bloqué ad vitam eternam. Mais je ne suis plus à une concession près et en attendant de reporter le problème chez IBM, on se passera du clavier (qui, à vrai dire, ne sert presque à rien au datacenter).

Vendredi 23h, fin de la journée.

Mirroir non-officiel pour la base de virus ClamAV

October 28th, 2006

Histoire d’éviter de multiples requêtes sur les mirroirs ClamAV, tous les serveurs installés par Evolix utilisant ClamAV se mettent désormais à jour sur clamav.evolix.net, un mirroir non officiel de la base des virus utilisée par ClamAV.

Pour rappel, ClamAV est un antivirus libre particulièrement efficace en terme de reconnaissance de virus. Evolix l’utilise sur de nombreux serveurs de messagerie où il donne satisfaction et des tests l’annoncent même comme l’antivirus le plus efficace. Notez bien que vous pouvez soumettre un virus si vous en découvrez un non reconnu.

‘df’ command VS ‘du’ command

October 28th, 2006

On a mail server, I had a strange problem on ext3 partition. When I saw output of ‘df’ command, partition was Use% at 95% (size of 8 Go) but only 2 Go if I use ‘du’ command. And I have only 15.000 files on this partition according “find | wc -l” hack (then no block-size problem). Solution is in Linux ext3 FAQ :

The standard cause for this is some user process keeping a deleted file open. When this happens, the space is not visible via ‘du’, since the file is no longer visible in the directory tree. However, the space is still used by the file until it is deallocated, and that can only happen once the last process which has the file open either closes its file descriptor to the file, or the process exits. You can use the lsof program to try to find which process is keeping an open file. Usually it’s some log file, or some large data base file which gets rotated out, but some older process are still keeping the log file open.

Then I discovered ghost files with :

# lsof | grep “(deleted)”

In my case, an amavis daemon didn’t close an old and big log file.
I closed this process and now ‘df’ command say me Use% at 20%.

Then ‘df’ command win ;-)
End of alert.

TCP window scaling in kernel 2.6.17

July 17th, 2006

I had a strange problem: TCP freeze after HTTP GET with particular web sites (but no problem for HTTP HEAD for example) when I use machines with 2.6.17 Linux (Debian) kernel. I find why. Use of TCP window scaling changes in 2.6.17 and some broken routers don’t like this. Here is interesting discussion about use of TCP window scaling.

For my problem, fast (and bad) work around is:

echo 0 > /proc/sys/net/ipv4/tcp_default_win_scale

or even:

echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

OTP on Debian system

May 20th, 2006

When you are not in your secure hacklab, and you login on your Debian systems (laptop, remote server), it’s not secure to enter your very private password (“please, could you see ceiling” is not a secure way).

Then you could use OTP (One Time Password) way.
On Debian system, do this :

# (apt-get|aptitude) install opie-server

Add pam_opie.so in your PAM info. For example, in pam.d/ssh (or pam.d/common-auth for all your pam.d/foo), modify to have :

auth sufficient pam_unix.so
auth sufficient pam_opie.so
auth required pam_deny.so

Your systeam is now ready for OTP.

To use it, log you and :

$ opiepasswd -f -c
(You must choose a secret pass phrase to generate your OTP)

Generate 10 passwords for example :

$ opiekey -n 10 497 ab1234
(Enter your secret pass phrase)

In this example, 497 is your current seq number and ab1234 is your seed. You could known them with opieinfo command (only if /etc/opiekeys is chmod 644).

Print your 10 passwords (with your printer or you hand if you are paranoiac) and you could use them. For example, OTP login :

homer login : jdoe
Password : [enter]
otp-md5 497 ab1234 ext, Response : [enter your OTP number 497][enter]
Welcome !!
jdoe@homer:~$

Conférence sur Samba

May 10th, 2006

À l’occasion de la Journée Méditerranéenne des Logiciels Libres (JM2L), j’ai fait une présentation d’une heure sur Samba. Vous pouvez retrouvez les slides (format PDF, 1.3 Mo) que j’ai projeté et surtout la vidéo de ma présentation (format OGG, 633 Mo) ; vous pouvez même la télécharger par BitTorrent.

À cette occasion, je tiens à préciser que mon HOWTO SAMBA est obsolète (il date de 2 ou 3 ans). J’espère pouvoir prendre le temps de le mettre à jour dans les prochains mois.

Realtek network cards with VIA chipset !

March 18th, 2006

At work, we have cheap network cards for tests.
From the last command, cards are announced to be classic Realtek RTL8139D chip.

Strange realtek card

But when I put in Linux 2.(4|6) systems, I discover curious lspci message :

Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 86)
Subsystem: VIA Technologies, Inc.: Unknown device 0105

And with pci-id 1106:3106 (rev 86), I found on PCI IDs database the reference :

3106  VT6105 [Rhine-III]
1186 1403  DFE-530TX rev C

On Linux, this chipset seems to be a VIA Rhine chipset and it works fine with via-rhine Linux driver. On Windows XP, card is recognized as Realtek card and works with Realtek driver. On OpenBSD, card works with vr driver…

MAC address confirms me that is Realtek card : http://www.coffer.com/mac_find/?string=00%3AE0%3A4C
Then I have VIA chipsets marked as Realtek Chipsets !
Perhaps a factory error…