Aller au contenu

Configuration de base d'un serveur Debian 13

Configuration serveur

Dans cet article, nous allons partir d'une installation fraîche de Debian 13 Trixie sur un serveur. Peu importe si c'est une machine locale, un serveur dédié ou un routeur. La configuration post-installation de chaque serveur Linux comprend toute une série de manipulations comme la mise en place des droits d'administration, la personnalisation du shell, le choix d'un éditeur de texte, la configuration des dépôts de paquets, l'installation d'une série d'outils, etc.

Configuration automatique ou manuelle ?

Dans mon quotidien, j'utilise l'outil Ansible pour configurer mes machines. C'est un outil de configuration plutôt bien ficelé, mais dont la prise en main est loin d'être triviale. Si je vous détaille ici la configuration manuelle de toutes les briques logicielles, c'est avant tout dans une optique pédagogique.

Travailler avec sudo

Dans la configuration par défaut, la commande sudo n'est pas installée :

$ su -
# apt update
# apt install -y sudo

L'utilisateur initial créé par l'installateur ne peut pas utiliser cette commande tant qu'il ne fait pas partie du groupe système sudo :

# usermod -aG sudo microlinux
# exit
$ exit

En temps normal, la commande sudo conserve le mot de passe dans le cache pour une durée de 15 minutes. Si vous souhaitez prolonger cet intervalle pour toute la durée de la session, vous pouvez modifier la configuration de la commande à cet effet :

/etc/sudoers.d/persistent_password
# Timeout
Defaults timestamp_timeout=-1

Utiliser su ou sudo ?

Dans le monde d'Unix et de Linux, il existe en gros deux écoles pour s'acquitter des tâches administratives :

  • Travailler directement en tant que root lorsque cela est nécessaire.

  • Se connecter en tant qu'utilisateur simple et utiliser sudo lorsqu'une tâche le requiert.

Certaines distributions favorisent explicitement l'approche avec sudo en désactivant le compte root dans la configuration par défaut.

Quelle est donc la « meilleure » approche ici ? Je me garderai de trancher la question et je me contenterai d'attirer votre attention sur les principales différences entre les deux manières de faire :

  • Travailler directement en tant que root est certainement plus confortable.

  • Utiliser sudo n'a jamais empêché personne de se tirer dans le pied.

Le principal argument en faveur de sudo est sans doute la journalisation des opérations dans /var/log/auth.log.1 Tout ce que vous faites est enregistré dans ce fichier si vous travaillez en tant qu'utilisateur simple. Ce n'est pas le cas pour root. Essayez pour voir.

Installer et configurer Vim

Vi, ce n'est pas simplement un éditeur de texte, c'est tout d'abord le programme d'édition de texte standard présent sur tous les systèmes unixoïdes. Vi existe en plusieurs versions ou incarnations, les plus répandues étant l'ancêtre vi et la version améliorée vim (ou Vi improved) :

$ sudo apt update
$ sudo apt install -y vim vim-airline

Voici le fichier ~/.vimrc que j'utilise sur tous mes systèmes :

~/.vimrc
" ~/.vimrc
syntax on
colorscheme retrobox
set textwidth=79
set scrolloff=15
set autoindent
set tabstop=2
set shiftwidth=2
set expandtab
set modeline modelines=2
if has('mouse')
    set mouse=r
endif

Copier/coller dans Vim

Si vous n'arrivez pas à copier/coller du texte dans un terminal graphique faute de menu contextuel, invoquez :set mouse= en mode commande et réessayez.

Certaines commandes ou applications comme git ou crontab se servent des variables EDITOR et VISUAL pour lancer un éditeur de texte en mode interactif. Même si vous n'avez pas encore eu l'occasion de les utiliser, c'est toujours une bonne idée de renseigner ces deux variables :

~/.bash_aliases
# Vim
EDITOR=vim
VISUAL=$EDITOR
export EDITOR VISUAL

Et si jamais ça vous arrive d'utiliser le compte root :

/root/.bashrc
# Vim
EDITOR=vim
VISUAL=$EDITOR
export EDITOR VISUAL

Un peu de coloriage

L'invite de commande peut être personnalisée grâce à la variable d'environnement PS1. Pour ma part, j'aime bien ajouter des couleurs. C'est non seulement joli à voir, ça présente également un aspect fonctionnel dans la mesure où l'invite des utilisateurs communs mortels se distingue clairement de celle de root :

Bash

Voici l'invite de commande personnalisée pour l'utilisateur :

~/.bash_aliases
# PS1
GREEN='\[\033[0;32m\]'
WHITE='\[\033[1;37m\]'
NC='\[\033[0;m\]'
PS1="$GREEN[$WHITE\u$NC@$WHITE\h$NC:$WHITE\W$GREEN] \$ $NC"

C'est quoi toutes ces variables ?

Les suites de caractères du genre \[\033[1;37m\] sont ce que l'on appelle communément des caractères de contrôle. Si je les ai placés dans une série de variables GREEN, WHITE et NC, c'est uniquement pour améliorer la lisibilité de l'ensemble. Autrement, vous vous seriez retrouvé avec une définition de variable PS1 qui ressemble à ce qui s'affiche à l'écran lorsque votre chat fait la sieste sur le clavier :

[microlinux@sandbox:~] $ echo $PS1
\[\033[0;32m\][\[\033[1;37m\]\u\[\033[0;m\]@\[\033[1;37m\]\h\[\033[0;m\]:
\[\033[1;37m\]\W\[\033[0;32m\]] $ \[\033[0;m\]

L'invite de root utilise un jeu de couleurs différent :

/root/.bashrc
# PS1
RED='\[\033[0;33m\]'
WHITE='\[\033[1;37m\]'
NC='\[\033[0m\]'
PS1="$RED[$WHITE\u$NC@$WHITE\h$NC:$WHITE\W$RED] #$NC "

Quelques alias pratiques

Maintenant que nous avons défini des invites personnalisées pour root et l'utilisateur initial du système, nous pouvons aller plus loin dans la personnalisation du shell et définir une série d'alias pratiques au quotidien :

~/.bash_aliases
# Alias
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -al'
alias ..='cd ..'
alias ...='cd ../..'

On peut faire pareil pour root en ajoutant la même stance dans /root/.bashrc.

En français ou en anglais ?

Dans la configuration par défaut, mon système utilise la langue française :

$ echo $LANG
fr_FR.UTF-8

Lorsque j'utilise le compte root, je préfère utiliser la langue anglaise, qui constitue en quelque sorte la lingua franca de l'administration système sous Linux :

/root/.bashrc
LANG=en_US.UTF-8
export LANG

Je vérifie si je dispose bien de cette locale :

# localectl list-locales
C.UTF-8
en_US.UTF-8
fr_FR.UTF-8

Générer les locales manquantes

Si jamais une locale est manquante, il suffit d'invoquer dpkg-reconfigure locales pour la générer.

Configurer APT

Dans l'état actuel des choses, la configuration du gestionnaire de paquets APT est inscrite dans le fichier /etc/apt/sources.list avec la syntaxe classique utilisée par Debian depuis la nuit des temps.

Depuis Debian 13 Trixie, APT utilise désormais le format deb822 pour gérer les sources, en remplacement de l'ancien /etc/apt/sources.list.

Invoquez la commande apt modernize-sources pour basculer vers ce nouveau format :

$ sudo apt modernize-sources
The following files need modernizing:
  - /etc/apt/sources.list

Modernizing will replace .list files with the new .sources format,
add Signed-By values where they can be determined automatically,
and save the old files into .list.bak files.

This command supports the 'signed-by' and 'trusted' options. If you
have specified other options inside [] brackets, please transfer them
manually to the output files; see sources.list(5) for a mapping.

For a simulation, respond N in the following prompt.
Rewrite 1 sources? [Y/n]
Modernizing /etc/apt/sources.list...
- Writing /etc/apt/sources.list.d/debian.sources

Jetez un œil dans le fichier résultant /etc/apt/sources.list.d/debian.sources :

/etc/apt/sources.list.d/debian.sources
# Modernized from /etc/apt/sources.list
Types: deb
URIs: http://debian.proxad.net/debian/
Suites: trixie
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Modernized from /etc/apt/sources.list
Types: deb
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Modernized from /etc/apt/sources.list
Types: deb
URIs: http://debian.proxad.net/debian/
Suites: trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
  • C'est plus lisible et mieux structuré.

  • Le format définit explicitement les clés de confiance avec la directive Signed-By.

  • C'est plus facile pour gérer plusieurs sources.

Je vais modifier ce fichier en l'éditant comme ceci :

/etc/apt/sources.list.d/debian.sources
# /etc/apt/sources.list.d/debian.sources

Types: deb
URIs: http://debian.proxad.net/debian
      http://ftp.de.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://security.debian.org/debian-security
      http://ftp.de.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
  • J'ai rassemblé les deux sources trixie et trixie-updates en une seule stance.

  • J'ai ajouté un deuxième miroir de téléchargement pour chaque source.

  • J'ai supprimé les commentaires inutiles.

Il ne me reste plus qu'à faire un brin de ménage :

$ cd /etc/apt/
$ sudo rm -f sources.list~ sources.list.bak

Installer une panoplie d'outils

Pour l'instant, notre système est assez minimaliste et ne permet pas forcément de travailler confortablement. On va donc installer quelques outils supplémentaires :

$ sudo apt update
$ sudo apt install 7zip 7zip-rar curl git links2 lynx nmap net-tools \
  pinfo rsyslog tree unrar unzip 

Et maintenant ?

La suite au prochain numéro, où nous allons nous intéresser un peu plus en détail à la configuration réseau de notre machine.


  1. Si le fichier /var/log/auth.log n'existe pas sur votre système, installez le paquet rsyslog et redémarrez la machine. 


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.