Блокировка атак SSH Brute Force на IPv6


10

Недавно мне пришлось работать с некоторыми серверами, которые имеют соединение IPv6, и я был удивлен, обнаружив, что fail2ban не поддерживает IPv6, как и denyhosts. При поиске в Google я обнаружил, что люди обычно рекомендуют:

  • Отключение входа через SSH через IPv6 (для меня это не решение)
  • использование только аутентификации с использованием закрытого / открытого ключа на сервере без аутентификации по паролю (работает, но многие атаки могут стоить серверу большой вычислительной мощности или даже сделать его недоступным из-за DDoS-проверки)
  • использование ip6tables для блокировки последовательных атак с одного IP
  • используя sshguard с поддержкой IPv6

Из того, что я до сих пор собирал, запрет адресов в IPv6 немного отличается от IPv4, потому что интернет-провайдеры предоставляют пользователю не один адрес (/ 128), а целую подсеть (в настоящее время у меня есть / 48). Таким образом, запрет отдельных IPv6-адресов был бы неэффективен против атак. Я искал высоко и низко предмет ip6tables и sshguard, блокирующий подсети при обнаружении атаки, но мне не удалось найти какую-либо информацию.

Кто-нибудь знает, если sshguard запрещает подсети при атаках IPv6?
Кто-нибудь знает, как сделать конфигурацию ip6tables для запрета подсетей при атаках IPv6?
Или кто-нибудь знает о лучшем способе смягчения атак, чем я уже нашел?

PS: я использую CentOS 7 в системе.


3
Для получения дополнительной информации о fail2ban добавлении поддержки IPv6: github.com/fail2ban/fail2ban/issues/39 . Кажется, что они сталкиваются с проблемой блокировки подсетей , которая задерживает дальнейшую реализацию (кажется, что мы все дальше и дальше отдаляемся от нас ...).
Джон У. С. Смит

Правила ограничения / запрета ставок в iptables. Измените свой вопрос на это, и пара респираторов должна ответить точно.

Это гипотетическая проблема? Я просматривал журналы попыток грубой силы с нескольких серверов, и каждый из них пытался использовать IPv4. И я не видел, чтобы какой-либо сервер подвергался слишком большой нагрузке из-за таких попыток, когда аутентификация по паролю отключена на стороне сервера.
Касперд

1
@kasperd Я получаю несколько тысяч попыток в день на IPv6, так что нет, это не гипотетическая проблема. Адрес сервера общедоступен, поскольку на нем размещен сайт, поэтому это очень большая проблема.
DarthRevan13

@ user123418 Я оставлю заголовок вопроса таким, какой он есть сейчас, я действительно предпочел бы что-то вроде sshguard из-за его контроля над правилом в ip6tables. Если никто не ответит на следующей неделе, я изменю свой вопрос.
DarthRevan13

Ответы:


4

Чтобы атаковать сервер, злоумышленник должен сначала узнать его IP-адрес. С IPv6 у вас будет так много адресов на выбор, что невозможно найти правильный адрес путем сканирования диапазона IP-адресов.

Это означает, что вы можете просто назначить интерфейсу два разных IPv6-адреса. Вы позволяете доменному имени вашего сайта указывать на тот же IP-адрес, что и всегда, и разрешаете sshd прослушивать только назначенный IP-адрес.

После этого изменения зная доменное имя и IP-адрес вашего сайта, злоумышленник не получит никакого доступа к вашему sshd.

Вам, конечно, понадобится вторичное имя хоста, которое будет использоваться при подключении с использованием ssh. Это имя хоста может иметь гораздо большую энтропию, чем адрес IPv6. Кто-то догадывается, что имя хоста для ssh немыслимо, если вы используете 63 буквенно-цифровых символа.

Если кто-то узнает IPv6-адрес, используемый для sshd, вы просто переместите sshd на новый IPv6-адрес и обновите запись AAAA. Тогда они должны начать все сначала.

Если вы беспокоитесь о том, что законный пользователь ssh может пропустить имя хоста и / или IP-адреса, то вы можете создать разные имена хостов для каждого пользователя для доступа с помощью ssh. Первоначально я бы назвал их всех одним именем хоста, чтобы для обновления была только одна запись AAAA.


Звучит лучше, чем у меня сейчас, но не совсем то, что я искал. Спасибо, в любом случае.
DarthRevan13

0

Хорошей новостью является то, что fail2ban недавно выпустил поддержку IPv6.

Для серверов Debian IPv6 я бы рекомендовал следовать этому руководству .

Для серверов CentOS IPv6 я бы порекомендовал скачать его здесь, а затем выполнить следующие команды, соответственно заменяя номер версии:

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

Убедитесь, что в /etc/fail2ban/jail.local включен jail для sshd , например:

[sshd]
enabled=1

1
Хотя я восхищаюсь тем, что сделали ребята из fail2ban, этого все же недостаточно! Не все функции поддерживаются протоколом IPv6 в соответствии с их списком изменений github.com/fail2ban/fail2ban/blob/0.10/ChangeLog и до сих пор нет поддержки запрета на подсеть github.com/fail2ban/fail2ban/issues/927 , которая имеет решающее значение для IPv6, поскольку любой провайдер не будет предлагать клиенту только один IPv6-адрес, а целую подсеть. Пока это остается верным, ни одна производственная машина не должна использовать fail2ban сейчас! Пожалуйста, измените свой ответ, чтобы отразить это, потому что эту страницу посещают многие люди.
DarthRevan13
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.