Configuration
Un article de Linuxette.
Sommaire |
Configuration générale
Pour configurer ma nouvelle installation, je suis parti des fichiers déjà créé sur l'ancien. Pour ça, j'ai commencé par créer sur le (vieux) serveur, un répertoire de sauvegarde, nommé sauvegarde-config (très original, je sais). J'y ai copié tous mes fichiers de configuration puis changé le propriétaire! Ensuite, j'utilise rsync sur la futur debian, en collaboration avec ssh (toujours en émulation avec qemu):
$ cd ~
$ rsync -e ssh -vr admin@192.168.3.1:sauvegarde-config ./
C'est tout! Pas plus difficile que ça de récupérer des fichiers. Il ne reste plus qu'a copier tout au bon endroit, en faisant attention d'avoir bien copié TOUS les fichiers de configuration de la précédente version du serveur.
Préparations... je commence par modifier /etc/fstab pour correspondre à la future installation, je place /etc/resolv.conf de façon à allez sur le net tout de suite pour mettre à jour l'installation, installer de nouveau paquets, suppressions de paquets inutiles pour le serveur, ....
* fstab: montage en ro de la racine * fstab: point de montage /var vers le disque dur local * fstab: point de montage /tmp vers le disque dur local * fstab: point de montage /home vers le disque dur local
Package particulier & utilisation
o Debsum pour le contrôle des sommes de fichiers
Mise en situation!
AVANT TOUT: si vous avez un firewall configuré et fonctionnel (iptables), faite une sauvegarde:
# iptables-save > firewall-perso-qui-marche
et reinstallez sur le nouveau serveur (faite une copie de sécurité!) avec:
# iptables-restore < firewal-perso-qui-marche
J'ai commencé par installer la carte en ide master, puis changé les disques durs et cdrom sur les nappes (sans oublier les switchs maitre/esclave). Ensuite, j'ai mis en route, vérifié dans le bios l'emplacement des disques. C'est bon du premier coup! Je démarre avec le cd d'installation xubuntu. Celui ci propose au boot, de passer en mode réparation. J'ai commencé par déplacer le répertoire var dans la bonne partition, pareil pour /home. Par contre, je n'ai pas réussi à placer la racine en read only. Cela demandera encore quelques recherches. La toute dernière chose, c'est de placer un boot loader sur /dev/hda1 (sur la cf card). Pour cela, pendant l'utilisation de xubuntu en mode recovered (réparation), il nous propose un shell sur une des partitions trouvées par ses outils. Ici, bien sur, c'est hda1. J'y vais, je me lance. Je ne dispose que d'un shell minimal, et donc, je lance bash:
# /
# /bin/bash
# /
A présent, il faut installer grub. J'ai beaucoup cherché, testé (hd0,0) avec grub-install... Redémarré... Recommencé.... Mais en fait, il fallait utiliser (hd0) !!! Après, je redémarre.... Et premier problème: tout marche, sauf que /etc/resolv.conf est modifié par dhclient! J'ai mis une journée à trouver qu'il fallait utiliser uniquement pump, virer dhclient, et créer le fichier de configuration /etc/pump.conf:
cat /etc/pump.conf
retries 3
timeout 20
nodns
Et là, mon resolveur fonctionne bien, puisque j'ai mon propre serveur dns. La configuration de celui ci m'a donné aussi du fil à retordre. En effet, je voulais utiliser dhcp pour mon réseau local (wifi et ethernet), et que celui ci modifie le dns afin d'utiliser une adresse textuelle de type
$ ssh excalibur.suinot.org
quelque soit l'adresse ip de la machine
A ce jour (02 oct 2007) je n'ai toujours pas réussi cette configuration. Les machines ont donc des adresses fixes, mais fournies par dhcp et enregistrées 'en dur' dans la configuration de bind9.
Serveur de courrier
Le courrier passe par chez moi. Ce sont les programmes postfix/amavisd-new/clamav/spammassassin qui gère l'ensemble afin de ne pas avoir (trop?) de spam ni de virus. La doc de référence qui m'a aidé se trouve sur:
et aussi là:
Serveur apache2 pour http et https
La configuration du serveur n'a rien d'extraordinaire. /etc/apache2/apache2.conf est le fichier principale, et la configuration des site, dans /etc/apache2/sites-available/default. J'y ai placé toutes les configurations de mes sites, en http et en https.
Par contre, pour les connexions sécurisées, il m'a fallut utiliser un 'auto'certificat, et générer les fichiers ssl pour apache. J'ai trouvé la doc suivante, qui m'a bien aidé: https://joloridi.net/wikini/wakka.php?wiki=DebianCertificatSSL.
Et voici la génération des fichiers sur ma machine (copie de ce qui a été fait sur la console):
# cd /etc/ssl # openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem Generating a 1024 bit RSA private key ..............++++++ ...........++++++ writing new private key to 'private/cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Haute-Vienne Locality Name (eg, city) []:Limoges Organization Name (eg, company) [Internet Widgits Pty Ltd]:suinot.org Organizational Unit Name (eg, section) []:master Common Name (eg, YOUR name) []:master.suinot.org Email Address []:admin@suinot.org # openssl req -new -config ./openssl.cnf -nodes -out ./apache-req.pem -keyout ./apache-key.pem Generating a 1024 bit RSA private key .......++++++ ..........................++++++ writing new private key to './apache-key.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Haute-Vienne Locality Name (eg, city) []:Limoges Organization Name (eg, company) [Internet Widgits Pty Ltd]:suinot.org Organizational Unit Name (eg, section) []:imap Common Name (eg, YOUR name) []:master.suinot.org Email Address []:remi@suinot.org Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:imap.suinot.org # openssl x509 -req -in apache-req.pem -out apache-cert.pem -signkey apache-key.pem -CA cacert.pem -CAkey private/cakey.pem -CAcreateserial -days 365 Signature ok subject=/C=FR/ST=Haute-Vienne/L=Limoges/O=suinot.org/OU=imap/CN=master.suinot.org/emailAddress=remi@suinot.org Getting Private key Getting CA Private Key Enter pass phrase for private/cakey.pem:
Pour terminer, dans /etc/apache2/sites-available/default, j'ai placé ces trois lignes:
SSLEngine on
SSLCertificateFile /etc/ssl/apache-cert.pem
SSLCertificateKeyFile /etc/ssl/apache-key.pem
puis redémarrer apache2 :)
Sécurisation des application web
Voir la page Apache2-mode-security
Firewall
Le but: c'est simple, tout bloquer! Bon, je sais, c'est un peu radical. J'ai donc un peu ouvert quelques ports: http, https, ... Bref, tous les services 'offerts' pas le serveur. Et puis, il a fallut ouvrir et redistribuer tout ce que le réseau local demande. Et en dernier, pour que amule et amsn fonctionnent correctement, faire du DNAT (Traduction d'Adresse Réseau de Destination, ce qui veut dire que le pare-feu va réécrire l'adresse IP de Destination du paquet: au lieu que ce soit le serveur, ce sera une des machines du lan). Et le pire, c'est que ça marche! J'ai trouvé pas mal d'aide via google mais surtout grâce à ce site: http://olivieraj.free.fr/fr/linux/information/atelier_netfilter/
Merci à lui pour l'aide précieuse apporté par sa documentatin.
Vous voulez voir le script? Demandez le. Je le fourni gracieusement, mais ne veux pas le mettre en ligne sur le site.
Squirrelmail en français!
Pour placer squirrelmail en français, il faut configurer les divers fichiers dans /etc/squirellmail/ puis modifier à la main le fichier /usr/share/squirrelmail/functions/i18n.php et remplacer
$languages['fr_FR']['NAME'] = 'French';
$languages['fr_FR']['CHARSET'] = 'iso-8859-1';
$languages['fr_FR']['LOCALE'] = array('fr_FR.ISO8859-1','fr_FR.ISO-8859-1','fr_FR');
$languages['fr']['ALIAS'] = 'fr_FR';
par
$languages['fr_FR']['NAME'] = 'French';
$languages['fr_FR']['CHARSET'] = 'UTF-8';
$languages['fr_FR']['LOCALE'] = array('fr_FR.UTF-8','fr_FR.UTF-8','fr_FR');
$languages['fr']['ALIAS'] = 'fr_FR';
--admin 21 février 2009 à 16:10 (CET)

