Mon la'Blog'atoire

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 3 mai 2009

Backtrack 4 beta on EeePC 701

On a previous article, i explain how to add a module to make Backtrack 3 working better on Asus EeePC 701 Asus EeePC 701.

Backtrack 4 beta Backtrack 4 beta is now out from some time now, and it is now based on Ubuntu (Slackware for BT3), and this module has to be adapted.

Once again, you can easily install BackTrack 4 beta on an USB stick or SSD card, and boot on it.

It's simply works !


Installation :

  • First, you need to locate your USB device. On my EeePC, it is /dev/sdb. My BT4 files are on /mnt/sdb1 and changes partition on /mnt/sdb2
  • Download the following files and install them on /mnt/sdb1/BT4/optional/

EeePC.lzm

  • Edit /mnt/sdb1/boot/syslinux/syslinux.cfg and add these lines (just after the PROMPT, TIMEOUT and DEFAULT lines)
LABEL BT4
MENU LABEL BT4 Beta - EeePC + Console with Persistent Changes
KERNEL /boot/vmlinuz
APPEND vga=0×317 initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw quiet changes=/dev/sdb2 load=EeePC

LABEL BT4
MENU LABEL BT4 Beta - EeePC + Console
KERNEL /boot/vmlinuz
APPEND vga=0×317 initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw quiet load=EeePC
  • Reboot, and make sure the right choice in BT4 syslinux menu is OK

What's inside EeePC module

Reduce write cycles on flash devices
tmpfs should be mount on some temporary directory. However, /etc/fstab in rebuild at boot stage, using liblinuxlive script (that is part of the linux live framework) So we can't easily patch this library to add our tmpfs entry.
I found that the best way to add tmpfs in fstab was to add a rc script (S34tmpfs) in rcS.d directory, that have to be run just before S35mountall.sh
/var/log is no longer mount on tmpfs in this lzm for BT4 as there are many already created directory on /var/log that have to be here

kismet.conf
provide madwifi source for onboard EeePC chipset

scripts monitor_start and monitor_stop
to easily start/stop monitor mode on internal wifi device (usefull for aircrack-ng)

dimanche 7 septembre 2008

Nessus 3.2.1 module on Backtrack 3 Final

Nessus is no longer installed inside backtrack distribution.

Here is a module to run Nessus 3.2.1 on BackTrack 3 Final.

Both server (nessusd) and GUI (NessusClient) are included

The module is build from following Tennable packages :

  • Nessus-3.2.1-es4.i386.rpm
  • NessusClient-3.2.1-es4.i386.rpm

The backtrack module start with an empty nessus package (no certificate, no user, and of course, no registration). See Nessus Install Documentation


Download

Download module from : http://www.licour.com/blogfiles/BT3/nessus-3.2.1.lzm


Installing on BackTrack 3 Final USB

In this mode, nessus is installed as a module, that is add to system during boot. Note that you should use a persistent changes file system to use this modiule. It let you record the plugin cache DB that nessus build during startup, and the registration code.

Note : You need some space (minimum 200 Mo) on change partition to store plugin database and update plugins.

Copy the module file into /bt3/modules directory of the USB, and then reboot. Nessus will be available as items in backtrack menu. The serveur is not started on boot


Installing on BackTrack 3 Final HDD

HDD installation does not support module (this is a SLAX feature !). Installation consist of copying files of modules to HDD. Then, you need to run an installation script

lzm2dir nessus-3.2.1.lzm /
/etc/rc.d/rc.nessus start

That's all

Backtrack 3 Final on EeePC

There are many articles about installing BackTrack on EeePC .

Here are some articles about this subject :

You can easily install BackTrack 3 Final (BT3F) on an USB stick or SSD card, and boot on it.

It's simply works !

However, there are some additional tweaks to bring for optimal use on this specific hardware. I created a BackTrack 3 Final module to compiled and install all these modifications.


Installation :

  • First, you need to locate your USB device. On my EeePC, it is /dev/sda. My BT3F files are on /mnt/sda1 and change partition on /mnt/sda2
  • Download the following files and install them on /mnt/sda1/bt3/optional/

EeePC.lzm
cubez_EeePC.lzm

  • Edit /mnt/sda1/boot/syslinux/syslinux.cfg and add these lines (just after the PROMPT, TIMEOUT and DEFAULT lines)
LABEL pchanges
MENU LABEL EeePC BT3 Graphics mode (KDE) with Persistent Changes
KERNEL /boot/vmlinuz
APPEND vga=0×317 initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw changes=/dev/sda2 load=EeePC autoexec=xconf;kdm

LABEL pchanges
MENU LABEL EeePC BT3 Graphics mode (Compiz) with Persistent Changes
KERNEL /boot/vmlinuz
APPEND vga=0×317 initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw changes=/dev/sda2 load=cubez_EeePC,EeePC autoexec=xconf;cubez;kdm
  • Reboot, and make sure the right choice in BT3 syslinux menu is OK

What's inside EeePC module

Reduce write cycles on flash devices
tmpfs should be mount on some temporary directory and log path. However, /etc/fstab in rebuild at boot stage, using liblinuxlive.sh script, that is include inside initrd. So we can't easily patch this library to add our tmpfs entry. I found that the best way to mount tmpfs was to replace the PCMCIA boot script. It is load early, before daemon initialization (see /etc/rc.d/rc.M), and there is no PCMCIA port on our EeePC.

kismet.conf
provide madwifi source

/etc/rc.d/rc.6
fix shutdown hang

scripts monitor_start and monitor_stop
to easily start/stop monitor mode on internal wifi device


What's inside cubez_EeePC module

compiz has some bugs on EeePC. Compiz module provided with BT3 beta seems better. This module is cubez.lzm provides with this distribution.

vendredi 2 mai 2008

RPM for NuFW

RPM for NuFW are now availables in my repository for :

  • Fedora 7 & Fedora 8
  • RHEL 5/CentOS 5

This let you install :

  • nufw daemon
yum --enablerepo=llicour install nufw
  • nuauth daemon
yum --enablerepo=llicour install nuauth
  • nutcpc tool
yum --enablerepo=llicour install nutcpc

RPM Packages availables for this project are :

  • libnuclient3
  • nuauth
  • nuauth-ldap
  • nuauth-mysql-auth
  • nuauth-mysql-log
  • nuauth-pgsql-log
  • nuauth-prelude-log
  • nuauth-utils
  • nufw
  • nutcpc
  • pam_nufw

Others packages have been added in my repository for dependencies :

  • libnetfilter_queue for CentOS5 / RHEL5
  • libnetfilter_logs for CentOS5 / RHEL5

On RHEL/CentOS, you should also need packages from others repositories :

After install, nufw and nuauth daemon are registered as a service, but not started. They can be start with :

service nufw start
service nuauth start

(see /etc/sysconfig/nufw, /etc/sysconfig/nuauth and /etc/nufw/... for options)

See NuFW Home page for configuration


Thanks to authors from INL

Instructions to add my repository are here

samedi 3 novembre 2007

Nouveau Repository YUM RPM

Voici venir un nouveau repository YUM pour Fedora/Redhat/Centos avec quelques paquets je j'utilise

Le dépot est petit pour le moment, mais il devrait s'enrichir au fur est à mesure

Pour le moment, les paquets disponibles sont :

  • kissdx : un serveur de streaming pour lecteurs de divx de la marque KISS
  • perdition : un proxy POP3/IMAP4

L'intégration facile de ce dépot s'effectue en installant le RPM suivant :

Fedora 7

http://repo.licour.com/fc7/i386/RPM/llicour-release-0-1.fc7.noarch.rpm

Fedora 8

http://repo.licour.com/fc8/i386/RPM/llicour-release-0-1.fc8.noarch.rpm

CentOS 3/ RehHat 3

http://repo.licour.com/centos3/i386/RPM/llicour-release-0-1.centos3.noarch.rpm

CentOS 4/ RehHat 4

http://repo.licour.com/centos4/i386/RPM/llicour-release-0-1.centos4.noarch.rpm

CentOS 5/ RehHat 5

http://repo.licour.com/centos5/i386/RPM/llicour-release-0-1.centos5.noarch.rpm

Sinon, la configuration YUM est la suivante :

Fedora

[llicour]
name=Les RPM de llicour pour Fedora $releasever - $basearch
baseurl=http://repo.licour.com/fc$releasever/$basearch/RPM/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-llicour

CentOS / RehHat

[llicour]
name=Les RPM de llicour pour CentOS / RedHat $releasever - $basearch
baseurl=http://repo.licour.com/centos$releasever/$basearch/RPM/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-llicour

Note : Les RPMs sont signés avec ma clé GPG dont la fingerprint est :

9388 8882 C496 EA41 B2BF  9EE0 D741 3186 F047 B8FF

Note 2: Les paquets ont été construits avec mock

Note 3: Le dépot est désactivé par défaut

Note 4: Le dépot est compatible avec ceux de EPEL et de DAG

vendredi 11 mai 2007

FON et IP fixe

Cet article est la continuité des articles suivants :

L'idée est la suivante : après avoir identifié et autorisés quelques utilisateurs dans le WLAN grâce à leur adresse MAC, il faut maintenant leur affecter une adresse IP fixe (sur le WLAN et sur le WAN), permettant par exemple :

  • d'effectuer un filtrage firewall coté WAN spécifique pour cette machine
  • d'avoir une politique de proxy différente (cf article sur squid/squidguard)
  • de pouvoir faire des statistiques d'accès par utilisateur (avec sarg par exemple)
  • ...

Nous avons comme point de départ une identification de certains équipements par leur adresse MAC, permettant de contourner l'authentification FON (cf cet article) Avec cette configuration, ces machines rentre dans le moule standard et se voient attribuer une adresse IP en DHCP sur le WLAN, dans le pool 192.168.182/24. Coté WAN, une translation d'adresse est effectuée sur l'adresse publique du WAN (interface vlan1) grâce à un MASQUERADE iptables. Ainsi, toutes les connexions effectuées par un client FON seront vues avec l'adresse publique (WAN) du routeur FON.

En jouant sur la configuration d'iptables, de freeradius et de chillispot, il est possible de choisir quel type d'affectation d'IP aux adresses MAC identifiées :

  • classique : DHCP sur le WLAN, IP du routeur FON sur le WAN
  • partiel : IP fixe sur le WLAN, IP du routeur FON sur le WAN
  • fixe : IP fixe sur le WLAN, IP fixe sur le WAN

Concernant l'affectation d'IP fixe sur le WLAN, cela s'obtient en découpant la plage d'adresse 192.168.182.0/24 attribuée par chillispot (faisant office de serveur DHCP)

  • 192.168.182.0/25 sera la plage DHCP
  • 192.168.182.128/25 sera la plage d'IP fixe (à vous d'en faire la gestion)

Concernant l'affectation d'IP fixe sur le WAN, il faut que ces adresses soient disponibles. Chacune des adresses identifiées sera attribuée au routeur FON (alias de l'interface vlan1)

Procédure d'installation :

  • Installation des outils

Afin de simplifier les opérations, les fichiers de configuration sont disponibles dans l'archive http://www.licour.com/blogfiles/fon_mac_v2.tgz.

# cd /tmp
# wget http://www.licour.com/blogfiles/fon_mac_v2.tgz
# tar xzf fon_mac_v2.tgz
# cd fon_mac_v2
# cp -a MAC /jffs

Le repertoire /jffs/MAC contient maintenant un script de configuration et des fichiers de configuration associés.

  • Fichier de configuration

Fichier : /jffs/MAC/fon_allowed_mac.lst Si vous possédez déjà un fichier de configuration issu d'une précédente version, celui-ci reste compatible Sinon, faites une copie du fichier template : fon_allowed_mac.lst.template

  • Modifier le fichier de configuration

En précisant les adresses IP fixes que vous voulez utiliser sur le WLAN et sur le WAN

  • Lancement automatique

Ajout le code suivant dans votre script /etc/init.d/S90user

# Execution script de configuration d'iptables de NAT statique
if [ -f /jffs/MAC/fon_nat.sh ]
then
  /jffs/MAC/fon_nat.sh
fi

Ce script permet la création automatique des alias de l'interface WAN (affectation des IP statiques WAN) et l'ajout des règles de translation iptables.

  • Lancement du script de configuration
# ./fon_update_mac.sh
[*] Process allowed MAC with DHCP
  -> Found MAC : 00-11-22-33-44-55
[*] Process allowed MAC with static WLAN IP (172.21.1.16 as WAN IP)
  -> Found MAC : 00-22-33-44-55-66,192.168.182.128
[*] Process allowed MAC with static WLAN IP and static WAN IP
  -> Found MAC : 00-33-44-55-66-77,192.168.182.129,10.0.0.129
[*] updated /etc/freeradius/users
[*] Removing old vlan1 aliases
[*] Filling iptables postrouting_mynat chain
[*] Creating vlan1 aliases
[*] updated iptables script
[*] updated /jffs/MAC/fon_chillispot.sed
[*] restarting chillispot
Reboot your router could help you...



Détails techniques :

Grâce au script /jffs/MAC/fon_nat.sh, vous devriez normalement voir de nouvelles interfaces vlan1:??

# ifconfig
...
vlan1     Link encap:Ethernet  HWaddr 00:xx:xx:xx:xx:xx
          inet addr:10.0.0.10  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:58758 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10790 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5211506 (4.9 MiB)  TX bytes:1563161 (1.4 MiB)
vlan1:129  Link encap:Ethernet  HWaddr 00:xx:xx:xx:xx:xx
          inet addr:10.0.0.129  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
...


Ainsi qu'une nouvelle chaîne iptables :

root@fon:/jffs/MAC# iptables -t nat -L POSTROUTING -n
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
postrouting_mynat  all  --  0.0.0.0/0            0.0.0.0/0
postrouting_rule  all  --  0.0.0.0/0            0.0.0.0/0
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0
root@fon:/jffs/MAC# iptables -t nat -L postrouting_mynat -n
Chain postrouting_mynat (1 references)
target     prot opt source               destination
SNAT       all  --  192.168.182.129      0.0.0.0/0           to:10.0.0.129


La configuration freeradius inclus maintenant la notion d'IP affectée à l'adresse MAC.

/etc/freeradius/users
"00-11-22-33-44-55" Auth-Type := Local, User-Password == "password"
"00-22-33-44-55-66" Auth-Type := Local, User-Password == "password"
 Framed-IP-Address = 192.168.182.128
"00-33-44-55-66-77" Auth-Type := Local, User-Password == "password"
 Framed-IP-Address = 192.168.182.129


La configuration chillispot est modifiée en ajoutant les options de gestion des plages IP statiques et DHCP

/etc/chilli.conf
...
dynip 192.168.182.0/25
statip 192.168.182.128/25

jeudi 10 mai 2007

Filtrer le trafic FON par squidguard

Il peut sembler utile de filtrer le trafic FON par du contrôle de contenu. Je ne tiens pas à ce que ma connexion internet serve de lieu de transit à du contenu illégal.

La solution que j'ai utilisé consiste à mettre en place un proxy transparent entre mon routeur FON (un wrt54g et internet. Cette configuration permet la mise en place d'un proxy, sans que l'utilisateur ai besoin de modifier son navigateur. Tous les flux web passeront obligatoirement par le proxy, sans même que l'utilisateur le sache.

Un proxy squid a été utilisé, muni du redirector squidguard pour tout ce qui est filtrage de contenu.

Le proxy est situé côté WAN par rapport à FON, c'est à dire situé sur mon LAN, sur un serveur linux me servant déjà de proxy explicite pour les machines de mon LAN.

Une configuration spécifique au squid est nécessaire pour le rendre compatible en mode de fonctionnement transparent (sur la machine squid) :

/etc/squid/squid.conf
 httpd_accel_host virtual
 httpd_accel_port 80
 httpd_accel_with_proxy  on
 httpd_accel_uses_host_header on

Il faut ensuite modifier la configuration du routeur FON pour qu'il envoi les flux web vers le serveur proxy (adresse IP : 10.0.0.10) :

/etc/init.d/S90user
iptables -t nat -A prerouting_rule -i tun0 -p tcp --dport 80 -j DNAT --to 10.0.0.10:3128
iptables -I WAN_HOOK -p tcp --dport 3128 -d 10.0.0.10 -j ACCEPT

La première règle permet de mettre en place la redirection de trafic. La seconde règle permet d'autoriser les flux WLAN (les clients) vers le proxy situé sur le WAN (trafic interdit par défaut).

A partir de ce moment, tous les flux web seront dirigés vers le proxy squid, où vous pourrez activer (au choix) :

  • le caching des pages
  • le filtrage de contenu
  • le filtrage anti virus
  • le filtrage d'URL
  • la tracabilité
  • ...

Attention : L'authentification par le proxy n'est pas possible en mode transparent (le navigateur ne s'attendant pas à en utiliser)

A noter que ce mode de proxy transparent ne concerne que le protocole HTTP sur le port 80/tcp. Le protocole HTTPS n'est pas compatible avec ce mode et doit donc passer en direct.

Dans le cas d'un filtrage par squidguard, il est possible de mettre en place une page web où l'utilisateur est redirigé en cas de non conformité à la politique. Cette page ne peut par défaut pas être situé sur une machine située sur le WAN (car l'utilisateur n'y a pas accès). Le rajout d'une règle firewall peut alors être nécessaire.

Note : ce howto concerne le routeur WRT54g et non la fonera (pour le moment)

mercredi 9 mai 2007

Administrer un routeur FON depuis le WAN

Quel intérêt ?

Mon routeur FON (un wrt54g ) est situé derrière mon LAN et non directement sur internet. Le WLAN au sens FON est donc mon LAN, et il est donc judicieux de pourvoir administrer le routeur depuis ce réseau.

Pour effectuer cette manipulation, il est nécessaire de modifier le paramétrage du firewall. Ces modifications s'effectuent via des règles iptables, à reproduire à chaque reboot.

Il est donc necessaire de se créer un hook sur le système permettant d'insérer ces modifications. La création du fichier script suivant a cet effet :

/etc/init.d/S90user
iptables -A input_vlan1 -p tcp --dport 22 -j ACCEPT
iptables -A input_vlan1 -p tcp --dport 80 -j ACCEPT

dimanche 17 décembre 2006

Connecter une Nintendo DS sur FON

(english version)

FON est un réseau collaboratif permettant de partager, via le Wifi, les connexions internet des individus. Ce réseau utilise des routeurs spécialisés :

  • WRT54G
  • La Fonera

chacun d'eux fonctionne avec un firmware openWRT modifié (sous Linux).

Le portail captif est géré par le logiciel chillispot. Les utilisateurs accèdent à Internet en s'attachant à un Wifi ouvert (non chiffré), puis en s'authentifiant sur la page Web du portail captif. Tant que cette authentification n'a pas eu lieu, aucun trafic n'est authorisé vers internet. Cette authentification est assurée par un serveur Radius situé chez FON.

La Nintendo DS est une console de jeu permettant de se connecter et de jouer sur internet, pour peu que l'on dispose d'un acces Wifi ouvert, ou protégé par du WEP. Le WPA et WPA2 ne sont pas supportés. Cette console ne disposant pas de browser, il n'est pas possible d'utiliser la page d'authentification du portail FON.

Impossible à première vue d'utiliser les quelques jeux profitant du mode multijoueur sur Internet.

J'ai testé de nombreuses possibilités :

  • forcage de l'IP dans le firewall iptables de la FON : l'interface tun0 (mappée sur l'interface wifi eth1) est une interface virtuelle, qui permet à un programme en userland (chillispot) d'effectuer lui-même le filtrage (entre autre). Les modifications dans iptables sont donc sans effet, le filtrage et la redirection vers la page du portail captif n'étant pas réalisé à ce niveau
  • spoofing IP après authentification d'une machine : Trop complexe à mettre en oeuvre pour une utilisation par mes enfants ;-)
  • modification du mécanisme d'authentification : là, il y a des choses à faire

En jouant avec chillispot, il est possible d'authoriser certains sites (option uamallowed) à être accèdé sans authentifcation. C'est ce qui est d'ailleurs utilisé dans la personnalisation du portail FON. Des traces réseaux permettent d'obtenir les nombreux domaines et IPs accèdés par la console. L'ajout successif de ces domaines et IPs dans les exceptions de Chillispot permet d'accèder à ne nouveaux menus sur la DS :-) jusqu'au moment où la communication commence à utiliser des ports non standards (autres que http, https), bloqués par chillispot :-( Piste abandonnée (il faudrait modifier chillispot pour cela)

Toujours en jouant avec chillispot, il est possible de mettre en oeuvre de l'authentification par MAC adresse plutôt que par login utilisateur, en évitant de devoir passer par la page du portail. Cependant, cette option ne permet pas de lister des MACs directement autorisées, mais des MACs qui seront utilisées comme login dans le cadre de l'authentification radius. Le password dans ce cas est fixé à "password", ou redéfini dans la conf de chillispot.

Reste à authentifier cette MAC en temps que login. FON propose d'ajouter des utilisateurs identifiés dans son interface web, mais il n'est pas possible de rentrer une adresse MAC (zone trop courte, caractères invalides...).

Reste à travailler sur la partie radius directement. L'idée est de remplacer serveur radius de FON par un serveur radius que l'on contrôle, et d'ajouter les MACs dans sa base locale d'utilisateurs. Si l'utilisateur n'est pas trouvé localement, une interrogation vers le serveur radius de FON sera effectué.

Je possède pour ma part un routeur WRT54g en firmware FON Beta 0.6.6, et les informations suivantes concernent cet équipement uniquement. Il n'est pas exclu que cela fonctionne également avec la fonera, mais faute d'avoir testé...

Précautions d'usage : Les opérations suivantes necessitent une bonne connaissance du routeur WRT54g et du firmware openWRT (et donc de Linux). Je vous décourage de vous lancer dans ces modifications si vous ne savez pas comment débugger et réparer par vous même sous cet OS... Cela étant dit, vous êtes désormais responsable de ce que vous faites.

  • Rendre modifiable le fichier /etc/ipkg.conf
cp -f /rom/etc/ipkg.conf /etc/ipkg.conf
  • Ajouter la source ipkg suivante (pour obtenir les packages de openWRT) :
/etc/ipkg.conf
...
src openwrt http://downloads.openwrt.org/whiterussian/packages/
...
  • Installer les packages freeradius :
# ipkg update
# ipkg install freeradius
Installing freeradius (1.0.5-1) to root...
Downloading http://downloads.openwrt.org/whiterussian/packages//freeradius_1.0.5-1_mipsel.ipk
Installing libltdl (1.5.14-1) to root...
Downloading http://downloads.openwrt.org/whiterussian/packages//libltdl_1.5.14-1_mipsel.ipk
Installing libopenssl (0.9.8d-1) to root...
Downloading http://downloads.openwrt.org/whiterussian/packages//libopenssl_0.9.8d-1_mipsel.ipk
Installing libpthread (0.9.27-1) to root...
Downloading http://downloads.openwrt.org/whiterussian/packages//libpthread_0.9.27-1_mipsel.ipk
Configuring freeradius
Configuring libltdl
Configuring libopenssl
Configuring libpthread
Successfully terminated.

# ipkg install freeradius-mod-files
Installing freeradius-mod-files (1.0.5-1) to root...
Downloading http://downloads.openwrt.org/whiterussian/packages//freeradius-mod-files_1.0.5-1_mipsel.ipk
Configuring freeradius-mod-files
Successfully terminated.

# ipkg install freeradius-mod-realm
Installing freeradius-mod-realm (1.0.5-1) to root...
Downloading http://downloads.openwrt.org/whiterussian/packages//freeradius-mod-realm_1.0.5-1_mipsel.ipk
Configuring freeradius-mod-realm
Successfully terminated.

D'autres paquets devraient s'installer dans la foulée. Chez moi, les paquets suivants ont été installés :

- libpthread_0.9.27-1_mipsel.ipk
- libltdl_1.5.14-1_mipsel.ipk
- libopenssl_0.9.8d-1_mipsel.ipk
- freeradius_1.0.5-1_mipsel.ipk
- freeradius-mod-files_1.0.5-1_mipsel.ipk
- freeradius-mod-realm_1.0.5-1_mipsel.ipk

Attention : Il y a des riques de saturation de l'espace de stockage lors de l'installation de ces packages (~800Ko). Si vous avez deja installé d'autres packages, il vous faudra peut-être les supprimer.

  • Installation des outils

Afin de simplifier les opérations, les fichiers de configuration sont disponibles dans l'archive http://www.licour.com/blogfiles/fon_mac.tgz.

# cd /tmp
# wget http://www.licour.com/blogfiles/fon_mac.tgz
# tar xzf fon_mac.tgz
# cd fon_mac
# cp -a MAC /jffs

Le repertoire /jffs/MAC contient maintenant un script de configuration et des fichiers de configuration associés.

  • Configuration de freeradius
# cp freeradius/* /etc/freeradius/
# ln -s /etc/init.d/radiusd /etc/init.d/S60freeradius

Les fichiers de configuration de freeradius sont positionnés. Le démarrage au boot est activé.

  • Configuration de Chillispot

Globalement, cela consite à modifier le script de lancement pour la prise en compte de paramètres supplémentaires

# rm /etc/init.d/chillispot
# cp chillispot /etc/init.d/chillispot
  • Ajout d'adresses MAC autorisées :

Il suffit pour cela de modifier le fichier suivant en precisant la liste des MAC adresses autorisées :

/jffs/MAC/fon_allowed_mac.lst
# This file store all MAC address that must be trusted by FON router
# Format : one MAC address per line, no space before, no space after
#  MAC address format : XX-XX-XX-XX-XX-XX
#
# Don't forget to execute this script after each change in this file :
#  /jffs/MAC/fon_update_mac.sh

# This is a test's MAC address. Please uncomment and change it
#00-01-02-03-04-05

puis à lancer le script suivant :

# /jffs/MAC/fon_update_mac.sh
Process MAC : XX-XX-XX-XX-XX-XX
updated /etc/freeradius/users
updated /jffs/MAC/fon_chillispot.sed
restarting chillispot
A reboot could help you...
  • Rebooter le routeur
# reboot

Details techniques : Le script permet l'ajout des adresses MAC au bon format dans chillispot et freeradius:

  • chillispot : afin de spécifier individuellement chaque MAC devant faire l'objet d'une authentification (option macallowed). Il est sinon possible d'utiliser l'option macauth, mais dans ce cas, toutes les machines tenteront une authentification MAC, qui seront relayées jusqu'au radius de FON, faute de les trouver en local. Pas très propre.

La modification du script de lancement permet d'intercaller une modification de la configuration de /etc/chilli.conf, celui-ci étant recréé dynamiquement à chaque lancement.

  • freeradius : afin de créer la base d'utilisateur /etc/freeradius/users. On utilise le mécanisme de proxy radius pour toutes les requêtes n'ayant pas abouties localement. Le serveur radius local possède les même caracteristiques (shared secret) que le serveur radius de FON

Pour information, la forme d'une requête radius envoyée à FON est la suivante :

       User-Name = "XX-XX-XX-XX-XX-XX"
       User-Password = "password"
       Calling-Station-Id = "XX-XX-XX-XX-XX-XX"
       Called-Station-Id = "YY-YY-YY-YY-YY-YY"
       NAS-Port = 0
       NAS-IP-Address = 0.0.0.0
       Service-Type = Login-User
       NAS-Identifier = "YY-YY-YY-YY-YY-YY"
       Acct-Session-Id = "4583a42800000000"
       NAS-Port-Type = Wireless-802.11
       Message-Authenticator = 0xa65b9efc35d573c5f9b43711f00d30c2

avec : XX-XX-XX-XX-XX-XX : adresse MAC de la console DS YY-YY-YY-YY-YY-YY : adresse MAC de l'interface wireless (eth1)

Il est bien évident que cette manipulation permet d'autoriser le contournement de l'authentification FON à n'importe quel équipement (PC, PDA...) munie d'une adresse MAC. Attention dans ce cas à la sécurité lié au spoofing d'adresse MAC permettant de profiter du trou créé dans le portail.

dimanche 1 octobre 2006

Récupération Courier Confidentiel

Peu de fournisseurs d’accès offrent à leurs abonnés des accès mails sécurisés. J’entends par là la mise à disposition d’une passerelle de récupération des mails via un protocole permettant de chiffrer les communications (SSL). Plutôt que de fournir du POP3S (POP3 over SSL) ou IMAPS (IMAP over SSL), seuls les protocoles POP3 et IMAP sont disponibles.

Ceci n’est pas très gênant depuis la maison, mais peu poser problème depuis l’extérieur (entreprise, lieu public, hotspot…) où les informations (password, courriers…) vont transiter en clair, à la vue de tous.

L’utilisation d’un webmail en HTTPS dans ces situations est donc préférable, mais pas toujours pratique.

Il existe une solution intéressante qui consiste à mettre en place un proxy chez vous, accessible en POP3S et/ou IMAPS, qui relayera les communications vers votre provider en POP3 et/ou IMAP (le risque étant plus mesuré si celles-ci sont initiées depuis chez vous).

La mise en place d’un tel proxy nécessite :

  • une connexion internet permanente (ADSL)
  • une IP fixe ou à défaut une IP enregistrée dans un DNS dynamique
  • une machine sous linux toujours en fonctionnement
  • une configuration dans votre firewall permettant d’ouvrir les ports POP3S/IMAPS vers le linux
  • l’installation ou compilation du logiciel perdition et des librairies vanessa associées

Perdition est un proxy POP3/IMAP supportant les protocoles SSL et TLS.

L’idée de cette configuration est d’activer en entrée les protocoles POP3S (995/tcp) et le mode TLS du POP3 (110/tcp) (et uniquement ce mode). Une table de users sera prédéfinie sur la machine, évitant de transformer le logiciel en proxy ouvert à tous (mais dans ce cas, vous seriez en possessions de tous les users/passwords transitant sur votre machine ;-)

Il est préalablement nécessaire de créer et d’installer un certificat SSL et sa clé privée.

La configuration est ensuite la suivante (pour un proxy POP3S / POP3 TLS) : (Les fichiers dependent de la distribution Linux)

/etc/sysconfig/perdition

RUN_PERDITION=yes
POP3=yes
POP3_FLAGS="--ssl_mode tls_listen,tls_listen_force"
POP3S=yes
POP3S_FLAGS="--ssl_mode ssl_listen"
IMAP4=no
IMAP4_FLAGS=
IMAP4S=no
IMAP4S_FLAGS=

/etc/perdition/perdition.conf

connection_logging
map_library /usr/lib/libperditiondb_posix_regex.so
map_library_opt /etc/perdition/popmap.re
username_from_database
ssl_cert_file /etc/perdition/pop3s.crt
ssl_key_file /etc/perdition/pop3s.key

Cette configuration désactive le support de POP3 non sécurisé, obligeant l’utilisation de TLS. Attention toutefois : si un user/password est émis avant la négociation TLS (via le mot clé STLS en POP3 ou STARTTLS en IMAPS), celui-ci sera refusé, mais quand même transmis en clair ! A vous de forcer le mode TLS ou de le désactiver.

/etc/perdition/popmap.re

^email@laposte\.net$: login@pop.laposte.net:110
^email@free\.fr$: login@pop.free.fr:110

Ce dernier fichier contient la table de mapping (exhaustive) qui sera utilisée. Votre logiciel de mail (thunderbird, outlook…) devra être configuré avec votre machine comme serveur POP3 ou POP3S, l’adresse email figurant comme clé dans le fichier popmap.re, et votre password de compte. Le login du fichier est à remplacer par le login du compte mail

Et voilà. Il ne vous reste plus qu'à accepter le certificat SSL (où d'utiliser une autorité de certificat) au moment de la connexion, et vous voilà tranquille lors de vos déplacement...

dimanche 24 septembre 2006

Partages anonymes sous Samba

Il est possible de configurer Samba en mode anonyme, afin qu'aucune authentification ne soit necessaire.

Ceci est bien pratique dans le cadre d'une utilisation familiale, ou un serveur de fichier (une vieille machine sous Linux) sert à toute la famille.

La configuration de partages anonymes peut s'effectuer dans les modes suviants :

  • Mode de sécurité basé sur les utilisateurs

La ligne importante est le "map to guest"

[global]
...
security = user
guest account = nobody
map to guest = Bad User
...
[public]
comment = Dossier Public
path = /home/public
writable = yes
browseable = yes
public = yes
  • Mode de sécurité basé sur les partages

La ligne importante est le "map to guest"

[global]
...
security = shared
guest account = nobody
...
[public]
comment = Dossier Public
path = /home/public
writable = yes
browseable = yes
public = yes

dimanche 17 septembre 2006

Chassons le Watt perdu

Premier billet de ce blog, qui sera coloré en vert. Non que je sois un militant forcené écologique, mais en ces temps de prise de conscience du coût de l'énergie, il peut être intéressant de ce pencher sur le problème.

Pour être honnête, mes motivations premières étaient de l'ordre du confort, afin de diminuer (supprimer ?) les gênes d’une installation informatique constamment allumée.

  • le bruit
  • les vibrations
  • la chaleur dégagée

Et tout cela fera plaisir à mon beau-frère ;-)

Savez-vous d’abord ce que consomme un Pc allumé ? Et le coût qu'il en résulte ?

En tout premier lieu, il faut s'intéresser au coût du KW/h. De savants calculs permettent d'établir qu'un appareil allumé toute l'année (congélateur, frigo, PC ?, ...) et consommant 1 Watt coûte :

  • 0,94€ en tarif EDF de base
  • 0,82€ en tarif heures pleines/creuses
  • 0,56€ en tarif tempo

(Tarifs au 17/09/2006)

S'agissant de prix au Watt, il faut multiplier ce chiffre par la consommation horaire de l'appareil. Je vous laisse faire la calcul par la suite, chaque Watt économisé permettant de réduire la facture d'autant.

Je me suis amusé a calculer cette consommation sur mon installation informatique, afin d'optimiser tout cela. J’ai utilisé pour cela une prise (type programmateur) capable de fournir la consommation instantanée, extrapolée sur une heure.

Mon installation est principalement composée d’une vielle machine de récupération (un PIII à 900 MHz) fonctionnant sous Linux et servant de machine à tout faire (samba, squid, apache…). 5 disques durs équipent cette machine, dont 2 sous forme de disque dur USB externe.

Pour la petite histoire, j’ai précédemment essayé une solution à base de Linksys NSLU2 , avec le firmware unSlug, mais je me suis retrouvé confronté à un problème de puissance de cette machine (petit débit réseau, 2 disques USB maximum, petit CPU…)

Bref, mes disques ont simplement migrés vers une machine plus puissante… sans écran.

Cette machine consomme (au repos) 60 Watt (compter 80 Watt en charge). Compter également environ 15 Watt par disque dur USB externe. Soit un total de 90 Watt. Pas mal quand même.

J’ai commencé à regarder côté mise en veille des disques durs. Le standard IDE définit 4 modes de fonctionnement des disques. J'ai indiqué également la consommation dans ces modes)

  • active : en fonctionnement, lorsque le disque est accédé
  • idle (6 Watts) : en attente, la majorité du temps (chez moi en tout cas)
  • standby (0,5 watt): en veille, c'est le mode économie d'énergie. Le disque ne tourne plus, et il lui faudra quelques secondes pour réagir en cas d'accès (3-4 sec). C'est ce mode qui est mis en œuvre sur les portables.
  • sleeping (0 Watt) : à l'arrêt, seule une réinitialisation du bus IDE permet de sortir de cet état.

Linux dispose de l’outil hdparm permettant de modifier certains paramètres des disques IDE.

  • hdparm –C /dev/hdc permet d'obtenir l'état actuel du disque indiqué
  • hdparm -y /dev/hdc permet de forcer la mise en standby immédiat
  • hdparm -S 120 /dev/hdc permet de programmer une mise en standby au bout de 120*5 secondes (10 minutes) d'état idle

La mise en œuvre de ce mécanisme m'a simplement permis de gagner non seulement 12 Watts, mais aussi de diminuer les nuisances évoquées plus haut. Enfin, on peut également imaginer une durée de vie plus grande des disques, si ceux-ci ne s'amusent pas à passer constamment d'un état à l'autre.

A noter cependant que le disque système ne peut être mis en standby sans opérer de profondes modifications sur le système : travailler sur un ramdisque plutôt que sur le disque.

Seul hic : hdparm ne fonctionne qu'avec des disques IDE branchés sur les connecteurs IDE de la carte mère. Les disques durs IDE externes sur port USB sont vus comme des disques SCSI, et ne réagissent pas aux fonctions de mise en veille. Dommage. Ce n'est d'ailleurs pas la seule restriction, car il n'est pas possible non plus d'obtenir les états S.M.A.R.T. de ces disques et donc prévenir une défaillance.

Qui plus est, ils consomment beaucoup plus : 16 Watts en USB contre 6 Watts en IDE directement (le transfo, l'électronique...).

Il existe bien quelques pistes permettant parfois de les mettre en veille :

  • utiliser des disques capables de mémoriser leur configuration une fois l'alimentation coupée. Il faut alors préconfigurer (via hdparm) le disque directement branché sur un connecteur IDE, puis le remettre dans son boitier USB. Malheureusement, cela ne marche pas avec mes disques.
  • configurer un disque connecté sur le connecteur IDE de la carte mère et sur l'alimentation du boitier USB. Une fois la configuration faite, débrancher le connecteur IDE et brancher le disque dans le boitier USB, sans débrancher l'alimentation. C'est un peu bidouille, et l'opération doit être repetée à chaque coupure de l'alimentation.
  • utiliser des outils relatifs au bus SCSI, mais aucun n'a fonctionné pour ma part

Bref, pas mal de désavantages de l'USB par rapport à une connexion directe IDE. Forcement !

Le problème est qu’une carte mère ne dispose que de 4 connecteurs IDE, donc pas plus de 3 disques durs (si l’on conserve le lecteur de CD). Sur ma vieille machine, je n’ai de toute façon même pas la place physique de tout mettre. Il faudra penser à un stockage externe.

Je me suis souvenu d’une carte PCI Raid que j’avais acheté un jour, permettant de rajouter 4 ports IDE. Une telle carte coûte environ 20€.

Je m’en étais à l’époque servie sous Windows (moyennant l’installation de drivers spécifiques fournis avec). Je l’ai essayé sous Linux (sans mettre en œuvre les fonctions de raid), et quelle ne fut pas ma surprise de la voir reconnue nativement par le système !

A partir de là, il est possible d'accéder aux devices /dev/hde, /dev/hdf, /dev/hdg et /dev/hdh. Magnifique !

N’ayant pas la place pour positionner les disques dans le boitier, j’ai réutilisé de vieux tiroirs extractibles IDE, afin de protéger un minimum les disques.

Certes, le montage n'est pas aussi élégant qu’une solution externe USB, mais bon…

Globalement, ma machine consomme maintenant 54 Watts contre 100 Watts (solution avec 2 disques externes USB). Lorsque tous les disques sont en mode idle, elle consomme 80 Watts. Outre cette diminution de consommation, c’est également sur les autres tableaux que les effets sont appréciables :

  • moins de dégagement de chaleur (les disques restent froids)
  • moins de bruits
  • moins de vibrations
  • plus de longévité (j’espère)

Et les utilisateurs Windows ?

Cette technique est bien sur valable avec cet OS. Je suis en cours d'adaptation de l'outil hdparm pour cet OS.

A suivre...

Update 26/09/2006 : Petit test réalisé avec 8 disques durs branchés simultanément : sans problème.

Bienvenu

Bienvenu sur mon laBlogatoire

Celui-ci se veut le livre de bord des experimentations ou projets sur lesquels je suis amené à travailler.

Bonne lecture