Hardening Linux: PAM, SELinux и AppArmor
Комплексная защита Ubuntu/Debian и CentOS/RHEL от brute-force, privilege escalation и policy violations. Проверено на production-серверах.
1. PAM + faillock: Защита от brute-force
Блокировка после 5 неудачных попыток на 15 минут. Редактируем /etc/pam.d/common-auth (Ubuntu/Debian):
# /etc/pam.d/common-auth (Ubuntu/Debian) auth [success=1 default=ignore] pam_unix.so nullok_secure auth requisite pam_faillock.so preauth silent audit deny=5 unlock_time=900 auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900 auth sufficient pam_localuser.so auth sufficient pam_sss.so forward_pass auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900 auth sufficient pam_sss.so forward_pass
Для CentOS: /etc/pam.d/system-auth. Проверка:
faillock --user root faillock --user root --reset # Разблокировка
2. SELinux (CentOS/RHEL/Fedora)
Перевод в enforcing mode и аудит логов.
# Статус sestatus # Временно enforcing setenforce 1 # Политика из логов ausearch -m avc -ts recent | audit2allow -M mynginx semodule -i mynginx.pp # Разрешения setsebool -P httpd_can_network_connect 1
3. AppArmor (Ubuntu/Debian)
Профили для nginx/ssh/mysql.
# Статус
sudo aa-status
# Enforce профиль
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
# Пример /etc/apparmor.d/usr.sbin.nginx
/usr/sbin/nginx {
#include <tunables/global>
/etc/nginx/** r,
/var/www/** r,
/var/log/nginx/** w,
}
4. Проверка эффективности
systemd-analyze security usermode=unrestricted— метрики безопасностиaa-logprof— интерактивная настройка AppArmorjournalctl -u ssh | grep "Failed password"— атаки
Автоматизация: Ansible role с templates для pam_faillock.conf и apparmor profiles.