Catégories
Systeme

Gestion des ports (packages) sous FreeBSD

FreeBSD offre une gestion des ports (applications packagées pour FreeBSD) simple et efficace. Lors de l’installation d’un système FreeBSD, il faut tout d’abord veiller à installer les sources des ports. A partir de là, on obtient dans le répertoire /usr/ports une arborescence contenant la liste des applications disponibles. Ces applications sont classées par thème: net, multimedia, scecurity… (voir la liste exhaustive ici).

FreeBSD logo

Le maintient de votre système à jour (et donc de vos applications) passe par une gestion efficace de ce répertoire. Voici donc quelques commandes à utiliser.

Recherche d’un port

Il faut utiliser la commande suivante (pour cela il faut être dans le répertoire /usr/ports):

# make search name=ntop
Va rechercher le port dont le nom contient le mot clès ntop.

Installation d’un port

Il faut se rendre dans le répertoire du port à installer (par exemple /usr/ports/net/ntop), puis taper la commande suivante:

# make config
(Cette commande est optionnelle)
# make install clean
On installe le port puis on efface les fichiers générés lors de l'installation

On peut également utiliser la commande qui suivante:

# portinstall net/ntop

Les dépendances (c’est à dire les ports nécessaires au bon fonctionnement du port à installer) seront installées automatiquement.

Déinstallation d’un port

Il faut se rendre dans le répertoire du port à déinstaller, puis taper la commande suivante:

# make deinstall
On déinstalle le port

On peut également utiliser la commande qui suivante:

# pkg_deinstall ntop

Les dépendances seront déinstallées automatiquement.

Liste des ports installés

Pour avoir la liste des ports installés, il faut saisir la commande suivante:

# pkg_info

Maintient à jour de l’arbre des ports

Cette phase permet de maintenir une arborescence des ports (donc du répertoire /usr/ports) propre et à jour.

Pour nettoyer l’arborescence, on utilise:

# portsclean -DD -PP

On obtient la liste des ports mettre à jour grâce à la commande suivante:

# portversion -v -l

Pour mettre à jour l’ensemble des ports (opérations assez longue, dépend de la rapidité de votre accès Internet).

# cvsup /usr/local/etc/cvsup/ports-supfile

Pour réinstaller un port suite à une mise à jour de l’arborescence:

# make deinstall; make reinstall
A faire dans le répertoire du port (exemple: /usr/ports/net/ntop)

ou bien:

# portupgrade -r ntop-3.1_1

Pour aller plus loin, il exhiste de nombreux livres sur FreeBSD.

Catégories
Systeme

Faire tourner FreeBSD sous Linux

Le sujet de cet article est de faire tourner une instance FreeBSD sur une machine Linux. Nous allons donc parler de Xen, qui est un outil de virtualisation très à la mode de chez nous.

« Faire tourner FreeBSD sous Linux »… drôle d’idée… mais pourquoi faire ?

Bonne question ! Voici une petite liste de besoins qui peuvent expliquer ce fantasme de geek:
– Validation d’un logiciel sur FreeBSD
– Utilisation de couche réseau comme « dummynet » disponible seulement sur cet OS
– Test de cet OS qui est un des plus beau au monde 😉

Dis comment ça marche ?

Xen est un logiciel de paravirtualisation, il permet donc de lancer une machine virtuelle (FreeBSD dans notre cas) sur n’importe quel type de processeur. A la difference des outils de virtualisation, Xen doit utiliser une version spécifique de FreeBSD (« Xenifier ») pour fonctionner. Au lancement du programme Xen, un domaine « host » (ou Dom0 pour les intimes) est créé. C’est à partir de ce domaine que l’on va créer les domaines « guest » (ou DomU encore une fois seulement pour les intimes).

Let’s go Simone ! fait pêter le tutoriel

La première chose à faire est d’installer Xen:

Sur fedora:
# yum install kernel-xen
# yum install xen
# yum virt-manager
# reboot

PS: la version utilisé lors de ce tuto est la 3.0.

Lors du boot, il faut choisir le kernel Xen en le selctionnant dans le menu GRUB. Avant de continuer, il faut d’abord vérifier qu evous êtes sur le bon kernel:

# uname -a
Linux localhost.localdomain 2.6.20-1.2948.fc6xen

On télécharge ensuite la version « Xenifier » de FreeBSD sur votre distribution Linux (j’ai utilisé une Fedora). Pour cela il faut aller sur le site http://www.yuanjue.net/xen/howto.html et télécharger la dernière version disponible.

On doit en fait télécharger deux fichiers:

  • freebsd-XENU_INSTALL (contenant le noyau pour l’installation)
  • freebsd-XENU (contenant le noyau pour le fonctionnement)

Une fois les deux fichiers sur votre disque local, il faut éditer le fichier de configuration /etc/xen/freebsd-install.cfg:

# vi /etc/xen/freebsd-install.cfg
kernel= »/home/simone/freebsd-XENU_INSTALL »
memory=256
name= »freebsd »
disk=[‘file:/usr/share/xen/domains/freebsd/disk.img,hda1,rw’]
extra= »vfs.root.mountfrom=ufs:/dev/md0″

On crée ensuite le fichier « host » de 3 Go:

# mkdir /usr/share/xen/domains/
# mkdir /usr/share/xen/domains/freebsd/
# cd /usr/share/xen/domains/freebsd/
# dd if=/dev/zero of=disk.img bs=1024k seek=3000 count=1

Puis on lance la bête (installation de FreeBSD !)

# xm create -c /etc/xen/freebsd-install.cfg

Il faut dans un pertmier temps choisir une installation par VT.100. Puis changer, le nom de la release à installer (6.0-RELEASE).

Lors de la configuration « fdisk », il faut ficez la geometrie du disque en cliquant sur la lettre « G » puis en entrant la valeur suivante: « 1000/1000/1000 ».

L’installation par FTP devrait se passer sans problème.

A la fin de l’installation, il ne faut pas rebooter la machine tout de suite mais d’abord configurer le TTY en éditant le fichier /etc/ttys:

xc0 "/usr/libexec/getty Pc" vt100 on secure
#ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
#ttyv1 "/usr/libexec/getty Pc" cons25 on secure
#ttyv2 "/usr/libexec/getty Pc" cons25 on secure
#ttyv3 "/usr/libexec/getty Pc" cons25 on secure
#ttyv4 "/usr/libexec/getty Pc" cons25 on secure
#ttyv5 "/usr/libexec/getty Pc" cons25 on secure
#ttyv6 "/usr/libexec/getty Pc" cons25 on secure
#ttyv7 "/usr/libexec/getty Pc" cons25 on secure
#ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

On change alors la configuration de Xen pour pointer sur le kernel de fonctionnement, il faut éditer le fichier de configuration /etc/xen/freebsd.cfg:

# vi /etc/xen/freebsd.cfg
kernel= »/home/simone/freebsd-XENU »
memory=32
name= »freebsd »
disk=[‘file:/usr/share/xen/domains/freebsd/disk.img,hda1,rw’]
extra= »,vfs.root.mountfrom=ufs:/dev/xbd0s1a« 

Puis lancer le tout:

# xm create -c /etc/xen/freebsd.cfg

Vous devriez voir apparaitre devant vos yeux ébahies, le prompt magique:

FreeBSD/i386...
login:

Et hop !

Catégories
Open-source Reseau Systeme

Un pont FreeBSD

25/02/2010: mise à jour du tutoriel pour FreeBSD 8.0

Voici un petit tutorial pour configurer un routeur FreeBSD (machine avec deux interfaces réseaux minimum, par exemple pour protéger votre réseau) en mode pont (ou bridge dans la langue de Beckham).

Avant de commencer un petit rappel sur ce qu’est un pont réseau: le « livre de main » qui va bien.

La configuration est la suivante:

  • un PC avec deux interfaces réseaux (minimum) nommées bge0 et bge1
  • un OS de type FreeBSD (6.2 8.0 dans notre cas)
  • de l’huile de coude

Ce que l’on veut obtenir:

  • un pont réseau entre ces deux interfaces
  • une adresse IP privée assignée aux interfaces (192.168.1.254/24)

Configuration du pont

On veut donc créer un pont entre les interfaces bge0 et bge1.

La première chose à faire est de demander le chargement du module au boot:

[shell]
# vi /boot/loader.conf
bridge_load="YES"
if_bridge_load="YES"
[/shell]

Et configurer les interface réseau, notamment la nouvelle interface virtuelle que nous allons nommer bridge0:

[shell]
# vi /etc.rc.conf
ifconfig_bge0="up"
ifconfig_bge1="up"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm bge0 addm bge1 up"
ifconfig_bridge0_alias="inet 192.168.1.254/24"
[/shell]

Et voila le travail !

Catégories
Systeme Web

Installation serveur Web Apache sous FreeBSD

…suite du post sur l’installation de FreeBSD, avec la mise en place d’un serveur Web Apache. Nous partons donc sur l’hypothése ou l’on a un système à jour, non seulement au niveau du noyau mais également au niveau des ports.

On ouvre donc un terminal en root.

Puis on installe Apache (version 2.2.4 au moment de l’écriture de ce post) depuis les ports FreeBSD:

# cd /usr/ports/www/apache22
# make install
… la compilation va prendre un certain temps… bon café…

Une fois la compilation terminé, il faut automatiser le lancement du daemon HTTP au démarrage du serveur. Pour cela il faut ajouter ajouter deux lignes au fichier /etc/rc.conf:

# echo ‘apache22_enable= »YES »‘ >> /etc/rc.conf

Il faut ensuite éditer le fichier /usr/local/etc/apache22/httpd.conf pour le faire coller à votre configuration. Il existe un bon nombre de documentations sur le sujet (par exemple: http://httpd.apache.org/docs/2.2/).

# vi /usr/local/etc/apache22/httpd.conf

Vous pouvez tester si votre installation a marché correctement en lancant le serveur Web:

# apachectl start

Puis en ouvrant un navigateur sur l’URL de votre serveur: http://<@IpDeVotreServeur>. Vous devrier avoir la page suivante qui s’affiche:

Le répertoire racine de votre site Web se trouve: /usr/local/www/apache22/data.

En l’état actuel de la configuration, votre serveur ne prendra pas en compte le language PHP. Il faut pour cela installer le module PHP (version 5) pour Apache. Pour cela:

# cd /usr/ports/lang/php5
# make install
… Ne pas oublier de selectionner « Apache » !!! …
# cd /usr/ports/lang/php5-extensions
# make install
… choisir les extensions voulues …
# cd /usr/local/etc/
# cp php.ini-recommended php.ini
… initialisation des variables…

Il faut ensuite configurer Apache pour qu’il prenne en compte PHP. Pour cela éditer le fichier /usr/local/etc/apache22/httpd.conf:

# vi /usr/local/etc/apache22/httpd.conf
Ajouter dans la section <IfModule mime_module>:
AddType application/x-httpd-php .php
Ajouter dans la section <IfModule dir_module>:
DirectoryIndex index.html, index.php

Il ne reste plus qu’a relancer le serveur Apache:

# apachectl stop
# apachectl start

Voili, vous avez un beau système à jour avec une belle version d’Apache…
A bientôt pour l’installation du serveur FTP…

Catégories
Systeme

Installation de FreeBSD « from scratch »

Nous allons dans ce post suivre les étapes conduisant à l’installation d’un système FreeBSD à jour sur une machine.

FreeBSD logo

Pour rappel, FreeBSD est un système d’exploitation UNIX libre. Le nom vient de l’association d’une part de freeBSD (Berkeley Software Distribution), l’UNIX® développé à l’Université Berkeley de Californie. Free prend un sens plus connoté dans ce nom : il signifie que le logiciel peut être utilisé gratuitement même pour un usage commercial, que les sources complètes sont disponibles et utilisables avec un minimum de restrictions quant à leur usage, leur distribution et leur incorporation dans un autre projet (commercial ou non), et enfin que n’importe qui est libre de soumettre son code source pour enlever un bogue (bug) ou améliorer le logiciel, ce code étant incorporé aux sources après accord. (merci à Wiki pour la définition).

Pour cette installation, nous disposons:

– d’une machine avec un PIII à 1 GHZ et 512 Mo de RAM (largement suffisant pour en faire un bon serveur Web/FTP…)
– Les deux CD d’installations de FreeBSD version 6.0 (que vous pouvez télécharger ici).
– de l’huile de coude

A) Installation du système

1) Insérer le CD n°1 et démarrer votre machine

2) Choisissez l’installation standard

3) Le menu suivant s’affiche:

FreeBSD 1

4) Selectionner : « Standard »

5) La prochaine étape est la configuration de votre/(vos) disque dur. Il faut d’abord selectionner le disque sur lequel vous voulez installer le système. Ensuite effacer toutes les partitions existantes (en appuyant sur la touche ‘D’). Créer automatiquement les nouvelles partitions(en appuyant sur la touche ‘C’). Puis passer au menu suivant (en appuyantsur la touche ‘Q’). Le prochain menu permet de déterminer la taille des répértoires systèmes. La encore nous allons utiliser la commande automatique (en appuyant sur la touche ‘C’). Puis passer au menu suivant (en appuyantsur la touche ‘Q’).

6) Vous avez alors le choix du type de boot manager que vous voulez installer. Je vous conseille d’utiliser le boot manager FreeBSD si vous n’avez qu’un seul OS sur votre machine (choix numéro 2).

7) Il faut ensuite choisir le type d’installation que vous souhaitez. Je vous conseille « Developer » (ou « X-Developer » si vous souhaitez une interface graphique X11).

FreeBSD 2

Vous avez ensuite le choix d’installer ou non les ports (applications packagés pour FreeBSD), je vous conseille vivement de le faire.

7) Après le choix du média d’installation (choisir CD/DVD), l’installation devrait alors se dérouler sans interventio de votre part.

8) L’installation se termine par quelques questions dépendantes de votre système (configuration des interface réseau, du fuseau horaire, mot de passe root…). Il faut alors rebooter votre machine après avoir éjecté le CD d’installation.

B) Mise à jour du système

1) Une fois la machine redémarrée, il faut se loguer avec le compte ‘root’ (login root).

2) La première action à faire est d’installer l’utilitaire cvsup qui va nous permettre de mettre à jour notre système. Pour cela, il faut effectuer les actions suivantes:

# cd /usr/ports/net/cvsup-without-gui
# make install

3) Une fois installé, il faut le configurer:

# cd /usr/share/examples/cvsup
# cp ports-supfile /etc
# cp stable-supfile /etc/
# ln -s /etc/stable-supfile /etc/src-supfile
# vi /etc/ports-supfile
> editer la ligne: *default host=CHANGE_THIS.FreeBSD.org
> la remplacer par: *default host=cvsup.fr.FreeBSD.org
# vi /etc/src-supfile
> editer la ligne: *default host=CHANGE_THIS.FreeBSD.org
> la remplacer par: *default host=cvsup.fr.FreeBSD.org

4) Maintenant on met à jour le système en tapant les deux commandes suivantes (cela va prendre un peu de temps):

# cvsup /etc/ports-supfile
# cvsup /etc/src-supfile

5) Puis on met à jour le noyau:

# cd /usr/src
# make buildworld
# make buildkernel
# make installkernel
# reboot

Et voili, vous avez un système tout beau tout neuf et à jour au niveau sécurité.
Si vous voulez mettre à jour votre système il suffit de reprendre les étape 4 et 5.

Je reviendrais sur l’installation du serveur Web et FTP dans un prochaine post.

Bouquins sur le sujet:

Catégories
Uncategorized

Tunnel IPSec sous FreeBSD

Nous allons dans ce post décrire le moyen de créer un tunnel IPSec entre deux réseaux distants et ainsi former un réseau privée virtuel (ou VPN pour les intimes).

Un VPN ou Virtual Private Network, est un tunnel logique (par opposition au réseau privé) établi entre deux entités et dans lequel les données circulant ne sont pas « visibles » de l’extérieur. Cette « invisibilité » peut être due par exemple à un chiffrement des données ou à un protocole particulier des échanges de données. Dans le cas des VPN IPSEC, on aurait tendance à dire qu’un VPN assure que les données circulent de façon sécurisée : les deux entités sont authentifiées, l’intégrité des données est vérifiée, et les données peuvent circuler chiffrées sur le réseau IP.

IPSEC est un protocole réseau de niveau 3, comme le protocole IP, mais auquel ont été rajoutées des fonctions de sécurité, comme le chiffrement des données par exemple. Le protocole IPSEC est prévu en natif dans la nouvelle version du protocole IP : IPV6.

Le protocole IPSEC permet deux traitements des données dans le tunnel :

  • L’authentification des extrémités et la vérification de l’intégrité des données ;
  • L’authentification, l’intégrité et le chiffrement des données.

Le premier traitement correspond au protocole AH1 (Authentication Header). Ce protocole permet de s’assurer de l’identité des deux extrémités du tunnel et de l’intégrité des données (les données reçues sont bien les données envoyées, elles n’ont pas été modifiées au passage).
Mais il est important de savoir que les données circulent en clair. En fait, techniquement, le protocole AH consiste à rajouter une entête à la trame IP, mais la partie « data » de la trame IP n’est pas changée.

Le deuxième traitement correspond au protocole ESP2 (Encapsulation Security Payload) et assure en plus de l’authentification, le chiffrement des données. Techniquement, la trame IP originelle est chiffrée et réencapsulée dans une autre trame IP.

Enfin, on peut encore dire sur le protocole IPSEC que celui-ci est particulièrement souple et n’impose aucun algorithme de chiffrement ou de hachage. Les deux extrémités du tunnel se mettent d’accord entre elles sur les modalités avant l’établissement du VPN.

Le mode Tunnel remplace les en-têtes IP originaux et encapsule la totalité du paquet IP. Par exemple, l’adresse IPA externe pourra être celle de la passerelle de sécurité implémentant IPSec, et l’adresse IPB interne sera celle de la machine finale, sur le réseau derrière la passerelle.

La configuration suivante est donnée sur un système FreeBSD (4.x).

Il faut d’abord configurer sur les deux routeurs VPN les fichiers /etc/racoon.conf et /etc/psk.txt de la manière suivante:

Racoon.conf (commun)
path pre_shared_key « /usr/local/etc/racoon/psk.txt » ;
remote anonymous
{
exchange_mode aggressive,main,base;
lifetime time 24 hour; # sec,min,hour

proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key ;
dh_group 2 ;
}
}
sainfo anonymous
{
pfs_group 2;
lifetime time 12 hour;
encryption_algorithm 3des ;
authentication_algorithm hmac_sha1 ;
compression_algorithm deflate ;
}

psk.conf (sur routeur A)

psk.conf (sur routeur B)

Ensuite il faut monter le tunnel IPSec au demarrage de la machine (ou à la demande). Pour cela j’utilise un script que je met dans le répertoire /usr/local/etc/rc.d:

000.ipsec.sh (sur le routeur A)
#!/bin/sh

case « $1 » in
start)
setkey -F
setkey -FP
setkey -c / / any -P out ipsec esp/tunnel/-/require ;
spdadd / / any -P out ipsec esp/tunnel/-/require ;
EOF
route add -net /
;;
stop)
route -n delete -net /
setkey -F
setkey -FP
;;
*)
echo « Usage: `basename $0` {start|stop} » >&2
;;
esac

exit 0

Faire de même sur le routeur B en inversant les adresses IP.

Pour lancer le tunnel IPSec:

# /usr/local/etc/rc.d/000.ipsec.sh start

Pour detruire le tunnel IPSec:

# /usr/local/etc/rc.d/000.ipsec.sh stop

Voili A+

Catégories
Reseau

IPFW Log Monitor

Afin de surveiller en temps réel les logs générés par le firewall ipfw des operating system FreeBSD. J’ai écris un script permettant d’optimiser l’affichage de ces logs afin de les rendre plus lisible.

Affichage standard (sans le script):Affichage « optimisée » (avec le script):

Synaxe:

# tail -f /var/log/security | ipfwlogmonitor.pl

Cliquer ici pour télécharger le script (version 0.63).