Mesures, monitoring

La sĂ©curitĂ© des machines Linux (et des autres bien sĂ»r) est un Ă©lĂ©ment important qui ne doit jamais ĂȘtre nĂ©gligĂ©. 
La sĂ©curitĂ© ne s'improvise pas, cette prĂ©occupation doit ĂȘtre prĂ©sente en permanence Ă  l'esprit du responsable/propriĂ©taire d'une machine que ce soit un serveur « professionnel Â» ou une machine « amateur Â» connectĂ©e Ă  Internet.

Premiers Ă©lĂ©ments les « logiciels Â»

Une machine est accessible par deux « entrĂ©es Â» principales :

  • les services offerts
  • les actions des utilisateurs 

Chacun de ces éléments présente des risques spécifiques.

Les services offerts :  

Tout service prĂ©sente deux types de risque :

  • Risque liĂ© au logiciel lui mĂȘme, peut-il « planter Â» en crĂ©ant des dommages.
  • Risque de « bug Â» dans le service permettant Ă  une personne mal intentionnĂ©e d'exĂ©cuter des actions  dommageables.

Toutefois dans la pratique ces deux risques peuvent ĂȘtre confondus. La premiĂšre question 
Ă  se poser   doit ĂȘtre : ce service est-il utile ?  Tout logiciel peut prĂ©senter des risques, il faut donc s'assurer de la rĂ©putation d'un logiciel avant   de l'installer :  

  • Le logiciel est-il activement maintenu ?
  • Existe-t-il une liste des bugs connus ? Est-elle tenue Ă  jour ?
  • Existe-t-il une communautĂ© ? Est-elle active (forum, mailing list) ?
  • Les nouvelles versions et les correctifs sont-ils distribuĂ©es rapidement ? 
  • L'installation est-elle facilitĂ©e par une documentation ? Est-elle automatisĂ©e ?
  • Quels sont les Ă©lĂ©ments de sĂ©curitĂ© Ă  prendre en compte lors de l'installation. Bien penser Ă  ce problĂšme    car il existe encore des sites exploitant un serveur Apache utilisant le compte « root Â» !    

Bien sĂ»r cette recherche est un peu superflue pour certains logiciels trĂšs connus tels Apache ou PostgreSql.   

Il est toujours bon de limiter au plus juste les services actifs sur une machine.

De mĂȘme un « bon Â» paramĂ©trage de chacun des logiciels peut apporter un peu plus de sĂ©curitĂ©.    Il est par exemple sĂ©curisant d'interdire le login « root Â» par ssh.      

Les actions des utilisateurs :

Tout utilisateur peut faire des erreurs, il faut donc limiter les « dĂ©gats Â» que chacun peut causer.    Un premier niveau de sĂ©curitĂ© est d'utiliser des logiciels « sĂ»rs Â», un deuxiĂšme niveau     est de ne permettre Ă  chacun que les actions qu'il est autorisĂ© Ă  faire et les objets auxquels il peut     accĂ©der. La sĂ©curitĂ© « standard Â» de Unix/Linux assurĂ©e par les utilisateurs et groupes permet     dĂ©jĂ  de limiter les dĂ©gĂąts. Un logiciel malicieux n'a (en principe) que les droits de celui qui l'utilise,     vous ne travaillez jamais en « root Â» bien sĂ»r ?          

AccĂšs au systĂšme :

On en arrive Ă  la partie « mot de passe Â» qui est le dernier filtre pour les utilisateurs autorisĂ©s. Des « bons Â» mots de passe sont difficiles Ă  instaurer car la rĂ©sistance est forte et peu de personnes arrivent Ă  se souvenir de mots de passe trop compliquĂ©s (qui peut se souvenir de plusieurs mots de passe tels que «#Zmqp4G5=q1&2 Â» ) qui en plus changent pĂ©riodiquement ? Le risque de stockage des mots de passe sur des supports peu confidentiels (le petit papier collĂ© Ă  cotĂ© de l'Ă©cran) est important... Il est trĂšs difficile de trouver un « bon Â» compromis. 
Il faut toutefois sensibiliser les utilisateurs Ă  l'importance d'utiliser des mots de passe non significatifs suffisamment longs pour ne pas ĂȘtre trouvĂ©s facilement en « brute force Â».         

Ne pas oublier que une grande partie des ennuis provient de sources « intĂ©rieures Â» ( #80%?).    

Internet :       
L'accĂšs Ă  Internet est une belle chose, mais c'est aussi une porte ouverte sur le ( vilain? ) monde extĂ©rieur. Ici il ne faut pas appliquer le principe «tout le monde il est beau, tout le monde il est gentil Â». Il vaut mieux appliquer le principe contraire et n'ouvrir que les accĂšs nĂ©cessaires,  un « bon Â» firewall ne gĂȘne pas les accĂšs lĂ©gitimes mais interdit tous les autres.      
Traduit en rĂšgles « IPTABLES Â» cela veut dire que les politiques par dĂ©faut doivent      impĂ©rativement ĂȘtre « DROP Â» et que les autorisations d'entrĂ©e (rĂšgles INPUT), de transit (rĂšgles FORWARD), et mĂȘme de sortie (rĂšgles OUTPUT) sont accordĂ©es en connaissance de cause.     

 Pour certains ports (par exemple ssh) on peut s'amuser Ă  utiliser un logiciel tel que « knock Â» qui permet d'insĂ©rer dynamiquement une rĂšgle autorisant l'accĂšs Ă  un port spĂ©cifique (SSH par exemple) depuis l'adresse d'appel pour une durĂ©e courte (30 secondes c'est pas mal), cela Ă©vite d'avoir une liste imposante de « failed password Â» dans les logs de la machine puisque le port ssh est filtrĂ© Ă  l'entrĂ©e. 
Un petit outil permettant une analyse rapide du log du firewall se rĂ©alise rapidement Ă  grand coups de     « grep Â» si l'on a soignĂ© les messages de log (-j LOG –log-prefix 'un_message_descriptif').         

Une surveillance des ports ouverts peut ĂȘtre un plus (j'aime bien « lsof -Pn | grep TCP Â» ), un logiciel spĂ©cifique peut ĂȘtre utilisĂ© (voir par exemple « TIGER Â»).     

SystĂšme :     

ÉlĂ©ments physiques :

Pour des machines professionnelles la machine elle mĂȘme doit ĂȘtre sĂ©curisĂ©e physiquement car une bonne maniĂšre de dĂ©rober des donnĂ©es est de « piquer Â» un disque, si on ne peut pas ouvrir le boĂźtier c'est beaucoup moins discret car il faut emporter le boĂźtier (cela est aussi valable pour les postes « clients Â» ou privĂ©s).      

Pour les serveurs l'accĂšs physique aux machines doit ĂȘtre limitĂ© au maximum et le boot sur un support externe doit ĂȘtre impossible (difficile !), par exemple avec un mot de passe BIOS, de mĂȘme le montage de supports externes (qui a dit clef USB?) doit ĂȘtre interdit (on peut s'amuser avec les rĂšgles « UDEV Â»). En effet si l'on peut effectuer une copie d'une partition (ou rĂ©pertoire) sur un support externe la confidentialitĂ© des donnĂ©es est illusoire.

 SĂ©curitĂ© et confidentialitĂ© des donnĂ©es :       

Un premier niveau de confidentialitĂ© doit ĂȘtre assurĂ© par les droits d'accĂšs (utilisateurs et groupes sous Unix/Linux) mais cela n'est pas forcĂ©ment facile Ă  gĂ©rer. Se rappeler quand mĂȘme qu'un utilisateur peut appartenir Ă  plusieurs groupes. 
On peut assurer la confidentialitĂ© des donnĂ©es par l'utilisation d'un encodage (cryptage).     Cela peut ĂȘtre fait au niveau d'un document mais aussi d'une partition cryptĂ©e, mais cela impose quelques contraintes, notamment au niveau des performances. 
Le RAID c'est pas mal pour la sĂ©curitĂ© physique (bien que j'ai vu des disques RAID dĂ©truits et inaccessibles) mais cela n'offre aucune sĂ©curitĂ© contre la destruction ou la perte de donnĂ©es.      

Sauvegardes :       

Les sauvegardes sont une partie importante de la sĂ©curitĂ© des donnĂ©es car elles permettent de rĂ©cupĂ©rer des donnĂ©es dĂ©truites (volontairement ou non). Une base de donnĂ©es sur une partition «vĂ©rolĂ©e Â» n'est en gĂ©nĂ©ral rĂ©cupĂ©rable qu'Ă  partir des sauvegardes et des logs (mis bien sĂ»r en sĂ©curitĂ© sur un autre support ou mĂȘme sur une machine diffĂ©rente). Le prix des disques ayant beaucoup baissĂ© la copie de donnĂ©es sur un autre support (ou mĂȘme une autre machine si l'on en dispose) offre une sauvegarde rapide et fiable. De nombreux logiciels peuvent ĂȘtre utilisĂ©s pour remplir cette fonction (« RSYNC Â», « AMANDA Â» et divers logiciels de backup). Pour AMANDA voir l'article suivant. 
Il vaut mieux pour gĂ©rer cela sans difficultĂ©s « ranger Â» ses donnĂ©es selon leur importance et/ou leur type dans des rĂ©pertoires spĂ©cifiques faciles Ă  identifier.      

Je connais quelqu'un qui a perdu plusieurs annĂ©es de photos numĂ©rique lors du crash d'un disque, avis aux amateurs de photos.              

ÉlĂ©ments logiques :

Dans un ordinateur le « nerf de la guerre Â» c'est les programmes, il faut donc les protĂ©ger et les surveiller, un programme modifiĂ© ou ajoutĂ© peut ĂȘtre dangereux (voir utilisation de « TRIPWIRE Â» (pour la version libre), « AIDE Â» par exemple pour remplir cette fonction bien que leur paramĂ©trage soit parfois dĂ©licat, le moins connu OSSEC, bien que Ă  moitiĂ© libre peut aussi ĂȘtre considĂ©rĂ©). 
Il faut, au minimum, surveiller les rĂ©pertoires « bin Â», « sbin Â» , « lib Â» , une surveillance de « etc Â» n'est pas un luxe car certains paramĂštres et scripts (vous avez dit /etc/init.d ou /etc/hosts.allow ?) peuvent ĂȘtre critiques. 
La mise Ă  jour des programmes doit ĂȘtre effectuĂ©e par des personnes qualifiĂ©es et disposant des droits adĂ©quats (personne ne travaille en permanence comme « root Â» n'est-ce pas ?). 
Si possible les actions doivent ĂȘtre tracĂ©es (« sudo Â» c'est pas mal pour cela). 
Si le systĂšme et les logiciels doivent ĂȘtre tenus Ă  jour, sur une machine professionnelle il vaut mieux rĂ©aliser des tests auparavant afin de s'assurer des incompatibilitĂ©s Ă©ventuelles.  Je me souviens d'une sociĂ©tĂ© ayant installĂ© sans tests et automatiquement une mise Ă  jour du systĂšme qui a bloquĂ© son principal logiciel de gestion 
 avec un coĂ»t non nĂ©gligeable. 
Une surveillance des logs systĂšme est intĂ©ressante (et indispensable dans un environnement professionnel), elle peut ĂȘtre aidĂ©e par l'utilisation de logiciels spĂ©cifiques (voir par exemple « LOGCHECK Â» qui dĂ©grossit bien les choses, encore faut-il parcourir les mails qu'il vous envoie et effectuer les actions correctives nĂ©cessaires).            

Un petit ajout Ă  logcheck :

  • Ajouter le fichier « auth.log Â» dans « /etc/logcheck/logcheck.logfiles Â»
  • CrĂ©er un fichier « passwd Â» dans « /etc/logcheck/violations.d Â» qui ne contient que le mot « password Â», cela gĂ©nĂ©rera dans les rapports une partie spĂ©cifique sur les accĂšs au systĂšme. 
    S'il y a beaucoup d'accĂšs lĂ©gitimes remplacer « password Â» par « Failed password Â»          pour limiter la taille de la liste.         

Un autre aspect de la sĂ©curitĂ©/suretĂ© est liĂ© Ă  la supervision des machines, il s'agit lĂ  de la sĂ©curitĂ© de fonctionnement visant Ă  limiter la durĂ©e des incidents en repĂ©rant rapidement le service fautif.  Un crtain nombre d'outils existent dans le monde OpenSource dont le plus connu est probablement NAGIOS. Un nouveau concurrent "SHINKEN" trĂšs  "Nagios Like" arrive et je vais tenter de le tester.   

Et le petit dernier (testé) COLLECTD qui vous permet de mesurer les performances de vos matériels et logiciels sous forme de classiques graphes RRD, mais la palette des mesures est assez époustouflante.

Pour les outils liés au réseau voir "Securite".