Table of Contents
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=
ouother=
).
- 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