Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.

Admin-admin plus-secur


[Modifier cette page] [Page de discussion]

Sécuriser linux.

Les régles de bases pour sécuriser un minimum sa machine.


Cet article va vous permettre de sécuriser un minimum une machine connecté à Internet, avec des régles de bases et de bon sens.

Attention : Il existe des outils puissants pour gérer efficament la sécurité des serveurs Linux comme le filtrage réseau via iptables et des ajouts de sécurité au niveau noyau via grsecurity et SElinux. Ces outils sortent du cadre de cet article, visent plutôt le monde informatique "industriel" que le particulier, et peuvent être utilisés en parallèle des techniques expliquées dans cet article. Ce dernier à plutot pour but de vous donner de "bons reflex" et de finaliser en quelque sorte l'installation de votre système Linux pour éviter de mauvaises suprises en tant qu'utilisateur "particulier" connecter à Internet.


1. Stratégie de mot de passe

Tout d'abord la sécurité passe par des mots de passe utilisateurs.

Il est impensable de laisser des utilisateurs sans mot de passe sur une machine connectée à Internet. Sachez qu'il est trés facile de connaitre votre login ou nom d'utilisateur quand vous êtes connecté à la toile. Si vous n'avez pas protégé vos comptes avec des mots de passes fort (càd que l'on ne peut pas deviner), vous laissez la porte grande ouverte à tout un tas de personnes malveillantes.

Pour être efficace un mot de passe ne doit pas être facilement devinable, il doit être fort.

En effet, sachez qu'il existe des utilitaires de "brute force", c'est à dire des programmes qui essayent automatiquement des mots de passe trés "commun" basé sur des dictionnaires sur n'importe qu'elle machine connectée à Internet. Inutile donc de vous dire qu'un mot de passe du style "toto" ou "medor" ne resistera vraiment pas longtemps à ce type de programme.

Voici des régles de mots de passe que l'on utilise fréquement pour avoir des mots de passes "forts", pour ce protéger de ces types d'attaques:

  • Des mots de passes de 8 caractères minimums.
  • Mélanger des caractères minuscules et majuscules.
  • Au moins un caractére numérique.
  • Au moins un caractére non alphanumérique (caractéres du style !§:/;.,?&"'()=+*....)


Pour vous faciliter la vie, essayez des moyen mémos-techniques pour retenir des mots de passes compliqués, en utilisant par exemple l'écriture "Leet" ( http://fr.wikipedia.org/wiki/Leet_speak ) trés pratique pour générer des mots de passes compliqués:

  • Vous choississez un mot assez long, comme par exemple "autoroute"
  • Vous le transformez en ecriture "l33t" sur certaines lettres: "4u70r0u73"
  • Vous ajoutez une ponctuation à la fin: "4u70r0u73!"

Et voila! Avec un mot simple à retenir, vous avez un mot de passe "fort".

2. Shadowing et compte par défaut

Vérifiez que votre distribution utilise bien le shadowing pour stocker les mots de passes et non pas l'ancien systême. Pour cela vérifiez la présence du fichier /etc/shadow, et que ce fichier ne soit lisible que pour root et le groupe shadow (mode 640). Normalement c'est le cas de toute les distributions récentes, mettez votre distribution à jour si ce n'est pas le cas, ou bien installer le package "shadow".

Tester aussi les comptes par défaut qui sont sans mot de passe dans certaines distributions (normalement ce n'est plus le cas sur les distributions récentes aussi): guest, ftp, uucp, mail, bin, daemon, www-data

Tous ces comptes systêmes doivent être désactiver et ne doivent pas permettre de s'identifier sans mot de passe. Pour vérifier cela, regarder les fichiers suivants:

/etc/passwd

  nomducompte:x:.....

/etc/shadow

  nomducompte:*:.....

Vérifiez la présence des caractéres en x et * aprés les noms des comptes.

3. Stopper les services inutiles et dangereux.

Par défaut plusieurs services réseaux sont installés et démarrés sur les distributions Linux pour faciliter la vie des utilisateurs. Mais par défaut ces services ne sont pas vraiment configurés et certains de ces services peuvent donner accés à des informations personelles au reste du monde.

En sécurité on essaye toujours d'aller au plus simple en respectant l'adage "tout ce qui n'est pas explicitement autorisé est alors interdit". Donc tout service que l'on ne souhaite pas sur sa machine, ou que l'on ne connait pas doit être désactivé. Si on en a besoin un jour alors on le re-activera à ce moment là.

Ces services peuvent être lancés de plusieurs façons:

  • Par des scripts d'init SysVinit (la plupart des distribution sauf la slackware)

Les scripts d'init sont les scripts qui se trouvent dans /etc/init.d. Ils lancent automatiquement le service qui leur est associé dés qu'un lien ayant comme nom:

SXXservice (avec XX allant de 00 à 99 et service le nom du service)

qui se trouvent dans le répertoire du niveau d'init de démarrage du système (répertoire /etc/rcX.d). Par exemple pour démarrer le service samba au niveau d'init 2 et 3, je vais trouver dans les répertoire /etc/rc2.d et /etc/rc3.d un lien pointant vers /etc/init.d/samba qui porte le nom S20samba (le numéro peut varier d'une distribution à l'autre).

Pour désactiver le service il suffit alors de supprimer ce lien et le service ne sera plus démarrer au prochain boot.


  • Par des scripts rc (Slackware)

Le principe est le même, mais les fichiers se trouvent dans /etc/rc.d, et se nomment rc.service. Cette fois ci pas besoin de liens pour activer les services, le simple fait que le fichier soit executable (bit +x) active le service au boot. Donc pour désactiver un service:

 chmod -x /etc/rc.d/rc.service
  • Par le "super serveur" inetd

Le "super serveur" inetd est un programme qui permet de lancer nimporte quel autre programme dés qu'une requête réseau est effectué sur le port sur lequel le service est configuré. La configuration est contenu dans les fichier /etc/inetd.conf et correspond à cette syntaxe:

   <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>

Nous allons pas expliquer ici la configuration de inetd, mais sachez tout simplement que chaques lignes non commentées (ne commençant pas par un #) configure le service <service_name>.

Pour desactiver le service, il suffit alors de commenter la ligne en ajoutant un # au debut. Le service ne sera alors plus activer au prochain redémarrage.

  • Par le "super serveur" xinetd

C'est le même principe que précédement, xinetd est le succésseur de inetd, permettant des configuration plus complétes. Mais le principe reste le même: ecouter le réseau et repondre aux requétes en lançant le programme associé à la requéte. Cette fois ci la configuration est légèrement différente: chaque service à son propre fichier, dans le répertoire /etc/xinetd.d

Cette fois pour désactiver le service il faut alors éditer la configuration de ce dernier dans ce répertoire. Dans le fichier, il faut editer la ligne "disable" de façon à la mettre à "no" de cette façon:

   disable = no

Et le service sera bien désactiver lors du prochain re-démarrage.

4. Filtrer les services

Quand un service est necessaire pour votre travail, essayer autant que possible de limiter son accés aux personnes qui ont en besoin. Bien sur dans le cas d'un service public, comme une site web par exemple, on doit bien sur laissé l'accés du service à tout le monde. Mais par exemple on peu trés bien imaginer un serveur samba limité à certain utilisateur. La plupart du temps ces services permettent de configurer une liste d'adresse IP à qui ils doivent répondre. A vous de bien les configurer.

Pour les services lancés par les "super serveurs" (inetd ou xinetd) les autorisations d'accés se configurent par /etc/hosts.allow et /etc/hosts.deny. La régle est toujours la même, on autorise PERSONNE sauf ceux qui sont exlicitements autorisés, par cette maniére:

On refuse tout le monde avec le fichier /etc/hosts.deny:

  ALL:ALL

Et on autorise le service aux personnes autorisées, via le fichier /etc/hosts.allow:

ALL:LOCAL
ALL:127.0.0.1
imap:88.88.88.88
proftpd:ALL

Dans l'exemple ci-dessus on autorise tout les services à tout ce qui est local (réseau local privé et la machine elle même), le service imap (mail) qu'a la machine 88.88.88.88 et le service proftpd (FTP) à tout le monde. Je vous conseille de lire les nombreuses documentation sur ces deux fichiers d'autorisation présentes sur le Net.


5. Mettre à jour son kernel et ses packages contre les bugs connus

Ce n'est pas parce que nous sommes sous Linux que les "bugs" et autres failles de sécurités n'existent pas, loin de là, mais elles sont généralements comblées trés rapidement aprés leurs découvertes du au fait de leur large diffusion. Mais cela peu aussi devenir un problème, car tout le monde est au courant de la faille et celle-ci devient alors facilement "exploitable" (utilisable) par une personne tierce malveillante.

Vérifier donc réguliérement que votre distribution ne vous propose pas des mises à jour de noyau et de package. Pour cela, utilisez les outils es votre disribution pour faire les mises à jour. Par exemple, pour les distribution debian et *ubuntu les commandes sont:

  apt-get update
  apt-get upgrade

Je vous laisse vérifier les commandes de votre distribution.

6. Vérifier les permissions des fichiers et des programmes.

Eviter au maximum de modifier les permissions sur les fichiers. Ne toucher d'ailleur JAMAIS aux permissions des programmes ou des fichiers de configurations.

Quand vous intaller un nouveau service, faites bien attention que celui-ci soit lancez via un utilisateur dédié pour ce service. Par exemple apache (serveur Web) est souvent lancé en tant qu'utiisateur www-data ou bien apache. Ne changez surtout pas cet utilisateur par root.

N'activez jamais le bit "setuid" sur des programmes dont le propiétaire est root. Préférez alors configurer le service sudo qui permet à un utilisateur de lancez un programme en tant de root de maniére sécurisé (voir la documentation de sudo).


7. Bloquer les logins dangereux des services.

Si vous devez fournir certains services comme le FTP, telnet... il vaut mieux bloquer certains logins dangereux. Si vous devez absolument permettre aux utilisateurs d'utiliser le FTP, bloquez la connexion des comptes critiques comme le root, comptes systèmes, même si cela à déjà été bloqué par le /etc/passwd.

Pour le FTP, éditez le fichier
/etc/ftpusers<code> et incluez les comptes dont vous '''interdisez l'accès''':

<code multi>
root
uucp
bin
mail


8. Conclusion.

Cet article essaye de vous inculquer des régles de bonne conduite vis à vis de la sécurité. Bien que je l'ai repetté plusieurs fois dans l'article, la régle de base à respecter en sécurité est:

"Tout ce qui n'est pas explicitement autoriser doit être interdit" qui peut se traduire aussi par "On interdit tout, puis au autorise explicitement au cas par cas"

Quand vous installez un service ou une application, vérifiez toujours sa configuration, a qui donne t'elle accés et à quoi.

Copyright

Copyright © Serge Tchesmeli

Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la Licence pour documents libres, Version 1.1 publiée par la La Guilde des Doctorants. Pour plus d'informations consulter la LDL sur le site de La Guilde des Doctorants.
Ajouter un commentaire|Ajouter une section