Archive

Archives pour la catégorie ‘Tutoriaux’

Installer le firmware DD-WRT sur une fonera 2100

La fonera est le routeur utilisé par la communauté FON. Le routeur est livré avec un firmware réalisé par FON et basé sur OpenWRT. On peut reflasher un firmware alternatif sur le routeur, comme DD-WRT. Cet article a pour but de vous aider à le faire sur une fonera (version 2100 dans notre cas).

On va voir comment le faire et cela sans ouvrir la Fonera (donc sans utiliser un cable série branché sur le port JTAG de la fonera).

  • Pré-requis

  • Pour réaliser cette mise-à-jour, on va se connecter directement sur la fonera. Une fois connecté, il faut configurer sa connexion réseau avec l’IP 169.254.255.2 (la fonera ayant 169.254.255.1).

    Il faut ensuite un serveur tftp. Sous debian, on peut en installer un avec un simple apt-get install tftpd-hpa. Vous trouverez plein de tuto sur internet.

    Il faut aussi un serveur HTTP (apache fera très bien l’affaire).

    sudo apt-get install apache2

    Nous avons maintenant besoin de la dernière version du firmware de notre routeur que nous copierons à la racine du serveur TFTP (/var/lib/tftpboot dans le cas du serveur tftpd-hpa sous Debian).

    Il faut ensuite télécharger les logiciels suivants :

    - out.hex
    - openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma

    On doit avoir une version qui permet d’ouvrir la connexion ssh vers la Fonera. Si ce n’est pas encore fait, suivez ce tutorial. Pour vérifier la version de votre firmware, il suffit de se connecter sur http://169.254.255.1/ en se branchant sur le port Ethernet de la fonera.

  • Flashage de la fonera
  • Il faut se conecter sur la fonera en ssh

    ssh root@169.254.255.1

    et remplacer le noyau de la fonera :

    cd /tmp
    wget http://169.254.255.2/Fonera/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
    mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7

    (J’ai copié mes fichiers dans /var/www/fonera donc adaptez l’URL en fonction de la localisation de vos fichiers).
    L’écriture du noyau va se faire :

    Unlocking vmlinux.bin.l7 …
    Erasing vmlinux.bin.l7 …
    Writing from openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma to vmlinux.bin.l7… [w]

    On redémarre la petite boîte

    reboot

    On se reconnecte sur la fonera en ssh

    cd /tmp
    wget http://169.254.255.2/Fonera/out.hex
    mtd -e “RedBoot config” write out.hex “RedBoot config”
    reboot

    A partir de cet instant, la fonera ne peut pas rebooter correctement.
    Mais pas de panique, on va quand même pouvoir se connecter dessus grâce à telnet cette fois-ci et sur le port 9000. Pour cela, il faut que le PC ai une adresse dans la plage 192.168.1.0/24. On va rebooter la Fonera et dans les 10 premières secondes, on va pouvoir se connecter sur le port 9000 avec

    telnet 192.168.1.254 9000

    Trying 192.168.1.254…
    Connected to 192.168.1.254.
    Escape character is ‘^]’.

    RedBoot>

    (si le prompt n’apparait pas, il suffit de taper sur entrée).

    On va configurer l’adresse IP de laFonera et du serveur tftp puis passer maintenant au flashage proprement dit du firmware dd-wrt (les commandes à saisir sont en gras) :

    RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.10
    IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
    Default server: 192.168.1.10
    RedBoot> fis init
    About to initialize [format] FLASH image system - continue (y/n)? y
    *** Initialize FLASH Image System
    … Erase from 0xa87e0000-0xa87f0000: .
    … Program from 0×80ff0000-0×81000000 at 0xa87e0000: .
    RedBoot> load -r -b 0×80041000 linux.bin
    Using default protocol (TFTP)
    Raw file loaded 0×80041000-0×806a0fff, assumed entry at 0×80041000
    RedBoot> fis create linux

    A partir de ce moment, il vous faut être très patient. Le flashage dure entre 10 et 20 mn. C’est le moment d’aller prendre un petit café, un jus de fruit avec des gateaux….ou d’aller faire un petit bisou à la doudou.

    … Erase from 0xa8030000-0xa8690000: …………………………………………………………………………………………
    … Program from 0×80041000-0×806a1000 at 0xa8030000: …………………………………………………………………………………………
    … Erase from 0xa87e0000-0xa87f0000: .
    … Program from 0×80ff0000-0×81000000 at 0xa87e0000: .
    RedBoot> fconfig
    Run script at boot: true
    Boot script:
    .. fis load -l vmlinux.bin.l7
    .. exec
    Enter script, terminate with empty line
    >> fis load -l linux
    >> exec
    >>
    Boot script timeout (1000ms resolution): 10
    Use BOOTP for network configuration: false
    Gateway IP address:
    Local IP address: 192.168.1.254
    Local IP address mask: 255.255.255.0
    Default server IP address:
    Console baud rate: 9600
    GDB connection port: 9000
    Force console for special debug messages: false
    Network debug at boot time: false
    Update RedBoot non-volatile configuration - continue (y/n)? y
    … Erase from 0xa87e0000-0xa87f0000: .
    … Program from 0×80ff0000-0×81000000 at 0xa87e0000: .
    RedBoot> reset

    Votre fonera possède maintenant un beau firmware tournant sous dd-wrt. Pour vous y connecter et la paramétrer aux petits oignons, taper http://192.168.1.1 dans votre navigateur favoris.

    Mise en place d’un serveur NFS sous Debian Lenny

    Cet article a pour but de présenter rapidement la mise en place d’un serveur NFS v4 sous Debian Lenny avec des clients sous Ubuntu 9.10. D’autres articles suivront peut-être pour agrémenter ce document si je trouve le temps.

    Mise en place de partages NFS v4 :

    NFS v4 est la nouvelle version du protocole de partages de fichiers historique pour *NIX Cette version apporte de nombreuses améliorations telles que :

  • sécurité via l’utilisation de kerberos pour l’authentification
  • la fiabilité avec l’utilisation de TCP par défaut
  • le passage à travers un firewall est beaucoup plus simple en utilisant par défaut le port 2049
  • le support de l’ipv6
  • réplication, failover et récupération des sessions en cas de panne du serveur
  • Cette version du protocole est incompatible avec les anciennes versions mais, cette incompatibilité est largement compensée par les améliorations apportées et la migration de l’une à l’autre est relativement simple à effectuer.

    Mise en place sur serveur :

    Le serveur NFS tourne sur une Debian Lenny à jour (5.0.4), les versions des outils utilisés sont tout simplement celles contenues dans les dépôts.

    apt-get install nfs-kernel-server nfs-common portmap

    NFS 4 permet de monter des partages en fonction d’une racine virtuelle. Ce partage racine est remarquable dans le fichier /etc/exports car il contient fsid=0. Par exemple pour définir la racine des répertoires NFS partagés sous /music il faut ajouter dans le fichier /etc/exports :

    /music *(rw,fsid=0,insecure,no_subtree_check)

    La grande différence entre NFS v3 et NFS v4 est là, pour monter sur un client la racine des partage en NFS v3 il fallait faire :

    mount -t nfs server:/multimedia /mnt

    alors qu’avec NFS v4 la commande devient :

    mount -t nfs4 server:/ /multimedia

    Chaque sous-répertoire du répertoire /music sera partagé en fonction de la racine virtuelle. Donc pour partager un répertoire à l’extérieur de cette racine virtuelle, vous pouvez utiliser l’option –bind de mount(1). Par exemple pour partager les répertoires utilisateurs, utilisez la commande suivante pour ajouter le répertoire à la racine virtuelle :

    mount –bind /home /multimedia/films

    un répertoire /export/home est alors présent dans /export. Pour exporter ce répertoire, vous pouvez utiliser la syntaxe habituelle des exports NFS.

    Configuration du client :

    On commence par installer les paquets :

    apt-get install nfs-common portmap

    Pour monter un partage NFS, en supposant que les partages du serveur se situent dans /multimedia, il faut utiliser la commande :

    mount -t nfs4 serveur:/ /multimedia

    alors qu’avec NFS v3 et inférieure la commande aurait été :

    mount -t nfs server:/export /multimedia

    Dans le fichier /etc/fstab le point de montage sera de cette forme :

    serveur:/ /mnt nfs4 wsize=32768,rsize=32768 0 0

    Voilà, vous avez un serveur NFS fonctionnel. A consommer sans modération !

    Installer Openfire sur Debian Lenny

    OpenFire est un serveur XMPP (cad. Jabber) écrit en Java. Il a de nombreux avantages, dont celui d’être facilement configurable et administrable via une interface Web. Pour ma part, je pense qu’il s’agit du meilleur serveur Jabber disponible dans le domaine libre. Cet article vous aidera à installer et à configurer OpenFire sur une Debian 5.0 Lenny

    -Prérequis
    Pour fonctionner Openfire exige au préalable d’avoir un serveur de base de donné sur votre machine. Je conseille l’installation de MySQL qui est installable facilement via cette commande :

    apt-get install mysql-server mysql-client libmysqlclient15-dev

    -Installation de OpenFire
    En premier lieu, il nous faut installer la machine virtuelle Java de Sun :

    apt-get install sun-java6-jre

    Et nous la déclarons comme machine virtuelle par défaut :

    update-java-alternatives –set java-6-sun

    Nous renseignons la version que nous souhaitons installer:

    VERSION=3.6.4

    Remarque: Rendez vous sur le site officiel d’Openfire pour connaître la dernière version.

    Nous téléchargeons ensuite le paquet Debian de OpenFire :

    /usr/bin/wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb \
    –output-document=/tmp/openfire.deb

    Et nous installons OpenFire:

    dpkg -i /tmp/openfire_3.6.4_all.deb

    Démarrez OpenFire si nécessaire:

    /etc/init.d/openfire start

    -Configuration de votre pare-feu
    Un certain nombre de ports doivent être ouvert pour que notre serveur Jabber soit joignable de l’extérieur. Je vous donne simplement la partie de mon fichier de configuration qui concerne Openfire

    # Décommentez les lignes suivantes pour que le serveur Jabber éventuel
    # soit joignable de l’extérieur.
    -A INPUT -p tcp –dport 3478 -j ACCEPT
    -A INPUT -p tcp –dport 3479 -j ACCEPT
    -A INPUT -p tcp –dport 5222 -j ACCEPT
    -A INPUT -p tcp –dport 5223 -j ACCEPT
    -A INPUT -p tcp –dport 5229 -j ACCEPT
    -A INPUT -p tcp –dport 7070 -j ACCEPT
    -A INPUT -p tcp –dport 7443 -j ACCEPT
    -A INPUT -p tcp –dport 7777 -j ACCEPT
    -A INPUT -p tcp –dport 9090 -j ACCEPT
    -A INPUT -p tcp –dport 9091 -j ACCEPT

    -Configuration Openfire

    Nous devons maintenant configurer OpenFire, pour ce faire, connectez vous en HTTP à votre serveur sur le port 9090. Par exemple :

    * http://localhost:9090

    Et lancez-vous dans les différentes étapes de configuration.

    Remarque : La même URL vous permet d’accéder à votre interface d’administration.
    Paramètres du serveur

    * Domaine : Saisissez le domaine Jabber que vous comptez associer à votre serveur. Vos utilisateurs Jabber seront de la forme name@domaine

    Problème de disparition de l’interface eth0

    Lors d’un changement de matériel (que ce soit carte mère avec interface réseau, ou carte réseau), il peut arriver que l’interface réseau eth0 ne soit plus accessible. Voici comment résoudre ce problème.

    La mésaventure m’est arrivé deux fois, la première fois lors d’une installation à partir de deux ordis identique en changeant le disque dur de l’un à l’autre, la seconde lors d’un changement de carte mère. Ce problème qui existait déjà sous Etch demeure aussi sous Lenny. Pour pallier à la perte de temps, je note la solution.

    Udev, ce petit blagueur, gère un cache des adresses mac des cartes réseaux. Pour résoudre le problème de disparition de l’interface eth0, il suffit de vider le cache des adresses Mac de Udev.

    Pour ce faire, vous disposez de 2 solutions.

    1. Modifier manuellement le fichier /etc/udev/rules.d/z25_persistent-net.rules, et effacer les lignes qui posent problème.
    2. Écraser à la sauvage ce même fichier:

    /bin/echo “” > /etc/udev/rules.d/70-persistent-net.rules

    Categories: Debian, Logiciels Libres, Tutoriaux Tags:

    Installer XCache sur Lenny

    XCache est un outil permettant d’accélérer l’exécution de vos scripts PHP

    Installation
    En premier lieu, installez les dépendances nécessaire à la compilation du logiciel:

    apt-get install php5-dev make

    Renseignez le numéro de la version de XCache que vous souhaitez installer:

    VERSION=1.3.0

    Une fois ceci fait, téléchargez les sources de XCache:

    wget http://xcache.lighttpd.net/pub/Releases/$VERSION/xcache-$VERSION.tar.gz \
    –output-document=/tmp/xcache-$VERSION.tar.gz

    Décompressez l’archive obtenue:

    tar –directory=/tmp -xzf /tmp/xcache-$VERSION.tar.gz

    Et placez-vous dans le dossier créé:

    cd /tmp/xcache-$VERSION

    Lancez la compilation:

    phpize –clean
    /usr/bin/phpize
    ./configure –enable-xcache
    /usr/bin/make
    /usr/bin/make install

    Une fois ceci fait, configurez PHP pour utiliser ce module:

    cp /tmp/xcache-$VERSION/xcache.ini /etc/php5/conf.d/xcache.ini
    /bin/sed -i -e ’s/^zend_extension_ts.*/; \0/’ \
    -e “s|^\(zend_extension =\).*|\1 $(/usr/bin/find /usr/lib/php5 -name xcache.so | /usr/bin/head –lines=1)|” \
    /etc/php5/conf.d/xcache.ini

    Et configurez la quantité de mémoire que vous souhaitez utiliser pour le cache:

    sed -i -e ’s/^\(xcache\.size[ ]*=\).*/\1 64M/’ \
    -e ’s/^\(xcache\.var_size[ ]*=\).*/\1 64M/’ \
    /etc/php5/conf.d/xcache.ini

    Enfin, redémarrez votre serveur Web :

    /etc/init.d/apache2 force-reload

    Categories: Debian, Logiciels Libres, Serveur, Tutoriaux Tags:

    Partager des fichiers via NFS sous Debian

    NFS (Network File System) est un protocole standard de partage de répertoires sous Unix/Linux. Nous allons apprendre à partager un répertoire par NFS, puis à le monter sur un système client pour pouvoir l’utiliser. Vous le verrez, c’est extrèmement simple à mettre en œuvre.

    1. NFS côté serveur

    Configuration nécessaire

    Il faut installer le paquet nfs-kernel-server :

    # aptitude install nfs-kernel-server

    Partager un répertoire

    Éditez le fichier /etc/exports et rajoutez la ligne suivante pour partager le répertoire /home/test/ à la machine ordi2.exemple.org :

    /home/test	ordi2.exemple.org(rw,root_squash)

    L’option rw permet d’exporter en lecture-écriture (utiliser ro pour exporter en lecture seule). L’option root_squash spécifie que le root de la machine ordi2.exemple.org n’a pas les droits de root sur le répertoire partagé (l’option no_root_squash spécifie que le root de la machine sur laquelle le répertoire est monté a les droits de root sur le répertoire). L’option root_squash est l’option par défaut.

    [Note] Note
    L’option rw signifie en réalité que l’utilisateur dont l’ID est 1001 (par exemple…) sur le client NFS a les droits d’écriture sur les fichiers et les répertoires qui appartiennent à l’utilisateur dont l’ID est 1001 sur le serveur NFS. Attention, ces utilisateurs n’ont pas forcément le même nom de compte Unix et ne correspondent pas forcément aux mêmes personnes !

    Enfin, demandez à nfs-kernel-server de relire sa configuration :

    # /etc/init.d/nfs-kernel-server reload
    * Re-exporting directories for NFS kernel daemon... [ OK ]

    2. NFS côté client

    Pour monter le répertoire /home/ftp/ partagé par la machine dont le nom DNS est ordi1.exemple.org dans le répertoire /mnt/test déjà crée, utilisez la commande mount :

    # mount -t nfs ordi1.exemple.org:/home/ftp /media/test

    Une fois que vous n’avez plus besoin de ce partage, vous pouvez le démonter :

    # umount /media/test

    Pour que ce répertoire soit monté à chaque démarrage, rajoutez la ligne suivante dans le fichier de configuration /etc/fstab :

    ordi1.exemple.org:/home/ftp  /media/test   nfs    soft,timeo=5,intr,rsize=8192,wsize=8192  0  0

    Pour comprendre les options, regardez leur description dans man mount

    Categories: Debian, Serveur, Tutoriaux Tags:

    Installer un serveur DHCP sous Debian Lenny

    Topologie du réseau

    Nous allons prendre une configuration simple, avec une machine GNU/Linux qui va cumuler plusieurs fonctions :

    • Passerelle entre le réseau local et l’internet (notre « box » ne sera ici qu’un simple modem ADSL) ;
    • firewall ;
    • serveur DHCP ;
    • Les clients peuvent être de tout type : Windows, Mac OS, GNU/Linux…
    • dans l’exemple, la passerelle est construite avec Debian Lenny.

    Nous allons donc installer sur la passerelle un serveur DHCP. Le DNS est tout à fait optionnel, mais ce serait bien qu’il y soit, il peut même y être déjà, ça n’est absolument pas gênant. S’il n’y est pas encore, vous pourrez le rajouter par la suite.

    Les fonctions de passerelle et de firewall ne sont pas non plus fondamentales, nous pourrions nous contenter d’un serveur GNU/Linux, non connecté au Net (mais qui peut le plus peut le moins).

    Nous pourrions même ajouter un autre serveur au réseau local, chargé du DNS et du DHCP et ne laisser à la passerelle que les fonctions de routage et de firewall.

    Installation du serveur DHCP

    Sur Debian, ceci se fait très simplement en installant les paquetages dhcp3-common et dhcp3-server. Dans la version Lenny de Debian, nous disposons de la version 3.1.1 du serveur. Il y a un seul fichier de configuration : /etc/dhcp3/dhcpd.conf, que nous pourrons configurer avec un éditeur de texte, où à travers l’interface Webmin. Ce que nous aurons à faire est suffisamment simple pour pouvoir le faire à la main

    Configuration du serveur

    Le principe

    Comme nous l’avons vu plus haut, un serveur DHCP, en plus de fournir la configuration IP « de base » (Adresse et masque), peut aussi transmettre un nombre plus ou moins grand de paramètres supplémentaires. Nous aurons donc au moins deux choses à configurer :

    • la réserve d’adresses dont le serveur pourra disposer pour les attribuer aux clients ;
    • les paramètres optionnels à leur communiquer dans la foulée, comme l’adresse d’un DNS et de la passerelle par défaut. Dans le cas d’un réseau domestique; ce sera suffisant, mais il y a beaucoup d’autres options, plus ou moins spécifiques aux divers systèmes d’exploitation.

    Nous avons vu qu’un seul serveur DHCP pouvait être utilisé pour plusieurs réseaux logiques interconnectés, pourvu que les interconnexions disposent d’un agent de relais DHCP. Dans un tel cas, le serveur DHCP devra disposer d’au moins une étendue d’adresses IP par réseau logique dont il aura la charge.

    En ce qui concerne les options, nous disposons d’une architecture hiérarchique :

    • Nous pouvons définir des options globales, qui seront les mêmes pour tous les clients du DHCP, tous sous réseaux confondus ;
    • nous pouvons définir également des options propres à chaque sous réseau, celles-ci écrasant les options globales, en cas de conflit ;
    • si l’on veut aller encore plus loin, sachez que DHCP3-server peut créer des groupes distincts de machines dans un même sous réseau et même gérer des clients de façon individuelle. C’est un vrai serveur DHCP

    Une configuration basique

    Ce que nous voulons faire

    Nous n’allons pas monter une usine à gaz, c’est inutile pour un petit réseau domestique et ça n’apporte rien de plus à la compréhension du protocole :

    • nous avons un seul réseau, avec des IP choisies dans la classe C privée 192.168.0.0, donc avec un masque 255.255.255.0 ;
    • nous avons donc une passerelle par défaut unique pour tous nos hôtes du réseau, dans l’exemple, ce sera 192.168.0.252 ;
    • nous disposons enfin d’un DNS, également unique pour tous les hôtes du réseau, il est sur la même machine, à savoir 192.168.0.252. Le domaine que nous avons construit sur notre réseau local s’appelle maison.mrs. Il n’a aucune réalité sur le Net, mais ça n’a pas d’importance, puisque c’est un domaine qui ne doit pas être visible depuis le Net ;
    • sur la totalité de la classe C disponible, nous allons réserver les adresses comprises entre 192.168.0.64 et 192.168.0.127 pour les clients du réseau. Cette plage constituera la réserve d’adresses que le DHCP pourra fournir aux clients. Bien entendu, nous aurions pu en mettre plus, mais il faut toujours se garder quelques adresses sous le coude, pour les machines configurées manuellement, comme les serveurs que l’on placerait sur le réseau ;
    • un dernier point important, c’est la durée de vie du bail que le DHCP va attribuer aux clients. L’un des avantages de DHCP, c’est de pouvoir attribuer une configuration IP qui ne sera valide que dans un laps de temps donné, à charge pour le client de demander le renouvèlement de ce bail avant chaque expiration. Ce temps de vie pourra aller de quelques minutes à l’infini, suivant les besoins. Sur un réseau qui évolue peu, le bail peut être sans problèmes de quelques jours, à quelques semaines, voire plusieurs mois. Sur un réseau où les hôtes vont et viennent, il sera plus sage de ne laisser vivre les configurations que quelques heures. Répétons-le, plus le bail est court, plus le trafic généré par DHCP devient important et plus la charge du serveur augmente. Ceci dit, ce n’est pas un argument très significatif sur un réseau ne dépassant pas une dizaine de clients. Dans l’exemple, nous utiliserons une heure (3600 secondes).

    Note importante

    Le « daemon » dhcpd écoute par défaut sur toutes les interfaces réseau actives sur le serveur. Ce n’est pas forcément souhaitable, c’est même assez souvent ennuyeux.

    Fort heureusement, ce comportement par défaut peut être modifié, mais pas dans le fichier de configuration. Il faut utiliser un paramètre dans la ligne de commande qui va démarrer dhcpd.

    Dans le cas de Debian Lenny, il faut éditer le fichier /etc/default/dhcp3-server. Il est bien documenté et vous trouverez aisément la variable INTERFACES qu’il faut initialiser avec le nom de la ou des interfaces qui doivent êtres écoutées. Dans notre exemple, nous aurons :

    INTERFACES="eth0"

    Ce que nous écrivons dans dhcpd.conf

    # La ligne qui suit est nécessaire. Elle est en rapport avec
    # la mise à jour dynamique du DNS, que nous n'utiliserons pas
    # pour l'instant.
    ddns-update-style none;
    
    # Ce serveur fait autorité sur le réseau
    authoritative;
    
    # Les options globales
    option time-servers 192.168.0.252;
    option domain-name "maison.mrs";
    max-lease-time 3600;
    default-lease-time 3600;
    option domain-name-servers 192.168.0.252;
    option subnet-mask 255.255.255.0;
    option routers 192.168.0.252;
    
    # le réseau 192.168.0.0/24, avec la réserve d'adresses dynamiques
    subnet 192.168.0.0 netmask 255.255.255.0 {
        range dynamic-bootp 192.168.0.64 192.168.0.127;
    }

    Cette configuration simplissime va suffire à nos besoins.

    Dans ce fichier, il y a des directives, qui sont obligatoires :

    • la directive ddns-update-style servira plus tard, ce sera la cerise sur le gâteau, pour ceux qui utilisent BIND 9 (le serveur DNS). Elle indique pour l’instant que nous ne ferons pas de mise à jour dynamique de DNS ;
    • Il existe une subtile différence entre les directives max-lease-time et default-lease-time (DHCP est plein de subtilités, pas toujours nécessaires dans un fonctionnement basique), la page man dhcpd.conf vous indiquera quelle est cette différence. Contentons nous pour l’instant d’assigner la même valeur aux deux, ici 3600 secondes.

    Et des options qui seront dans la pratique, des paramètres de configuration optionnels. Ici :

    • domain-name-servers
      qui attribuera aux hôtes une adresse de DNS. Dans l’exemple, notre DNS à nous. Si nous n’en avons pas, il faudra ici mettre l’IP du DNS de notre fournisseur d’accès. Eventuellement, nous pouvons spécifier plusieurs DNS ;
    • domain-name
      est vraiment optionnel, ça permettra aux clients de savoir dans quel domaine ils sont enregistrés ;
    • routers
      c’est la passerelle par défaut. Il pourrait y avoir plusieurs routeurs, mais tous les systèmes ne savent pas gérer de façon efficace une information contenant plusieurs passerelles.

    Toutes les options qui figurent avant le paragraphe subnet 192.168.0.0 netmask 255.255.255.0 sont des options globales, il n’y a ici aucune option d’étendue (de sous-réseau) de définie.

    Cette configuration doit nous permettre d’être efficient dans notre contexte. Il nous suffit de lancer ou de relancer le serveur :

    /etc/init.d/dhcpd restart

    Et ça devrait rouler tout seul :cool: :mrgreen:.

    Categories: Debian, Serveur, Tutoriaux Tags:

    Compléments d’installation d’un serveur sous Debian Lenny

    En premier lieu, connectez vous en root :

    su

    Configuration minimale

    Nous désactivons la source CDROM d’apt de façon à obtenir tous nos paquets depuis l’internet (si vous lisez cette page, c’est que vous avez l’internet ;)).

    NB : Cette méthode n’est valable que si vous avez fait une installation via un jeu de DVD ou CD. Si l’installation s’est déroulée via netinstall passez au paquet suivant.

    sed -i -e 's/^\(deb cdrom\)/#\1/' /etc/apt/sources.list

    et nous mettons à jour :

    apt-get update

    Nous installons ensuite le support du temps internet pour garder notre système à l’heure:

    apt-get install ntp
    
    

    Nous installons openssh-server et fail2ban pour avoir un accès ssh sécurisé à notre ordinateur :

    apt-get install openssh-server fail2ban

    Nous activons la colorisation de la commande ls:

    /bin/cp /etc/skel/.bashrc $HOME
    /bin/sed -i -e 's/^# \(.*\(LS_OPTIONS\|dircolors\).*\)$/\1/' $HOME/.bashrc

    Personnellement, étant un vimiste, il me faut mon outil de travail :

    /usr/bin/apt-get install vim

    Si vous le souhaitez, vous pouvez mettre en place une configuration par défaut pour Vim. Personnellement, j’utilise :

    echo "set list
    set number
    set expandtab
    set tabstop=2
    set softtabstop=2
    set shiftwidth=2
    set nobackup
    set encoding=utf-8
    set fileencoding=utf-8
    syn on" >> $HOME/.vimrc

    Une fois ceci fait, déconnectez-vous et reconnectez-vous.

    Recevoir des rapports quotidiens sur le fonctionnement de votre serveur

    Pour vous assurer que votre serveur fonctionne correctement, et qu’il ne subit ni attaque, ni disfonctionnement, il est important de le configurer pour envoyer régulièrement des rapports sur son fonctionnement. C’est ce que nous allons voir maintenant.

    Redirection des emails du compte root

    Un système Unix peut être assez bavard, et a tendance a envoyer tous les emails importants au compte Root. Il est très important de suivre ces emails. Pour ce faire, vous pouvez utiliser un lecteur d’e-mail en ligne de commande…. ou alors, rediriger les emails destinés au compte root de la machine vers votre email habituel.

    Attention : Suivant la configuration du serveur SMTP de votre fournisseur de compte e-mail, les emails envoyés par votre machine peuvent être rejetés. Personnellement, je n’ai pas ces problèmes avec les comptes GMail.

    En premier lieu, renseignez l’email que vous souhaitez utiliser :

    ROOT_EMAIL=my-account@gmail.com
    
    

    Et configurez la redirection des emails du compte Root vers cet email :

    /bin/sed -i -e "s/^\\(root:\\).*\$/\\1 ${ROOT_EMAIL}/" \
             /etc/aliases

    Surveillance des logs

    Nous installons logwatch pour surveiller notre système. Le rapport fourni par ce logiciel nous renseigne sur les tentatives d’intrusions et les éventuels problèmes rencontrés par le système.

    /usr/bin/apt-get install logwatch libdate-manip-perl

    Vérification des mises à jour

    Afin de recevoir des alertes lorsqu’il est nécessaire de mettre à jour votre Debian, installez cron-apt :

    /usr/bin/apt-get install cron-apt

    Et configurez le pour envoyer un e-mail au compte root lorsqu’une mise à jour est disponible :

    /bin/sed -i -e 's/^#[ \t]*\(MAILTO="root"\)/\1/' \
           -e '/^#[ \t]*\(MAILON="error"\)/a\
    MAILON="upgrade"' \
        /etc/cron-apt/config

    Amélioration de la sécurité du serveur

    Configuration de Fail2Ban

    Depuis que j’ai découvert cet outil, il est devenu mon meilleur ami. Ce script surveille les fichiers journaux, et banni temporairement les IPs qui jouent un peu trop avec votre serveur. C’est un outil IN-DIS-PEN-SABLE si votre serveur est directement présent sur Internet. Si ce n’est déjà fait, installez-le :

    /usr/bin/apt-get install fail2ban

    Nous allons maintenant activer certaines configurations supplémentaires afin d’augmenter sa portée. En premier lieu, nous activons la protection contre les attaques en déni de service sur le SSH :

    /bin/sed -i -e '/\[ssh-ddos\]/, /filter/ {0,/^enabled.*/ s//enabled = true/ }' /etc/fail2ban/jail.conf

    Nous activons aussi la protection du système d’authentification PAM (vu que ce mécanisme est présent un peu partout dans un système UNIX, c’est quelquechose de très pratique XD):

    /bin/sed -i -e '/\[pam-generic\]/, /filter/ {0,/^enabled.*/ s//enabled = true/ }' /etc/fail2ban/jail.conf

    Enfin, nous redémarrons fail2ban pour prendre en compte les nouvelles configurations:

    /etc/init.d/fail2ban restart

    Rercherche de Root Kits avec RkHunter

    Nous installons un outil de vérification de présence de root kits :

    /usr/bin/apt-get install rkhunter libmd5-perl
    

    Nous configurons rkhunter en fonction de notre système:

    SSH_ROOT_ALLOWED=no
    TEST_ROOT_ALLOWED=$(/bin/grep -i "PermitRootLogin.*yes" /etc/ssh/sshd_config)
    if [ -n "$TEST_ROOT_ALLOWED" ]; then
      SSH_ROOT_ALLOWED=yes
    fi
    /bin/sed -i -e 's|^[#]*\(ALLOWHIDDENDIR=/dev/.udev\)$|\1|' \
                -e 's|^[#]*\(ALLOWHIDDENDIR=/dev/.static\)$|\1|' \
                -e 's|^[#]*\(ALLOWHIDDENDIR=/dev/.initramfs\)$|\1|' \
                -e "s|^[#]*\\(ALLOW_SSH_ROOT_USER=\\).*$|\\1${SSH_ROOT_ALLOWED}|" \
             /etc/rkhunter.conf

    Au besoin, nous autorisons la présence de certains fichiers dans le dossier /dev :

    if [ -e /dev/shm/network/ifstate ]; then
      /bin/sed -i -e '0,/ALLOWDEVFILE/{//a\
    ALLOWDEVFILE=/dev/shm/network/ifstate
    ;}' \
               /etc/rkhunter.conf
    fi

    La version de RkHunter présente dans Debian 5.0 Lenny permet de maintenir une base de signature des fichiers importants basée sur les informations fournies par le gestionnaire de paquets Debian. Cette fonctionnalité est importante car elle permet de détecter plus rapidement les modifications du contenu de certains logiciels (ps, ls, etc…). Pour activer cette fonctionnalité, utilisez la ligne de commande suivante :

    /bin/sed -i -e 's|^[#]*\(HASH_FUNC=\).*$|\1md5sum|' \
                -e 's|^[#]*\(PKGMGR=\).*$|\1DPKG|' \
        /etc/rkhunter.conf

    Mettez à jour la base des menaces de RkHunter pour la première fois (par la suite elle est mise à jour chaque semaine):

    /usr/bin/rkhunter --update

    Si vous avez activé la fonctionnalité de vérification de la signature des fichiers, utilisez cette commande pour mettre à jour la base des signatures :

    /usr/bin/rkhunter --propupdate

    Afin de ne pas être forcé d’exécuter cette commande après chaque utilisation d’apt-get, faites en sorte qu’elle soit exécutée automatiquement :

    /bin/echo '// Update rkhunter file signatures databases after running dpkg.
    DPkg::Post-Invoke {
      "if [ -x /usr/bin/rkhunter ]; then if [ $(/usr/bin/rkhunter --help | /bin/grep "propupd" | /usr/bin/wc -l) -gt 0 ]; then /usr/bin/rkhunter --propupd; fi; fi";
    };' | /usr/bin/tee /etc/apt/apt.conf.d/90rkhunter

    Remarque: Pour connaître les informations que vous renverra RkHunter chaque jour, vous pouvez utiliser la commande:

    /usr/bin/rkhunter --configfile /etc/rkhunter.conf --report-warnings-only --checkall

    Remarque : il existe d’autres outils de recherches de root kits similaires à RkHunter. J’ai longtemps utilisé chkrootkit, mais comme il est impossible de le configurer proprement pour ignorer les faux positifs, j’ai fini par l’abandonner.

    Accès SSH (optionnel, mais recommandé)

    Si vous souhaitez améliorer encore la sécurité de votre serveur SSH, vous pouvez créé un utilisateur dédié pour l’accès SSH et interdire l’accès SSH au compte root. Une fois identifié sur le serveur, il vous suffira d’utiliser la commande “su” pour vous identifier avec le compte root.

    Nous installons un outil de génération de mot de passes:

    /usr/bin/apt-get install apg

    Choisissez un mot de passe sécurisé. Pour créer un tel mot de passe, vous pouvez utiliser la commande suivante:

    /usr/bin/apg -q -a  0 -n 1 -M NCL

    Nous créons un compte utilisateur sans privilèges (remplacez “myuser” par le login de votre choix):

    /usr/sbin/adduser myuser
    
    

    Configurez le serveur SSH de façon à ce qu’il n’accepte pas les connexions avec l’utilisateur root. Utilisez pour ce faire les lignes de commande suivantes:

    /bin/sed -i -e 's/PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
    /etc/init.d/ssh restart

    Attention: Ne faites ceci que si vous disposez d’un autre compte que le compte root sur la machine. Si vous ne disposez pas d’un compte utilisateur normal, votre machine ne sera plus accessible par SSH (La création d’un tel utilisateur est faite par la commande “adduser” ci-dessus).

    Autres outils

    Détection des intrusions

    Nous installons snort pour surveiller les tentatives d’intrusion sur notre système. Vous recevrez alors un résumé quotidien des alertes de sécurité.

    /usr/bin/apt-get install snort

    Protection contre les recherches de ports ouverts (port scanning)

    PortSentry permet de se protéger contre les scanners de ports. En premier lieu, il vous l’installer :

    DEBIAN_FRONTEND='noninteractive' apt-get install portsentry iptables

    Une fois ceci fait, il est nécessaire de configurer proprement portsentry avant de l’activer. La première chose à faire est de faire en sorte que PortSentry ignore votre adresse IP. Cela vous évitera d’être banni de votre propre serveur. En premier lieu, il vous faut entrer votre adresse IP (fixe de préférence):

    • Si vous êtes identifé en SSH avec le compte root, il vous suffit d’utiliser la commande suivante :
      PROTECTED_IP=$(/usr/bin/who --ips | /bin/grep root | /usr/bin/cut --characters=40-)
      /bin/echo "Votre adresse IP est : ${PROTECTED_IP}."
    • Dans tous les autres cas, rentrez votre adresse IP manuellement :
      PROTECTED_IP=83.243.21.40

    Vous pouvez maintenant ajouter l’adresse IP à la liste des adresses IP ignorées par PortSentry :

    /bin/echo "
    # Ignoring root account owner IP:
    ${PROTECTED_IP}" \
        | /usr/bin/tee -a /etc/portsentry/portsentry.ignore.static

    A présent, activez le bloquage des scans de ports TCP et UDP :

    /bin/sed -i -e 's/^BLOCK_UDP=.*/BLOCK_UDP="1"/' \
                -e 's/^BLOCK_TCP=.*/BLOCK_TCP="1"/' \
             /etc/portsentry/portsentry.conf

    Configurez PortSentry pour utiliser “iptables” plutôt que “route” pour bloquer les attaques :

    /bin/sed -i -e 's/^KILL_ROUTE=.*$/#\0/' \
                -e '0,/^[\t #]*\(KILL_ROUTE=.*iptables[^\&]*\)$/s//\1/' \
             /etc/portsentry/portsentry.conf

    Activez le mode de détection avancé de PortSentry :

    /bin/sed -i -e 's/^TCP_MODE.*$/TCP_MODE="atcp"/' \
                -e 's/^UDP_MODE.*$/UDP_MODE="audp"/' \
             /etc/default/portsentry

    Enfin, redémarrez PortSentry :

    /etc/init.d/portsentry restart
    
    :cool: :razz:

    Categories: Debian, Serveur, Tutoriaux Tags:

    Radio et TV en direct sur internet

    Je suis un fan de musique surtout pendant que je travaille sur un logiciel ou que j’administre l’un de mes serveurs :eek:. Je cherchais une solution simple, ne consommant pas beaucoup de ressources. Comme souvent avec les logiciels libres, j’ai fini par trouver cette perle rare. C’est avec une grande joie que je vous partage cette découverte. A consommer sans modération……..:cool:.

    Nous allons d’abord nous assurer que vous disposez des packages nécessaires pour le faire tourner…

    - Avec Synaptic, assurez vous que vous avez les packages suivants d’installés :

    • ffmpeg
    • mplayer
    • mimms
    • w32codecs
    • wget

    - vous pouvez télécharger dans votre répertoire le script à cette adresse.

    Pour lancer le script :

    Suite à de passionnants échanges dans ce forum, différentes pistes ont été trouvées :

    - tout d’abord :

    • Rendre le fichier exécutable
    • Faire un clic droit sur le fichier
    • Sélectionner Propriétés
    • Avec Ubuntu, allez dans l’onglet “Permissions” est cochez “Exécution”
    • Avec Kubuntu, allez dans l’onglet “Droits d’accès” et cocher “est exécutable”

    Ouvrir une console (terminal gnome ou Konsole) et tapez à l’invite :

    ls

    si le fichier radios.sh est dans votre répertoire perso, vous devriez le voir dans la liste :)

    on va le mettre dans /usr/local, prêts ?

    sudo mv radios.sh /usr/local

    La commande mv (move) sert à déplacer (entre autres).

    Nous allons maintenant créer un lien symbolique pour démarrer le script plus rapidement :

    sudo ln -s /usr/local/radios.sh /usr/local/bin/radios

    Enfin, lancer la première fois le script pour récupérer la liste des radios :

    radios

    et accepter de télécharger la liste des radios en saisissant “o”.

    La liste des radios est alors disponible dans le fichier “radios.csv” du dossier “.radios” de votre compte utilisateur, vous pouvez modifier cette liste à votre guise avec une des commandes ci-dessous :

    - kedit ~/.radios/radios.csv
    - gedit ~/.radios/radios.csv
    - pico ~/.radios/radios.csv

    Categories: Logiciels Libres, Musique, Tutoriaux, Ubuntu Tags:

    Installation de Spamassassin et Clamav avec Postfix sous Debian Lenny (5.0)

    Ce document est basé sur la dernière version Debian (5.0 / Lenny), ce qui devrait lui assurer une bonne durée de vie ;-) . Toutes les applications utilisées sont disponibles sous forme de packages officiels (c’est plus simple pour les mises à jour).

    logo_debian1

    Les pré-requis sont les suivants :

    • Une distribution Linux Debian 5.0 fonctionnelle ;
    • Un serveur Postfix en état de fonctionnement et configuré selon vos besoins (ce document ne traitera pas de la configuration de Postfix – mais si vous avez des questions je pourrais peut être vous aider …).

    Petit rappel sur les différents éléments utilisés :

    • ClamAV : anti-virus Open Source (plus d’infos ICI)
    • SpamAssassin : anti-spam Open Source (plus d’infos ICI)
    • Amavisd-New : module réalisant l’interface entre Postfix les modules de filtrage SpamAssassin et ClamAV (plus d’infos ICI)

    C’est parti …

    • Installation Amavisd-New et ClamAV

    apt-get install amavisd-new clamav clamav-daemon

    L’installeur va vous poser des questions, normalement les réponses par défaut devraient convenir.

    • Il faut ajouter l’utilisateur clamav au groupe amavis

    addgroup clamav amavis

    • Il faut modifier le fichier /etc/amavis/conf.d/15-content_filter_mode
    • Décommentez les deux lignes suivantes (pour autoriser le filtrage anti-virus) :

    @bypass_virus_checks_maps = (
    \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

    • Et celles-ci (pour autoriser le filtrage anti-spam) :

    @bypass_spam_checks_maps = (
    \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

    • Téléchargez et installez “spamassassin

    apt-get install spamassassin

    • Dans “/etc/default/spamassassin

    modifiez “ENABLED=1″
    modifiez “OPTIONS=”–max-children 5 –helper-home-dir” (remplacez 5 par le nombre de process de “spamd” devant fonctionner simultanéement)

    • Ajoutez la ligne suivante dans le fichier “/etc/postfix/main.cf

    content_filter = smtp-amavis:[127.0.0.1]:10024

    • Ajoutez les lignes suivantes dans le fichier “/etc/postfix/master.cf

    (attention à bien conserver un espace avant chaque “-o”)

    smtp-amavis unix - - y - 2 smtp
          -o smtp_data_done_timeout=1200
          -o disable_dns_lookups=yes
    
    127.0.0.1:10025 inet    n       -       y       -       -       smtpd
          -o content_filter=
          -o local_recipient_maps=
          -o relay_recipient_maps=
          -o smtpd_restriction_classes=
          -o smtpd_client_restrictions=
          -o smtpd_helo_restrictions=
          -o smtpd_sender_restrictions=
          -o smtpd_recipient_restrictions=permit_mynetworks,reject
          -o mynetworks=127.0.0.0/8
          -o strict_rfc821_envelopes=yes
    • Et enfin pour bénéficier de toutes les fonctionnalités d’Amavis, il faut lui indiquer le (ou les) domaines gérés sur ce serveur (en terme de courrier bien sûr)
    • Ajouter dans le fichier “/etc/amavis/conf.d/05-domain_id” :

    @local_domains_maps = ( [ '.domain1.com', '.domain2.com', '.domain3.com' ] );

    • On relance tout le bazar :

    /etc/init.d/spamassassin restart
    /etc/init.d/clamav-daemon restart
    /etc/init.d/amavis restart
    postfix reload

    • Pour s’assurer qu’Amavis prenne bien en charge ClamAV et Spamassassin, aprés avoir relancé Amavis (étape précédente) on doit retrouver les lignes suivantes dans les logs du serveur de mail (normalement /var/log/mail.info)

    Jul 15 11:44:37 hostname amavis[26709]: ANTI-VIRUS code loaded
    Jul 15 11:44:37 hostname amavis[26709]: ANTI-SPAM-SA code loaded
    Jul 15 11:44:37 hostname amavis[26709]: Using internal av scanner code for (primary) ClamAV-clamd
    Jul 15 11:44:37 hostname amavis[26709]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan

    • Il est également plus prudent de tester un envoi de mail avec la chaîne de test “EICAR” (allez faire un tour sur www.eicar.com), puis allez jeter un oeil sur les logs de Postfix :

    Jul 15 14:02:41 hostname amavis[13251]: (13251-01) Blocked INFECTED (Eicar-Test-Signature), [192.168.0.1] <nom@domaine.fr> -> <test@testmail.fr>, quarantine: virus-lFDtkSo0b4vz, Message-ID: <20070509120235.D8AF02AA74@hostname>, mail_id: lFDtkSo0b4vz, Hits: -, 125 ms

    • On peut également tester l’anti-spam avec l’envoi d’un message contenant la chaine de test suivante : XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

    On doit retrouver un truc comme ça dans les logs de Postfix :

    Jul 15 14:24:45 hostname amavis[6446]: (06446-02) Blocked SPAM, [192.168.0.1] <nom@domaine.fr> -> <test@testmail.fr>, quarantine: spam-atCf69YINh+q.gz, Message-ID: <20070509122435.87ED32AA74@hostname>, mail_id: atCf69YINh+q, Hits: 1004.184, 2128 ms

    Vous disposez désormais d’une solution de filtrage anti-virus et anti-spam fonctionnelle :cool:!

    Categories: Debian, Logiciels Libres, Serveur, Tutoriaux Tags: