🌟 SUID-файлы в Linux - это потенциальная зона риска. Если злоумышленник сможет изменить или подменить такой бинарник, он может получить права root. Поэтому важно не только найти такие файлы, но и отслеживать их изменения.
SUID (Set User ID) - бит прав, при котором программа выполняется с правами владельца файла, а не вызывающего пользователя.
Типичный пример:
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 /usr/bin/passwd
SUID-бит (s вместо x) на позиции владельца.
1️⃣Поиск всех SUID-файлов в системе
find / -perm -4000 -type f 2>/dev/null
Добавим форматированный вывод с размером и датой:
find / -perm -4000 -type f -exec ls -lh {} \; 2>/dev/null
2️⃣ Контроль изменений через контрольные суммы. Создадим базовый снимок:
find / -perm -4000 -type f -exec sha256sum {} \; 2>/dev/null > /var/log/suid_baseline.sha
А теперь проверим изменения:
sha256sum -c /var/log/suid_baseline.sha 2>/dev/null | grep -v ': OK'
Все, что отличается от baseline, будет отображено.
▪️ Добавить cron-задачу:
@daily root /usr/local/bin/suid_check.sh >> /var/log/suid_monitor.log
И сам suid_check.sh:
#!/bin/bash
BASELINE="/var/log/suid_baseline.sha"
TMP="/tmp/suid_check.$$"
find / -perm -4000 -type f -exec sha256sum {} \; 2>/dev/null > "$TMP"
diff -u "$BASELINE" "$TMP" && cp "$TMP" "$BASELINE"
rm "$TMP"
BashTex 📱 #bash #security