Installer un serveur libre et indépendant sous Debian
J'ai écrit ces pages pour aider les débutants qui voudraient, comme moi, créer un serveur indépendant sur une machine locale. Je conseille de suivre les pages dans l'ordre du sommaire, bien que les services soient plus ou moins indépendants les uns des autres.
Contents
Jeter un oeil
Trifouillages préalables
Matériel
Installer le système
J'ai installé le système GNU-Linux Debian Lenny à partir d'un CD netinstall. Il y a beaucoup de possibilités dans l'étape de partitionnement, par exemple utiliser 2 disques durs en mirroir (RAID 1 logiciel) pour une fiabilité des données accrue.
Note :
Le systeme Debian fonctionne avec le gestionnaire de paquets apt-get. Pour installer un programme, il faut executer la commande (avec l'utilisateur root):
1 # apt-get install nom_du_paquet autre_paquet encore_un_logiciel ...
2 ou 3 notions en ligne de commande
Allez jeter un coup d'oeil ici
Sinon, voiçi quelques commandes utiles (voir indispensables)
1 $### Se balader en console
2 $# Où suis-je?
3 $ pwd
4 $# Lister le contenu du répertoire
5 $ ls
6 $# Changer de repertoire
7 $ cd /vers/là/où/je/veux/aller
8 $### Gestion de fichiers
9 $# Afficher le contenu d'un fichier
10 $ cat nom_du_fichier
11 ## Éditer un fichier
12 $ nano nom_du_fichier
13 $ vi nom_du_fichier
14 $### Système
15 $# Afficher les programmes les plus gourmands
16 $ top
17 $ htop
18 $### Disques durs, espace disque
19 $# Afficher les disques et les montages
20 $ df -h
21 $# Afficher l'espace disque
22 $ du -sh
Quelques trucs pratiques et sympas
Auto-complétion pour root
Permet au super-utilisateur root d'utiliser la touche "tab" afin de compléter automatiquement les commandes qu'il entre. Ça fait gagner un temps fou, à force!
Il faut ajouter une ligne dans le fichier .bashrc de root
/root/.bashrc
... # Plein de trucs qu'on sait pas à quoi ils servent ... # Bas du fichier . /etc/bash_completion
Fortune et sl
J'ai envie de dire... L'étape la plus indispensable pour aller vers la voie du geekisme
Administration par le réseau
Installation du serveur ssh
SSH (Secure SHell) est un protocole réseau qui permet de TOUT faire à distance, en étant relié uniquement par le cable réseau à la machine.
Je conseille de l'installer avant toute autre chose pour plusieurs raisons :
- C'est facile et rapide
- C'est indispensable à mon avis
- Ça permettra de tester le serveur efficacement
1 # apt-get install openssh-server
That's it! Pour le tester :
1 # ssh 127.0.0.1
2 The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
3 RSA key fingerprint is 74:ef:68:03:49:9d:90:26:47:94:11:3e:69:47:92:e7.
4 Are you sure you want to continue connecting (yes/no)? yes
5 Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
6 root@127.0.0.1's password:
7 Linux marcel 2.6.26-2-486 #1 Wed Jan 26 23:35:57 UTC 2011 i686
8
9 The programs included with the Debian GNU/Linux system are free software;
10 the exact distribution terms for each program are described in the
11 individual files in /usr/share/doc/*/copyright.
12
13 Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
14 permitted by applicable law.
15 No mail.
16 #
Sécurité et confort d'utilisation
Protéger le serveur avec fail2ban
fail2ban n'est pas indispensable, mais je l'ai installé pour des raisons de sécurité. Il sert à empêcher l'attaque dite "dictionnaire" ou "force brute" en bannissant pour un temps l'ip d'un utilisateur qui échoue à entrer le bon mot de passe 5 fois d'affilée (par défault).
1 # apt-get install fail2ban
Pour le configurer, éditer le fichier /etc/fail2ban/jail.conf
Ne plus devoir entrer son mot de passe à chaque connexion
On peut configurer ssh pour permettre la connexion au serveur via des clefs RSA, au lieu de taper le mot de passe à chaque fois. Il faut créer une clef RSA sur la machine cliente (ordinateur avec lequel on travaille).
Le chemin par défault ~/.ssh/id_rsa fonctionne très bien. Il faut ensuite transférer la clef publique id_rsa.pub du client dans le fichier ~/.ssh/authorized_keys du serveur.
Voiçi les commandes, dans l'ordre. J'utilise ici l'adresse du serveur sur le réseau local : 192.168.1.2, il faut adapter cette IP a votre cas.
Le réseau
Principe
Pour que le serveur fonctionne, il doit avoir une connection internet permanente. De plus, elle doit accepter les connexions entrantes, c'est-à-dire qu'on doit pouvoir l'appeller depuis internet.
En gros, les clients vont appeller le serveur depuis internet par son nom, et ce nom doit correspondre à une adresse ip qui doit pointer d'une manière ou d'une autre sur la machine hôte (notre serveur).
Pour mieux comprendre : Vidéo pour débutants ou le tuto du site du zéro
Réseau local
Le serveur doit être identifié sur le réseau local par une adresse IP fixe (contrairement à l'attibution dynamique d'IP par DHCP, souvent utilisée pour se connecter rapidement avec une box)
Avec Debian, pour avoir une IP fixe, il faut éditer le fichier /etc/network/interfaces comme suit :
# Boucle locale auto lo iface lo inet loopback # Adresse ip statique auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 # Adresse ip dynamique (désactivée par la présence des # devant les lignes) #auto eth0 #iface eth0 inet dhcp
Ce fichier définit la configuration des interfaces réseau de débian. Ici, On configure une ip locale statique : 192.168.1.2
Il faut vérifier que la box possède bien l'adresse 192.168.1.1
Sinon, on peut adapter notre ip, par exemple 192.168.0.2
Une petite astuce : le fichier /etc/resolv.conf contient des ip de serveurs DNS à rechercher. J'ai créé ce fichier pour aider mon système à passer par le DNS de la box :
nameserver 192.168.1.1
Ip Fixe
On peut déjà arriver depuis internet jusqu'à la maison en appelant l'IP fixe.
Ip Dynamique
L'Ip change tout le temps. Comment faire pour appeler le serveur si on ne connait pas son Ip? (Je rappelle que sur internet, le seul moyen d'appeller les autres est d'utiliser l'IP)
Nous allons goûter aux joies des "serveur de noms dynamiques", ou dynDNS.
Le principe : lorsque la box ou la machine connectée à internet change d'adresse IP (en général à chaque fois qu'elle redémarre), elle publie sa nouvelle adresse sur un site où l'on s'est enregistré au préalable.
Quand on veut contacter notre connexion, on appelle le site, qui lui est au courant de la dernière IP en date et qui nous la fournit. Du coup, on a l'IP, on est sauvés.
Pour la pratique, voir l'exemple avec une livebox (adaptable).
Box ou pas box?
Si le serveur est directement branché sur internet par modem, on peut déjà l'atteindre.
Si le serveur est connecté à une box (ou au modem) par réseau local (WIFI ou cable ethernet), c'est un peu plus complexe.
Voir l'exemple des redirections de la livebox ici (qui n'est plus en fonctionnement depuis que nous sommes passés à free, mais qui a rendu bien des services).
Service e-mail
Installation des logiciels
Voiçi la commande qui installe tous les programmes nécessaires au service mail :
1 # apt-get install postfix procmail courier-imap courier-imap-ssl mailx
POSTFIX est le Mail Transport Agent (MTA) qui gère le traffic des mails sur le serveur.
- PROCMAIL permet de récupérer les mails qui nous reviennent et de les stocker sur le serveur.
- COURIER-IMAP permet aux utilisateurs de se connecter au serveur pour récupérer et lire leurs mails.
- MAILX permet d'utiliser la console pour envoyer des mails (pratique pour faire des tests).
Configuration pour recevoir des mails
Postfix
On va configurer postfix pour qu'il reconnaisse les mails qui nous appartiennent et qu'il les transmette à procmail.
/etc/postfix/main.cf
# Variables mydomain = chezmoi.com # à remplacer par le nom de domaine approprié # Pour quels domaines récupère-t-on les mails? mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost # Aliases locaux (plusieurs noms pour un utilisateur, ...) alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases # Logiciel à qui transmettre les mails à stocker mailbox_command = procmail -a "$EXTENSION" # Format de stockage des mails sur le serveur home_mailbox = Maildir/ mailbox_size_limit = 0 recipient_delimiter = + # Écouter sur quelle interface réseau? inet_interfaces = all inet_protocols = all
Procmail
Par défault, les mails sont stockés dans /var/mail/nom_utilisateur au format mailbox. Nous allons changer pour avoir les mails au format maildir dans le dossier /home/nom_utilisateur/Maildir.
Il y aura un fichier de configuration de procmail par utilisateur : /home/nom_utilisateur/.procmailrc.
SHELL=/bin/bash MAILDIR=$HOME/Maildir/ DEFAULT=$MAILDIR ORGMAIL=$MAILDIR LOCKFILE=$HOME/lockfile.lock DEFAULT=$HOME/Maildir/ JUNKMAIL=$HOME/Maildir/.junkmail/ TRASH=$HOME/Maildir/.Trash #LOGFILE=/var/log/procmailrc.log #VERBOSE=yes #LOGABSTRACT=all # Filtres à rajouter...
On va ensuite créer une "Boîte aux mails" pour chaque utilisateur :
Courier-imap
Tout fonctionne automatiquement!
Je suggère tout de même de faire une modification dans le fichier /etc/courier/imapd : modifier la ligne "address"
address=127.0.0.1
Ça permet d'empêcher l'utilisation du protocole IMAP non-sécurisé depuis internet. En effet, le mot de passe utilisé pour se s'autentifier n'est pas crypté sur le réseau et pourrait être facilement intercepté. On utilisera IMAPS pour récupérer le courrier (les informations seront cryptées).
Configuration pour envoyer des mails
Échange de fichiers
Mise en ligne de fichiers (serveur ftp)
Avec proftpd
Ce service n'est plus actif sur md2t.eu : il posait trop de problèmes de sécurité.
Serveur WEB
Avec apache2, mysql, php5 et openssl
Listes de diffusion mail
Avec Mailman
Web Radio
Avec MPD et Icecast2
Md2TWiki