Вопрос или проблема
Совершенно нов для netfilter, в данный момент я запускаю приложение, которое использует три интерфейса eth0/eth1/eth2, мое приложение будет работать на двух серверах, и они оба могут общаться между собой через свои собственные интерфейсы (eth0/eth1/eth2)
В Ubuntu 18.04 (версия ядра 4.*) я просто использовал команды iptables, чтобы разорвать связь между ними.
В 22.04 (версия ядра 6.2.*) я использую те же команды iptables, чтобы разорвать связь между двумя серверами, но все не работает так, как ожидалось (код моего приложения остался без изменений) — у моего приложения есть механизм, который сообщает, доступен ли соседний сервер или нет — в 22.04 с примененными правилами iptables он по-прежнему сообщает, что другой сервер доступен (в 18.04 это было не так).
Я вижу, что многое изменилось в отношении того, как сетевой трафик может фильтроваться между двумя версиями ядра (больше инструментов в более новой версии).
Я удалил ufw, чтобы избежать конфликтов с nftables, одно наблюдение: когда я применял правило, на мгновение моё приложение сообщало, что соседний сервер недоступен, и вдруг это изменялось на доступный, что-то переопределяет правило, я не уверен.
Теперь я ищу помощь здесь, чтобы увидеть, что я пропустил…
-A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP
-A INPUT -s x.x.x.y/32 -d y.y.y.x/32 -i eth1 -j DROP
-A INPUT -s x.x.y.y/32 -d y.y.x.x/32 -i eth0 -j DROP
-A OUTPUT -s y.y.y.y/32 -d x.x.x.x/32 -o eth2 -j DROP
-A OUTPUT -s y.y.y.x/32 -d x.x.x.y/32 -o eth1 -j DROP
-A OUTPUT -s y.y.x.x/32 -d x.x.y.y/32 -o eth0 -j DROP
Примечание: Все мои правила добавлены в цепочку, чтобы убедиться, что они имеют приоритет над всем остальным.
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- xxxx yyyy
DROP all -- zzzz AAAA
DROP all -- BBBB CCCC
В Ubuntu 22.04 nftables
используется по умолчанию.
Что нового в безопасности для Ubuntu 22.04 LTS?
nftables как бэкенд для брандмауэра по умолчанию
Брандмауэр на Linux состоит из двух компонентов – механизма брандмауэра в ядре Linux и инструментов, используемых для его настройки из пользовательского пространства. Ядро Linux традиционно поддерживало две разные подсистемы для политик брандмауэра – iptables / xtables и новые nftables. nftables приносит значительные преимущества как с точки зрения производительности, так и гибкости при создании и развертывании правил брандмауэра, особенно для систем с двойным стеком IPv4/IPv6. Традиционный инструмент управления пользовательским пространством iptables теперь настраивает бэкенд ядра nftables, в то время как новый инструмент пользовательского пространства nft также присутствует, чтобы позволить создание более гибких правил, не поддерживаемых традиционной парадигмой iptables.
Вы можете перевести правила iptables
в nft
с помощью iptables-translate
и ipt6ables-translate
, например:
iptables-translate -A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP
см. страницу man для получения дополнительных деталей
Вернуться к iptables.
Используйте следующую команду, чтобы увидеть и изменить приоритет:
update-alternatives --config iptables
пример вывода:
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/sbin/iptables-nft 20 auto mode
1 /usr/sbin/iptables-legacy 10 manual mode
Установите наивысший приоритет для iptables
:
sudo update-alternatives --install /usr/bin/iptables iptables /usr/sbin/iptables-nft 30
Установите его по умолчанию:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
Отключите UFW и nft:
sudo systemctl disable --now ufw
sudo systemctl disable --now nftables
sudo apt install iptables-persistent
sudo systemctl enable --now iptables
Ответ или решение
Проблемы с iptables в Ubuntu 22.04: Решение и Советы
Когда вы переходите на новую версию операционной системы, такой как Ubuntu 22.04 с ядром версии 6.2.*, могут возникнуть проблемы с конфигурацией сетевых фильтров. В данном случае вы столкнулись с проблемой: правила iptables, которые использовали в Ubuntu 18.04, не ведут себя так, как предполагалось. Вам необходимо понять, как новая система управления сетевыми фильтрами влияет на ваш сетевой трафик, и что можно сделать для решения этой проблемы.
Причины неработающих правил iptables
-
nftables как новый стандарт: Начиная с Ubuntu 22.04, в системе используется nftables в качестве стандартного механизма для управления фильтрацией трафика. Это означает, что ваши команды iptables могут не работать, как ожидается, так как они фактически управляют nftables через совместимость.
-
Конфликты с UFW и nftables: Если UFW (Uncomplicated Firewall) активен, он может переопределять ваши правила iptables. Даже если вы отключили UFW, необходимо убедиться, что никакие другие службы сетевой фильтрации не влияют на вашу конфигурацию.
-
Порядок правил: Несмотря на ваши попытки вставить правила в начало цепей, существует вероятность, что другие правила имеют более высокий приоритет. Это может произойти, если не все правила явно указаны.
Шаги для устранения проблемы
-
Проверка активного механизма фильтрации:
Чтобы проверить, какой механизм фильтрации активен, воспользуйтесь командой:update-alternatives --config iptables
Если вы видите, что используется
iptables-nft
, вам нужно будет изменить его наiptables-legacy
, чтобы ваши старые правила iptables работали. -
Переключение на iptables-legacy:
Если вы решили использовать классические правила iptables, выполните следующие команды:sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
-
Проверка nftables:
Параллельно с iptables вы можете использоватьnftables
, который является более современным инструментом. Чтобы перевести ваши правила:iptables-translate -A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP
Это позволит вам получить эквивалентное правило для nftables.
-
Отключение UFW и nftables:
Если вы не используете UFW и хотите полностью избавиться от nftables, выполните следующие команды:sudo systemctl disable --now ufw sudo systemctl disable --now nftables
-
Проверка активных правил:
После внесения изменений проверьте ваши текущие правила:iptables -L -n -v
Убедитесь, что правила применились и что они выглядят таким образом, как вы ожидали.
-
Тестирование связи:
После внесения изменений протестируйте, действительно ли ваше приложение теперь не может обнаружить соседний сервер.
Заключение
Переход на новую версию Ubuntu может потребовать значительных изменений в вашей сетевой конфигурации. Понимание работы механизма фильтрации и наложение правил в соответствии с новым стандартом nftables является ключевым моментом для решения ваших проблем с сетевым трафиком. Следуя описанным шагам, вы сможете вновь настроить вашу сетевую безопасность и добиться необходимого результата.