6. Services

a. Configuration globale

Par services j'entends tout service en écoute sur le réseau, et donc potentiellement sur Internet. Il convient de se limiter au strict nécessaire, de manière à limiter les faille potentielles, chacun des services devant absolument être considéré comme un problème virtuellement à venir. Donc tous les services inutiles au fonctionnement prévu de la machine doivent être désactivés, ou même désinstallés. Cela améliore la sécurité du système d'une part, et fait en sorte de libérer des ressources systèmes, chaque cycle de calcul CPU ou chaque méga octet de mémoire se retrouvant disponible pour d'autres services qui eux rentrent dans le fonctionnement normal du système Gnu/Linux et de son utilisation prévue.


On pourra déterminer les services actifs en listant les processus de la machine (« ps faux »), ou en lançant un audit réseau depuis une autre machine et depuis Internet pour voir les services joignables depuis le Web (voir le chapitre sur les audit), ou enfin en listant les ports en écoute (« netstat -atup »).


Le service de transport de mail doit être systématiquement laissé, pour permettre à la machine d'envoyer des mails d'alertes, indispensables à la vérification de son bon fonctionnement.


b. TCPWrapper

TCPWrapper est une bibliothèque utilisée par certains services réseaux, je vous invite à regarder la documentation de vos logiciels pour vérifier s'ils l'utilisent ou pas. Si c'est le cas, on va pouvoir limiter l'accès à ces services, grâce à deux fichiers de configuration, /etc/hosts.deny pour interdire l'accès, et /etc/hosts.allow pour autoriser l'accès. On pourra refuser l'accès par défaut à SSH en indiquant la ligne suivante dans /etc/hosts.deny :


ALL:ALL spawn (echo « %s refuse l'accès depuis %c | sendmail -s  'alerte de tentative de connexion TCP' root@localhost) &


On va refuser l'accès, et envoyer un mail en cas de tentative de connexion, puis rajouter une ligne d'accès dans /etc/hosts.allow pour permettre une connexion depuis les hôtes connus (ici, le réseau 10.0.0.0/24, l'hôte Internet 69.69.69.69, et la machine elle même, via localhost:


sshd: 10.0.0.0/255.255.255.0, 69.69.69.69, 127.0.0.1


c. Cron

Cron est un utilitaire permettant l'exécution de tâches planifiées à intervalles réguliers. On peut spécifier qui a le droit de créer des tâches planifiées avec les fichiers /etc/cron.allow et /etc/cron.deny, on n'autorisera que les utilisateurs potentiellement appelés à en créer, et en l'interdisant par défaut.


On pourra faire en sorte que la CRON envoie de manière systématique des rapports par mails, en spécifiant la ligne suivante dans le fichier /etc/crontab :


MAILTO=root@localhost
HOME=/
LANG=fr_FR


d. Autres services

Les services réseaux sont particulièrement exposés, car il ne sont pas utilisables par les seuls utilisateurs d'une machine mais par toute machine du réseau et/ou d'Internet. S'il est facile de filtrer les accès non prévus avec le pare-feu externe, ou des règles d'accès sur un routeur, certains services ont pour vocation d'être publics. On surveillera alors très attentivement les alertes de sécurité sur les logiciels ou bibliothèques sur lesquelles reposent les services utilisés, et on mettra à jour dès que nécessaires ceux ci.


Si le protocole réseau du service le permet, on cryptera les communications.


Les accès aux ressources de ces services doivent être surveillés de près, de manière à détecter toute compromission ou tentative en cours.


On pourra quand c'est possible « chrooter » les logiciels, si cela est prévu par le logiciel ou faisable de manière externe. un CHROOT consiste à changer la racine du système de fichier d'une application particulière, de manière à lui enlever l'accès aux ressources autres que le minimum nécessaire à son fonctionnement, puisque comme on l'a vu le système Gnu/Linux entier est vu comme une arborescence de fichiers. Par exemple, si on chroote un logiciel dans /tmp, il ne verra que l'arborescence sous /tmp, en aillant l'impression d'être à la racine du système, et encore, dans la limite de ses autorisations dans ce répertoire.


Il conviendra d'utiliser des utilisateurs sans privilèges autres que le strict minimum pour chaque service actif sur les machines (par exemple, sous Debian, on remarquera que le serveur Web Apache tourne sous le compte de l'utilisateur www-data, non privilégié).


On n'hésitera pas à multiplier les filtrages réseaux pour compliquer ou prévenir d'éventuelles attaques depuis Internet ou le réseau interne, dont on ne se méfie jamais assez.


Note : Souvent les services utilisés sous Gnu/Linux propose de la documentation sur la sécurité de leur fonctionnement, que l'on étudiera au cas par cas, pour comprendre si les mesures proposées sont applicables dans son cas propre.



5. Chiffrement des communications
Sommaire
7. Le noyau Linux