{{tag>sécurité linux}} ======Sécurité sous Linux====== //(Résumé d'une partie du bouquin **Sécurité sous Linux** de Aron Hsiao, ed. Campus Press)// =====Configuration de LILO===== Lilo (Linux LOader) est le programme qui lance l'image de Linux, et qui se place dans le MBR. * au prompt : ''LILO boot: linux init=/bin/bash'' permet de lancer le programme **bash** à la place d'**init**, et donc de donner un sheel root au pécore moyen de base sans authentification aucune. * le fichier de config est **/etc/lilo.conf** : il contient une section globale (en premier) et une 2nde section contenant les images à loader (qui commence au mot clé ''image='' ou ''other=''). * lilo peut demander un mot de passe pour se charger grâce au mot-clé **password**. S'il est placé dans la section globale il sera demander pour loader n'importe quelle image ; s'il est placé après il sera demandé pour loader l'image qu'il suit. ''password= "A9dl00!"'' le mot de passe est en clair dans le fichier de config * **restricted** permet à une image protégée par mot de passe d'être amorcée sans mot de passe à moins que des arguments en ligne de commande ne soient envoyés au noyau. A l'instar de //password//, **restricted** peut se mettre dans les 2 sections pour avoir une portée différente. * **prompt** permet de proposer une invite pour passer des paramètres au noyau (''LILO boot: '') * **timeout** permet de définir le temps d'attente avant un boot automatique sur l'image par défaut * pour prendre en compte les modification, ou recharger lilo dans le MBR : ''# /sbin/lilo'' * sécuriser le fichier de config pour interdire la lecture du fichier (souvenons-nous que le mot de passe est en clair dedans !) : # chmod 600 /etc/lilo.conf =====Les niveaux d'exécution===== //Debian GNU/Linux utilise des runlevels (runlevels) légèrement différents de ceux-ci, qui sont documentés dans **/etc/inittab**// * 0 : arrêt système, tous les processus sont arrêtés * 1 : mode mono-utilisateur (argument ''single'' au boot). Aucun service n'est lancé sauf le réseau. Seul root peut se loggué, et uniquement en console. * 2 : mode multi-utilisateur minimal. Seuls quelques services sont démarrés. * 3 : mode multi-utilisateur complet (normal). * 4 : //non utilisé ou spécifié par l'utilisateur// * 5 : mode multi-utilisateur avec serveur X (système amorcé en X11R6) * 6 : reboot = tous les processus sont arrêtés, la machine redémarre * **/etc/securetty** contient le liste des terminaux qui acceptent un login root * **$HOME/.bash_logout** est lancé lorsqu'un utilisateur se déloggue. Ca peut être interessant de rajouter ''/usr/bin/clear'' à la fin. Ce fichier est issu de **/etc/skel/.bash_logout** lors de la création du compte utilisateur. * **/etc/shells** contient le liste des shells proposés à l'utilisateur quand il fait la commande ''chsh'' =====Le fichier /etc/inittab===== Configure le service //init//, à l'origine de tous les autres processus lancéssur le système * on règle le runlevel par défaut au démarrage id:5:initdefault: //on démarre ici en niveau d'exécution 5 (graphique) * on peut désactiver la combinaison de touches ''Ctrl+Alt+Suppr'' qui sert à redémarrer en commentant cette ligne : ca:12345:ctrlaltdel:/bin/shutdown -r now * le fichier contient des lignes genre : l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 (..) Cela indique les scripts lancés pour chaque //runlevel// ainsi que les paramètres envoyés. Par ex. le dossier **/etc/rc3.d** contient des liens symboliques vers le fichiers de scripts qui seront chargés lors d'un runlevel 3. * activer les **password shadow** : les mots de passe de chaque utilisateur ne sont plus stockés dans **/etc/passwd** (lisible pour tous) mais sont hashés (md5 le plus souvent) dans **/etc/shadow** qui lui n'est lisible que par root. =====Protections réseau===== //D'après http://www.dedibox-news.com/doku.php?id=distrib:debian:securiser_sa_debian // Se protéger contre les //Smurf Attack// : # echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts Éviter le //source routing// : # echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route Se protéger des attaques de type //Syn Flood// : # echo "1" > /proc/sys/net/ipv4/tcp_syncookies # echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog # echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter Désactivez l’autorisation des redirections ICMP: # echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects Éviter le log des paquets ICMP erroné: # echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses Active le logging des paquets aux adresses sources falsifiées ou non routables : # echo "1" > /proc/sys/net/ipv4/conf/all/log_martians =====Interdire l'exécution sur /tmp===== Ça peut être une faille de sécurité de laisser le droit d'exécution sur ''/tmp'' ; cependant certains logiciels peuvent utiliser cet espace pour déposer des fichiers temporaires, de session ou autre (ex : mySQL). Du coup il faut faire attention aux dommages collatéraux liés à cette manipulation. L'idée c'est de le monter avec des droits restreints : pour cela, il faut monter la partition ainsi (dans la ''fstab'') : /dev/sda3 /tmp ext3 noexec,nosuid 0 2 Si vous n'avez pas de partition spécifique pour ''/tmp'', on peut l'émuler via un fichier : # on créer un fichier de 40 Mo cd /root dd if=/dev/zero of=/root/tmpMnt bs=1024 count=40000 mkfs.ext3 -F /root/tmpMnt # on le monte dans /tmp mv /tmp /tmp.backup mkdir /tmp mount -o loop,noexec,nosuid,rw /root/tmpMnt /tmp chmod 0777 /tmp # on modifie la fstab comme vu plus haut if ! grep -qai tmpMnt /etc/fstab ; then echo "/root/tmpMnt /tmp ext3 loop,noexec,nosuid,rw 0 0" >> /etc/fstab fi # on monte toutes les entrées de la fstab (dont /tmp) mount -a # vérification que ça marche cp /bin/ls /tmp/ /tmp/ls =====Liens===== * [[http://www.cert.org/ CERT]] * [[http://www.cri.uhp-nancy.fr/secinfo/index.php?id_rub=7 CERT Renater]]