Misfu, le site des cours Informatique/Bureautique/Mathematiques


 

Notion de sécurité sous Linux


Le but de cette série d'articles n'est pas de vous submerger de détails, de scripts ou de méthodes de configuration pour vos machines, mais de vous apporter un minimum d'aide à la compréhension de ce qu'est la sécurité et de vous indiquer quelles sont les bases indispensables à connaître avant d'oser se connecter.


Ah bon, vous êtes déjà connectés ?

Comparé au logiciel propriétaire, l'intérêt du logiciel libre au niveau de la sécurité est double :


D'une part les sources des applications composants la distribution que vous avez choisie (ou construite) sont disponibles et tout un chacun, avec un minimum de connaissances, est capable de vérifier l'intégrité des applications qu'il installe ou du moins de demander l'avis de la communauté (par l'intermédiaire des forums, newsgroups, sites communautaires,...) ;

 


D'autre part, grâce à la communauté du logiciel libre très active, qui lorsqu'elle détecte un trou de sécurité dans une application, la réparera, cela pouvant être fait dans la semaine qui suit, voire dans certains cas, dans la journée, chose illusoire dans le monde du logiciel propriétaire (sauf peut-être pour les anti-virus, mais là, en général il est déjà trop tard).

 


Et l'on pourrait rajouter aussi que sous Linux ou xBSD, les virus n'existent pas, et même si cela devait arriver un jour, ils ne toucheraient que l'utilisateur qui les attrape et non pas l'ensemble de la machine, ce qui n'est pas le cas sur les systèmes propriétaires (sauf Mac OS X, s'il est bien configuré, mais cela est normal, il est basé sur Unix).


Le But du Pirate


Le but du pirate sera de prendre le contrôle de votre machine ou de votre ferme de machines.


Dans tous les cas, son but ultime et avoué sera de devenir calife à la place du calife, c'est-à-dire l'administrateur ('root') ou pour simplifier d'avoir le niveau de droits le plus élévé possible pour lui permettre d'écrire, de lire, d'exécuter et d'effacer ce qui se trouve sur vos disques (ou tout autre mémoire de masse)


Une fois en place, l'utilisation qu'il peut faire de votre ou de vos machines est quasi-illimitée...


La première Erreur


La première erreur, que font beaucoup de gens connectés à Internet, et plus particulierement les particuliers (vous et moi à la maison) par opposition aux entreprises qui se doivent d'être conscientes de cette problématique, est de se dire que votre/vos machine(s) ne présente(nt) aucun intérêt pour le Pirate.


Cela est sans doute vrai pour quelqu'un qui se connecte avec un modem 56K, mais ne l'est déjà plus pour les 'heureux' bénéficiaires d'un abonnement au cable ou à l'adsl, alors prudence !


Introduction


Linux, mais aussi les différents BSD et tous les systèmes Unix en général sont des systèmes multi-utilisateurs. Il est ainsi possible d'être connecté à plusieurs sur une seule et même machine. Cette possibilité nous met en face d'un problème qui n'était alors que très peu connu des utilisateurs.


il existe trois types d'utilisateurs :

l'utilisateur ROOT (l'administrateur, le capitaine du navire) ;
l'utilisateur Système (nobody, lp, ...);
l'utilisateur Lambda (vous et moi).


La notion de Groupe


Chaque utilisateur appartient à un groupe qui peut être constitué de lui-même ou d'un nombre X d'utilisateurs.


L'avantage du groupe est évident pour l'administrateur, il peut ainsi définir un certain nombre de règles une fois pour toutes.


Pour un groupe, on peut ainsi définir des droits particuliers, permettant ainsi aux utilisateurs qui le composent de partager des documents, ou d'exécuter, de lire ou d'effacer certains fichiers. Mais aussi de limiter l'utilisation qu'ils peuvent faire de votre/vos machine(s), par la gestion des quotas (espace disque alloué par utilisateur) ainsi que par la limitation des ressources systèmes (temps de calcul).


Quand vous créerez vos groupes, ne donnez qu'un minimum de privilèges à vos utilisateurs, car il est bien plus facile de donner que de reprendre, il en est de même pour les autorisations et les facilités que vous allez allouer à vos utilisateurs...


Avant de rendre votre machine accessible depuis l'Internet il est donc souhaitable que celle-ci soit configurée convenablement ou du moins que vous possédiez un routeur ou pare-feu physique (style cisco) ou un client léger (style OpenBrick) ou tout simplement un Pc en amont de votre poste de travail.

L'une des premières choses à faire sera donc de limiter les possibilités d'intrusions dans vos machines par le pirate [1].


Vous allez donc, avant d'installer des firewalls et scanners d'insécurités, devoir limiter les pouvoirs d'exécution des applicatifs système, de certains services et des utilisateurs. En effet, et cela est regrettable, mais nombre de distributions (y compris parmi les plus grandes) sont encores trop laxistes dans les droits qu'elles attribuent dans leurs applications et dans les commandes de base du système.


Ainsi les SUID (SetUserID) et SGID(SetGroupID) sont généralement une source non négligeable de trous de sécurité potentiels. En effet s'ils ne sont pas bien définis ou si l'applicatif est mal programmé (ce qui peut toujours arriver), ces programmes peuvent rapidement permettre à une personne mal intentionnée d'en modifier les pouvoirs et par conséquent récupérer des droits auxquels elle n'aurait jamais dû avoir accès. [2]


Les Scanners



Il existe de nombreux scanners dont les plus célèbres sont sans doute nessus , snort et nmap. Ces magnifiques logiciels vont vous permettre d'identifier les trous éventuels ainsi que les tentatives d'intrusions sur vos machines.


Ce sont ces mêmes outils qui sont utilisés par les pirates, leur connaissance, ainsi que le passage au crible de vos serveurs avant que ceux-ci soient disponibles ou vus de tous, est plus que nécessaire.


Le FireWalling ou Pare-Feu


Le Pare-Feu permet en théorie de placer un mur infranchissable entre vous et l'extérieur. Grâce à 'ipchains' sur les versions 2.2.x ou 'iptables' depuis les versions 2.4.x du noyau vous pourrez gérer un minimum de sécurité sur vos machines.


Il existe deux types de Pare-Feu :


Les serveurs proxy applicatifs (analyse du contenu)
Les Pare-Feux filtreurs de paquets (filtrage des paquets au niveau de la source ou de leurs destination)


Chacun correspondant à un besoin particulier qui doit être défini selon votre type d'utilisation.

Mais un bon Pare-Feu n'est pas tout, un contrôle d'accès est aussi nécessaire. Ainsi inetd en son temps (mais il est toujours présent sur certaines distributions) et xinetd aujourd'hui vous permettront de gérer au mieux les connexions à vos machines, et ainsi d'éviter, ou du moins de réduire l'effet des 'Denial of Service' (dénis de service).


Gardez quand même à l'esprit que la sécurité totale n'existe pas, et que vous ne pouvez que fermer un maximum de portes, il s'en trouvera toujours un pour arriver à la franchir. Toutefois en respectant un minimum de règles (dont nous avons fait état lors de ces deux articles) vous devriez réduire le nombre d'attaques au minimum.


Mais la sécurité demande une veille journalière, et dans de trop nombreuses sociétés celle-ci est souvent négligée causant les effets que l'on a pu rencontrer ces derniers temps (le vers s'attaquant aux serveurs SQL de Microsoft SQLslammer, n'est est que le dernier exemple, même Microsoft s'y est laissé prendre, et pourtant ils avaient publié un correctif il y a plus de six mois...) mais cela est un autre débat.


[1] N'oubliez pas que celui-ci peut aussi se trouver dans vos murs, donc derrière les protections que vous aurez pu placer derrière votre ligne ADSL ou votre ligne spécialisée.

[2] Prenez peur grâce à la commande find et découvrez les applicatifs à modifier (en évitant toutefois les commandes 'sudo' et/ou 'su'), tapez par exemple : find / antislash (-perm -02000 -o -perm -04000 antislash) -ls