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

17

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

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

Ответы:

11

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

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

Kromey
источник
Я должен добавить, что 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
Brendan
источник
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 минут.

timkofu
источник
Что нужно для редактирования?
Тимкофу
Практически то же самое , как: -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.
Якорь,
источник
Полезно (особенно в сочетании с другими уже сделанными предложениями), но на самом деле не решает проблему самостоятельно, поскольку для кого-то тривиально просто продолжать повторное подключение.
Кромей