Назад | Перейти на главную страницу

Использование nmap для сканирования открытых портов. Политика iptables по умолчанию влияет на другие правила?

Я пытаюсь выяснить, почему изменение моей политики iptables по умолчанию влияет на то, что nmap видит при сканировании моего хоста.

Рассмотрим следующую настройку iptables:

iptables -F
iptables -A INPUT -p tcp -s 10.1.0.0/20 --dport 22 -j ACCEPT

iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Давайте создадим карту с помощью nmap -p - 10.1.0.157:

Nmap scan report for 10.1.0.157
Host is up (0.00059s latency).
Not shown: 65531 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
111/tcp   open  rpcbind
5672/tcp  open  amqp
46010/tcp open  unknown

Как и ожидалось, некоторые порты открыты. Добавление правила, специально отбрасывающего порт 111:

iptables -F
iptables -A INPUT -p tcp -s 10.1.0.0/20 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 111 -j DROP

iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Полученные результаты:

Nmap scan report for 10.1.0.157
Host is up (0.00056s latency).
Not shown: 65531 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
111/tcp   filtered rpcbind
5672/tcp  open     amqp
46010/tcp open     unknown

Почему 111 отображается как отфильтрованное? Почему это вообще отображается? Если я изменю политику по умолчанию на DROP, я получу следующие результаты сканирования, как и ожидалось:

Nmap scan report for 10.1.0.157
Host is up (0.00052s latency).
Not shown: 65534 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh

Я что-то не понимаю в том, как политики по умолчанию работают в iptables, или это как-то связано с nmap?

Nmap показывает порты, для которых он не получает ответа, как «отфильтрованные». Это результат, когда для правила или политики установлено значение «DROP».

Причина, по которой порт 111 отображается в одном выходе, а не другой, находится в строке «Не показано:». Какое бы ни было наиболее распространенное состояние порта («закрыто» или «отфильтровано», но не «открыто»), оно объединяется в эту строку со счетчиком. Поэтому, когда политика ACCEPT, и ничего не прослушивает (или если политика была REJECT), наиболее распространенным состоянием является «закрыто», что означает, что был получен пакет TCP RST. Правило DROP для порта 111 отличает его от других, поэтому он отображается.

Во втором случае, когда политика по умолчанию - DROP, результат для порта 111 не отличается от результата для любого другого порта, поэтому он объединяется с другими в строке «Не показано: 65534 отфильтрованных портов».

Вы можете получить более подробную информацию о том, почему порт отображается в определенном состоянии, добавив --reason вариант. Также включение отладки с -d развернет этот пакет "Не показано" и покажет вам каждый порт отдельно (много вывода!).