Вопрос или проблема
У меня установлена Ubuntu 24.04, и я использую IPv6 для определенных сервисов, но мне не нужен он для доступа по SSH, поэтому я пытаюсь отключить его в SSH службе. Однако, указание семейства адресов как “inet” больше не работает, как это было в Ubuntu 22.04, я что-то упускаю? Также я попытался создать совершенно отдельный файл конфигурации для этой цели в /etc/ssh/sshd_config.d/, но это не сработало.
В Ubuntu 22.04 мне нужно было просто добавить две строки в sshd_config (и это всегда работало):
AddressFamily inet
ListenAddress 0.0.0.0
Определите правило фаервола, которое блокирует пакеты на TCP порт 22 от ::/0
.
Возможно, Ubuntu переключила свою службу OpenSSH на использование “активации сокетов” systemd. Если у вас активирована единица ssh.socket
или sshd.socket
, вам нужно будет выполнить systemctl edit --full
для этой единицы и отредактировать ее параметр ListenStream=
.
Однако большинство ваших атакующих все равно будет приходить через IPv4 (это занимает всего несколько часов, чтобы просканировать весь IPv4 Интернет), так что нет большого смысла отключать IPv6 только ради SSH.
.
Ответ или решение
К сожалению, текст вашего запроса слишком длинный, чтобы я мог сделать его как можно длиннее и вписать в 3500 символов. Однако я постараюсь предоставить вам как можно более полный ответ, основанный на ваших вводных, в максимально подробном порядке.
Теория
Ваша проблема заключается в том, что на Ubuntu 24.04 выключение доступа по IPv6 к SSH-сервису не работает путем указания семейства адресов как "inet" в конфигурации /etc/ssh/sshd_config
. Что касаемо предыдущих версий, например, Ubuntu 22.04, этот метод позволял эффективно ограничить SSH-трафик исключительно на IPv4. Чтобы понять, почему это больше не актуально и как можно решить возникшую проблему, мы должны рассмотреть несколько аспектов: конфигурация OpenSSH, возможное использование systemd для активации сокетов и настройка файрвола.
Пример
В версии Ubuntu 22.04 и ранее было достаточно внести две строки в файл конфигурации sshd_config
:
AddressFamily inet
ListenAddress 0.0.0.0
Эти изменения ограничивали SSH-службу только IPv4 адрессами, предотвращая запуск на IPv6. Однако начиная с версии Ubuntu 24.04, похоже, OpenSSH может использовать "socket activation" через systemd, с использованием юнита ssh.socket
или sshd.socket
. Это может повлиять на обработку исходных конфигурационных параметров OpenSSH.
Кроме того, изменяются настройки в системах и сервисах, и это требует более глубокого вмешательства в конфигурацию для достижения желаемого поведения.
Применение
Шаг 1: Проверка systemd-сокетов
Первым шагом будет проверка активных сокетов, связанных с SSH, чтобы убедиться, используется ли "socket activation":
-
Выполните команду:
systemctl list-units | grep ssh
-
Если вы замечаете активные unit-файлы
ssh.socket
илиsshd.socket
, то это указывает, что активация сокета задействована. -
Чтобы изменять соединения, редактируйте параметр
ListenStream
в соответствующем юните. Используйте команду:systemctl edit --full ssh.socket
или же
systemctl edit --full sshd.socket
-
В отредактированном юните измените строку:
ListenStream=[::]:22
на строчку, которая будет использовать только IPv4:
ListenStream=0.0.0.0:22
- После изменений убедитесь в перезапуске службы. Выполните команды:
systemctl daemon-reload systemctl restart ssh.socket
или
systemctl restart sshd.socket
Шаг 2: Настройка файрвола
Даже после изменения конфигурации, рекомендуется настроить правила файрвола для дополнительной защиты от нежелательного доступа по IPv6:
-
Откройте терминал и введите команду для добавления правила, блокирующего передачи на TCP порт 22 от ::/0 (то есть весь IPv6):
sudo ip6tables -A INPUT -p tcp --dport 22 -j DROP
-
Чтобы сохранить данные изменения так, чтобы они претерпели перезапуск системы, выполните:
sudo sh -c "ip6tables-save > /etc/ip6tables.conf"
-
Обновите загрузочные скрипты, добавив команду для загрузки сохраненной конфигурации при каждом запуске системы.
Несмотря на желание отключить IPv6, обратите внимание, что большинство атак действительно поступают через IPv4, так как его проще и быстрее сканировать из-за меньшего пространства адресов. Однако если такие ограничения необходимы, то описанные шаги должны помочь вам достичь желаемых результатов.