Vos serveurs sont-ils sécurisés ???

Gazette Linux n111 — février 2005

Blessen Cherian


Table des matières
1. Introduction
2. Qu'est ce que la sécurité de l'information?
3. Pourquoi avons nous besoin de sécurité de l'information?
4. Organigramme de sécurité
5. Politique de sécurité
6. Les types de sécurité de l'information
6.1. Sécurité de l'hôte / sécurité physique
6.2. Sécurité du réseau
6.3. Quel système d'exploitation est le mieux sécurisé?
7. Un pare-feu est-il la solution ultime aux problèmes de sécurité réseau?
8. La sécurité est un processus permanent
9. L'implémentation de la sécurité crée-t-elle du temps système et/ou reduit-elle les performances?
10. Audit de sécurité - Que devrait-on vérifier?
11. Comment savoir si vous êtes en train de vous faire pirater?
11.1. Vérifiez votre machine pour voir si vos performances se sont dégradées ou si votre machine est surutilsée.
11.2. Regardez si votre serveur a d'éventuels processus cachés en cours d'exécution.
11.3. Utilisez les outils de détection d'intrusion
11.4. Vérifiez la durée de fonctionnement de votre machine.
11.5. Déterminez quels sont vos processus inconnus et ce qu'ils font.
11.5.1. Utilisez les commandes comme celles qui suivent pour démonter les programmes inconnus.
12. Méthodologie renforcée
13. Récapitulatif
13.1. Evaluez les besoins liés à la gestion et les facteurs de risques qui s'appliquent à ce système.
13.2. Elaborez une politique de sécurité prenant en compte les données ci-dessus.
13.3. Une fois que cette politique a été approuvée, effectuez un audit de sécurité sur tous les systèmes existants pour faire le bilan des vulnérabilités actuelles et remettez un rapport à ce sujet à la direction.
13.4. Implémentez la politique de sécurité
13.4.1. Corrigez toutes les vulnérabilités connues des logiciels existants soit en appliquant les patchs soit en mettant à niveau les logiciels.
13.4.2. Implémentez la sécurité de l'hôte
13.4.3. Implémentez la sécurité du réseau
13.5. Phase de test
14. Biographie

1. Introduction

En un mot, Non. Aucune machine connectée à Internet n'est sécurisée à 100%. Cela ne signifie pas que vous êtes impuissant.Vous pouvez prendre des mesures pour éviter les attaques, mais vous ne pouvez pas les empêcher complètement. C'est comme une maison - quand les fenêtres et les portes sont ouvertes, la probabilité qu'un voleur entre est grande, mais si les portes et les fenêtres sont fermées et verrouillées, la probabilité de se faire cambrioler est faible, mais pas nulle pour autant.


2. Qu'est ce que la sécurité de l'information?

Dans le cadre de notre article, la sécurité de l'information désigne les méthodes que nous utilisons pour protéger les données sensibles contre les utilisateurs non-autorisés.


3. Pourquoi avons nous besoin de sécurité de l'information?

Le monde entier est en train de s'adapter rapidement aux technologies de l'information (IT). Où que vous regardiez, la technologie informatique a revolutionné la façon dont les choses fonctionnent. On peut citer commme exemples les aéroports, les ports, les industries des télécommunications, et la télévision, la prospérité économique de toutes ces activités résultant de l'utilisation des IT."IT is everywhere."

Beaucoup d'informations sensibles transitent par Internet, comme les données des cartes de crédit, les mots de passe de serveurs utilisés pour des fonctions critiques, et les fichiers importants. Il y a toujours un risque que quelqu'un voit et/ou modifie les données pendant qu'elles sont transmises. On ne compte plus les histoires horribles qui arrivent quand un individu obtient la carte de crédit ou les informations financières de quelqu'un. Il peut les utiliser absolument comme il veut et il pourrait même vous détruire vous et votre entreprise en prenant ou en détruisant tous vos avoirs. Comme tout le monde le sait "Mieux vaut un petit comprimé qu'un lourd traitement" donc pour ne pas en arriver à une telle extrémité, il est conseillé d'avoir une bonne politique de sécurité et une bonne implémentation de la sécurité.


4. Organigramme de sécurité

Ce qui suit représente l'organigramme nécessaire pour mettre en oeuvre une sécurité efficace:


       [ Analyse des risques ]   [ Besoins liés à la gestion ]

                         |

                [ Politique de sécurité ]

                         |

       [ Prestations de sécurité, Mécanismes, et Objets ]

                         |

[ Gestion de la sécurité, Surveillance, Détection et Réponse ]

Cet organigramme montre les étapes de base dans le cycle de vie de la sécurisation d'un système. "Analyse des risques" concerne le risque associé aux données se trouvant dans le serveur à sécuriser. "Besoins liés à la gestion" : étude de ce qui est effectivement indispensable pour diriger une entreprise. Ces deux composants couvrent la partie entreprise pour la mise en oeuvre de la sécurité.

La "politique de sécurité" couvre les 8 domaines spécifiques d'une mise en oeuvre de la sécurité, et est exposée avec plus de détails plus bas dans la section 4. "Prestation de sécurité, Mécanismes, et Objets" est précisément la partie implémentation de la sécurité. "Gestion de la sécurité, Surveillance, Détection et Réponse" est la face opérationnelle de la sécurité, où nous couvrons en détail comment trouver les failles de sécurité, et comment réagir si une faille est trouvée.


5. Politique de sécurité

La Politique de sécurité est un document qui aborde les domaines suivants

  1. Authentification: cette partie traite des méthodes qui sont utilisées pour déterminer si un utilisateur est ou non réel, quels utilisateurs ont ou n'ont pas accès au système, la longueur minimum autorisée pour un mot de passe, combien de temps un utilisateur peut être inactif avant d'être déconnecté, etc.

  2. Autorisation : cette partie parle de la classification des niveaux d'utilisateur et ce que chaque niveau peut faire sur le système, quels utilisateurs peuvent devenir root, etc.

  3. Protection des données: la protection des données traite des détails comme quelles données devraient être protégées et qui peut accéder à quels niveaux de données dans le système.

  4. L'accès internet: cette partie s'occupe informations sur les utilisateurs ayant accès à internet et ce qu'ils peuvent y faire.

  5. Les Services internet: cette section concerne le choix des services du serveur qui sont accessibles depuis internet et de ceux qui ne le sont pas.

  6. Audit de sécurité: cette partie aborde la façon dont les audits et les revues des domaines et procédures liés à la sécurité seront effectués.

  7. Traitement des incidents: cette partie aborde les actions à entreprendre et les mesures à prendre si il y a une faille de sécurité. Elle couvre aussi les étapes pour identifer le coupable lui-même et les méthodes pour prévenir de futurs incidents.

  8. Responsabilités : cette partie porte sur la désignation de qui va être contacté à tel ou tel stade d'un incident et sur les responsabilités au niveau administrateur(s) pendant et après l'incident.


6. Les types de sécurité de l'information

Il y a 2 types de sécurité. (1) La sécurité physique / la sécurité de l'hôte et (2) la sécurité du réseau. Chaque catégorie contient 3 parties:

  1. La protection: ralentir ou arrêter les intrusions ou dommages

  2. La détection: prévenir quelqu'un si une violation (ou une tentative de violation) de sécurité apparaît, quantifier et identifier les dégâts causés ou qui auraient pu être causés.

  3. Récupération: resécuriser le système ou les données après une violation et si possible, réparer tous les dommages subis.


6.1. Sécurité de l'hôte / sécurité physique

La notion de sécurité de l'hôte / sécurité physique porte sur la sécurisation du serveur contre les accès non autorisés. Pour cela on peut protéger par mot de passe la machine en passant par la création d'un mot de passe dans le bios, ou par la mise sous clef de l'ordinateur dans une pièce à laquelle seuls les utilisateurs autorisés ont accès, ou par l'installation de patchs de sécurité au niveau du système d'exploitation, et par la recherche dans les journaux à interval régulier d'éventuelles intrusions ou attaques. C'est au niveau sécurité de l'hôte que l'on vérifie et que l'on corrige les permissions sur tous les fichiers liés au système d'exploitation.


6.2. Sécurité du réseau

La sécurité du réseau est l'un des aspects les plus importants de toute securité. Comme je l'ai dit précédemment, aucune machine connectée à internet n'est complètement sécurisée, les administrateurs de sécurité et les propriétaires de serveur doivent donc être vigilants, et veiller à être informés de tous les nouveaux bugs et attaques qui sont découverts. Ne pas se tenir au courant de cela risque de vous laissez à la merci de n'importe quel petit scripteur.


6.3. Quel système d'exploitation est le mieux sécurisé?

Dans chaque SE, il ya du pour et du contre. Il y a moyen de renforcer la sécurité de Windows, mais l'implémentation est assez coûteuse. Linux est stable et raisonablement sécurisé, mais beaucoup d'entreprises ont l'impression qu' il fait plutôt défaut au niveau assistance revendeurs. Je vote pour FreeBSD comme meilleur SE du point de vue de la sécurité. C'est un SE type Unix gratuit de plus mais peu de gens sont au courant de son existence.


7. Un pare-feu est-il la solution ultime aux problèmes de sécurité réseau?

Non, un pare-feu ne représente qu'une partie de l'implémentation de la sécurité. Encore une fois, on va utiliser l'exemple de la maison. Dans une maison, toutes les fenêtres et les portes peuvent être fermées, mais si le verrou de la porte d'entrée est tellement mauvais que quelqu'un n'a qu'à introduire un truc qui ressemble à une clef pour l'ouvrir, à quoi ça sert que toute la maison soit fermée? De même, si on a une politique de pare-feu agressive, cela va restreindre les accès non-autorisés, mais si les logiciels qui sont lancés dans la machine sont périmés ou pleins de bugs, les pirates peuvent les utiliser pour s'introduire dans le serveur et obtenir l'accès root. Cela montre qu'un pare-feu n'est pas l'ultime solution. Une implémentation de sécurité élaborée est la seule vraie solution de qualité en la matière.


8. La sécurité est un processus permanent

Une sécurité ininterrompue, c'est un processus continu. Les administrateurs de sécurité ne peuvent mener leur travail que sur la base des alertes et des corrections de bugs émis à la date de la mise en sécurité, donc pour tenir compte toutes les corrections des bugs les plus récents,le travail sur la sécurité doit être fait dans les règles.


9. L'implémentation de la sécurité crée-t-elle du temps système et/ou reduit-elle les performances?

Oui, l'implémentation de la sécurité crée un petit peu de temps système, mais elle ne doit pas réduire drastiquement les performances générales. Pour bien prendre soin de cela, une implémentation de la sécurité, si elle est bien faite possède une section optimisation où l'administration de la sécurité donne la priorité à la fois aux performances et à la sécurité. Lorsque l'on sécurise un logiciel, on doit le sécuriser de telle façon qu'il fournisse un maximum de performance.


10. Audit de sécurité - Que devrait-on vérifier?

Un audit de sécurité est une partie de l'implémentation de la sécurité où l'on essaye de trouver les vulnérabilités du système et où l'on suggère des actions pour augmenter la sécurité. Dans un audit normal, les points ci-dessous doivent être vérifiés, et un rapport sur les résultat de cet audit doit être créé.

  1. Vérifiez la détection d'intrusion. Utilisez chkrootkit ou rkhunter pour le faire.

  2. Recherchez dans les logiciels installés sur le serveur (le noyau, openssl, openssh, etc.) les bugs connus.

  3. Scannez tous les ports réseau et repérez les ports ouverts. Notez les ports qui ne devraient pas être ouverts et quels programmes écoutent dessus.

  4. Vérifiez si /tmp est sécurisé.

  5. Recherchez les processus cachés.

  6. Vérifiez les mauvais blocs disques dans toutes les partitions. (C'est uniquement pour être sûr que le système est raisonnablement en bonne santé.

  7. Recherchez les permissions fichier qui peuvent présenter des risques.

  8. Vérifiez si le noyau a une vulnérabilité ptrace.

  9. Vérifiez la mémoire (Encore une vérification de la santé du système.)

  10. Vérifiez si le serveur est un relais de messagerie électronique ouvert.

  11. Vérifiez si les partitions ont suffisament d'espace libre.

  12. Vérifiez la taille des fichiers de log. Il est préférable que la taille des logs reste en megaoctets.


11. Comment savoir si vous êtes en train de vous faire pirater?

Pour savoir si votre machine est en danger ou non, suivez ces étapes. Ce sont les étapes que j'ai l'habitude de suivre et qui sont utiles dans la plupart des situations.


11.1. Vérifiez votre machine pour voir si vos performances se sont dégradées ou si votre machine est surutilsée.

Pour cela, utilisez les commandes

vmstat Affiche des informations à propos de la mémoire, du processeur et du disque.

Ex:

bash# vmstat 1 4
(où 1 est le délai et 4 le nombre de requêtes)

mpstat Affiche les statistiques sur l'utilisation du processeur. Cela va nous aider à voir si votre processeur est surchargé ou pas.

Ex:

bash# mpstat 1 4
(où 1 est le délai et 4 le nombre de requêtes)

iostat Cette commande affiche les statistiques à propos du disque système.

Options utiles:

-d - Donne le rapport d'utilisation du périphérique.

-k - Affiche les statistiques en kilooctets par seconde.

Ex:

bash# iostat -dk 1 4
(où 1 est le délai et 4 le nombre de requêtes)

sar Affiche les performances générales du système.


11.2. Regardez si votre serveur a d'éventuels processus cachés en cours d'exécution.

ps Affiche le statut de tous les processus connus.

lsof Affiche une liste de tous les fichiers ouverts. Dans Linux tout est considéré comme un fichier, donc vous pourrez voir à peu près toute l'activité sur votre système avec cette commande.


11.4. Vérifiez la durée de fonctionnement de votre machine.

Si la durée de fonctionnement est plus petite qu'elle ne devrait, cela peut vouloir dire que quelqu'un est en train d'utiliser les ressources de votre machine. Linux ne plante pas ou ne redémarre pas lorsque les conditions sont normales vu la grande stabilité de son SE. Si votre machine a été redémarrée, essayez de trouver ce que ça cache vraiment.


11.5. Déterminez quels sont vos processus inconnus et ce qu'ils font.

11.5.1. Utilisez les commandes comme celles qui suivent pour démonter les programmes inconnus.

readelf Cette commande affichera ce que le programme de l'exécutable effectue.

ldd Cette commande montrera les informations sur les bibliothèques utilisées par un exécutable.

string Cette commande affichera les chaînes dans les fichiers binaires.

strace Cette commande affichera les appels système qu'un programme fait quand il tourne.


12. Méthodologie renforcée

  1. Consultez tous les sites qui parlent de sécurité et tenez vous au courant. C'est l'une des choses les plus importantes qu'un administrateur de sécurité ou un possesseur de serveur doit faire. Les possesseurs de serveurs doivent être sensibilisés à la sécurité et à son importance. La formation en sécurité est une partie importante dans un ensemble d'éléments concernant la sécurité.

  2. Elaborez une bonne politique de sécurité. Menez des audits de sécurité qui reposent sur cette politique.

  3. Gardez votre SE à jour en appliquant tous les patches.

  4. Installez un noyau personnalisé en enlevant les services non désirés et en le patchant avec grsecurity ou openwall.

  5. Désactivez les services non-souhaités et renforcez les services que vous laissez tourner; changez les permissions des fichiers et des répertoires pour que la sécurité soit renforcée.

  6. Installez un pare-feu et créez un bon jeu de règles.

  7. Testez et contrôlez le serveur de façon régulière.

  8. Installez un système de détection d'intrusion, un moniteur de logs, tous les modules de sécurité d'Apache, bfd, faf et tmp monitor. Sécurisez vos partitions.

  9. Lancez un bon système de sauvegarde pour récupérer les données en cas d'intrusion, de plantage, ou autres problèmes pouvant causer de gros dégâts.

  10. Installez un analyseur de logs et vérifiez les pour rechercher d'éventuelles entrées suspectes.

  11. Installez des scripts pour envoyer des courriels ou pour déclencher l'envoi d'annonces au cas où des failles de sécurité apparaissent.

  12. Après une faille de sécurité essayez de trouver quand, comment et par où la faille est apparue. Quand vous trouvez comment réparer la faille, notez les détails afin de pouvoir les consulter ultérieurement.


13. Récapitulatif

Maintenant concluons en voyant les points principaux permettant d'assurer la sécurité d'un serveur.


13.3. Une fois que cette politique a été approuvée, effectuez un audit de sécurité sur tous les systèmes existants pour faire le bilan des vulnérabilités actuelles et remettez un rapport à ce sujet à la direction.

Ce rapport devra également proposer les méthodes nécessaires pour améliorer la sécurité existante. Liste de vérification rapide :

  • Vulnérabilités des logiciels.

  • Mises à niveau du noyau et vulnérabilités.

  • Recherchez la présence de troyens.

  • Lancez chkrootkit.

  • Vérifiez les ports.

  • Recherchez d'éventuels processus cachés.

  • Utilisez audittools pour vérifier le système.

  • Vérifiez les logs.

  • Vérifiez les exécutables et les RPM.

  • Vérifiez s'il y a des relais de messagerie ouverts.

  • Recherchez les entrées cron malveillantes.

  • Vérifiez les répertoires /dev /tmp /var.

  • Vérifiez si la maintenance des sauvegardes est assurée.

  • Recherchez d'éventuels utilisateurs, groupes, etc. non souhaités sur le système.

  • Recherchez les services inutiles et désactivez les.

  • Localisez les scripts malveillants.

  • Vérifiez les fichiers de log des requêtes DNS.

  • Recherchez les scripts super-utilisateurs et les scripts anonymes.

  • Vérifiez les scripts valides dans /tmp.

  • Utilisez les outils de détection d'intrusion.

  • Vérifiez les performances du système.

  • Vérifiez les performances de la mémoire (lancez memtest).


13.4. Implémentez la politique de sécurité


13.4.2. Implémentez la sécurité de l'hôte

  • Protégez vos systèmes avec des mots de passe

  • Vérifiez les systèmes de fichiers et établissez correctement les permissions pour tous les répertoires et fichiers ainsi que leur appartenance.

    chmod -R 700 /etc/rc.d/init.d/* 

Utilisez rpm -Va pour savoir si un rpm est modifié

  • Appliquez les patchs de sécurité sur les logiciels vulnérables (à savoir patch -p1 < patch file)

  • Enlevez tous les tty et les identifications pour les consoles inutiles en enlevant les entrées dans /etc/securetty.

  • Vérifiez les fichiers de logs du système (par exemple :/var/log/messages, /var/log/secure, etc.)

  • Mettez un mot de passe pour le boot loader (lilo et grub le permettent tous les deux)

  • Contrôlez le système(nagios ou big brother)


13.4.3. Implémentez la sécurité du réseau

  • Enlevez tous les utilisateurs et les groupes non souhaités.

  • Utilisez des scripts de sécurité personnalisés qui avertiront d'une connexion en ssh en tant que super utilisateur ou de la création d'un utilisateur avec l'uid de 0, etc.

  • Exigez des mots de passe de 16 caractères (cela peut être fait en effectuant les changements dans login.def).

  • Désactivez les services non souhaités en utilisant tcpwrapper (les services non souhaités peuvent également être désactivés grâce à xinet.d ou xinetd.Conf).

  • Mettez en place un délai d'attente d'inactivité, pour que les utilisateurs inactifs soient déconnectés après un certain temps.

  • Désactivez tous les accès de programmes en console (par exemple: rm -rf /etc/security/console.app/<service name >.)

  • Autorisez l'option nospoof dans /etc/host.conf.

  • Spécifiez l'ordre dans lequel les noms de domaine doivent être résolus (par exemple: order bind hosts).

  • Bloquez le fichier /etc/services pour que personne ne le modifie.

  • Restreignez l'identification direct du super utilisateur (décommentez l'option PermitRootLogin login dans sshd_config).

  • Restreignez su, pour que seulement les utilisateurs sûr puissent utiliser su. (vous pouvez utiliser pam ou désactiver les permissions des autres pour les exécutables du super utilisateur).

  • Limitez les ressources utilisateurs (en utilisant pam, spécifiez les limites pour chaque utilisateur dans /etc/security/limit.conf).

  • Sécurisez /tmp (montez /tmp avec noexec,nodev, nosuid).

  • Cachez les informations du serveur. Supprimez /etc/issues et /etc/issues.net.

  • Désactivez les fichiers avec les suid et sgid non souhaités (par exemple:

    find -type -perm -04000 -o perm 02000
    .)

    Par exemple: gpasswd, wall, et traceroute

  • Au moyen de iptables, autorisez seulement les pings depuis des emplacements spécifiques (pour que les systèmes de contrôle fonctionnent).

  • Prenez des mesures préventives contre les attaques DOS, les attaques du "ping de la mort", etc.

  • Installez un pare-feu (par exemple apf et iptables) et autorisez seulement le fonctionnement des ports dont la machine a besoin pour ses fonctions normales; bloquez tous les autres ports pour prévenir les mauvais tours.

    Liens: http://rfxnetworks.com/ et http://yolinux.com/TUTORIALS/LinuxTutorialIptablesNetworkGateway.html

  • Installez une détection d'intrusion (par exemple: installez tripwire ou aide).

    Liens: http://www.cs.tut.fi/rammer/aide.html et http://redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/ch-tripwire.html

  • Installez sxid pour garder un oeil sur les scripts suid et sgid.

    Lien: http://linux.cudeso.be/linuxdoc/sxid.php

  • Restreignez le ssh à certaines adresses IP et à des utilisateurs spécifiques (Je suggère une authentification par clef en utilisant un mot de passe).

  • Installez logcheck pour vérifier les logs.

  • Installez tmpwatch pour supprimer les fichiers non utilisés du répertoire /tmp.

  • Installez et paramétrez portsentry puis configurez le pour qu'il utilise iptables pour bloquer les IP.

  • Installez mod_security et mod_dosevasive pour sécuriser apache.

  • Supprimez les fichiers sans utilisateur et sans groupe.

  • Supprimez les fichiers/dossiers non souhaités dans htdocs, et désactivez l'indexation des répertoires.

  • Recherchez les scripts non voulus dans /root, /usr/local, /var/spool/mbox.

  • Installez BFD et FAF pour apporter une sécurité supplémentaire.

  • Désactivez le relais de messagerie ouvert.

  • Remettez un rapport d'état à la direction en donnant le détail de toutes les vulnérabilités découvertes et des réparations.


13.5. Phase de test

Utilisez des utilitaires tels que nessus, et nmap pour effectuer un test de pénetration et pour voir si votre serveur est bien sécurisé. Faites aussi un test de charge.

La sécurité est de la plus haute importance pour un serveur, compromettre la sécurité revient à compromettre le serveur lui même.Par conséquent, il est indispensable que les possesseurs et administrateurs de serveurs comprennent bien cela.

A propos de ce document...

Le document original a été généré en utilisant l'interpréteur LaTeX2HTMLVersion 2002 (1.62)


14. Biographie

Je m'appelle Blessen mais je préfère que l'on m'appelle Bless. Je me suis intéressé à Linux quand j'ai intégré l'entreprise de logiciels, Poornam Info Vision Pvt Ltd connue aussi sous le nom de Bobcares. Il m'ont fait découvrir Linux.

J'ai une licence de technologie en informatique du College of Engineering de Chengannur. J'ai été diplômé en 2001 et je suis entré dans cette société la même année. Dans mon travail, je me suis passionné pour la sécurité sous Linux et la perspective de m'améliorer dans ce domaine me plaît beaucoup.

Mes passe-temps sont la navigation sur Internet, apprendre les nouvelles technologies et aider les autres. Pendant mon temps libre je développe aussi des logiciels open source et l'un d'eux est une version allégée de formmail. Le projet s'appelle "Smart Mail" et est plus sécurisé que formmail.