Назад | Перейти на главную страницу

Ограничить попытки su

Есть ли способ ограничить количество попыток su от пользователя?

Например, злоумышленник попадает в логин пользователя, имеющего доступ su. Неоднократно запускает su, чтобы попытаться получить доступ суперпользователя.

Этот пример будет редким явлением, но все же кажется хорошей идеей добавить защиту от него.

Попытка блокировки:

Я добавил следующие строки в /etc/pam.d/su, чтобы проверить это:

auth        required       pam_faillock.so preauth silent audit deny=1 unlock_time=120
auth        sufficient     pam_unix.so nullok try_first_pass
auth        [default=die]  pam_faillock.so authfail audit deny=1 unlock_time=120
account     required       pam_faillock.so

Однако это никого не блокирует. Я наблюдал через faillock и увидел:

# faillock
user:
When                Type  Source                                           Valid
root:
When                Type  Source                                           Valid
2015-01-30 20:55:05 TTY   pts/1                                                V
2015-01-30 20:55:20 TTY   pts/1                                                V

Тем не менее, эта запись находится под root (так будет ли она заблокировать пользователя root для всех?), И эта запись не влияет на su.

Небольшой поиск в Google приводит к ссылке на эта документация:

Task: Set Maximum Number of Login Failures

    The -m option is allows you to set maximum number of login failures after 
    the account is disabled to specific number called MAX. Selecting MAX value 
    of 0 has the effect of not placing a limit on the number of failed logins.
    The maximum failure count should always be 0 for root to prevent a denial of
    services attack against the system:
    # faillog -M MAX -u username
    # faillog -M 10 -u vivek

и эта документация:

faillog    
faillog -u <user> -r
faillog -u oracle -m 0
/var/log/faillog
faillog -u <user> -m -1

Однако выполнение faillog на CentOS7. В соответствии с этот вопрос и ответ pam_tally2 заменяет faillog команда.

deny=n
    Deny access if tally for this user exceeds n.