Pourquoi monter son serveur personnel? Il y’a autant de reponses que d’utilisateurs. Cet article prendra comme cas d’utilisation un petit groupe qui souhaite se partager des fichiers (photos, articles…) et des services (mail, backups).
- Installation du systeme de base
- Serveur Web
- Serveur mail
- Serveur FTP
- Galleries photos
- Statistiques
- Uptime
- Divers
- Serveurs particuliers
- Conclusion
- References
Pourquoi monter son serveur personnel? Il y’a autant de reponses que d’utilisateurs. Cet article prendra comme cas d’utilisation un petit groupe qui souhaite se partager des fichiers (photos, articles…) et des services (mail, backups).L’installation du systeme d’exploitation, de la connection internet… ne seront pas traite en details. Il est acquis que l’utilisateur a des connaissances suffisantes en administration systeme et quelques connaissances de la distribution Debian Linux.Le groupe pourra utiliser un ‘ordinateur de recuperation’ (peu puissant), l’important est que cet ordinateur soit connecte en permanence a Internet.Cet article traitera de l’installation des modules suivants:
- Serveur Web (Apache) avec support PHP
- Base de donnees Mysql
- Serveur de mail (Exim 3)
- Serveur POP3 / IMAP4
- Webmail
- Recuperation de mails (Fetchmail) et regles de tri (Procmail)
Note: chacun des paquets installe propose une documentation situee dans la page de man (man <paquet>) ou dans /usr/share/doc/<paquet>
Les lignes de commande commencant par le caractere # necessitent que l’utilisateur courant soit root.
Celles commencant par le caractere $ peuvent etre utilisees par n’importe quel utilisateur.
Installation du systeme de base
Systeme d’exploitation
L’installation du systeme d’exploitation est deja tres bien traite sur Internet. Je vous renvois donc a ces documents:
- Formation Debian GNU/Linux
- Debian Sarge (3.1) http://www.howtoforge.com/perfect_setup_debian_sarge The Perfect
Note: A ce stade, un systeme minimum Debian est suffisant. Les paquets necessaires pour chaque tache seront installes automatiquement avec leurs dependances.
Preparation des mises a jour
Voir mon autre article sur le sujet.
Configuration globale
Augmenter la taille du cache d’apt-get
Il est necessaire d’augmenter la taille du cache d’apt-get
Creer le fichier /etc/apt/apt.conf et inserer:
APT::Cache-Limit 25165824;
Coloriser les ecrans
Il est toujours agreable d’avoir differentes couleurs pour distinguer les repertoires des fichiers.
Ouvrir le fichier $HOME/.bashrc (par exemple /root/.bashrc) et enlever le # (signe de commentaire) devant les lignes
export LS_OPTIONS='--color=auto' eval `dircolors` alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA'
Editeur de texte
Tous les systemes unix proposent l’utilitaire vi. Il est toutefois recommande d’installer son clone vim qui permet l’affichage en couleurs.
Neanmoins, la syntaxe de vi(m) peut derouter quelque peu l’apprenti administrateur. Dans ce cas, installer l’editeur nano
#apt-get install nano
Configuration a distance
Pour administrer le serveur a distance, il est fortement recommande d’installer le paquet ssh pour crypter les communications entre le serveur distant et l’ordinateur local.
#apt-get install ssh
L’administrateur se connectera au site en tapant ssh [login]@MySite.net (sous Linux).
Sous windows, on peut utiliser les outils opensource PuTTy et WinSCP
Options importantes:
Certaines options sont importantes pour securiser quelque peu le serveur. La configuration de SSH se fait dans le fichier /etc/ssh/ssh_config:
#vi /etc/ssh/ssh_config
PermitRootLogin no ServerKeyBits 1024 RSAAuthentication no PubkeyAuthentication no PermitEmptyPasswords no PasswordGuesses 2 IgnoreRHosts yes IgnoreRootRHosts yes
Apres avoir sauver la nouvelle configuration, il faut relancer le demon avec la commande:
#/etc/init.d/ssh restart
Litterature:
Serveur Web
Typiquement, chaque membre du groupe souhaitera creer son site web sous la forme d’un systeme de blog tel DotClear ou d’un CMS (Content Management system) tel Mambo.
Un tel serveur web necessite les composants suivants:
- Apache pour le serveur Web proprement dit
- Php4 pour interpreter les pages Web
- Mysql comme base de donnees
- Une interface pour g�er les tables dans Mysql, phpmyadmin
Installation
On peut installer ces elements en installant deux paquets seulements:
#apt-get install phpmyadmin mysql-server
Le paquet Exim (gestionnaire de mail) est ajoute au systeme. Choisissez l’option 5 (Pas de configuration) pour le configurer plus tard.
Apache:
-Le serveur Apache se configure avec le fichier /etc/apache/httpd.conf
-Pour relancer le serveur :
#apachectl restart
Mysql:
Par defaut, le compte administrateur de Mysql est root, pas de mot de passe. A changer d’urgence!
Pour changer le mot de passe de Mysql, taper la commande suivante:
#mysqladmin -u root password MyNewPassword
L’utilisateur root aura desormais le mot de passe MyNewPassword.
Configuration de PHP3
Modifier le fichier /etc/apache/httpd.conf avec vi (editeur de texte standard)
vi /etc/apache/httpd.conf
Ajouter index.php3 a la ligne DirectoryIndex pour avoir:
<IfModule mod_dir.c> DirectoryIndex index.html index.php index.php3 index.htm index.shtml index.cgi </IfModule>
PHP:
PHP4 est capable d’interpreter les fichiers en php3. On indique donc a Apache d’utiliser le module php4 pour interpreter les scripts php3.
Modifier
“ AddType application/x-httpd-php .php “
pour obtenir:
“ AddType application/x-httpd-php .php .php3“
Sauver (ESC, :wq) puis relancer Apache (apachectl restart)
Pour tester votre installation, vous pouvez utiliser un systeme de blog comme DotClear ou d’un CMS tel Mambo http://www.spip.net/fr
.
L’installation d’un CMS consiste en general a copier les fichiers dans un repertoire du serveur web (par exemple /var/www/mambo) puis d’ouvrir la page par defaut pour lancer l’installation (http://localhost/mambo/index.php). La base de donnees sera automatiquement ajoutee dans Mysql. Si ce n’est pas le cas, utiliser http://localhost/phpmyadmin.
Redirection
Si le groupe souhaite tester differents CMS, il suffira d’installer chaque system dans un repertoire different et de creer une page par defaut qui redirigera les visiteurs sur le site par defaut.
Creer une page /var/www/index.html et inserer ce contenu:
<meta http-equiv="refresh" content="0;url=http://mysite.net/mambo/">
Dans cet exemple, le nom public du serveur web est mysite.net et le cms par defaut est installe dans le repertoire mambo.
Sites web personnels
Chaque utilisateur peut creer un repertoire $HOME/public_html et celui-ci sera accessible a http://mysite.net/~[User]
Par exemple le repertoire /home/lolo/public_html est accessible a l’adresse http://mysite.net/~lolo
Serveur Web securise(protocole https)
- Installer le module libapache-mod-ssl au serveur Web Apache.
#apt-get install libapache-mod-ssl - Creer le fichier
/etc/apache/libsslconfig.confet inserer le contenu suivant:Listen 443 Listen 80 NameVirtualHost * <VirtualHost *:443> ServerName arnest.net DocumentRoot /var/www/ SSLEngine on SSLCertificateKeyFile /etc/apache/ssl.key/server.key SSLCertificateFile /etc/apache/ssl.crt/server.crt SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown </VirtualHost> <VirtualHost *:80> ServerName arnest.net DocumentRoot /var/www/ </VirtualHost>
- Modifier le fichier de configuration d’Apache (
/etc/apache/httpd.conf)
#vi /etc/apache/httpd.confDans la partie LoadModules ajouter:LoadModule ssl_module /usr/lib/apache/1.3/mod_ssl.so
A la fin du fichier, ajouter la ligne
Include /etc/apache/libsslconfig.conf
- Creer un certificat avec la commande
mod-ssl-makecert(installe avec le paquetlibapache-mod-ssl) - Step 2 : Generating X.509 Certificate signing request for CA [ca.csr] 1. Country Name : fr2. State or Province Name : Alsace3. Locality Name : Wissembourg4. Organization Name : Laurent Soron
5. Organization Unit Name : arnest.net
6. Common Name : Arnest CA
7. Email Address : sslca@arnest.net
8. Certificate Validity : 365 (days)
- Step 3 : Certificate Version – 3
- Step 5 : Generating X.509 Certificate signing request SERVER [server.csr] 1. Country Name : fr2. State or Province Name : Alsace3. Locality Name : Wissembourg4.Organization Name : Arnest
5. Organization Unit Name : arnest.net
6. Common Name : www.arnest.net
7. Email Address : ssl@arnest.net
8. Certificate Validity : 365 (days)
- Step 6 : Certificate Version – 3
- Step 7, 8 : si vous entrez une ‘passphrase’ a ce point, il faudra taper cette phrase a chaque fois qu’Apache sera demarre ou relance. (Recommendation: laisser vide)
- Relancer Apache
#apachectl restart
Il peut etre interessant d’installer la documentation de mod-ssl d’apache:
#apt-get install libapache-mod-ssl-doc
Le paquet libapache-mod-ssl-doc installe une documentation fournie qui se trouve dans /usr/share/doc/libapache-mod-ssl-doc/htm.
Pour pouvoir y acceder simplement, on creera un lien symbolique sur le serveur web.
#ln -s /usr/share/doc/libapache-mod-ssl-doc/html/ssldoc
Proteger par mot de passe l’acces a certains repertoires
Exemple: limiter les acces au repertoire http://mysite.net/temp
Ajouter dans /etc/apache/httpd.conf
<Location /temp> AuthType Basic AuthName Temporary AuthGroupFile /dev/null AuthUserFile /etc/apache/apache_passwd require valid-user </Location>
Enregistrer les utilisateurs avec htpasswd ou utiliser un generateur de fichiers htpasswd tel http://www.euronet.nl/~arnow/htpasswd/
Litterature:
- http://ernest.cheska.net/index.php?fichier=htaccess&status=loaddocumentation (fr)
- http://www.javascriptkit.com/howto/htaccess3.shtml (en)
Serveur mail
A ce stade, il est important d’avoir un utilisateur par defaut. Par exemple, on ajoute au systeme un utilisateur lolo
#adduser lolo
Exim
Le serveur de mail Exim est deja installe, donc il n’y a qu’a le configurer.
Note: Exim est un MTA (Mail Transfer Agent), le programme charge d’envoyer les emails a l’exterieur. Mais il est aussi utilise comme MDA (Mail Delivery Agent) pour livrer les emails de l’exterieur aux utilisateurs sur la machine local.
La configuration du serveur de mail (envoi et reception des mails sur la machine) se fait grace au script Eximconfig
#eximconfig
-Choisir l’option 1. Internet Site
-’Visible’ mail name: mysite.net
-No second domain: [enter]
-No Relay: [enter], [enter]
-Les mails pour root seront envoye a l’utilisateur lolo: lolo
Le fichier /etc/email-adresses contient les adresses email “exterieures”
Note: /etc/aliases contient les alias pour les comptes (ex : laurent pointe sur lolo : tout mail envoye a laurent@mysite.net sera recu par l’utilisateur lolo sur mysite.net)
Les log d’Exim se situent dans /var/log/exim/mainlog
Il faudra associer le serveur MX de votre fournisseur de nom de domaine au serveur pour que les mails soient correctement rediriges sur cette machine.
Webmail
Il existe plusieurs choix: squirrelmail, ilohamail. Squirrelmail est un bon choix par defaut.
#apt-get install squirrelmail
POP3 / IMAP4 (port 443)
POP3: En utilisant ce protocole, l’utilisateur recupere en local tous ses mails.
Candidats: Qpopper ou popa3d
#apt-get install qpopper
L’administrateur peut choisir d’installer le paquet POP3s pour securiser la connection (port 995)
Imap4: En utilisant ce protocole, l’utilisateur gere ses mails directement sur le serveur. Les emails ne sont pas stocke sur l’ordinateur client.
Par defaut, les mails etant stockes dans /var/mail/[login], il est recommande d’utiliser le paquet UW-Imapd
#apt-get install uw-imapd
L’administrateur peut choisir d’installer le paquet uw-imapd-ssl pour securiser la connection (port 993)
Litterature: Receiving mail securely, part 5.6
http://www.linuxsecurity.com/resource_files/host_security/securing-debian-howto/ch-sec-services.en.html
Fetchmail / Procmail
Ces deux logiciels sont souvent utilise ensembles. Fetchmail recupere les mails par le protocole POP3 et procmail trie les mails dans les differents dossiers.
Je recommende la lecture de ces deux Howto:
- http://ernest.cheska.net/index.php?fichier=procmail&status=loaddocumentation (fr)
- http://www.linux-france.org/article/mail/procmail/
Fetchmail
L’installation ne pose aucun probleme
#apt-get install fetchmail
Ensuite, chaque utilisateur doit creer un fichier $HOME/.fetchmailrc qui contiendra la configuration.
Pour chaque boite aux lettres que l’utilisateur souhaite relever, il faut inserer une ligne
poll [AutreServeur] with protocol pop3: user [Login_Distant] there has password [Password_Distant] is [Login_Local] here
ou
[AutreServeur]est le serveur POP3 du serveur distant (par exemple pop.laposte.net)[Login_Distant]est le nom d’utilisateur sur le serveur distant[Password_Distant]est le nom du mot de passe sur le serveur distant[Login_Local]est le nom d’utilisateur en local
Verifier avec fetchmail -v
Lancer regulierement la commande.
On utilise le Cron, un petit daemon qui lance des commandes regulierement.
Sous le compte de l’utilisateur, on edite le cron avec la commande
$crontab -e
et on insere la ligne (tout sur une meme ligne!):
/120 * * * * /usr/bin/fetchmail -m "/usr/bin/procmail -f - "` >> /home/LocalUser/. fetchlog 2>&
L’editeur utilise les memes commandes que vi (sauvegarder et quitter avec la commande ESC :wq)
Si tout va bien le systeme indique:
crontab: installing new crontab
Note:
fetchmail -c: voir le nombre de messages sur le serveur
Recuperer les mails et les trier manuellement:
fetchmail -m /usr/bin/procmail >>/home/MyUser/.fetchlog 2>&1
Il est recommande de securiser le fichier
chmod 600 $HOME/.fetchmailrc
Litterature (lancer fethmail en daemon, securiser la connexion pop3, crypter le mot de passe…): http://www.crans.ens-cachan.fr/docs/mail-linux.html (fr)
Procmail
Howto: http://ernest.cheska.net/index.php?fichier=procmail&status=loaddocumentation
Installer le package
#apt-get install procmail
Ensuite, chaque utilisateur doit creer un fichier $HOME/.procmailrc qui contiendra la configuration.
.procmailrc SHELL=/bin/sh MAILDIR=$HOME/mail #DEFAULT=$HOME/mail/Default DEFAULT=/var/mail/lolo LOGFILE=$HOME/.log_procmail VERBOSE=yes #Humour dans la boite Humour :0: *^(From|Cc|To).*humour@(MySite|MySite2).net Humour #Tri des listes par rapport au sujet :0: *^Subject:.*[[]MyListe[]] MyListe :0: *^To:.*@kde.org Listes .forward: |/usr/bin/procmail
Litterature: http://www.linux-france.org/article/lgazette/issue-26/issue-26-4.html
Timo’s procmail tips and recipes: http://www.uwasa.fi/~ts/info/proctips.html
Filtrage de spam avec spamassassin
Voir le howto http://clx.anet.fr/spip/article.php3?id_article=116
#apt-get install spamassassin
Modifier .procmailrc
:0fw | spamassassin -P :0: * ^X-Spam-Status: Yes spambox
“La premiere recipe consiste a passer tous les messages a la moulinette de Spamassassin, la seconde a mettre tous les messages considers comme eant du spam dans un fichier a part, en loccurence spambox.”
Serveur FTP
#apt-get install pure-ftpd
Galleries photos
Le paquet gallery est un gestionnaire de galleries d’images tres repandu.
#apt-get install gallery
Voir aussi Coppermine. Il utilise une base de donnees.
Statistiques
Le paquet Webalizer analyse les fichiers de log du serveur et cree un rapport en html avec des graphiques.
#apt-get install webalizer
Uptime
Installer le paquet ud
“UD (Uptime Daemon) tourne en arriere plan en comparant constamment la duree ecoulee depuis le dernier redemarrage de la machine avec vos 3 meilleurs records. Si le temps actuel depasse un record, il devient le nouveau record.”
(Source)
Le paquet ud maintiendra a jour une page html qui contiendra toutes les informations necessaires.
Divers
Changer le nom de la machine
La commande hostname -v modifie le nom du systeme jusqu’au prochain redemarrage
#hostname -v [New Name]
Pour modifier le nom de maniere permanente, il faut modifier les fichiers suivants:
/etc/hostname /etc/hosts /etc/resolv.conf
Modifier le prompt
Editer le fichier $HOME/.bashrc
export PS1="[\u@\h:\W, \@, \d]> " #custom prompt options: root@mysite.net:etc,10:13am,Thu Mar 10]>
Monter un VPN
Faire passer un flux HTTP (ou autre) dans un tunnel SSH:
http://clx.anet.fr/spip/article.php3?id_article=131
Tester les mots de passe avec John le ripper
# apt-get install john
# john /etc/shadow
Il est possible de lancer un job qui teste les mots de passe:
john.cron install
(fichier de configuration a renseigner: /etc/john-mail.conf)
Les pages de man en html (Man2Html)
Il peut etre pratique de consulter les pages du man dans un navigateur plutot que dans une console texte. Installer l’utilitaire man2html:
#apt-get install man2html
et pointer la page
http://mysite.net/cgi-bin/man2html
Paquets harden-*
Ces paquets ne sont pas compatibles avec des programmes reputes pour leurs failles de securite Dans la pratique, si on souhaite desinstaller un paquet harden-*, tous les programmes listes doivent etre desinstalles.
#apt-get install harden-clients harden-servers harden-localflaws harden-tools
Serveurs particuliers
Serveur de Genealogie – Geneweb
Si le groupe s’interesse a la genealogie, le logiciel geneweb peut s’installer sur un serveur.
Site officiel: http://cristal.inria.fr/~ddr/GeneWeb/
Ce logiciel est package dans Debian:
#apt-get install geneweb
Pour acceder a l’interface de Geneweb, ouvrir l’adresse suivante dans un navigateur internet:
http://mysite.net:2317/
P2P – ML Donkey
#apt-get install mldonkey-server
Dans le compte un utilisateur, creer un repertoire ~/mldonkey, et lancer le serveur dans ce repertoire
./mldonkey/mlnet&
Au demarrage, mldonkey va creer toute une structure par defaut. Consulter l’aide pour savoir a quoi ils correspondent.
Ce paquet propose une interface web. Par defaut, seul le localhost peut acceder a cette interface. Pour laisser les autres ordinateurs du reseau local, on doit modifier le parametre allowed_ips dans le fichier ~/mldonkey/downloads.ini
allowed_ips = ["127.0.0.1";"192.168.2.255";]
Dans cet exemple, les adresses IP des ordinateurs du reseau local sont du type 192.168.2.XXX
Proxy – SQUID
Si tous les utilisateurs sont situes dans le meme reseau, il peut etre interessant de configurer le serveur pour enregistrer les pages frequemment consultees ou bloquer certains sites.
Serveur de fichiers pour clients windows – Samba
Samba est un outil capable de simuler un serveur Windows en tant que serveur de fichier (chacun y stocke ses fichiers) ou d’impression (le groupe partage une imprimante) voire un controleur de domaine. Les utilisateurs sous Windows pourront se connecter a cet ordinateur comme n’importe quel autre ordinateur.
Notes: les utilisateurs Samba doivent exister du le systeme Linux. Neanmoins, meme s’ils ont un mot de passe different pour Linux que pour Samba, ils auront les memes droits (acceder ou non a un repertoire)
Litterature:
Conclusion
Si le groupe a suivi cet article, il devrait beneficier d’un serveur proposant plusieurs services, et ouvert sur Internet.
Il est important de garder ce serveur a jour en lui appliquant les mises a jour de securite.
Sur un systeme Debian, on utilisera regulierement la commande (par exemple toutes les deux semaines)
#apt-get update ; apt-get upgrade
Lancer l’utilitaire nmap d’un autre ordinateur permet de scanner les ports et de lister les ports ouverts. Verifier que les ports ouverts sur le serveur correspondent a des services reelement utilises.
References
Note: Ce document est sous license Creative-Common by-nc-sa
Mots-clefs : Administration, Articles, Debian, Linux, Outils, technique