Блокировка атак 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 в системе.

DarthRevan13
источник
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.

kasperd
источник
Звучит лучше, чем у меня сейчас, но не совсем то, что я искал. Спасибо, в любом случае.
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
ncomputers
источник
1
Хотя я восхищаюсь тем, что сделали ребята из fail2ban, этого все же недостаточно! Не все функции поддерживаются протоколом IPv6 в соответствии с их списком изменений github.com/fail2ban/fail2ban/blob/0.10/ChangeLog и до сих пор нет поддержки запрета на подсеть github.com/fail2ban/fail2ban/issues/927 , которая имеет решающее значение для IPv6, поскольку любой провайдер не будет предлагать клиенту только один IPv6-адрес, а целую подсеть. Пока это остается верным, ни одна производственная машина не должна использовать fail2ban сейчас! Пожалуйста, измените свой ответ, чтобы отразить это, потому что эту страницу посещают многие люди.
DarthRevan13