synkazaka.xyz

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. Проверка эффективности

Автоматизация: Ansible role с templates для pam_faillock.conf и apparmor profiles.