pam_tally2 не учитывает неудачи по ssh

pam_tally2 не учитывает неудачи по ssh

Я добавил строку

auth required pam_tally2.so deny=3 unlock_time=180

в мой /etc/pam.d/loginфайл, и это прекрасно и замечательно в tty, после 3 попыток testuserблокируется.

Однако эта же строка /etc/pam.d/sshdне производит никакого эффекта.

xieerqi:$ ssh testuser@localhost
Password: 
Password: 
Password: 
Permission denied (publickey,keyboard-interactive).

xieerqi:$ ssh testuser@localhost                                                                                           
Password: 
Password: 
Password: 
Permission denied (publickey,keyboard-interactive).

Как видите, после 3 неудачных попыток пользователь все еще может попытаться ввести пароль.

Как забанить sshпользователя после 3 предупреждений?

решение1

Для SSH может быть лучше использовать что-то другое, чем pam, есть отличное решение, сделанное через iptables и sshd_configфайл. Это только один из способов получить то, что вы хотите, также основываясь на документации, обычно рекомендуется использовать ключи SSH вместо проверки метода аутентификации по паролюhttps://help.ubuntu.com/community/SSH/OpenSSH/Настройка.

  1. Вам нужно будет изменить /etc/ssh/sshd_configдобавление строки

    MaxAuthTries 1
    
  2. Вам необходимо создать следующие правила брандмауэра

    • Создать новую цепочку

      iptables -N SSHATTACK   
      iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7  
      iptables -A SSHATACK -j DROP  
      
    • Блокировать каждый IP-адрес на 120 секунд, который устанавливает более трех подключений в течение 120 секунд. В случае четвертой попытки подключения запрос делегируется цепочке SSHATTACK, которая отвечает за регистрацию возможной атаки ssh и в конечном итоге отбрасывает запрос.

      iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set     
      iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK    
      
  3. Вы можете проверить попытки, предпринятые в отношении файла /var/log/syslog.

решение2

Распространенной практикой является использование fail2ban, которое работает на уровне сети, а не на уровне PAM, и которое экономит ваши ресурсы для всей той криптографии, которую выполняет sshd.

В любом случае, вы пробовали после этой неудачной аутентификации ввести правильный пароль? Он принят? Что входит в систему /var/log/auth.log?

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

решение3

Попробуйте изменить порядок строк, PAM выполнит их одну за другой.
Например:
/etc/pam.d/common-auth

auth    required                        pam_tally2.so deny=3 onerr=fail unlock_time=300 debug
auth    [success=1 default=ignore]      pam_unix.so nullok
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

работает для меня.

Связанный контент