Catégories
Open-source

Actualité open-source de la semaine #29

L’actualité open-source de la semaine…

L’image de la semaine

Internet Explorer 8 arrive… je rappelle que le meilleur navigateur au monde
est libre, gratuit et s’appelle Firefox

Tout le monde en parle, sauf moi…

L’actualité du libre et de l’open source en vrac:

  • OpenArena, basée sur le moteur graphique de Quake III, est un FPS open-source.
  • La formule du jour: Ubuntu – « non GNU » = gNewSense
  • Des news de KDE 3.5 et Gnome 2.24
  • Et voilà ce qui arrive quand on met du Windows dans la station spatiale internationale…

Autres choses ?

Catégories
Open-source Reseau

De IPFW à PF

istockphoto_143506_burning_fire_wall.jpgFidèle utilisateur de l’operating système FreeBSD pour toutes les fonctions réseaux (notamment les Firewall), je suis tombé il y a quelques temps sur un problème d’interopérabilité entre l’utilisation du couple CARP/PFSYNC (le truc pour faire de la redondance de Firewall) avec IPFW.

J’ai donc décidé de switcher de IPFW vers PF. Je vais donc abordé dans ce billet les quelques choses à avoir en tête si vous suivez le même chemin… Si vous souhaitez vous formez sur PF, je vous conseille la lecture de l’excellent article paru dans Linux Magazine HS n°29, dont vous trouverez une version électronique ici.

Un peu d’histoire

IPFW (IPFireWall) est un module logiciel permettant de faire du filtrage de paquets réseau sous BSD (c’est actuellement le module de firewall utilisé par défaut sous Mac OS X).

Jusqu’à la version 3.0 de OpenBSD, ce module était intégré par défaut au noyau du système, mais de sombres histoires de licences et de batailles interne entre Darren Reed (l’auteur de IPFW) et les développeurs d’OpenBSD ont débouché par son remplacement par PF (Packet Filter).

PF est maintenant fourni en standard sur l’OS FreeBSD (depuis la version 5.3).

Les principales différences entre IPFW et PF

Voici une liste non-exhaustive:

  • le fichier de configuration unique (/etc/pf.conf) comprend, la définition des règles (comme sous IPFW) mais aussi la configuration du NAT et du PAT (délégué au processus IPNAT avec IPFW)
  • comportement atomique du chargement de la configuration: si une erreur est détectée dans le fichier de configuration, aucune règle n’est appliquée
  • l’interprétation des règles est de type “last matching rules wins”: la dernière règle qui correspond au paquet est appliquée
  • le suivi de connexions complexes comme FTP se fait via un module externe (ftp-proxy)
  • il est possible de rediriger les paquets en fonction de l’OS émetteur (ne marche pas dans tout les cas de figures)
  • assure une compatibilité native avec CARP et PFSYNC pour faire de la redondance active de Firewall

Architecture du fichier de configuration /etc/pf.conf

Le fichier comporte plusieurs sections (l’ordre est important).

1) Définition des macros, listes et des tables

En plus des listes (comme sous IPFW), il est possible d’utiliser des tables pour stocker des adresses IP. L’avantage des tables par rapport aux listes est la rapidité d’accès à l’information. En effet, basées sur des tables de hachage, le temps pour accéder à une information est constant quel que soit la taille de la table. De plus il est possible de modifier dynamiquement ces tables (à l’aide de la commande “pfctl -t …”) sans avoir à recharger les règles.

Quelques exemples de macros:

Définition

ip_interne=”192.168.1.254”

ip_externe=”80.80.80.80”

Utilisation dans les règles

pass quick proto tcp from $ip_interne to any port 80

pass quick from $lan_interne to any keep state

Quelques exemples de listes:

Définition

lan_interne=”{ 192.168.1.0/24 192.168.2.0.24 }”

lan_interne_saufdmz=”{ 192.168.1.0/24 192.168.2.0.24 !192.168.2.0/29 }”

web_ports=”{ http https ftp }”

Utilisation dans les règles

pass quick from $lan_interne to any keep state

Quelques exemples de tables:

Définition

table <ip_clients> “{ 192.168.1.10 192.168.1.100 }”

Utilisation

pass quick from <ip_clients> to any keep state

Modification de la table

pfctl -t ip_clients -T add 192.168.1.101

pfctl -t ip_clients -T delete 192.168.1.101

2) Options et normalisation des paquets

Personnellement, j’utilise les options suivantes:

# On ne filtre pas sur l’interface locale

set skip on lo

# En cas de blocage, on envoie un RST sur les paquets TCP

# et UNREACHABLE sur les ICMP

set block-policy return

# On normalise les paquets avec gestion de la fragmentation

scrub in all fragment reassemble

3) Gestion des queues pour la QoS

Permet de faire de la qualité de service: CBQ, Priorité et HFSC. Il faut cependant passer par un module externe: altq.

Je reviendrai sûrement sur ces fonctions 12c4.

4) Translation d’adresse (NAT) et re-direction de ports (PAT)

Contrairement à IPFW qui ne gérait pas la translation d’adresse et de port (il fallait utiliser IPNAT), PF s’acquitte parfaitement de ces taches. La syntaxe est très proche de celle utilisée par IPNAT.

Exemple de NAT:

nat pass on eth0 from eth1:network to any -> $ip_externe

On notera l’utilisation de la macro eth1:network qui donne le réseau associé à l’interface réseau eth1

binat on $if_externe from 192.168.1.100 to any -> 80.80.80.81

Exemple de PAT:

rdr on $if_externe from any to $ip_externe port 8080 -> $ip_serveur port 80

5) Règles de filtrage

On entre (enfin ?) dans le vif du sujet avec l’adaptation des règles de IPFW vers PF.

La première chose à se rappeler est que l’interprétation des règles est de type “last matching rules wins”: la dernière règle qui correspond au paquet est appliquée. C’est le contraire de la logique que l’on suivait avec IPFW. Cependant, si comme moi vous avez du mal à réfléchir à l’envers, il reste la possibilité d’utiliser l’option quick. Quand cette dernière est présente dans une règle, PF arrête l’interprétation des règles suivantes.

L’option permettant de faire du suivi de connexion (sur TCP mais aussi sur UDP ou tout autre protocole IP) est “keep state” (attention c’était “keep-state” avec un – sous IPFW…). Cette option est maintenant ajouté par défaut sur les OS BSD (depuis OpenBSD 4.0 et FreeBSD 7.0).

Exemple de filtres:

pass in on $int_if from $internal_net to any

pass out on $ext_if proto tcp all modulate state flags S/SA

pass out on $ext_if proto { udp, icmp } all keep state

pass in on $ext_if inet proto tcp from any to $webserver port 80 flags S/SA synproxy state

Gestion de votre nouveau Firewall PF

La gestion de la configuration de votre Firewall PF se fait via l’utilitaire pfctl.

Quelques commandes utiles:

Vérification de la syntaxe du fichier /etc/pf.conf

pfctl -n -f /etc/pf.conf

Activation du filtrage:

pfctl -e

Dés-activation du filtrage:

pfctl -d

Rechargement des règles:

pfctl -f /etc/pf.conf

Affichage des règles de filtrage:

pfctl -s rules

Affichage des NAT et PAT:

pfctl -s nat

Affichage l’état des sessions existantes (connections):

pfctl -s state

Affichage du fichier de log (pour voir les paquets rejetés):

tcpdump -r /var/log/pflog

ou bien:

tcpdump -i pflog0 -qea -ttt

Conclusion

Je dois vous avouer que j’étais très réticent pour ce passage de IPFW et PF mais après quelques heures d’utilisations je pense que ce système de filtrage est très bon et aussi facile à administrer (en tout cas beaucoup plus simple que l’usine à gaz IPTABLES… je sais je troll…).

Catégories
Musique Open-source Web

Last.fm sous Ubuntu et Mac OS X

last-fm_audioscrobbler_logo.jpg

Last.fm est un service permettant de diffuser la liste des musiques que vous écoutez et de récupérer en échange des titres, des vidéos et des concerts collant au plus près à vos goûts. Il est donc possible d’écouter « une radio » ne passant que des chansons qui sont sensés vous plaire.

J’étais un peu septique, c’est pour cela que j’ai mis un certain pas à faire le grand saut… avec du recul, j’aurai dû le faire avant 🙂 En effet, Last.fm est convivial a utilisé et très pertinent dans ces propositions.

Dis, comment ça marche ?

C’est très simple, on commence par créer un compte sur le site puis on configure son lecteur audio pour qu’il diffuse ce qu’il joue sur votre base de donnée Last.fm (cela s’appelle « to scrobble »).

Sous Mac OS X, si vous utilisez iTunes, le plus simple est de télécharger le logiciel Last.fm qui va automatiquement « scrobbler » ce qui a été joué sur votre iTunes et même sur votre iPod ! Le logiciel dispose également d’un petit lecteur permettant d’écouter des musiques qui collent à vos goûts. Notamment la radio « Mes Recommandations », que j’écoute en boucle 🙂

Last.fm.jpg

Sous GNU/Linux et en particulier Ubuntu, tout dépend du logiciel que vous utiliser. La possibilité de « scrobbler » sur Last.fm est disponible sur la plupart des logiciels: Amarok, Banshee, SongBird… Je vous laisse trouver la procédure sur les sites correspondants.

Installation de Last.fm sous Ubuntu

Vous pouvez également installer le logiciel Last.fm assez simplement car il existe un dépôt Ubuntu. I suffit de suivre a procédure suivante:

wget -q http://apt.last.fm/last.fm.repo.gpg -O- | sudo apt-key add –

sudo vi /etc/apt/sources.list
# Ajouter la ligne suivante:
deb http://apt.last.fm/ debian stable

sudo apt-get update

sudo apt-get install lastfm

L’installation finie, le logiciel peut être lancé à partir du menu: Application / Son et vidéo / Last.fm

capture_200808264810.jpg

Et voila, il ne reste plus qu’a écouter et découvrir de nouveaux bijoux !

Vous pouvez consulter mon profile Last.fm à l’adresse suivante: http://www.lastfm.fr/user/nicolargo

N’hésitez pas à m’ajouter comme ami !

Catégories
Musique Open-source Systeme Web

Installation de SongBird sous Ubuntu

SongBird est le concurrent open-source de iTunes. Il est actuellement en développement. La dernière version disponible au moment de la rédaction de ce billet est la 0.7.

Voici la procédure à suivre pour une installation sous une GNU/Linux Ubuntu 8.04.

Téléchargement de SongBird

Il faut se rendre sur le site suivant puis télécharger la dernière version disponible. L’archive d’installation se présente sous la forme d’un fichier .deb de 17 Mo pour la version 0.7.

Pour installer le .deb, il suffit de double cliquer sur le fichier songbird_0.7.0-0~getdeb1_i386.deb puis de cliquer sur le bouton « Installer le paquet ».

Un fois l’installation effectuée, vous pouvez lancer le programme à partir du menu Applications / Son & Video / Songbird.

Après acceptation de la licence d’utilisation et le télépchargement automatique du pack Français, vous devez saisir l’emplacement ou se trouve vos fichiers musicaux (par défaut /home/user/Musique) puis sélectionner les plugins qui peuvent vous intéresser (par exemple un plugin de gestion iPod).

Utilisation de SongBird

SongBird partage avec Firefox les systèmes de navigation par onglets et de plugins (.xpi). En cliquant sur le marque-page « songbird add-ons », un nouvel onglet affiche la liste des plugins disponibles.

J’utilise personnellement:

  • « Ipod device support » pour le support de mon Ipod.

  • « Media Flow » pour parcourir sa bibliothéque avec un effet très cher à Apple.

  • « DeezerBird » pour jouer vos playlist Deezer depuis Songbird
  • « Seeqpod » pounr une intégration du site SeeqPod

A vos casques !

Catégories
Blog

I am back…

… et oui toutes les bonnes choses ont une fin. Donc retour au taf.

Je viens de mettre à jour le blog avec la dernière version de WordPress (2.6.1). Comme d’habitude j’ai suivi la procédure suivante:

  • sauvegarde intégrale du blog (répertoire entier + base de données SQL)
  • suppression des répertoires wp-admin et wp-includes
  • téléchargement de la dernière version
  • visite du lien d’upgrade de la base de données (/wp-admin/upgrade.php)
Catégories
Uncategorized

A bientôt !!!

Je prends 3 semaines de vacance pour profiter de la vie en général et de ma famille en particulier. On se retrouve fin août pour la suite des aventures…

« L’optimiste se dit qu’un travailleur a droit à 5 semaines de congé par an.
Le pessimiste, lui, se dit que des tas de braves gens sont obligés d’interrompre chaque année leurs vacances pendant 47 semaines pour aller bosser. »

Philippe Geluck

Saint Malo