User Tools

Site Tools


informatique:linux:securite_sous_linux

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

informatique/linux/securite_sous_linux.txt · Last modified: 2013/10/14 20:44 by 127.0.0.1