Sécuriser un serveur Unix
Hervé SCHAUER, fondateur d’HSC Consultants
Publié le 10 May 2005
par Gilles LE PIGOCHER – gilles.lepigocher@linformaticien.fr
HSC Consultants est un cabinet D'EXPERTS indépendants. Spécialisé à l’origine en 1989 sur Unix, et reconnu aujourd’hui en sécurité informatique globale. HSC a animé le « Séminaire Sécurité Linux » lors du dernier salon Solutions Linux, et sera présent sur le prochain forum Eurosec 2005. Nous avons interrogé son fondateur Hervé Schauer, pour qu’il nous livre quelques conseils concernant les systèmes Unix.
Quels sont les points importants à vérifier pour sécuriser un serveur Unix ?
Hervé Schauer :
Le conseil de base pour sécuriser tout système est la minimisation. Ceci peut être décliné en nombre de points, sachant que chacun est indispensable mais non suffisant pour assurer la sécurité d’un système :
1 - Minimiser le nombre de services accessibles, en désactivant tout ce qui n’est pas indispensable ;
2 - minimiser le nombre de fonctionnalités accessibles, en désactivant dans les services nécessaires les fonctions qui ne sont pas indispensables ;
3 - minimiser les privilèges utilisés par les services nécessaires, en utilisant des applications conçues pour être sécurisés et en les durcissant ;
4 - minimiser le nombre de programmes privilégiés (SUID/SGID) ;
5 - minimiser les droits d’accès sur certains fichiers ;
6 - minimiser le temps où le système est vulnérable, ce qui nécessite une mise à jour de sécurité faite au jour le jour ;
7 - minimiser le temps où le système est corrompu, par de la surveillance :
• le scellement des fichiers importants du système (binaires, bibliothèques, fichiers de configuration, etc.), et…
• l’analyse des journaux centralisés.
Sécuriser un système et le garder à un haut niveau de sécurité demande donc du travail avant la mise en production du système, et quotidiennement tout au long de son exploitation.
Avez-vous une préférence pour un système particulier ?
H. S. : Certains ont des fonctionnalités ou des configurations qui feront que le système aura par défaut un meilleur niveau de sécurité. Malheureusement, si l’administrateur n’est pas sensibilisé à la sécurité et n’a pas été formé, alors ceci ne lui servira à rien. Le système recommandé est donc celui qui est le mieux maîtrisé par les administrateurs.
Quel type d’architecture, tant matériel que logiciel, vous semble le plus adapté ?
H. S. : Une bonne architecture peut permettre non seulement d’améliorer la sécurité des systèmes, mais surtout de limiter les conséquences d’une intrusion. Mettre les machines sensibles dans des DMZ différentes séparées par le filtrage IP haut de gamme d’un firewall bien configuré permet de limiter les conséquences d’une intrusion à la seule DMZ concernée.
Une bonne architecture peut aussi permettre d’effectuer du filtrage de contenu sur certains flux. L’exemple le plus classique est le filtrage de requêtes HTTP devant un serveur web par un relais inverse. Ceci doit dans un premier temps permettre de refuser les accès à des fichiers et scripts non autorisés, mais aussi, avec plus de travail, de vérifier les valeurs des paramètres envoyés aux scripts dynamiques.
Au niveau du système, certaines applications peuvent, elles aussi, permettre d’avoir un bien meilleur niveau de sécurité, et une résistance aux intrusions accrue. Ainsi, une application correctement durcie ne permettra pas à un script kiddy d’exploiter une faille pourtant présente. Des exemples d’applications correctement conçues sont Postfix, VsFtpd, Popa3d, OpenSSH, etc. Celles-ci mettent en place de la séparation de privilèges, où les processus qui traitent des données potentiellement malveillantes sont restreints dans une cage (chroot), et exécutés sous une identité dédiée non privilégiée.
Certaines applications peuvent également être sécurisées, comme BIND. Mais attention, ce n’est pas le cas de toutes celles qui peuvent utiliser la fonction chroot. Bien sûr cela ne permet pas de se passer d’une mise à jour lorsqu’un avis de sécurité touche l’une de ces applications. Mais cela permet de bien mieux dormir la nuit !
Pensez-vous qu’il soit utile de mettre à jour son système régulièrement ?
H. S. : Il est bien sûr indispensable de mettre à jour son système dès que celui-ci est vulnérable. Les fonctionnalités de durcissement empêchent seulement certains types d’exploitation de failles et nécessitent alors une plus grande technicité dans l’exploitation. Ceci ne permet alors que de se donner un peu de temps pour tester la mise à jour avant de la mettre en production.
Certains systèmes ne font qu’appliquer le patch corrigeant la vulnérabilité à la version du logiciel présente dans le système utilisé. La seule différence entre la version « patchée » et la précédente n’est alors que les quelques lignes permettant de corriger la faille, ce qui minimise énormément les risques de problème d’interopérabilité.