User Tools

Site Tools


informatique:linux:securite_sous_linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

informatique:linux:securite_sous_linux [2013/10/14 22:44] (current)
Line 1: Line 1:
 +{{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]]
informatique/linux/securite_sous_linux.txt · Last modified: 2013/10/14 22:44 (external edit)