Почему некоторые порты сообщаются фильтром nmap, а другие нет?

38

Я сканирование сервера , который должен иметь довольно простой брандмауэр с помощью IPTables : по умолчанию все отбрасывается к тому RELATEDи ESTABLISHEDпакетам. Единственным NEWразрешенным типом пакетов являются TCP-пакеты на портах 22 и 80 и все (на этом сервере нет HTTPS).

Результат nmap на первых 2048 портах дает 22 и 80 как открытые, как я ожидаю. Однако несколько портов отображаются как «отфильтрованные».

Мой вопрос: почему порты 21, 25 и 1863 отображаются как «отфильтрованные», а другие 2043 порты не отображаются как отфильтрованные?

Я ожидал увидеть только 22 и 80 как «открытые».

Если нормально видеть 21, 25 и 1863 как «отфильтрованные», то почему все остальные порты не отображаются как «отфильтрованные»?

Вот вывод nmap :

# nmap -PN 94.xx.yy.zz -p1-2048

Starting Nmap 6.00 ( http://nmap.org ) at 2014-06-12 ...
Nmap scan report for ksXXXXXX.kimsufi.com (94.xx.yy.zz)
Host is up (0.0023s latency).
Not shown: 2043 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
22/tcp   open     ssh
25/tcp   filtered smtp
80/tcp   open     http
1863/tcp filtered msnp

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

Not shown: 2043 closed ports

а не 2046 закрытых портов.

Вот lsof запущен на сервере:

# lsof -i -n
COMMAND   PID USER   FD   TYPE   DEVICE SIZE NODE NAME
named    3789 bind   20u  IPv4     7802       TCP 127.0.0.1:domain (LISTEN)
named    3789 bind   21u  IPv4     7803       TCP 127.0.0.1:953 (LISTEN)
named    3789 bind  512u  IPv4     7801       UDP 127.0.0.1:domain 
sshd     3804 root    3u  IPv4     7830       TCP *:ssh (LISTEN)
sshd     5408 root    3r  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
sshd     5411    b    3u  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
java    16589    t   42u  IPv4 88842753       TCP *:http-alt (LISTEN)
java    16589    t   50u  IPv4 88842759       TCP *:8009 (LISTEN)
java    16589    t   51u  IPv4 88842762       TCP 127.0.0.1:8005 (LISTEN)

(обратите внимание, что Java / Tomcat прослушивает порт 8009, но этот порт сбрасывается брандмауэром)

Седрик Мартин
источник
Получаете ли вы такие же результаты при сканировании других хостов?
Крик,
@Creek: ах, только что попробовал на slashdot.org и получил 80 и 443 открытых, но тоже 25 / smtp отфильтрованных. Но затем вы дали мне идею попробовать сопоставить этот же сервер не с моего домашнего компьютера, а с другого моего сервера: я не получаю 3 отфильтрованных порта, но затем я получаю 53 / domain / closed , 443 / https / closed и 953 / rndc / закрыто . (оба моих выделенных сервера находятся в OVH / Франция).
Седрик Мартин
1
Если вы действительно хотите увидеть, что nmapвы делаете, вы должны сканировать, используя root privs, используя SYN scan ( -sS) и --packet-trace. Также потратьте пару минут и прочитайте справочную страницу, вы будете удивлены, какие драгоценности там есть
Creek
Я бы также временно открыл эти порты и посмотрел, проходят ли пакеты к ним.
Марк Херд

Ответы:

25

Оператор 'Filtered Port' из nmap отличается в зависимости от метода сканирования.

Стандартное сканирование (сканирование TCP для непривилегированного пользователя или сканирование Half-Open -sS для суперпользователя) основано на протоколе TCP. (названный 3-х сторонний хансхейк)

  • Клиент (вы) выдает SYN, если сервер отвечает SYN / ACK: это означает, что порт открыт !

  • Вы выдаете SYN, если сервер отвечает RST: это означает, что порт закрыт !

  • Вы запускаете SYN, если сервер не отвечает или отвечает с ошибкой ICMP: это означает, что порт фильтруется . Вероятно, брандмауэр IDS / statefull заблокирует ваш запрос)

Чтобы определить реальный статус порта, вы можете:

  • используйте опцию -sV или -A (определение версии, это поможет вам определить состояние этого порта.
  • используйте --tcp-flags SYN, FIN, чтобы попытаться обойти fw.
  • использовать другие типы сканирования ( http://nmap.org/book/man-port-scanning-techniques.html )

Отличная книга « Nmap Network Discovery », написанная ее создателем Федором, очень хорошо объясняет это. я цитирую

Filter: Nmap не может определить, открыт ли порт, потому что фильтрация пакетов не позволяет его зондам достигнуть порта. Фильтрация может осуществляться с выделенного устройства брандмауэра, правил маршрутизатора или программного обеспечения брандмауэра на основе хоста. Эти порты расстраивают злоумышленников, потому что они предоставляют так мало информации. Иногда они отвечают сообщениями об ошибках ICMP, такими как код 13 типа 3 (пункт назначения недоступен: связь административно запрещена), но фильтры, которые просто отбрасывают зонды без ответа, встречаются гораздо чаще. Это заставляет Nmap повторить попытку несколько раз на тот случай, если зонд был сброшен из-за перегрузки сети, а не из-за фильтрации. Такая фильтрация значительно замедляет сканирование.

open | Filter: Nmap переводит порты в это состояние, когда он не может определить, открыт порт или отфильтрован. Это происходит для типов сканирования, в которых открытые порты не дают ответа. Отсутствие ответа также может означать, что фильтр пакетов отбросил зонд или любой ответ, который он вызвал. Таким образом, Nmap не знает наверняка, открыт ли порт или фильтруется. Сканирования UDP, протокола IP, FIN, NULL и Xmas классифицируют порты таким образом.

closed | Filter: это состояние используется, когда Nmap не может определить, закрыт порт или отфильтрован. Он используется только для сканирования бездействия IP-идентификатора, описанного в разделе 5.10 «Сканирование бездействия TCP (-sl)».

Флориан Бидабе
источник
Так как мне отфильтровать порт 22? Предположим, я использую домены Google ...
Игорь Ганапольский
"Нефильтр"? Что ж, вы не перехватываете трафик, идущий к 22 на вашем брандмауэре, поэтому он не будет фильтроваться ... Затем вы получите «open» или «close» в ответ на зонд nmap
Florian Bidabe
Что ты сканируешь?
Флориан Бидабе
Я использую эту команду: sudo nmap -oG - -T4 -A -p22 -v pi.eazyigz.com | grep ssh
ИгорьГанапольский
1
«-T4» не требуется, уже указано в «-A» ... относительно зонда, sudo nmap подразумевает, что используется синхронное сканирование (-sS). «-A» - это более короткая версия «-T4» + «- sV» + «- O». Если при обнаружении службы (-sV) не выполняется проверка SSH-сервера, порт, скорее всего, закрыт (без прослушивания ssh), в противном случае ДОЛЖНО быть что-то между вашим клиентом и сервером, который перехватывает зонд и отбрасывает пакеты (межсетевой экран хоста, IDS, или неправильно настроенные сетевые устройства)
Флориан Бидабе
10

почему порты 21, 25 и 1863 отображаются как «отфильтрованные», а другие 2043 порты не отображаются как отфильтрованные?

Потому что ваш провайдер, роутер, ваш сетевой администратор, что-либо между ними или вы сами фильтруете их. Эти порты имеют довольно плохую историю, 1863 - это порт, используемый протоколом обмена мгновенными сообщениями Microsoft (он же MSN и друзья), который, как я полагаю, вы могли (или не могли) установить конкретное правило. SMTP один кажется, что ваш провайдер является виновником, и FTP полностью ошеломил меня, так как я понятия не имею, что может с ними случиться.

Braiam
источник
1
Спасибо за объяснение! Таким образом , «фильтруются» в основном означает , что есть эквивалент IPtables «с REJECT где (ISP, маршрутизатор и т.д.)? И провайдер / маршрутизатор или что-то еще ОТКАЗЫВАЕТСЯ вместо DROPping, потому что он чище? Относительно порта 25: он фильтруется для меня, скажем, и для slashdot.org (когда я nmap его из моего домашнего подключения, но не когда я nmap его со своего выделенного сервера).
Седрик Мартин
6
@CedricMartin, вы получили это точно назад. «Отфильтрованный» означает, что пакет отброшен (никакого ответа вообще не было), а «закрытый» означает, что пакет отклонен (отправлен ответ ICMP «порт недоступен»).
Марк
@Mark: тогда, если я получу его задом наперед, мой первоначальный вопрос будет стоять: на моем сервере, используя iptables , я отбрасываю все, кроме портов 22 и 80. Почему только 3 порта отображаются как «отфильтрованные» !?
Седрик Мартин
@CedricMartin отредактируйте свой вопрос и добавьте свои правила iptables.
Брайам
1

По умолчанию Nmap сканирует только самые распространенные 1000 портов для каждого протокола (tcp, udp). Если ваш порт находится за пределами этого, он не будет сканировать его и, следовательно, не сообщит об этом. Однако вы можете указать порты, которые вы хотите сканировать, с опцией -p.

Ангсуман Чакраборты
источник