La sécurité en informatique est un domaine très vaste. Elle est devenue essentielle ces dernières années, y compris pour les simples particuliers comme vous et moi. C'est en grande partie Internet et l'utilisation qui en est faite par des gens peux scrupuleux, qui sont à l'origine de problèmes de sécurité sur les ordinateurs.
Les principaux risques encourrus sont les attaques de pirates et la propagation des virus.
Pour les virus, nous sommes quasiment à l'abris en utilisant Linux. Ces derniers sont très rares et, la plupart du temps, ne font quasiment aucun dégat, car ils ne peuvent utiliser que les droits de l'utilisateur qui les ont lancé. Donc si vous n'êtes pas root, il n'y a pas grand chose à craindre pour votre système.
Pour les attaques de pirates, nous ne sommes pas à l'abris, même si un système sous Linux est mieux sécurisé qu'un système sous Windows. Dans ce cas, il y a plusieurs précautions à prendre :
S'il n'y à qu'une chose à retenir de tout cet article sur la sécurité, c'est qu'aucun système n'est jamais sécurisé à 100%. Un pirate chevronné finira probablement par trouver une faille, et une panne matérielle n'est pas non plus à exclure. Il est donc primordial de toujours sauvegarder ses données importantes sur un support externe inaccessible au pirate et indépendant des pannes matérielles de votre système tel que : cdrom, dvdrom, disquette, lecteur de bande, disque dur externe, etc.
Ici, nous allons parler de la sécurité à l'installation (partitionnement du disque dur) et je donnerai un script de configuration du firewall sans rentrer dans tous les détails obscures du firewall.
Pour savoir comment fermer les ports ip de vos applications et pour connaitre tous les rouages du firewall intégré de Linux (NetFilter/IpTables), je vous renvoie vers l'excellent site d'Olivier Allard-Jacquin : http://olivieraj.free.fr/fr/linux/information/firewall/.
Pour des raisons évidentes, la partition racine / ne doit jamais se trouver pleine. Sinon, le système va être complètement bloqué et risque même de ne plus pouvoir redémarrer.
Les causes d'un remplissage du disque dur sont diverses. Les principales causes sont :
C'est très simple. Il faut, dès l'installation de Linux, créer des partitions pour les répertoires sensibles. Ainsi, ces répertoires auront une taille bien définie, qu'ils ne pouront jamais dépasser et qui sera complètement indépendante de la taille des autres répertoires. Donc si un pirate rempli le répertoire /tmp, seule la partition le contenant sera pleine, et la racine / sera quant à elle parfaitement intacte. Le système ne plantera pas.
Bien sûr, si le pirate arrive à prendre le contrôle de la partition racine, notre protection ne sera plus efficace. Mais il est beaucoup plus dur pour un pirate d'accéder à la racine du disque dur, que de saturer l'ordinateur de requêtes. Et puis nous verons au chapitre suivant comment limiter encore les risques en mettant en place un firewall.
Comme nous venons de le voir, les répertoires sensibles sont /var, /tmp et /home. Il nous faut donc créer une partition pour chacun d'eux.
Pour fonctionner, Linux a aussi besoin bien évidement d'une partition racine "/".
Vous pourrez aussi avoir besoin d'une partition de démarrage /boot. En fait, cela dépend de votre gestionnaire de démarrage (bootloader), le plus souvent il s'agit de LILO ou Grub. Dans les anciennes versions de LILO, il lui était impossible d'aller au delà du 1024 ème cylindre du disque dur. Donc sur les grands disques durs, il lui était impossible de charger le noyau de Linux au démarrage, la seule solution étant de créer une partition /boot au début du disque. Avec les dernières versions le problème est corrigé. Avec Grub, pas de problème. Pour savoir si vous devez ou non en créer une, je vous renvoie vers la documentation de votre distribution. En cas de doute, créez-en une : ça ne coute rien, et beaucoup de personnes continuent à le faire par habitude (moi y compris :o). Cette partition ne nécessite que très peu de place sur le disque.
L'utilisation d'une partition swap est fortement conseillée, elle est même obligatoire à l'installation de nombreuses distributions Linux. Cette partition est utilisée uniquement par le système. Pour schématiser, elle sert d'extention à la RAM lorsque celle-ci est pleine. Elle utilise un système de fichier particulier, et ne peut exister que sous forme de partition ; elle ne porte d'ailleurs pas de nom de répertoire, et on ne peut pas voir son contenu.
La taille conseillée du swap est de une à deux fois la taille de votre RAM. Si vous avez suffisement d'espace disque, mieux vaut mettre deux fois votre RAM, surtout si vous utilisez des programmes gros consommateurs de RAM. Si vous êtes vraiment limité par l'espace disque, une fois la taille de la RAM devrait suffir. C'est à vous de voir en fonction de votre utilisation.
Bon, arrêtons là les bavardages et passons aux choses concrètes. Voici donc mes conseils de partitionnement d'un disque dur de 10 Go. A vous de l'adapter selon vos besoins et selon la taille de votre disque, bien entendu.
Partition | Espace conseillé | Notes |
---|---|---|
/boot | 32 Mo | 16 à 32 Mo maxi, quelquesoit la taille de votre disque dur |
swap | 512 Mo | 1 à 2 fois la RAM (conseillé) |
/ | 4 064 Mo | |
/tmp | 512 Mo | |
/var | 1 024 Mo | |
/home | 4 096 Mo |
Le but d'un firewall est de filter les données transitant entre Internet et votre ordinateur, et de ne laisser passer que le strict nécessaire. Ainsi, on limite les possibilités pour un pirate de vous attaquer.
Linux possède, depuis les versions 2.4 du noyau, un firewall directement intégré au noyau : netfilter. Celui-ci se configure à l'aide du programme iptables. C'est un firewall très puissant dôté de fonctionnalités avancées.
Mon but n'est pas ici de vous expliquer en détail le fonctionnement de Netfilter/Iptables, d'autres le font beaucoup mieux que moi, comme par exemple Olivier Allard-Jacquin sur son excellent site : http://olivieraj.free.fr/fr/linux/information/firewall/. Je vais simplement vous donner des exemples de scripts tout faits, vous permettant de protéger simplement votre ordinateur, en vous expliquant au fur et à mesure ce qu'on fait.
Voici les différentes étapes pour construire votre firewall.
Note : dans les lignes qui suivent, on considère que le modem correspond à l'interface ppp0. Si ce n'est pas le cas, il suffit de remplacer ppp0 par le nom de votre modem.
Si vous préférez ouvrir tous les ports, pour être sûr de pouvoir utiliser toutes vos applications sans gêne (peer to peer, messagerie ou autres applis ouvrant un port tcp), remplacez les lignes ci-dessus par celles qui suivent. Attention toutefois, vous ouvrez plus de ports, donc vous diminuez la sécurité du système.
Vous pouvez voir la liste des protocoles et ports associés dans le fichier /etc/services.
Note : l'option -m state permet de surveiller le sens d'établissement des connexions. C'est à dire qu'ici on peut établir une nouvelle connexion vers internet, mais internet ne peut pas ouvrir de nouvelle connexion, il ne peut que y répondre. C'est très important, car un pirate ne pourra pas établir de connexion sur votre ordinateur, même s'il connait votre adresse ip. C'est un des points les plus important.
Cette partie est facultative. Elle est utile si vous désirez faire des pings vers l'internet. Dans le cas contraire, ne mettez pas ces lignes, elles ne vous serviront à rien.
Note : dans les lignes qui suivent, on considère que le modem correspond à l'interface ppp0, que la carte réseau qui relie votre firewall au réseau privé est eth0, et que votre réseau privé est du type 192.168.0.x. Dans le cas contraire il suffira de modifier les parties concernées.
Pour rendre le script exécutable, il faut faire chmod +x nom-du-script.
Ensuite, pour le lancer, il suffit de faire ./nom-du-script.
Il ne vous reste plus qu'à l'exécuter à chaque fois que vous vous connectez à Internet.