Как обеспечить задержку входа в систему в SSH

11

Я хотел обеспечить задержку входа в систему при входе через ssh. Я попробовал несколько способов сделать то же самое, но не смог найти желаемый результат.

Я попытался шаги, предоставленные по данной ссылке.

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

На моей машине не установлен модуль pam, поэтому я не могу вносить изменения в файлы pam

Таким образом, любое тело позволяет мне предложить другой способ сделать то же самое?

У меня есть голое ядро ​​Linux, работающее на встроенной платформе.

Баран
источник
Почему вы хотите ввести задержку? Какова ваша конечная цель?
CVN
Я хотел предотвратить возможность атаки грубой силой.
Рам
3
Простое введение задержки для новых подключений не предотвратит атаку грубой силой. Вам нужно посмотреть на инструменты, предназначенные для решения вашей актуальной проблемы. Я бы посоветовал начать с рассмотрения fail2ban, который специально разработан для реагирования на повторяющиеся записи в журнале путем выполнения заданных команд и часто используется специально для предотвращения попыток грубой силы при получении несанкционированного доступа.
CVN
Это хорошо, Майкл, но я должен сделать это с существующей инфраструктурой, которая у меня есть, как я могу ввести задержку каждый раз, когда я подключаюсь через ssh.
Рам
2
Чувак, fail2banиспользует ту инфраструктуру, которая у тебя уже есть - логи ssh и правила iptables.
Шадур

Ответы:

11

Способ № 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

Ссылки

SLM
источник
Спасибо @slm, но снова я не могу установить модуль pam, и моя аутентификация sshd не от pam. Не могли бы вы предложить другой способ
Ram
@AmitSinghTomar - извините, я расширил свой ответ. Я пытался придумать канонический ответ на ваш вопрос, который охватывал бы все методы, а не только ваш.
SLM
Спасибо вам еще раз @slm за ответ на вопросы, я заинтересован в том, чтобы воспользоваться вторым предложенным вами способом. Попробуем и сообщим вам результат. Также это даст мне задержку с самой первой попыткой входа в систему через ssh?
Рам
@AmitSinghTomar - нет, он должен задерживаться только после 4 попыток. Когда --hitcount 4превышено, правило будет черной дырой нарушающий IP-адрес в течение 60 секунд.
SLM
Один момент, который я хотел бы узнать от вас, для вашего третьего метода для работы (PAM), требуется ли, чтобы ssh-аутентификация происходила через pam?
Рам
3

Отключить пароли. Никаких паролей, никакой атаки методом перебора.

Вы можете использовать ssh-ключи для входа в систему - что должно быть намного безопаснее и труднее взломать.

Nils
источник
0

В чистой установке Ubuntu 16.04 с openssh-serverуже существует задержка для попытки неправильного пароля больше нуля символов. Задержка кажется более 1 секунды .

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

H2ONaCl
источник