Mémo d'installation d'un serveur

Les conseils et commandes donnés ici ont été écrits pour une Debian 8 (Jessie) mais la plupart sont facilement adaptables à n'importe quelle autre distribution.

Le nom d'hôte de la machine

Si vous avez personnalisé un DNS pour pointer sur votre serveur, faites-le lui savoir :

echo monserveur.mondomaine.com > /etc/hostname
hostname -F /etc/hostname

et mettez à jour le fichier /etc/hosts en conséquence !

Restez à l'heure

Il est très important d'avoir une heure système correcte, ne serait-ce que pour pouvoir lire correctement un fichier de log…

apt-get install ntp ntpdate

puis forcez une mise à l'heure :

service ntp stop
ntpdate -s pool.ntp.org
service ntp start

Les utilisateurs

Au delà de la première connexion (à la livraison du serveur), évitez de vous connecter directement en root dessus. Préférez l'ajout d'un utilisateur autorisé à faire des sudo.

useradd mon_user --create-home --shell /bin/bash --user-group --groups adm,cdrom,plugdev,sudo

Puis fixez son mot de passe :

echo mon_user:lemotdepasse | chpasswd

SSH

Bien sûr, vous accédez à votre serveur en SSH. Voici ce que je conseille dans /etc/ssh/sshd_config pour limiter les risques :

  • Pas d'accès pour le root (PermitRootLogin no)
  • Changer le port d'écoute (Port 222), le port choisi importe peu tant que vous ne prenez pas le port par défaut (tcp/22). Ca limite les scripts de scan les plus simples (mais les plus nombreux).
  • Authentification par clés uniquement (PasswordAuthentication no)

Les autres paramètres par défaut sont généralement OK. N'oubliez pas de redémarrer votre serveur SSH et de tester la connexion avant de fermer la session de paramétrage, sinon vous avez fermé la porte avec les clés à l'intérieur !

Le firewall

Pour des configurations simples, j'utilise ufw. Il est facile à configurer et efficace.

apt-get install ufw

Voici les commandes de base :

  • Autoriser un port <code>ufw allow port/proto # ex : ufw allow ssh/tcp</code>

et même

ufw allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]

en version complète.

  • Activer / désactiver le firewall <code> ufw enable ufw disable </code>
  • Recharger les règles <code> ufw reload </code>
  • Configurer la politique par défaut <code> ufw default allow|deny|reject [incoming|outgoing] </code>
  • Voir les règles définies (numbered permet de voir les règles numérotées) <code> ufw status numbered </code>

L'écriture des règles ressemble à celles du firewall pf de OpenBSD. Ma config par défaut pour n'autoriser que SSH :

ufw allow 222/tcp       # 222 = le port de votre SSH
ufw default deny
ufw enable
ufw logging off         # désactiver le log, peut servir si votre serveur est une petite configuration

et pour contrôler que tout va bien :

ufw status

Pour rendre persistantes les modifications faites avec ufw, il faut installer le paquet netscript-ipfilter :

apt-get install netscript-ipfilter

Sauvez vos modifications avec :

iptables-save > /etc/firewall_rules

Et restaurez-les avec :

iptables-restore < /etc/firewall_rules

Pour restaurez automatiquement au boot, il suffit de placer la commande précédente dans le script /etc/rc.local

Activer le fsck automatique

Dans le cas d'un serveur sans console, il peut être intéressant d'activer la vérification/réparation automatique des systèmes de fichiers lors du boot. Pour cela, éditez le fichier /etc/default/rcS et dé-commentez la ligne :

FSCKFIX=yes

Un serveur SMTP

Personnellement, j'utilise Postfix. J'ai écrit d'autres articles sur son installation et sa configuration, je ne rentrerai donc pas dans les détails ici…

Pour tester l'envoi de mail :

mailx -s Test -r root@monserveur.mondomaine.com monadresse@mondomaine.com

puis saisir un message et terminer par une ligne ne contenant que un point.

La surveillance du serveur

Pour surveiller facilement un serveur perso, voici quelques outils très pratiques :

apticron

apticron notifie automatiquement quand il y a des mises à jour de paquets disponibles. Il ne reste plus qu'à les appliquer !

apt-get install apticron

Il est aussi possible d'utiliser cron-apt.

logwatch

Logwatch analyse les fichiers de log des principaux services installés sur la machine et produit un email de synthèse quotidien.

Economiser des ressources

Si votre serveur est une petite configuration (Raspberry, machine virtuelle d'entrée de gamme…), voici quelques options pour économiser des ressources :

  • supprimer aptitude (apt-get purge aptitude)
  • supprimer D-Bus (c'est un hub de communication inter-applications, si une application en a besoin, elle le réinstallera automatiquement de toute façon)
  • supprimer at (cron fait très bien son job)
  • supprimer rpcbind (sauf si vous utilisez NFS)

Petit ménage final

Pour supprimer tous les paquets inutiles :

apt-get autoremove
apt-get autoclean
apt-get clean

Et voilà, c'est fini, amusez-vous bien !