Mémo d'installation d'un serveur (linux)
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
etufw 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 !