====== Premières étapes dans la mise en place d'un serveur ======
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.
Dans ce tutoriel, nous prenons l'exemple d'un serveur sur laquelle est installé Debian. Tant que c'est du Debian, peu importe que ce soit serveur dédié, un serveur hébergé en local, une VM ou un container proxmox..
Pour se connecter en console, voir [[fr:ssh#se_connecter_a_un_serveur_avec_sa_cle]]. Ça devrait ressembler à cela :
ssh monuser@aliasdomain
===== Root, user, dépôts et détails de confort =====
Dans les premières choses à voir :
* Bidouiller le bashrc pour quelques fonctionnalités pratiques
* S'assurer qu'on a les dépôts qu'il nous faut et que tout est à jour
* Changer le mot de passe root
* Configurer un utilisateur "non root"
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.
Et on en profite pour installer tout de suite les quelques logiciels basiques et utiles qui manquent parfois (tout dépend de votre distribution).
apt update
apt install nano bash-completion cron logrotate bsd-mailx
apt upgrade
==== Quelques logiciels utiles ====
[[https://doc.ubuntu-fr.org/cron|Cron]] permet de configurer des actions de façon automatique.
[[https://doc.ubuntu-fr.org/logrotate|Logrotate]] évite que les logs ne saturent la mémoire. Suivre les liens pour leurs configurations.
[[https://packages.debian.org/jessie/bsd-mailx|bsd-mailx]] va permettre de recevoir les messages du système, lors de l'ouverture d'un shell, sur ce qui marche ou non. Utile pour savoir les erreurs, en particulier.
==== Bashrc ====
Bien que ce ne soit pas le plus urgent, modifier un peu le bashrc va rendre la suite beaucoup plus confortable et éviter quelques énervements.
nano .bashrc
Décommentez 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'
Il arrive que la complétion automatique coince, entre autre lorsqu'on fait ''apt-get inst[tab]''.
C'est souvent lié au paquet ''bash-completion'' qui n'est pas installé.
apt-get install bash-completion
Ajoutez ensuite les lignes suivantes dans ''.bashrc'' :
# Autocompletion
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
=== Personnaliser le prompt ===
Tout d'abord, il faut accepter qu'il soit coloré. Pour cela il faut décommenter la ligne adéquate, avec ''force_color_prompt=yes''
# 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
VOus pouvez ensuite obtenir le nom du compte@leserveur puis l'heure et enfin, le prompt en entrant la ligne suivante à la fin de votre fichier .bashrc :
export PS1='\[\033[00;31m\]\u@\h\[\033[00;36m\]:\t\[\033[00;34m\]$(__git_ps1 " (%s)")\n\[\033[00;32m\]\$\[\033[00m\] '
Alternative (indique le nom d'utilisateur, le nom du serveur, le chemin du répertoire et la date et m'évite une erreur de "__git_ps1" au dessus) :
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 :
* https://wiki.archlinux.org/index.php/Bash/Prompt_customization
* https://help.ubuntu.com/community/CustomizingBashPrompt
==== Dépôts ====
Ensuite, allons voir ce qu'on a actuellement dans les dépôts :
nano /etc/apt/sources.list
Si le résultat est le suivant, parfait. Sinon, ajoutez "contrib" et "non-free", ça simplifie la vie.
deb http://ftp.debian.org/debian jessie main contrib non-free
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org jessie/updates main contrib non-free
Ensuite, ajoutons un autre dépot bien utile. Ce n'est pas obligatoire : les paquets sont potentiellement moins stable et plus à jour. On y trouve aussi quelques paquets utiles, comme //[[fr:pass|pass]]// :
nano /etc/apt/sources.list.d/backports.list
Mettre dans ce fichier :
deb http://http.debian.net/debian jessie-backports main
Ensuite, on met à jour tout ça
apt-get update
apt-get upgrade
=== Paquets de gestion des paquets ===
sudo apt install apt-listbugs debsums apt-listchanges
* 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
==== 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 [[https://wiki.debian.org/fr/UTF-8|Debian et UTF8]].
==== Utilisateurs et mot de passe ====
Si vous avez une VPS ou un serveur dédié, le mot de passe de root vous a été fourni en clair dans un mail. Donc, c'est pas sécu.
Il faut changer ce mot de passe. Comme on parle de root, donc d'un utilisateur qui peut tout faire sur votre machine, il faut un mot de passe très costaud. Utilisez le générateur de [[fr:teampass|Teampass]], ou le générateur de votre choix, et noter ce mot de passe de façon sécurisée et cryptée (par exemple, dans Teampass).
# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Ensuite, on va créer un utilisateur basique. **Cet utilisateur ne sera pas sudoers**. Pour des raisons de sécurité, on ne pourra se connecter au serveur que via cet utilisateur (et pas directement en root), puis passer ensuite en root. Cela complique l'accès à root lors d'un piratage.
adduser lambda
Donner lui un vrai mot de passe aussi ; de toute façon vous n'aurez pas souvent à aller le chercher...
Ajoutez //lambda// dans le groupe www-data, ça sera toujours plus pratique pour la suite.
adduser lambda www-data
===== Sécurité de base =====
* [[fr:ssh#se_connecter_a_un_serveur_avec_sa_cle|Se connecter via une clé ssh]]
* Verrouiller qui peut se connecter au serveur, et comment.
* Installation de quelques logiciels permettant de surveiller les comportements suspects.
Pour aller à l'essentiel sans tout relire, nous allons commencer par permettre de nous connecter au serveur, via l'utilisateur lambda, grâce à notre clé ssh (que vous avez déjà générée, sinon reportez-vous [[fr:ssh#se_connecter_a_un_serveur_avec_sa_cle|au tutoriel correspondant]]).
Depuis votre ordinateur personnel :
ssh-copy-id -i ~/.ssh/id_rsa.pub lambda@monserveur.org
Entrez le mot de passe de "lambda".
Connectez-vous ensuite pour vérifier que votre clé a bien été prise en compte :
ssh lambda@monserveur.org
cd .ssh
more authorized_keys
Ensuite passez en root, et désactivez la possibilité de se connecter directement au compte root en ssh, ainsi que les [[fr:ssh#configurer_ssh_sur_ses_serveurs|diverses options décrites ici]].
su
nano /etc/ssh/sshd_config
==== Fail2ban ====
[[http://www.fail2ban.org/wiki/index.php/Main_Page|Fail2ban]] permet de surveiller les tentatives de connexion ratées et réagir en conséquence, par exemple en bloquant l'adresse IP source. Il est un peu technique à configurer, mais bien documenté. Il permet de bloquer les attaques destinées à craquer un mot de passe en essayant énormément de combinaisons possibles (attaque par //bruteforce//).
Voir l'article complet : [[fr:securite_sysadmin#fail2ban]]
==== Rkhunter ====
Il peut être utile d'installer Rkhunter //juste après// avoir installé vos logiciels préférés. En effet, Rkhunter va vous signaler les changements sur votre système et tout ce qui lui semble louche, comme l'installation de trucs... //juste// après, idéalement, parce-que si on attend trop longtemps, ça laisse plus de temps à un attaquant pour attaquer.
Pour installer et configurer RKhunter, voir [[http://doc.ubuntu-fr.org/rkhunter|la doc d'Ubuntu,]] très complète. Nous avons aussi une [[fr:securite_sysadmin#rkhunter|documentation complémentaire]] qui résume l'essentiel.
===== Nom de domaine, DNS, SSH =====
À compléter / pointer vers les tutos intéressants.
Pour résumer :
* Configurer son DNS afin que le nom de domaine pointe vers notre serveur
* [[fr:ssh|Configurer SSH]]
===== Pour le plaisir =====
* Changer le nom de la machine
* Changer le message à la connexion
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".
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).
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.
===== Installer un certificat SSL =====
Bien que ce ne soit pas obligatoire, cela fait partie de la sécurité. Les échanges entre votre serveurs et ceux qui y accèdent ne circuleront pas en clair.
La page [[fr:https_ssl]] détaille les différentes possibilités.
===== VPS d'OVH : régler le temps avant déconnexion =====
Ceci est un test, je ne suis pas sûre que ce soit le bon truc mais... je tente et je note.
--- //[[user:zatalyz| zatalyz]] 2016/02/15 16:33//
Lorsqu'on accède par ssh à un VPS d'OVH, au bout d'un certain temps elle donne l'impression de "bloquer", sans pour autant couper la connexion de façon claire. Cela pourrait être lié à la gestion ssh des connexions.
Éditez le fichier ''/etc/ssh/sshd_config'' sur le VPS. Changez ou ajoutez les deux paramètres suivants :
ClientAliveInterval 900
ClientAliveCountMax 0
* //ClientAliveCountMax// indique le nombre total de message "checkalive" envoyé par le serveur ssh sans recevoir toute réponse du client ssh. La valeur par défaut est 3.
//ClientAliveInterval// indique le temps d'inactivité. Après X secondes, le serveur ssh enverra un message au client demandant une réponse. La valeur par défaut est 0 : le serveur n'enverra pas de message au client pour vérifier. 900 correspond à 15 minutes.
Sources :
* http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html
* http://www.thegeekstuff.com/2011/05/openssh-options/
{{tag>Serveur Web Sysadmin Tutoriel}}