Спосіб №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 секунд буде більше 4 спроб IP-адреси, то будь-який трафік із цього IP-адреси повинен бути забитий. Це рішення не має значення, спроби в різних облікових записах користувачів чи ні.
Спосіб №3 - використовувати 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
файл конфігурації пам’яті. Знову ж на 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
Список літератури