Ceci est une ancienne révision du document !
Serveur neuf : les trucs à faire
Cet article concerne les premières choses à faire lorsque vous venez d'installer ou de réceptionner un serveur. Il est tout beau, tout neuf, tout vide, en dehors du système de base. Quel que soit son usage (hébergement de sites web, d'un serveur de jeu, de mails, etc…), il faut réaliser quelques opérations pour démarrer sur de bonnes bases et éviter d'avoir des soucis par la suite.
Les commandes sont présentées pour Debian.
Apt ; logiciels à installer
apt update apt install nano bash-completion cron logrotate msmtp msmtp-mta apt-listbugs debsums apt-listchanges sudo bsd-mailx sshguard rsyslog apt upgrade
- nano sauf si vous aimez vim. Si vous êtes à l'aise avec vim, il est installé de base. Sinon, nano est un éditeur de texte un peu plus facile à utiliser pour les néophytes, car les raccourcis sont affichés et son comportement est assez proche des éditeurs de textes plus classiques.
- bash-completion qui peut aider (mais on va surtout modifier le .bashrc rapidement)
- bsd-mailx, msmtp et msmtp-mta pour recevoir les mails systèmes (voir mail_relai).
- apt-listbugs, debsums et apt-listchanges éviteront de mettre des paquets bugués. D'où l'upgrade après.
- apt-listbugs prévient s'il y a des soucis
- debsums : vérifie l'intégrité des fichiers des paquets installés avec les sommes de contrôle MD5
- apt-listchanges informe des changements importants dans les paquets, par exemple les nouvelles fonctionnalités, les changements de comportement
- sudo pour la sécurité, on va éviter de trop agir en root…
- sshguard ajoute un peu d'ennui aux attaquants par SSH, pourquoi s'en priver ? Rien à configurer, de base ça marche.
- rsyslog permet d'avoir des fichiers de log lisible avec systemd, sans pour autant gêner son fonctionnement de base.
Pour la suite, modifier apt pour avoir plus de choix :
nano /etc/apt/sources.list
Voir Debian Facile pour plus d'informations.
Proposition :
- /etc/apt/sources.list
# Debian Buster, dépôt principal + paquets non libres deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free # Debian Buster, mises à jour de sécurité + paquets non libres deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free # Debian Buster, mises à jour "volatiles" + paquets non libres deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free
Sécurité
Mot de passe
Suivant la façon dont le mot de passe a été transmis, il faut le mettre à jour. À répéter ensuite pour les utilisateurs nouvellement créés.
passwd
Ajouter des utilisateurs
Voir aussi https://khaganat.net/wikhan/fr:addsysadmin, script utile s'il y a plusieurs users à ajouter.
Sinon :
- -m : crée un home ;
- -U : crée un groupe du même nom ;
- -G : ajoute aux groupes ;
- -p : mot de passe, nécessaire sinon impossible de se co la première fois… (et même comme ça, ça veut pas toujours ?)
- -s /bin/bsh : évite l'erreur d'un shell non déclaré et bloquant les utilisatrices
useradd zatalyz -m -U -G sudo,www-data -p MotdePa55e -s /bin/bash
Ajouter la clé ssh pour pouvoir se co :
mkdir /home/zatalyz/.ssh nano /home/zatalyz/.ssh/authorized_keys # Mettre la clé publique dans ce fichier chown -R zatalyz: /home/zatalyz/.ssh chmod 0700 /home/zatalyz/.ssh/ chmod 0600 /home/zatalyz/.ssh/authorized_keys
Tester la connexion avec cet user avant de quitter root, ou c'est un risque à rester coincé.
Ajouter les sudoers (alternatif)
En principe, ajouter les utilisateurs au groupe sudo
suffit.
usermod -a -G sudo utilisateur
Si ce n'est pas le cas ou si vous voulez faire autrement, voici le pense-bête.
Si on veut créér un groupe wheel
qui aura les droits pour tout :
groupadd wheel
Pour modifier les permissions :
sudo visudo
Oui, même en root, on fait sudo pour que ça marche. Dans ce fichier, ajouter la ligne idoine :
%wheel ALL=(ALL:ALL) ALL
Paramétrer SSH sur le serveur
Voir https://khaganat.net/wikhan/fr:ssh#configurer_ssh_sur_ses_serveurs pour les détails. Sinon, le fichier /etc/ssh/sshd_config
doit ressembler à ça :
Port 228 Protocol 2 Ciphers aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com PermitRootLogin no StrictModes yes UsePrivilegeSeparation sandbox PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes UsePAM yes PermitEmptyPasswords no MaxAuthTries 6 LoginGraceTime 30 AllowGroups sudo # Alternative si peu d'admins et pas de risque que ça évolue : # AllowUsers zatalyz AllowTcpForwarding no X11Forwarding no PrintLastLog yes PrintMotd no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server
N'oubliez pas de relancer le daemon ssh après avoir modifié ce fichier.
service ssh restart
Testez bien la connexion avant de vous déconnecter, dans un autre terminal ! Un mauvais paramétrage peut vous empêcher d'accéder à votre serveur !
Confort personnel dans l'interface
Modifier les locales
Tapez quelques accents en console.
Si les accents ne passent pas, il faut reconfigurer les locales :
dpkg-reconfigure locales
Une liste de locales apparaît, cochez les FR si ce n'est pas déjà fait puis validez. Ensuite, indiquez que vous préférez utiliser utf-8, comme ça tout sera lisible. Voir aussi Debian et UTF8.
Pas forcément une bonne idée sur root, ceci dit : certains paquets exotiques foireux ne comprennent pas si les messages ne sont pas transmis en anglais. Je ne dis pas que ça a du sens, mais ça arrive. Dans ce cas, favoriser de l'english AVEC UTF8 (afin de lire les accents), et paramétrez les variables pour les utilisateurs.
Pour modifier juste les variables de l'utilisateur, ajoutez la ligne suivante dans le .bashrc
:
export LANG=fr_FR.UTF-8
Bashrc
Modifier le bashrc pour avoir une session plus agréable à utiliser.
nano .bashrc
Décommenter les lignes suivantes pour avoir les couleurs lorsque vous utilisez “ls”, ce qui permet de mieux repérer dossiers, fichiers et leurs droits.
export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA'
Pour avoir l’auto-complétion fonctionnelle
# Autocompletion if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
Pour personnaliser le prompt, vérifier que la ligne force_color_prompt=yes
soit décommentée.
# uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt force_color_prompt=yes
Pour avoir le prompt qui affiche le nom d'utilisateur, le nom du serveur, le chemin du répertoire et la date :
export PS1='\[\033[00;31m\]\u@\h\w\[\033[00;36m\]:\t\[\033[00;34m\]$\n\[\033[00;32m\]\$\[\033[00m\] '
Des explications peuvent être trouvées sur les pages :
Changer le nom de la machine
Si vous avez un VPS ou un dédié, vous avez peut-être un début de ligne en console qui ressemble à “root@vps158745547”. C'est moche et surtout, c'est vite fait de s'emmêler les pinceaux si vous avez plusieurs consoles ouvertes sur plusieurs VPS.
Pour renommer ce qu'il y a derrière @, il faut changer l'hostname.
nano /etc/hostname
Mettez le nom que vous voulez, pour notre exemple “MonNom.localdomain”.
Modifiez aussi /etc/hosts
pour avoir quelque chose comme ceci :
127.0.0.1 localhost 127.0.0.1 MonNom.localdomain
Ensuite, lancez la commande suivante si vous voulez que ça soit actif immédiatement :
hostname MonNom.localdomain
Remplacez “MonNom” par ce que vous avez mis dans hostname. Déconnectez-vous et reconnectez-vous, ça devrait être pris en compte. Sinon, redémarrez (mais en théorie y'a pas besoin).
Changer le message à la connexion
Lorsque vous vous connectez à votre serveur, un message vous accueille, qui ressemble généralement à ça :
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Mon Dec 28 06:56:13 2015 from 100-200-100-100.dsl.sfr.fr
Ça manque de poésie.
Pour modifier ce texte :
nano /etc/motd
Mettez ce que vous voulez
Il existe plein de pistes sur la page : http://www.mewbies.com/how_to_customize_your_console_login_message_tutorial.htm
Et le site http://ruletheweb.co.uk/figlet/ pour l'ASCII art.
Améliorer un peu systemd
Voir là.