Mémo d'installation d'un serveur (linux)

Mémo d'installation d'un serveur (linux)
Crédit photo : Massimo Botturi on Unsplash

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.

Bien sûr, ils ne sont utiles que si vous installez une machine unique (ou quelques machines). Au dele, il vaut mieux se reposer sur des applis d’automatisation (Chef, Ansible, SaltStack…)

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 !

Attention, les versions récentes de Ubuntu Server utilisent cloud-init pour configurer ce paramètre. Si vous modifiez directement /etc/hostname, l’info sera perdu au prochain reboot.

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 chrony

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
history -c

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 : ufw allow port/__proto __ # ex : ufw allow ssh/tcp
  • Autoriser un port avec des raffinements : ufw allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]
  • Activer / désactiver le firewall : ufw enable et ufw disable
  • Recharger les règles : ufw reload
  • Configurer la politique par défaut : ufw default allow|deny|reject [incoming|outgoing]
  • Voir les règles définies (numbered permet de voir les règles numérotées, pratique quand on veut en supprimer une) : ufw status numbered

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

Un serveur SMTP

Personnellement, j’utilise Postfix ou OpenSMTPd. 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.

Un prompt agréable

Ajouter dans le .bashrc :

export PS1="\[\033[38;5;11m\]\u\[$(tput sgr0)\]\[\033[38;5;15m\]@\h:\[$(tput sgr0)\]\[\033[38;5;6m\][\[$(tput sgr0)\]\[\033[38;5;6m\]\w\[$(tput sgr0)\]\[\033[38;5;6m\]]:\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"

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 !