4. 8. 2022

Shell - find príkazy na zvýšenie bezpečnosti

V postupoch pre zvýšenie bezpečnosti Linuxu (hardening) je väčšinou aj kontrola práv súborov a adresárov.

# 1.VYHLADANIE SUID A SGID, ULOZENIE MD5SUM - INICIALNY BEH
(find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -ls 2>/dev/null ; \
 find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -print 2>/dev/null | xargs -n 50 md5sum) \
 | sort | tee suid_ref

# 2.POROVNAVACI BEH
(find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -ls 2>/dev/null ; \
 find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -print 2>/dev/null | xargs -n 50 md5sum) \
 | sort | diff suid_ref - | Mail -s 'SU zmenene' admin@yoursite.com

# 3.KONTROLA SO ZLYM POUZIVATELOM ALEBO GRUPOU (Z INEHO SYSTEMU)
find / -path /proc -prune -o -nouser -o -nogroup -ls 2>/dev/null

# 4.ZAPIS PRE VSETKYCH (NAPR ADRESAR TMP)
find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm -2 ! -type l ! -type c -ls 2>/dev/null

# 5.KONTROLA TEMPU NA EXECUTABLE ALEBO SUID, SGID, LINKY
find /tmp -perm /6111 ! -type d -ls 2>/dev/null
find /tmp '(' -name '.??*' -o -name '.[^.]' ')' -type f -ls 2>/dev/null

# 6.KONTROLA NA PODVRHNUTE ZAKLADNE PRIKAZY ls, cd, grep, su, sudo V INYCH CESTACH
find / '(' -path /snap -o -path /bin -o -path /usr ')' -prune -o \
 '(' -name "ls" -o -name "cd" -o -name "grep" -o -name "su" -o -name "sudo" ')' \
 -perm -1 -type f -ls 2>/dev/null

Prvé dve vyhľadávania hľadajú súbory s právami suid/sgid, teda spustením preberajúce práva vlastníka/skupiny súboru. Vypíše ako práva a dátumy, tak aj kontrolnú sumu a uloží do "suid_ref" súboru, voči nemu druhý porovnáva zmeny. Analyzovať tak stačí zmeny.

Ignorujú cesty začínajúce /proc, /sys a /snap, sú systémom generované a posledný je read-only.

3. hľadá súbory s neznámym vlastníkom, stáva sa pri rušení používateľov alebo prenose z iného systému

4. hľadá súbory a adresáre so zápisom pre všetkých, očakávané napr. pre /tmp adresár

5. hľadá suid, sgid a executable práva v /tmp, táto kontrola síce nie je dostatočná (spustiť možno aj súbor bez práv na spustenie), avšak ľahko sa kontroluje - nemá nič vrátiť.

6. podvrhnuté náhrady príkazov pre PATH=. , táto cesta by nemusela byť nastavená, ani pre bežného používateľa, nieto root


Find možno použiť aj na konkrétny súbor na kontrolu práv:

# KONTROLA KONKRETNYCH SUBOROV NA NADMERNE PRAVA

for x in /etc/passwd:f:6133 /etc/shadow:f:6137 /etc/fstab:f:6133; do
 s=`echo $x | cut -d':' -f1`
 t=`echo $x | cut -d':' -f2`
 p=`echo $x | cut -d':' -f3`
 echo -ne "kontrola $s \t ... "
 if [ "`find $s -type $t -perm /$p`" != "" ]; then echo "NOK";
  else echo "OK"; fi
done