SSH / SSHD - Как настроить максимальное количество попыток входа в систему?


17

Какой самый простой способ настроить максимальное количество попыток входа в систему в среде LAMP (sshd устанавливается через yum)? Есть ли пакет или простое правило брандмауэра?



@Hyppy Спасибо, я пытался искать, но, к сожалению, есть много плохо названных вопросов / тем.
Джон Химмельман

Ответы:


11

Я использую Fail2ban ; Я использовал Denyhosts в прошлом, и он тоже работает довольно хорошо. Я предпочитаю Fail2ban сейчас, потому что он более настраиваемый и более способен обрабатывать мониторинг нескольких различных сервисов - например, страницу входа вашего sshd и вашего веб-приложения одновременно (при условии, что вы регистрируете сбои).

Другой метод, который вы могли бы рассмотреть, - это реализовать правило LIMIT iptables; К сожалению, я не могу помочь вам с этим, если только вы не хотите установить Shorewall , и тогда я просто укажу вам на отличную документацию на этом сайте о том, как настроить правило LIMIT, чтобы, ну, в общем, ограничить возможность кого-то грубить -силите свой сервер.


Я должен добавить, что Fail2ban доступен во многих репозиториях дистрибутивов, поэтому его установка очень проста; Я не видел ни одного Denyhosts, но это не значит, что его нет ни в одном, ни в том, что он не был добавлен с момента последней проверки.
Кромей

Я столкнулся с проблемой, что fail2ban из v0.8.14 некорректно работал с командой iptables-multiport. И это известная проблема с утилитой fail2ban, исправленной в свежих версиях ... Вот описание: github.com/fail2ban/fail2ban/issues/798 Так что я верю только в механизмы безопасности, разработанные для серверного программного обеспечения, или сторонние утилиты ...
Георгий Гааль

44

Я не люблю использовать любые сторонние инструменты. Поэтому я использовал комбинацию конфигурации ssh и настроек брандмауэра. Согласно следующему решению злоумышленнику разрешено произвести ровно 3 входа в систему с ошибками за 2 минуты, или он будет заблокирован на 120 секунд.

1) Добавьте следующую строку в /etc/ssh/sshd_config

MaxAuthTries 1

Это позволит только 1 попытку входа в систему на соединение. Перезапустите сервер SSH.

2) Добавьте следующие правила брандмауэра

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

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -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) Просмотрите записи журнала возможных ssh-атак в /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Потрясающие! но у меня есть проблема, какой-то парень / бот во Франции не настроил свои хакерские инструменты правильно, поэтому он продолжает входить, даже если его трафик падает. В результате мои журналы заполняются данными каждую секунду от этого парня. Есть ли способ обойти это?
Smarties89

2
Для менее опытных людей, таких как я: строки iptables вводятся в командной строке bash, а не вводятся где-то в файл.
Эндрю Свифт

4

Нет конкретного пакета, связанного с SSH, чтобы настроить это. Однако вы можете установить CSF, который является ConfigServer & Firewall.

CSF

Два изменения конфигурации, которые я бы посоветовал внести в файл: / etc / ssh / sshd_config

Ограничьте максимальное количество неаутентифицированных соединений, которые ssh-сервер будет обрабатывать одновременно. Чем меньше это, тем сложнее для сценаристов делать параллельные, скоординированные попытки взлома с несколькими соединениями. отредактируйте sshd_config и измените MaxStartups со значения по умолчанию «10» на «3:50:10». Значения, разделенные двоеточиями, говорят серверу ssh: «разрешить 3 пользователям одновременно пытаться войти в систему и произвольно и все чаще сбрасывать попытки подключения между 3 и максимум 10». Примечание: это должно быть увеличено на серверах с существенным числом авторизованных пользователей ssh.

  • По умолчанию : MaxStartups 10
  • MaxStartups 3:50:10

Уменьшите максимальное количество времени, разрешенное для успешного входа в систему перед отключением. По умолчанию 2 минуты - это слишком много времени, чтобы держать открытой попытку неаутентифицированного подключения (см. Выше); 30 секунд более чем достаточно для входа в систему:

  • По умолчанию : LoginGraceTime 2m
  • LoginGraceTime 30

3

Я использую эти правила IPTables для этого:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Это позволит только 4 пакета TCP / SYN на порт 22 с IP-адреса в течение 5 минут. Если он делает больше попыток, дверь закрывается до истечения 5 минут.


Что нужно для редактирования?
Тимкофу

Практически то же самое , как: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Аликс Аксель

Я сделал эти две команды iptables в Debian Jessie, но все еще могу видеть попытки входа в SSH каждые 2 секунды с одного и того же IP-адреса. Есть идеи?
Алексей Озеров

1

есть опция, которую вы можете поместить в файл sshd_config для сервера:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Полезно (особенно в сочетании с другими уже сделанными предложениями), но на самом деле не решает проблему самостоятельно, поскольку для кого-то тривиально просто продолжать повторное подключение.
Кромей
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.