Вопрос или проблема
На свежей установке Debian 12 у меня есть следующая конфигурация nftables
, которая, как я считаю, выполняет следующее после активации:
- трафик с localhost принимается
- установленный/связанный трафик принимается
- TCP-трафик через порт 22 принимается
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# принимать любой трафик с локалхоста
iifname lo accept
# принимать трафик, исходящий от нас
ct state established,related accept
tcp dport 22 accept
}
chain forward {
# Отбросить все (предполагает, что это устройство не является маршрутизатором)
type filter hook forward priority 0; policy drop;
}
}
Обратите внимание, что для переключения с конфигурации с правилами на конфигурацию без правил, я сначала выполняю systemctl restart nftables
, а затем проверяю применяемые правила с помощью nft list ruleset
.
Учитывая случай с примененными правилами, я ожидаю, что nmap
покажет только открытый порт 22. Однако я получаю следующее:
$ nmap <DEBIAN12_IP_ADDRESS>
Запуск Nmap 7.92 ( https://nmap.org ) в 2024-10-17 10:46 CEST
Отчет сканирования Nmap для <DEBIAN12_HOSTNAME> (<DEBIAN12_IP_ADDRESS>)
Хост активен (0.043s задержка).
Не показано: 990 отфильтрованных tcp-портов (нет ответа)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
82/tcp open xfer
84/tcp open ctf
85/tcp open mit-ml-dev
443/tcp open https
554/tcp open rtsp
1723/tcp open pptp
5060/tcp open sip
Сканирование завершено: 1 IP-адрес (1 хост активен) просканирован за 8.25 секунд
Не выполняет ли конфигурация nftables
то, что я думаю?
Не понимаю ли я вывод nmap
?
Ответ или решение
Ваша проблема с выводом Nmap, показывающим открытые порты, несмотря на настройки nftables
, может возникать по нескольким причинам. Давайте детально разберем вашу конфигурацию и результаты Nmap, чтобы понять, что могло пойти не так.
Анализ конфигурации nftables
В вашей конфигурации nftables
указано следующее:
- Правило по умолчанию "drop": Это означает, что все входящие пакеты будут заблокированы, если не соответствуют указанным правилам.
- Принятие трафика из
localhost
: Пакеты, поступающие из интерфейсаlo
(localhost), будут приняты. - Принятие установленного/сопутствующего трафика: Пакеты, которые являются частью уже установленного соединения или сопутствующих соединений, будут приняты.
- Принятие TCP-трафика на порт 22: SSH-соединения будут приняты на стандартный порт.
Вероятные причины проблем
1. Необнаруженные правила:
Ваша конфигурация действительно указывает, что все входящие соединения, кроме SSH (порт 22), должны быть отклонены. Однако, Nmap показывает много открытых портов (например, 21, 80, 443 и т.д.). Вот несколько возможных объяснений:
-
Службы, работающие на машине: Если на вашем сервере запущены службы, которые слушают на многих портах (например, FTP, HTTP и т.д.), это может объяснить их состояние "open". Nmap не всегда отображает отфильтрованные порты, особенно если служба отвечает на запросы.
-
Неправильные фильтрации: Возможно, что конфигурация
nftables
не применена корректно, возможны следующие случаи:- При перезапуске службы могли остаться старые правила, которые не были очищены.
- Проблемы с правами при применении правил или их конфликт с другими инструментами безопасности или фаерволами.
2. Проверка ваших комплексов и конфигураций:
- Выполните команду
nft list ruleset
, чтобы убедиться, что ваши правила действительно загружены в систему. - Проверьте, нет ли других сервисов безопасности, которые могут конфликтация с
nftables
(например,ufw
,firewalld
).
3. Тестирование на другие порты:
Для тестирования работы nftables
вы можете временно отключить службы, работающие на других портах, и проверить результаты Nmap:
systemctl stop <имя_сервиса>
nmap <DEBIAN12_IP_ADDRESS>
Заключение
На основании вашей конфигурации, nftables
действительно должен блокировать доступ к всем портам, кроме 22. Если же Nmap все равно показывает открытые порты, это указывает на то, что конфигурация nftables
может не применяться должным образом или существуют другие службы, которые отвечают на запросы. Рекомендуется проверить действующие правила, активные службы и возможности протоколов на этом сервере.
Эти шаги должны помочь вам выявить причину проблемы с фильтрацией портов и правильно настроить nftables
, чтобы все работало так, как вы ожидаете.