Недавно мне пришлось работать с некоторыми серверами, которые имеют соединение 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 в системе.
Ответы:
Чтобы атаковать сервер, злоумышленник должен сначала узнать его IP-адрес. С IPv6 у вас будет так много адресов на выбор, что невозможно найти правильный адрес путем сканирования диапазона IP-адресов.
Это означает, что вы можете просто назначить интерфейсу два разных IPv6-адреса. Вы позволяете доменному имени вашего сайта указывать на тот же IP-адрес, что и всегда, и разрешаете sshd прослушивать только назначенный IP-адрес.
После этого изменения зная доменное имя и IP-адрес вашего сайта, злоумышленник не получит никакого доступа к вашему sshd.
Вам, конечно, понадобится вторичное имя хоста, которое будет использоваться при подключении с использованием ssh. Это имя хоста может иметь гораздо большую энтропию, чем адрес IPv6. Кто-то догадывается, что имя хоста для ssh немыслимо, если вы используете 63 буквенно-цифровых символа.
Если кто-то узнает IPv6-адрес, используемый для sshd, вы просто переместите sshd на новый IPv6-адрес и обновите запись AAAA. Тогда они должны начать все сначала.
Если вы беспокоитесь о том, что законный пользователь ssh может пропустить имя хоста и / или IP-адреса, то вы можете создать разные имена хостов для каждого пользователя для доступа с помощью ssh. Первоначально я бы назвал их всех одним именем хоста, чтобы для обновления была только одна запись AAAA.
источник
Хорошей новостью является то, что fail2ban недавно выпустил поддержку IPv6.
Для серверов Debian IPv6 я бы рекомендовал следовать этому руководству .
Для серверов CentOS IPv6 я бы порекомендовал скачать его здесь, а затем выполнить следующие команды, соответственно заменяя номер версии:
Убедитесь, что в /etc/fail2ban/jail.local включен jail для sshd , например:
источник