Info16.fr

Le blog de B@rtounet

Gnu/Linux

#Gnu/Linux

Initiation rapide au LVM : Gerer votre système de fichiers. testé sous Ubuntu 6.06 / Suse 10

En général quand on parle d'espace disque, on pense à partition primaire, etendue, lecteur logique etc... Chez soi, quand on manque d'espace disque on rajoute un hdd et on crée une nouvelle partition... Avec LVM (Logical Volume Manager) on s'affranchie de cette limite, il va permettre de voir l'ensemble des disque comme des volumes extensible a volonté. On pourra par exemple regrouper 10 disques dur physique en un seul volume et vu par le système comme une seule et meme partition. Et cette dernière sera extensible volonté.

En général quand on parle d'espace disque, on pense à partition primaire, etendue, lecteur logique etc... Chez soi, quand on manque d'espace disque on rajoute un hdd et on crée une nouvelle partition... Avec LVM (Logical Volume Manager) on s'affranchie de cette limite, il va permettre de voir l'ensemble des disque comme des volumes extensible a volonté. On pourra par exemple regrouper 10 disques dur physique en un seul volume et vu par le système comme une seule et meme partition. Et cette dernière sera extensible volonté.

Le système de LVM insère des sous-couches entre la partition de disque et votre système de fichier (là où sont vos données). Ces sous-couches vont vous permettre de modifier dynamiquement la taille des systèmes de fichier, sans mettre en péril vos données. Ainsi vous pourrez ajouter, enlever de l'espace disque d'un filesystem à la volée, rajouter un système de fichier... sans modification de la table des partitions.

Ces deux couches se nomment : le "Volume Group (Abréviation : VG)" et le "Logical Volume (ou LV)".

A un "Volume Group", nous affecterons des partitions de disque. Chaque disque ou partition de disque affecté à un VG lui est exclusivement réservé. Il est impossible d'affecter un même disque à plusieurs VG.

Dans chaque VG, nous créerons plusieurs LV. Chaque LV sera alors formaté et monté dans notre arborescence pour y être utilisé par l'utilisateur final. Quand nous formatons un LV, nous créons en fait un système de fichier (fs) : c'est cette couche que vous utilisez lorsque vous effectuez l'opération de montage.

Un petit schéma :

Partition(s) de disque

|> Volume Group |> Logicals Volumes |> système de fichiers

Au lieu de :

Une partition de disque

|>un système de fichier

Ces couches intermédiaires vont donc permettre une meilleure mobilité de nos systèmes de fichiers. ( cf:http://sluce.developpez.com/lvm/ )

Tout dabord assurer vous que vous disposez du paquet lvm2

Pour la suite, je m'appuie sur le magnifique outil Webmin ainsi que la ligne de commande, on aurait put tout faire en ligne de commande mais webmin permet de faire plus rapidement certaine chose...

Je beneficie d'un pc portable et deux clés USB, je me suis dit pourquoi ne pas crée des LVM avec ces clé puisqu'elles sont vues comme des disques à part entière par le système.

Deux clés USB: /dev/sdd1 et /dev/sdg1

Passons par Webmin /hardware/LVM

Nous avons à présent: un VG (volume group) qui est test_vg ( comprenant un disque physique) un LG (logical volume)

Nous allons creer le systeme de fichier sur ce logical volume

sles101:~ # mkfs.ext3 /dev/test_vg/lv_usb mke2fs 1.38 (30-Jun-2005) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 124416 inodes, 248832 blocks 12441 blocks (5.00%) reserved for the super user First data block=0 8 block groups 32768 blocks per group, 32768 fragments per group 15552 inodes per group Superblock backups stored on blocks:         32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 33 mounts or 180 days, whichever comes first.  Use tune2fs -c or -i to override.

On peut maintenant monter notre file system

sles101:~ # mount /dev/test_vg/lv_usb /media/usb1

On creer des dossiers à l'intérieur

sles101:~ # cd /media/usb1/ sles101:/media/usb1 # ls lost+found sles101:/media/usb1 # mkdir test1 test2 test3 sles101:/media/usb1 # ls lost+found  test1  test2  test3

Tout fonctionne à merveille, mais imaginez que vous travaillez sur ce volume, et que la place vient a manquer. En temps normal on ajouterai un disque, on creerai le systeme de fichier et on serait obliger de travailler sur l'autre disque... en plus d'avoir un nouveau disque dans le systeme cela peut etre problematique. Imaginez uneb ase de donnée sur un disque qui n'a plus d'espace, il faudrait déplacer toute la base sur un nouveau média

Avec le LVM ce probleme n'existe plus, il va nous permettre d'integrer un nouveau disque physique dans notre volume existant et ainsi etendre le systeme sur la nouvelle partition logique .

Pour le système cela va etre transparent, il va voir le meme disque mais avec une plus grande capacité.

Rappel: on a pour l'instant un volume test_vg comprenant un disque (1 clé usb 1go), ce volume contient une partition logique lv_usb avec un systeme de fichier qui s'étend sur tout le volume logique.

On veut maintenant ajouter un nouveau disque (une nouvelle clé usb de 1go) l'integrer à test_vg, et etendre lv_usb sur ce nouveau média ainsi que son système de fichier.

Ajoutons le nouveau disque au volume test_vg

Retour sur webmin pour ajouter le disque:

Retour sur la ligne de commande pour etendre notre logical volue et donc notre file system.

Pour l'instant on à seulement un file system de 1000Mo. on va l'etendre à 1500Mo

sles101:/media/usb1 # lvextend -L+500M /dev/test_vg/lv_usb     Extending logical volume lv_usb to 1.44 GB   Logical volume lv_usb successfully resized

On peut maintenant monter notre FS

sles101:/media # mount /dev/test_vg/lv_usb /media/usb1/  sles101:/media # cd /media/usb1/ sles101:/media/usb1 # ls lost+found  test1  test2  test3

On peut voir que notre volume logique est plus grand et que les données sont intactes.

sles101:/media/usb2 # fdisk /dev/test_vg/lv_usb Command (m for help): p Disk /dev/test_vg/lv_usb: 1543 MB, 1543503872 bytes 255 heads, 63 sectors/track, 187 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

Cela se vérifie bien sur sous webmin:

27 juillet 2011 Aucun commentaire

#Gnu/Linux

Sécuriser un DNS BIND avec les views

Ce billet explique comment éviter que votre serveur DNS serve de relay DNS.

En général la manière classique d'éviter que votre dns réponde au demande autre que celle relative à votre domaine est d'implementer la commande allow-recusion en la limitant sur une ACL

     acl lan {      localhost;      192.168.0.0/16;     }; options {     allow-transfer { none; };     allow-query { lan;};     allow-recursion { lan;}; }; Mais si vous faites des tests  plus avancés, vous vous rendez vite compte que votre DNS répond à des requetes extérieures mais pour résoudre des noms qui n'appartiennent pas à votre domaine. En entreprise ce n'est pas acceptable. En fait votre DNS ne résoud pas tous les noms mais seulement qui sont déjà dans son cache local.... La commande vu plus haut n'empêche pas l'accès au cache du serveur DNS. Si l'attaquant réussit à peupler ce cache (par exemple en envoyant un courrier à une machine utilisant légitimement ce serveur récursif), il pourra quand même mener son attaque. BIND 9.4 (pas encore publié à ce jour) aura une nouvelle option allow-query-cache qui résoudra ce problème. Avec cette option, une configuration raisonnable sera : allow-recursion {mynetworks;}; allow-query-cache {mynetworks;}; // Surtout ne pas oublier celui-ci. Mais en attendant cette nouvelle version on ne peut pas se permettre de laisser notre cache DNS ouvert à tout le monde... Pour résoudre ce probleme on va creer des views. La commande view dansbind permet de determiner qui aura le droit de visu sur les différentes zone de notre DNS. Le but sera donc de creer une ACL qui comprendra tous les hotes de notre réseau local ( par exemple LAN) et une autre view pour tous les autres, qui n'auront accès qu'a la zone qui gere votre nom de domaine... Votre DNS ne répondra qu'au requetes qui concerne votre nom de domaine et aucune autre. pour cela je vous montre mon fichier de conf vi /etc/bind/named.conf
 acl lan {       localhost;       192.168.0.0/16;      };   //  logic to all top level domains, and to the root domain.  An exception list   //  should be specified, including "MUSEUM" and "DE", and any other top level   //  domains from whom undelegated responses are expected and trusted.   // root-delegation-only exclude { "DE"; "MUSEUM"; };   #include "/etc/bind/named.conf.local";   view interne {           match-clients {                   lan;                   };           recursion yes;   zone "." {           type hint;           file "/etc/bind/db.root";   };   zone "localhost" {           type master;           file "/etc/bind/db.local";   };   zone "127.in-addr.arpa" {           type master;           file "/etc/bind/db.127";   };   zone "0.in-addr.arpa" {           type master;           file "/etc/bind/db.0";   };   zone "255.in-addr.arpa" {           type master;           file "/etc/bind/db.255";   };   zone "info16.fr" {           type master;           file "/etc/bind/db.mondomaine.fr";   };   zone "22.151.91.in-addr.arpa" {           type master;           file "/etc/bind/db.mondomaine.fr.inv";   };           };   view externe {           match-clients {                   any;                   };           recursion no;   zone "mondomaine.fr" {           type master;           file "/etc/bind/db.mondomaine.fr";   };   zone "31.121.91.in-addr.arpa" {           type master;           file "/etc/bind/db.mondomaine.fr.inv";   };           };
Les étapes importantes, # Creer une acl       acl lan {        localhost;        192.168.0.0/16;       }; # creer les views en définissant, qui a droit d'utiliser la view et quelle zone sont visible dans cette view.   view interne {            match-clients {                    lan;                    };            recursion yes;    zone "." {            type hint;            file "/etc/bind/db.root";    };    zone "localhost" {            type master;            file "/etc/bind/db.local";    };    zone "127.in-addr.arpa" {            type master;            file "/etc/bind/db.127";    };    zone "0.in-addr.arpa" {            type master;            file "/etc/bind/db.0";    };    zone "255.in-addr.arpa" {            type master;            file "/etc/bind/db.255";    };    zone "info16.fr" {            type master;            file "/etc/bind/db.mondomaine.fr";    };    zone "22.151.91.in-addr.arpa" {            type master;            file "/etc/bind/db.mondomaine.fr.inv";    };            };    view externe {            match-clients {                    any;                    };            recursion no;    zone "mondomaine.fr" {            type master;            file "/etc/bind/db.mondomaine.fr";    };    zone "31.121.91.in-addr.arpa" {            type master;            file "/etc/bind/db.mondomaine.fr.inv";    };            };
Testons la différence entre notre DNS sécurisé et un DNS mal configuré inet:/var/log # nslookup > server cxd15.com Default server: cxd15.com Address: 200.200.134.52#53 > www.free.fr Server:         cxd15.com Address:        200.200.134.52#53 Non-authoritative answer: Name:   www.free.fr Address: 212.27.48.10

Dans cet exemple on voit bien que la dns de la société (fictive) cxd15, donne l'ip correspondant à www.free.fr

Maintenant en utilisant notre serveur a partir de l'exterieur.

@@

inetgw:~ # nslookup > server ns.info.fr Default server: ns.info.fr Address: 91.100.30.206#53 > www.free.fr Server:         ns.info16.fr Address:        91.100.30.206#53 Non-authoritative answer: *** Can't find www.free.fr: No answer@@

Mais bien sur si on fait la meme requete sur notre serveur, mais à partir de notre réseau local.

@@

root@serveur:~# nslookup > www.free.fr Server:         127.0.0.1 Address:        127.0.0.1#53 Non-authoritative answer: Name:   www.free.fr Address: 212.27.48.10

@@

On voit bien que notre DNS est sécurisé et ne répond aux requetes récursives que lorsque c'est son propre réseau local (défini dans l'ACL lan) qui l'interroge.

PS: Les ip que j'ai utilisée sont fictives ainsi que leur nom de domaines associés.

27 juillet 2011 Aucun commentaire

#Gnu/Linux

Mise en place d'un Serveur Proxy Squid Linux/Ubuntu

Vous êtes dans une entreprise, et vous voulez fermer les accès afin de controler vraiment ce qui sort de votre réseau... Squid est fait pour vous

Un serveur Squid est un serveur proxy performant, il est capable d'utiliser les protocoles FTP, HTTP, Gopher, et HTTPS. Contrairement aux serveurs proxy classiques, un serveur Squid gère toutes les requêtes en un seul processus d'entrée/sortie, non bloquant.

Squid garde les meta-données et plus particulièrement les données les plus fréquemment accédées en mémoire. Il conserve aussi en mémoire les requêtes DNS, ainsi que les requêtes ayant échoué. Les requêtes DNS sont non bloquantes. (cf wikipedia) Autrement dit il permet d'être le seul poste qui accede à l'internet sur votre réseau local; il va faire les requetes à la place des postes clients et leur fournir les pages demandés, mais aussi les fichiers ... Il permet d'optimiser la bande passante, puisqu'il possède un cache.

Une page demandée la première fois est mise en cache, si bien que la même requète faite par un autre poste sera fournie directement par le proxy grace a son cache.

Passons directement à l'installation du proxy @@ sudo apt-get install squid @@

vous avez dejà votre proxy!!! Par défaut squid écoute par défaut sur le port 3128

Essayez déja de configurer votre navigateur favoris afin qu'il utilise votre serveur mandataire (on appelle aussi un proxy comme ca).

Essayez de charger une page internet et là c'est la cata, squid vous bloque l'accès. Pas de panique, squid par défaut bloque l'accès à tout le monde...

Il faut donc creer une ACL qui permet de donner accès au LAN.

Pour cela, comme très souvent, je ne me complique pas la vie, j'utilise webmin...

Pour ma part j'ai creer une nouvelle ACL nommé ACCEPTLAN de type client address qui correspond à l'adresse de mon réseau local... 192.168.1.0/24

et je l'ai placé au dessus de l'acl denyall (celle qui nous bloquait)

Refaite le test avec votre navigateur ho miracle ca marche....

27 juillet 2011 Aucun commentaire

#Gnu/Linux

Serveur de Messagerie d'entreprise: Postfix--- Fsecure ---- Exchange

Je me replonge encore une fois dans la messagerie... Ce billet me sert de mémoire pour l'installation d'un serveur de messagerie sécurisé regroupant le MTA Postfix en frontal ( idéalement dans la DMZ) l'interfacage avec l'antivirus Fsecure, et la livraison à un autre MTA dans le LAN de l'entreprise qui n'est autre que Exchange Server 2003.

Après cette longue période durant laquelle je n'ai rien posté, j'ai décidé de remettre à plat ce que j'avais un peu bossé en entreprise.

J'avais déja montré comment creer un serveur de messagerie sous linux dans mes derniers posts, mais pour des boites locales... C'est à dire que postfix après avoir passé les mails à la moulinette les délivrait directement dans les Maildir Locaux... /home/user/Maildir

Bien que cette solution serait exploitable en production, vous vous doutez bien que nos chers utilisateurs ne se contente pas d'un vulgaire Webmail ou d'un simple boite, ils leur Faut des fonctionnalités avancées que seuls des grosses usines à Gaz comme Notes d'IBM ou Exchange de Microsoft peuvent leur apporter...

Ce qu'il faut savoir c'est que de base, Exchange server est capable de faire MTA à part entière et se placer en frontal dans la DMZ, mais beaucoup d'entreprises et je partage cet avis, aiment en général ne présenter que des solutions robustes et libres en frontal... Donc du linux ;-)

Me voici en grande pompe en train d'essayer de faire marcher le bazar...

Suivez mon conseil, pour s'y retrouver, rien de tel qu'un Schéma....

Commencons par installer posfix

sudo apt-get install postfix

Paramétrons postfix

sudo vi /etc/postfix/main.cf

 # Debian specific:  Specifying a file name will cause the first  # line of that file to be used as the name.  The Debian default  # is /etc/mailname.  #myorigin = /etc/mailname  smtpd_banner = $myhostname ESMTP  biff = no  # appending .domain is the MUA's job.  append_dot_mydomain = no  # Uncomment the next line to generate "delayed mail" warnings  #delay_warning_time = 4h  # TLS parameters  smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem  smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key  smtpd_use_tls=yes  smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache  smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache  # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for  # information on enabling SSL in the smtp client.  myhostname = mail.appart.lan  alias_maps = hash:/etc/aliases  alias_database = hash:/etc/aliases  mydestination = serveur, serveur.appart.lan, appart.lan, info16.fr localhost, localhost.localdomain, localhost  relay_domains = info16.fr, appart.priv, appart.lan  relay_recipient_maps = hash:/etc/postfix/relay_recipients_maps  transport_maps = hash:/etc/postfix/transport  myorigin = /etc/mailname  mynetworks = 127.0.0.0/8 192.168.1.0/24  mailbox_size_limit = 0  recipient_delimiter = +  inet_interfaces = all  @@

Je pars du principe que vous avez bien sur un nom de domaine, pour une entreprise c'est quasiment indispensable afin que les utilisateurs puissent recevoir leur mails sur user@entreprise.fr par exemple...

Je prend comme exemple l'entreprise info16.fr Ce qui change par rapport au premier tuto c'est que cette fois on veux que notre postfix n'accepte que les mails à destination de info16.fr Pour cela :

relay_domains = info16.fr relay_recipient_maps = hash:/etc/postfix/relay_recipients_maps

/etc/postfix/relay_recipients_maps contenant:

user1@info16.fr    motQueTuVeux

"postmap /etc/postfix/relay_recipients_maps"

Cela va creer la base de données regroupant tous les utilisateurs de votre domaine... Vous vous doutez bien que vous n'allez pas entrer dans ce fichiers tous les utilisateurs à la main... En pratique il faut mettre en place une synchronisation en un annuaire LDAP (active directory ou notes) qui vient mettre à jour cette base de donnée plusieurs fois par jour par l'intermédiaire d'un job Cron par exemple... Ceci est une sécurité supplémentaire que vous n'etes pas obligé de mettre en place, mais qui est conseillée... sachant que de toute facon quand les mails arriverons sur le serveur exchange il seront là aussi vérifié afin de savoir si la boite existe belle et bien.

Après cela on veut que tous les mails reçus et acceptés par postfix soit redirigé sur le port 9025 de F-secure qui est notre antivirus...

Pour cela : dans le main.cf on doit avoir transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport contenant: info16.fr smtp:192.168.1.100:9025

"postmap /etc/postfix/transport" apres les modifs

La délivrance des mails sur un serveur distant est quasiment plus simple qu'en local, car ce n'est qu'un echange de paquet de port en port

à partir de là, tous les mails à destinations de info16.fr seront redirigé vers le port 9025 du serveur... Et qui écoute sur le port 9025: L'Antivirus F-Secure.

Bon ici, je vais vous présenter brièvement la page qui m'interesse sur F-Secure...

Après avoir installer F Secure et payer la licence... Vous pouvez le paramétrer avec une superbe page Web

On voit bien sur l'image la simplicité du paramétrage... On dit à F-Sécure... -Ecoute tous les transfert SMTP arrivant sur le port 9025 -Scan Les et renvoie le tout au serveur 192.168.1.1 sur son port 25 (autrement dit le port sur lequel ecoute Exchange) -Notifie l'admin si un mail est vérolé

On Récapitule, à partir de là

Les mails venant de l'internet, à destination de votre nom de domaine info16.fr, arrive sur le port 25 de postfix, ce dernier les renvoie sur le port 9025 de F-Secure, lequel scan les mails et les envoie sur le port 25 du Serveur de Messagerie Exchange...

On à fait une première partie du boulot... Nos mails sortent de Fsecure complétement scanné...

Maintenant Exchange... Je ne vais pas vous détailler complètement l'installation du serveur Exchange 2003, vous avez de très bon tutos sur le site de supinfo par exemple...

Je vais juste vous montrer deux copies d'ecran qui vous aiderons à paramétrer votre serveur afin qu'il recoivent bien les mails de votre domaine

De base, quand vous venez juste d'installer votre Serveur de messagerie exchange, il ne sait recevoir que les mails du domaine Active directory. Par exemple info.lan et non info.16 Pour que votre serveur accepte les mails de info16.fr il faut changer la stratégie SMTP des destinataires de messages...

A partir de maintenant, votre serveur acceptera les mails en provenance de votre domaine public

Après que les mails soient scannés par F-Secure ils seront envoyé au serveur exchange qui lui les dispatchera dans les boites aux lettres...

Rappelez vous, vous aviez déjà un un premier filtrage du nom utilisateur sous postfix avec le relay_recipient_maps, vous avez ici un deuxième controle, exchange ne l'acceptera que si la boite existe bien dans son annuaire...

A partir d'ici si vous donnez à votre serveur le droit d'envoyer directement les mails sur internet, il est capable de le faire... Mais comme je ne met jamais de machine Microsoft en frontal, je préfère que pour que pour l'envoie des mails provenant du LAN vers l'extérieur on repasse par postfix.

Pour cela encore une petite astuce dans exchange: il faut lui définir un connecteur SMTP : je l'ai nommé postfix

Notre serveur exchange enverra maintenant tous les mails vers postfix...

27 juillet 2011 Aucun commentaire

#Gnu/Linux

WPA sous Ubuntu/linux

Le WPA étant très bien géré en natif sous Windows 2000/XP/Vista, il l'est beaucoup moins sous Linux J'ai réussi à la paramétrer tout de même

Si vous utilisez une carte Wifi reconnue sous Linux en natif et qui n'est pas à base de chipset RT2500 comme la mienne, le plus simple est d'utiliser network manager... C'est un outil de gestion réseau totalement graphique.

si vous avez comme moi une carte à base de RT2500 cette méthode ne marchera pas.

J'ai donc après recherche intensive réussi a faire fonctionner le WPA TSK en éditant mon fichier /etc/network/interfaces de la manière suivante

@@auto ra0 iface ra0 inet dhcp    pre-up iwconfig ra0 essid votre-ssid    pre-up iwconfig ra0 mode managed    pre-up iwpriv ra0 set Channel=votre-channel    pre-up iwpriv ra0 set AuthMode=WPAPSK    pre-up iwpriv ra0 set EncrypType=TKIP    pre-up iwpriv ra0 set WPAPSK="votre_mot_de_passe"    pre-up iwpriv ra0 set TxRate=0@@
27 juillet 2011 Aucun commentaire