Zadanie:
Ako skryť zoznam procesov (bežiacich v Linuxe – príkaz ps či ls) pred ostatnými užívateľmi. Ideálne tak, aby každý prihlásený užívateľ mohol vidieť maximálne len svoj vlastný zoznam a nemohol vidieť spustené procesy ostatných užívateľov (vrátane tých, systémových procesov).
Riešenie:
Od verzie Linux kernelu 3.3 sú k dispozícií dve nové voľby v /proc pseudo-filesystéme. Jednou z nich je voľba/options – hidepid.
Definuje koľko informácií o procesoch je dostupných pre cudzích užívateľov (non-owners).
- hidepid=0 – Default. Všetcia vidia všetko. Štandard v každom systéme — netreba definovať a ani sa štandardne v systéme neobjavuje.
- hidepid=1 – Užívateľia nemôžu pristúpiť k žiadnému procesu v /proc// adresáry, okrem svojich vlastných. Citlivé súbory ako sú napríklad / proc / [pid] / cmdline a / proc / [pid] / status sú chránené pred inými používateľmi. To znemožňuje zistiť, či používateľ používa špecifický program (pokiaľ sa program samotný inak neodhaľuje svojím správaním).
- hidepid=2 – Je to prakticky hidepid=1 plus všetky /proc/PID/ budú pre ostatných neviditeľné. Asi najbezpečnejšia voľba, sťažuje to zbieranie informácií o bežiacich procesoch každému útočníkovi vrátane démonov s elevated právami, či inými programami. Môže spôsobiť v zriedkavých prípadoch aj problémy niektorým programom ktoré používajú elevated práva či sa púštajú so svojím vlastním uid/gid (ako sú rôzne programy typu Nagios, Munin), hoc ja sám som problém nezaznamenal.
Aktivácia na bežiacom systéme (aplikuje sa na /proc partíciu):
# mount -o remount,rw,hidepid=2 /proc
Aktivácia vždy pri štarte systému:
# vim /etc/fstab
proc /proc proc defaults,hidepid=2 0 0
Ďalším parametrom, ktorý sa zvykne zadávať za hidepid je voľba gid, ktorá potláča hidepid pre užívateľov (skupiny) uvedenej v gid. T.z., že v prípade hidepid=2 budú informácie o procesoch schované pre všetkých okrem tých, ktorý patria do skupiny uvedenej v gid. Príklad použitia:
proc /proc proc nosuid,nodev,noexec,hidepid=2,gid=wheel 0 0
alebo číselné vyjadrenie danej skupiny:
proc /proc proc nosuid,nodev,noexec,hidepid=2,gid=1005 0 0