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
Потрясающие! но у меня есть проблема, какой-то парень / бот во Франции не настроил свои хакерские инструменты правильно, поэтому он продолжает входить, даже если его трафик падает. В результате мои журналы заполняются данными каждую секунду от этого парня. Есть ли способ обойти это?
Smarties89
2
Для менее опытных людей, таких как я: строки iptables вводятся в командной строке bash, а не вводятся где-то в файл.
Эндрю Свифт
4
Нет конкретного пакета, связанного с SSH, чтобы настроить это. Однако вы можете установить CSF, который является ConfigServer & Firewall.
Два изменения конфигурации, которые я бы посоветовал внести в файл: / 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 секунд более чем достаточно для входа в систему:
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.
Полезно (особенно в сочетании с другими уже сделанными предложениями), но на самом деле не решает проблему самостоятельно, поскольку для кого-то тривиально просто продолжать повторное подключение.
Ответы:
Я использую Fail2ban ; Я использовал Denyhosts в прошлом, и он тоже работает довольно хорошо. Я предпочитаю Fail2ban сейчас, потому что он более настраиваемый и более способен обрабатывать мониторинг нескольких различных сервисов - например, страницу входа вашего sshd и вашего веб-приложения одновременно (при условии, что вы регистрируете сбои).
Другой метод, который вы могли бы рассмотреть, - это реализовать правило LIMIT
iptables
; К сожалению, я не могу помочь вам с этим, если только вы не хотите установить Shorewall , и тогда я просто укажу вам на отличную документацию на этом сайте о том, как настроить правило LIMIT, чтобы, ну, в общем, ограничить возможность кого-то грубить -силите свой сервер.источник
Я не люблю использовать любые сторонние инструменты. Поэтому я использовал комбинацию конфигурации ssh и настроек брандмауэра. Согласно следующему решению злоумышленнику разрешено произвести ровно 3 входа в систему с ошибками за 2 минуты, или он будет заблокирован на 120 секунд.
1) Добавьте следующую строку в
/etc/ssh/sshd_config
Это позволит только 1 попытку входа в систему на соединение. Перезапустите сервер SSH.
2) Добавьте следующие правила брандмауэра
Создать новую цепочку
Блокируйте каждый IP-адрес на 120 секунд, что устанавливает более трех подключений в течение 120 секунд. В случае четвертой попытки подключения запрос передается в
SSHATTACK
цепочку, которая отвечает за регистрацию возможной атаки ssh и, наконец, отбрасывает запрос.3) Просмотрите записи журнала возможных ssh-атак в
/var/log/syslog
источник
Нет конкретного пакета, связанного с SSH, чтобы настроить это. Однако вы можете установить CSF, который является ConfigServer & Firewall.
CSF
Два изменения конфигурации, которые я бы посоветовал внести в файл: / etc / ssh / sshd_config
Ограничьте максимальное количество неаутентифицированных соединений, которые ssh-сервер будет обрабатывать одновременно. Чем меньше это, тем сложнее для сценаристов делать параллельные, скоординированные попытки взлома с несколькими соединениями. отредактируйте sshd_config и измените MaxStartups со значения по умолчанию «10» на «3:50:10». Значения, разделенные двоеточиями, говорят серверу ssh: «разрешить 3 пользователям одновременно пытаться войти в систему и произвольно и все чаще сбрасывать попытки подключения между 3 и максимум 10». Примечание: это должно быть увеличено на серверах с существенным числом авторизованных пользователей ssh.
Уменьшите максимальное количество времени, разрешенное для успешного входа в систему перед отключением. По умолчанию 2 минуты - это слишком много времени, чтобы держать открытой попытку неаутентифицированного подключения (см. Выше); 30 секунд более чем достаточно для входа в систему:
источник
Я использую эти правила IPTables для этого:
Это позволит только 4 пакета TCP / SYN на порт 22 с IP-адреса в течение 5 минут. Если он делает больше попыток, дверь закрывается до истечения 5 минут.
источник
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.есть опция, которую вы можете поместить в файл sshd_config для сервера:
источник