Autour du kernel, nous utilisons tous une foule de programmes pour récupérer les informations et utiliser notre système du mieux possible. Sous linux, toutes ces informations sont accessibles via /proc. Un peu de curiosité vous montrera les bijoux techniques qu’il est possible de récupérer.
Processus
/proc permet de connaitre tous les processus qui tournent sur la machine. Chaque chiffre correspond au PID de processus, à l’intérieur se trouvent toutes les informations concernant le programme.
- exe: le nom de l’executable
- cmdline: les paramètres de lancement
- root: le chroot du programme
- environ: les variables d’environnement valables pour le programme.
- fd/ la liste des fichiers ouverts.
- maps: les liens avec les bibliothèques
- status: informations Ram, User,…
Si vous supprimez des fichiers en cours d’utilisation, il est possible de copier le fichier qui est dans /proc/$PID/fd/[numero].
cp /proc/1/exe /tmp/init.recup
/!\ certains root-kit modifient la libproc et peuvent se masquer. Pour faire cela avec /proc il faut recompiler et rebooter le kernel: Ce qui est moins évident à faire.
Informations Kernel
Il n’y a pas que les processus mais tout ce qui se passe en “live” sur votre machine.
- la ram: /proc/meminfo (used,free, swap, commited…)
- le cpu: /proc/cpuinfo (capacité de traitement, nombre,…)
- le réseau: /proc/dev/net
- le kernel: /proc/kcore (gdb /boot/vmlinuz /proc/kcore)
- l’activité: /proc/stat
- les disques: /proc/diskstats
La documentation se trouve dans les sources du kernel et si le coeur vous en dit vous pouvez aller faire un tour dans les fichiers.c pour créer ou adapter à vos besoins.
Ecriture
En écrivant dans certains fichiers, il est possible de régler les paramètres du kernel plus ou moins complexes… Pour ma part j’utilise davantage ceux qui concernent le réseau (nf_conntrack_max, ip_forward …). Mais il y a shmall (pour la mémoire partagée), les sémaphores, swappiness … group process …
Dominique DERRIER
Ref
file:///usr/src/linux/Documentation/filesystems/proc.txt
file:///usr/src/linux/Documentation/cgroups/cgroups.txt
Playing with /proc
1. “ps axh | wc -l” should match “ls -d /proc/[0-9]* | wc -l”
This is one of the techniques used to find hidden processes that are deliberately hidden by a compromised “ps” binary.
2. “zcat /proc/config.gz”
The current configuration of your running kernel in the format /usr/src/linux/.config. This is saved in your running kernel and automatically generated at /proc mount time if your kernel is compiled with CONFIG_IKCONFIG and CONFIG_IKCONFIG_PROC
3. Mounting /proc at other mount points is easy with “mount -t proc none /foo/bar”
4. Quick ICMP echo ignore from ALL
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Most network magic happens by tuning parameters in /proc/sys/net/ipv4/
Happy exploring and don’t break your system 🙂
nie article dd.
😀 Nice tips ajay 😀