Une petite procedure pour configurer/améliorer un serveur fraichement installé sous Debian.

Configuration de base

Configuration des locales

Pour installer les locales sur le système: celles qui seront disponibles pour les utilisateurs.

# dpkg-reconfigure locales

Sélectionnez les locales en fonction des langues que vous voullez et les différent encodage de charactères. Plus vous sélectionnerez de langue et d'encodage plus cela prendra de temps à générer et plus cela occupera d'espace disque.

Par exemple pour obtenir les message en français séléctionnez les locales commençant par fr_FR (français de France) et tout les encodages. Le meilleur encodage pour Unix est UTF-8. Sur le second écran choisissez la langue et l'encodage par défaut qui sera utilisé par le système par exemple fr.FR.UTF-8, pour avoir les messages en français par défaut.

Configuration de bash

La création d'un nouvel utilisateur utilise les fichiers de configuration par défaut qui sont présents dans le dossier /etc/skel/. Cependant, par défaut l'utilisateur root n'obteint pas ces fichiers. Pour obtenir une meilleure configuration du shell bash pour root avec par exemple un prompt en couleur et l'autocomplétion nous allons copier manuellement .bashrc :

# cp /etc/skel/.bashrc $HOME

Ainsi l'auto-complétion de bash marche.

Pour avoir la couleur du prompt il faut décommenter la ligne 39.

39  #force_color_prompt=yes

et obtenir:

39  force_color_prompt=yes

On peut également décommenter dans les lignes 78 et suivantes les configuration de couleur pour quelques commandes

78  if [ -x /usr/bin/dircolors ]; then
79      test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
80      alias ls='ls --color=auto'
81      alias dir='dir --color=auto'
82      alias vdir='vdir --color=auto'
83 
84      alias grep='grep --color=auto'
85      alias fgrep='fgrep --color=auto'
86      alias egrep='egrep --color=auto'
87  fi

Configurer les alias pour le compte root

Par défaut tous les mails système sont envoyés à l'utilisateur root. Cependant, pour éviter des connexion intempestive de root, il est de bonne augure de rediriger les emails vers un autre compte ou adresse. Pour cela il suffit de modifier le fichier /etc/aliases pour qu'il contienne la ligne suivante:

root: nom@domain.com

Tous les emails envoyés à root seront redirigés vers l'adresse nom@domain.com

Sécurisation du système

Mise à jour du système

# aptitude update
# aptitude dist-upgrade

Pour recevoir automatiquement les annonce de mise à jour du système il faut installer le paquet apticron:

# aptitude install apticron

Les possible mises à jour du système seront envoyé par mail à root tous les jours.

Installation de fail2ban

fail2ban est un programme qui permet de blacklister temporairement une adresse IP lorsqu'elle est utilisée pour tenter de rentrer sur le site "en force" c'est à dire en essayant des mots de passe jusqu'à trouver le bon. En pratique fail2ban scrute les fichier de log et après un certain nombre d'échec de connexion, l'adresse IP est blacklister

# aptitude install fail2ban

Il se configure dans le fichier /etc/fail2ban/fail.conf. Quelques modules supplémentaires existent pour fail2ban pour les activer il faut se reporter à la fin du fichier de configuration (à partir de la ligne 74). Chaque module est appelé un JAIL.

Chaque JAIL se présente de façon similaire comme par exemple ssh:

[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

Son nom entre [], s'il est activé ou nom (enable). Quel port fail2ban doit surveiller (port). Le fichier de log à surveiller (logpath) et le filtre à appliquer pour n'obtenir que le service voulu (filter). Et enfin le nombre d'erreurs toléré (maxretry).

Par défaut le JAIL ssh est activé. Le JAIL pam-generic permet de bloquer via l'identification d'erreur via l'utilisation de PAM. Le JAIL ssh-ddos permet une protection contre une attaque de type défaut de service

Pour prendre en compte la nouvelle configuration il faut redémarrer le service à l'aide la commande suivante:

# service fail2ban restart

Installation de rkhunter

Il s'agit d'un programme qui recherche les rootkit en recherchant les modifications des principaux programmes par comparaison avec un état sain et des signatures ainsi que l'identification de rootkit déjà connus. Voir son installation et configuration sur la page dédiée: rkunter

Installation de debsecan

Vérifie les alertes de sécurités sur internet en rapport avec le système:

# aptitude install debsecan

Pour le configurer il suffit d'exécuter la commande suivante:

# dpkg-reconfigure debsecan

Lors de la configuration, sélectionner la bonne distribution. Les autres questions se comprennent facilement.

Site web de debsecan

Configuration du pare-feu avec ferm

Consultez l'article correspondant à propos de ferm

Limitation des connexions SSH

Ne pas désactivé la connexion du super-utilisateur sans la présence d'un autre compte: il serait alors impossible de se connecter au serveur

Création d'un utilisateur administrateur (admin dans notre exemple) qui pourra se connecter en root après désactivation de la connexion SSH pour root:

# adduser admin

Une fois configuré, la connexion SSH de root peut être désactivée dans le fichier /etc/ssh/sshd_config:

26  PermitRootLogin no

Redémarrez le serveur SSH pour le prendre ne compte.

# /etc/init.d/ssh restart

Limitation de la commande su à certains utilisateurs

Il est fortement conseillé de rester connecté avec une console en root tout au long de la configuration et de vérifier que tout marche bien avant de la fermée: en cas d'erreur il se peut que l'accés à un shell super-utilisateur soit impossible.

La commande su permet de se substitué à un autre utilisateur pour exécuter certain programme. L'exemple le plus courant et le passage en super-utilisateur pour effectué des taches d'administration. Cependant il peut être bon de limiter l'accès à cette commande à certains utilisateurs. Par défaut su est donc lisible et exécutable par tout le monde. Cependant il est possible de restreindre à un groupe la connexion en modifiant le fichier de configuration PAM de su. Il faut décommenter la ligne suivante dans le fichier /etc/pam.d/su:

15  auth       required   pam_wheel.so

Par défaut il faut appartenir au groupe root pour pouvoir utiliser su. Historiquement ce groupe de super-utilisateur sur UNIX porte le nom de wheel d'où le nom du module PAM (voir [[wp>Wheel_(Unix_term)]]). Il est possible de changer le groupe d'utilisateur correspondant à wheel en ajoutant l'option group=nom_group. Ainsi pour définir le groupe adm comme le groupe wheel:

15  auth       required   pam_wheel.so group=adm

Il suffit d'ajouter ensuite les utilisateurs autorisé au groupe root, comme par exemple l'utilisateur admin:

# adduser admin root