суббота, 6 ноября 2010 г.

настройка аудита Linux

Ставим пакет audit, и пускаем сервис service auditd start (предварительно проверив уровни запуска chkconfig --list auditd)

1). Настраиваем наблюдение за конфигами и логами системы аудита
#vim /etc/audit/audit.rules
# наблюдение за конфигруционными файлами
-w /etc/audit/auditd.conf -p wa
-w /etc/audit/audit.rules -p wa
-w /etc/libaudit.conf -p wa
-w /etc/sysconfig/auditd -p wa

 # наблюдение за журнальными файлами
-w /var/log/audit/
-w /var/log/audit/audit.log

где
-w - путь к файлу или директории (маски не позволительны)
-p - эквивалент фильтра perm (пример -F perm=aw, есть еще r (read), x (execute))
wa - w - запись (write), a - смена атрибутов (attribute change)

2). наблюдение за важными системными конфигурационнными файлами

# настройки и задания at
-w /var/spool/at/
-w /etc/at.deny

# задания cron
-w /etc/cron.deny -p wa
-w /etc/cron.d/ -p wa
-w /etc/cron.daily/ -p wa
-w /etc/cron.hourly/ -p wa
-w /etc/cron.monthly/ -p wa
-w /etc/cron.weekly/ -p wa
-w /etc/crontab -p wa
-w /var/spool/cron/root

# файлы паролей и груп
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow

# конфигурационные и журнальные файлы входа в систему
-w /etc/login.defs -p wa
-w /etc/securetty
-w /var/log/faillog
-w /var/log/lastlog

# список и имена хостов
-w /etc/hosts -p wa

# стартовый скрипты демонов
-w /etc/rc.d/init.d
-w /etc/rc.d/init.d/auditd -p wa

# пути поиска библиотек
-w /etc/ld.so.conf -p wa
-w /etc/ld.so.conf.d

# настройки времени
-w /etc/localtime -p wa

# системный переменные
-w /etc/sysctl.conf -p wa

# правила загрузки модулей
-w /etc/modprobe.d/

# модули системы PAM
-w /etc/pam.d

# настройки сервера SSH
-w /etc/ssh/sshd_config

3). настроим наблюдение за всеми системными вызовами, которые могут угрожать безопасности системы (применять в случае особой необходимости - высокая нагрузка на систему аудита и разрастание журналов файлов)

# изменения прав доступа к файлам
-a entry,always -S chmod -S fchmod -S chown -S chown32 -S fchown -S fchown32 -S lchown -S lchown32

-a - добавить правило в список
entry - события происходящие на входе в системный вызов
always - собитие записываетсь в журнал собитий
-S - имя системного вызова

# создание, открытие или изменение размеров файлов
-a entry,always -S crate -S open -S truncate -S truncate64 -S ftruncate -S ftruncate64 -S

# создание и удаление каталогов
-a entry,always -S mkdir -S rmdir

# удаление и создание ссылок
-a entry,always -S unlink -S raname -S link -S symlink

# изменение расширенных атрибутов файлов
-a entry,always -S setxattr
-a entry,always -S lsetxattr
-a entry,always -S fsetxattr
-a entry,always -S removexattr
-a entry,always -S lremovexattr
-a entry,always -S fremovexattr

# создание файлов устройств
-a entry,always -S mknod

# монтирование файловых систем
-a entry,always -S mount -S umount -S umount2

# использование системного вызова ptrace для отладки процессов
-a entry,always -S ptrace

перегружаем демон

4). анализ журнальных файлов /var/log/audit/ нельзя делять редакторами (нечитабельны). Делает утилитами
aureport - общий анализ
aureport -f - список файлов к который происходил доступ
лучше запросить за определенный период (--end не обязателен)
aureport -f --start 09/20/10 13:00 --end 09/20/10 16:00
вместо времени можно использовать
now, recent (10 минут назад), today (начиная с полуночи), yesterday, this-week, this-month, this-year.
aureport -f --summary - какие файлы сколько раз были открыты

60. 06.11.2010 19:13:01 /etc/pam.d/crond 5 yes /usr/sbin/crond -1 11037
5 - номер системного вызова (чтобы видеть имя флаг -i)
yes - успешность или нет системного вызова
(deleted) -
-1 - UID (AUID) - пояснение ниже
11037 - номер события

каждое событие можно проанализировать утилитой
auserch -a номер_события (11037 - в нашем логе)
также можно искать события по именам системных вызовов (ключ -i)
auserch -sc ptrace -i
идентификаторам пользователей
ausearch -ui 500
именам исполняемых файлов
ausearch -x /usr/sbin/crond

имени терминала
ausearch -tm pts/0
именам демонов
ausearch -tm cron
или клуючам поиска
ausearch -k etc_access
можно также использовать временные промежутки

еще флаги aureport для генерации отчетов
-s - системный вызовы
-au - попытки аутентификации
-l - успешные логины
m - модификация экаунта
--failed - отчеты можно получать только для событий, завершившихся неудачно

пользователь может использовать команды su sudo, чтобы менять свой (UID), чтобы это обойти используется Audit UID (AUID), которые закрепляются за пользователем при входе в систему и не меняются, по умолчанию эта функция отключена по этому и -1, активация
/etc/pam.d/login добавить session required pam_loginuid.so
перед строкой (session    include    common-session -  dedian), у меня (rpm based), можно до и после

session    include      system-auth
также нужно проверить или установщик не добавил уже эту строку, ту же операцию проделываем с другими файлами
/etc/pam.d/sshd gdm(kdm или kde) crond atd

источник: Пингвин под колпаком (Аудит системный событий в Linux) (Хакер, 11/142/2010 — 126)
Дополнительная информация
http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
http://linux.die.net/man/7/audit.rules
http://www.xakep.ru/post/54897/?print=true

Комментариев нет:

Отправить комментарий