Способ № 1 - отключить пароль входа
Если вам не нужно разрешать логин с паролями, то просто запретив их, вы получите желаемый эффект. Просто добавьте эту строку в /etc/ssh/sshd_config
:
PasswordAuthentication no
Кроме того, вы можете ограничить использование пароля для определенных пользователей, использующих Match
оператор в sshd_config
:
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
Метод № 2 - iptables
Вы также можете использовать iptables
для отслеживания неудачных попыток входа в систему и отбросить их после определенного порога. Это похоже на ваш пример с hostingfu, но его легче понять.
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
ПРИМЕЧАНИЕ . Первая строка в основном создает правило, которое применяется только к пакетам, используемым для новых попыток подключения через порт ssh. Во второй строке написано, что если в течение 60 секунд с IP-адреса поступило более четырех попыток, то любой трафик с этого IP-адреса следует заблокировать. Это решение не волнует, будут ли попытки на разных учетных записях пользователей.
Метод № 3 - использовать PAM
Я понимаю, что вы сказали, что у вас нет доступного PAM, но если вы это сделали, вы можете отложить неудачные попытки входа в систему. Если вы намереваетесь просто отложить сбои входа в систему через ssh, вы можете использовать модуль PAM pam_faildelay
. Этот модуль PAM обычно входит в состав микса по умолчанию.
В моей системе Fedora 19 это часть установки по умолчанию.
пример
Ищите файлы, связанные с pam_faildelay
.
$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz
Посмотрите, какие RPM они предоставляют:
$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686
использование
Чтобы создать задержку при неудаче, вы просто добавите такую строку в ваш sshd
файл конфигурации pam. Опять же на Fedora / CentOS / RHEL системах этот файл находится здесь: /etc/pam.d/sshd
.
Чтобы создать 10-секундную задержку:
auth optional pam_faildelay.so delay=10000000
Задержка 60 секунд:
auth optional pam_faildelay.so delay=60000000
пример
С задержкой в 20 секунд, используя вышеуказанный метод, я изменил свой sshd
конфигурационный файл PAM следующим образом:
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
auth optional pam_faildelay.so delay=20000000
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
Теперь, когда я захожу:
$ date
Tue Dec 17 09:16:30 EST 2013
$ ssh blah@localhost
blah@localhost's password:
Permission denied, please try again.
blah@localhost's password:
...Control + C....
$ date
Tue Dec 17 09:16:50 EST 2013
Ссылки