Как проверить конфигурацию брандмауэра с помощью Nmap и Tcpdump

Вступление

Настройка брандмауэра для вашей инфраструктуры - отличный способ обеспечить некоторую базовую безопасность для ваших служб. После того, как вы разработали политику, которой вы довольны, следующим шагом будет проверка правил брандмауэра. Важно получить четкое представление о том, что правила вашего брандмауэра делают так, как вы думаете, и о том, как ваша инфраструктура выглядит для внешнего мира.

В этом руководстве мы рассмотрим некоторые простые инструменты и методы, которые вы можете использовать для проверки правил брандмауэра. Это некоторые из тех инструментов, которые могут использовать злоумышленники, поэтому вы сможете увидеть, какую информацию они могут найти, отправив запросы на ваши серверы.

Предпосылки

В этом руководстве мы предполагаем, что у вас настроен брандмауэр хотя бы на одном сервере. Вы можете приступить к созданию политики брандмауэра, выполнив одно или несколько из следующих руководств:

В этом руководстве мы будем вызывать сервер, содержащий политики брандмауэра, которые вы хотите протестировать,target. В дополнение к вашей цели вам также потребуется доступ к серверу для тестирования, расположенному за пределами сети, которую защищает ваш брандмауэр. В этом руководстве мы будем использовать сервер Ubuntu 14.04 в качестве нашей машины аудита.

Если у вас есть сервер для тестирования и цели, которые вы хотите оценить, вы можете продолжить работу с этим руководством.

Предупреждение

[.warning] # Вы должны выполнять действия, описанные в этом руководстве, только в инфраструктуре, которую вы контролируете, в целях аудита безопасности. Законы, касающиеся сканирования портов, являются неопределенными во многих юрисдикциях. Известно, что интернет-провайдеры и другие провайдеры запрещают пользователям сканировать порты.
#

Инструменты, которые мы будем использовать для тестирования политик брандмауэра

Существует довольно много различных инструментов, которые мы можем использовать для проверки ваших политик брандмауэра. Некоторые из них имеют перекрывающуюся функциональность. Мы не будем охватывать все возможные инструменты. Вместо этого мы рассмотрим некоторые общие категории инструментов аудита и рассмотрим инструменты, которые мы будем использовать в этом руководстве.

Анализаторы пакетов

Анализаторы пакетов могут использоваться для детального отслеживания всего сетевого трафика, проходящего через интерфейс. Большинство анализаторов пакетов имеют возможность работать в режиме реального времени, отображать пакеты по мере их отправки или получения или записывать информацию о пакетах в файл и обрабатывать ее позднее. Пакетный анализ дает нам возможность детально увидеть, какие типы ответов наши целевые машины отправляют обратно на хосты в открытой сети.

Для целей нашего руководства мы будем использовать инструментtcpdump. Это хороший вариант, потому что он мощный, гибкий и довольно распространенный в системах Linux. Мы будем использовать его для захвата необработанных пакетов при выполнении наших тестов на случай, если нам понадобится расшифровка для последующего анализа. Некоторые другие популярные варианты - это Wireshark (илиtshark, его кузен из командной строки) иtcpflow, которые могут организованно объединять целые TCP-разговоры.

Сканеры портов

Чтобы генерировать трафик и ответы для захвата нашего анализатора пакетов, мы будем использовать сканер портов. Сканеры портов могут использоваться для создания и отправки пакетов различных типов на удаленные хосты, чтобы определить тип трафика, который принимает сервер. Вредоносные пользователи часто используют это как инструмент обнаружения, чтобы попытаться найти уязвимые сервисы для использования (в первую очередь, это причина использования брандмауэра), поэтому мы воспользуемся этим, чтобы увидеть, что может обнаружить злоумышленник.

В этом руководстве мы будем использовать инструмент сопоставления сети и сканирования портовnmap. Мы можем использоватьnmap для отправки пакетов разных типов, чтобы попытаться выяснить, какие службы находятся на нашей целевой машине и какие правила брандмауэра ее защищают.

Настройка машины аудита

Прежде чем мы начнем, мы должны убедиться, что у нас есть инструменты, обсужденные выше. Мы можем получитьtcpdump из репозиториев Ubuntu. Мы также можем получитьnmap этим методом, но версия репозитория, скорее всего, устарела. Вместо этого мы установим несколько пакетов, которые помогут нам в компиляции программного обеспечения, а затем создадим его самостоятельно из исходного кода.

Обновите локальный индекс пакета и установите программное обеспечение, если оно еще не доступно. Мы также удалимnmap из нашей системы, если он уже установлен, чтобы избежать конфликтов:

sudo apt-get update
sudo apt-get purge nmap
sudo apt-get install tcpdump build-essential libssl-dev

Теперь, когда у нас есть инструменты компиляции и библиотека разработки SSL, мы можем получить последнюю версиюnmap со страницы загрузки наofficial site. Откройте страницу в вашем веб-браузере.

Прокрутите вниз до раздела «Распределение исходного кода». Внизу вы увидите ссылку на исходный код последней версииnmap. На момент написания статьи это выглядит так:

Nmap latest version

Щелкните правой кнопкой мыши ссылку и скопируйте адрес ссылки.

Вернувшись на компьютер для аудита, перейдите в свой домашний каталог и используйтеwget, чтобы загрузить вставленную ссылку. Обязательно обновите ссылку ниже, чтобы отразить самую последнюю версию, которую вы скопировали с сайта:

cd ~
wget https://nmap.org/dist/nmap-6.49BETA4.tar.bz2

Распакуйте загруженный файл и перейдите в получившийся каталог, набрав:

tar xjvf nmap*
cd nmap*

Сконфигурируйте и скомпилируйте исходный код, набрав:

./configure
make

После завершения компиляции вы можете установить получившиеся исполняемые файлы и файлы поддержки в вашей системе, набрав:

sudo make install

Подтвердите вашу установку, набрав:

nmap -V

Результат должен соответствовать версии, которую вы скачали с веб-сайтаnmap:

OutputNmap version 6.49BETA4 ( https://nmap.org )
Platform: x86_64-unknown-linux-gnu
Compiled with: nmap-liblua-5.2.3 openssl-1.0.1f nmap-libpcre-7.6 nmap-libpcap-1.7.3 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Далее мы создадим каталог, в котором мы можем хранить результаты нашего сканирования:

mkdir ~/scan_results

Чтобы убедиться, что вы получаете чистые результаты, выйдите из любых сеансов, которые вы могли открыть между вашей системой аудита и целевой системой. Это включает сеансы SSH, любые HTTP (S) -соединения, которые вы могли установить в веб-браузере, и т. Д.

Сканирование вашей цели на наличие открытых портов TCP

Теперь, когда у нас есть готовый сервер и файлы, мы начнем с сканирования целевого хоста на наличие открытых портов TCP.

На самом деле есть несколько сканирований TCP, которыеnmap умеет делать. Лучше всего начинать с сканирования SYN, также известного как «полуоткрытое сканирование», поскольку на самом деле оно никогда не согласовывает полное TCP-соединение. Это часто используется злоумышленниками, потому что он не регистрируется в некоторых системах обнаружения вторжений, потому что он никогда не завершает полное рукопожатие.

Настройка захвата пакета

Перед сканированием мы настроимtcpdump для захвата трафика, генерируемого тестом. Это поможет нам более подробно проанализировать отправленные и полученные пакеты позже, если потребуется. Давайте создадим каталог в~/scan_results, чтобы мы могли хранить вместе файлы, связанные с нашим сканированием SYN:

mkdir ~/scan_results/syn_scan

Мы можем запустить захватtcpdump и записать результаты в файл в нашем каталоге~/scan_results/syn_scan с помощью следующей команды:

sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets

По умолчаниюtcpdump будет работать на переднем плане. Чтобы запустить сканированиеnmap в том же окне, нам нужно приостановить процессtcpdump, а затем перезапустить его в фоновом режиме.

Мы можем приостановить запущенный процесс, нажавCTRL-Z:

CTRL-Z

Это приостановит запущенный процесс:

Output^Z
[1]+  Stopped                 sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets

Теперь вы можете перезапустить задание в фоновом режиме, набравbg:

bg

Вы должны увидеть похожую строку вывода, на этот раз без метки «Остановлено» и с амперсандом в конце, чтобы указать, что процесс будет выполняться в фоновом режиме:

Output[1]+ sudo tcpdump host target_ip_addr -w ~/scan_results/syn_scan/packets &

Команда теперь выполняется в фоновом режиме, наблюдая за любыми пакетами, проходящими между нашей аудиторской и целевой машинами. Теперь мы можем запустить наше сканирование SYN.

Запустите SYN Scan

Когдаtcpdump записывает наш трафик на целевую машину, мы готовы запуститьnmap. Мы будем использовать следующие флаги, чтобы получитьnmap для выполнения необходимых нам действий:

  • -sS: запускает SYN-сканирование. Технически это сканирование по умолчанию, котороеnmap будет выполнять, если тип сканирования не указан, но мы включим его здесь, чтобы быть явным.

  • -Pn: это указываетnmap пропустить этап обнаружения хоста, что приведет к преждевременному прерыванию теста, если хост не отвечает на эхо-запрос. Поскольку мы знаем, что цель находится в сети, мы можем пропустить это.

  • -p-: по умолчанию при сканировании SYN проверяются только 1000 наиболее часто используемых портов. Это указываетnmap проверить каждый доступный порт.

  • -T4: устанавливает временной профиль дляnmap, сообщая ему ускорить тест, рискуя получить немного менее точные результаты. 0 самый медленный и 5 самый быстрый. Так как мы сканируем каждый порт, мы можем использовать его в качестве базового уровня и позже перепроверить любые порты, о которых, возможно, сообщалось неправильно.

  • -vv: увеличивает детализацию вывода.

  • --reason: указываетnmap указать причину, по которой о состоянии порта сообщалось определенным образом.

  • -oN: результаты записываются в файл, который мы можем использовать для последующего анализа.

Note

[.note] # Следует иметь в виду, что для проверки IPv6 вам нужно будет добавить к вашим командам флаг-6. Поскольку большинство обязательных учебных пособий не принимают трафик IPv6, мы пропустим IPv6 для этого руководства. Добавьте этот флаг, если ваш брандмауэр принимает трафик IPv6.
#

Вместе команда будет выглядеть примерно так:

sudo nmap -sS -Pn -p- -T4 -vv --reason -oN ~/scan_results/syn_scan/nmap.results target_ip_addr

Даже если для шаблона синхронизации установлено значение 4, сканирование, скорее всего, займет довольно много времени, поскольку оно проходит через 65 535 портов (мой тестовый запуск длился около сорока минут). Вы увидите результаты печати, которые выглядят примерно так:

OutputStarting Nmap 6.49BETA4 ( https://nmap.org ) at 2015-08-26 16:54 EDT
Initiating Parallel DNS resolution of 1 host. at 16:54
Completed Parallel DNS resolution of 1 host. at 16:54, 0.12s elapsed
Initiating SYN Stealth Scan at 16:54
Scanning 198.51.100.15 [65535 ports]
Discovered open port 22/tcp on 198.51.100.15
Discovered open port 80/tcp on 198.51.100.15
SYN Stealth Scan Timing: About 6.16% done; ETC: 17:02 (0:07:52 remaining)
SYN Stealth Scan Timing: About 8.60% done; ETC: 17:06 (0:10:48 remaining)

. . .

Остановите захват пакета tcpdump

После завершения сканирования мы можем вернуть наш процессtcpdump на передний план и остановить его.

Выделите его из фона, набрав:

fg

Остановите процесс, удерживая клавишу управления и нажимая «c»:

CTRL-C

Анализ результатов

Теперь у вас должно быть два файла в каталоге~/scan_results/syn_scan. Один с именемpackets, сгенерированный запускомtcpdump, и один, сгенерированныйnmap, называетсяnmap.results.

Давайте сначала посмотрим на файлnmap.results:

less ~/scan_results/syn_scan/nmap.results

~/scan_results/syn_scan/nmap.results

# Nmap 6.49BETA4 scan initiated Wed Aug 26 17:05:13 2015 as: nmap -sS -Pn -p- -T4 -vv --reason -oN /home/user/scan_results/syn_scan/nmap.results 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 5 due to 9226 out of 23064 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 5 to 10 due to 14 out of 34 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.00097s latency).
Scanned at 2015-08-26 17:05:13 EDT for 2337s
Not shown: 65533 closed ports
Reason: 65533 resets
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/local/bin/../share/nmap
# Nmap done at Wed Aug 26 17:44:10 2015 -- 1 IP address (1 host up) scanned in 2336.85 seconds

Выделенная область выше содержит основные результаты сканирования. Мы видим, что порт 22 и порт 80 открыты на отсканированном хосте, чтобы разрешить трафик SSH и HTTP. Мы также видим, что 65 533 порта были закрыты. Другой возможный результат будет «отфильтрован». Отфильтрованный означает, что эти порты были определены как остановленные чем-то по сетевому пути. Это может быть брандмауэр на цели, но он также может фильтровать правила на любом из промежуточных хостов между аудитом и целевыми машинами.

Если мы хотим увидеть фактический пакетный трафик, который был отправлен и получен от цели, мы можем прочитать файлpackets обратно вtcpdump, например:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets | less

Этот файл содержит весь разговор, который состоялся между двумя хостами. Вы можете фильтровать несколькими способами.

Например, чтобы просмотреть только трафикsent к цели, вы можете ввести:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'dst target_ip_addr' | less

Аналогично, чтобы просмотреть только ответный трафик, вы можете изменить «dst» на «src»:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'src target_ip_addr' | less

Открытые порты TCP будут отвечать на эти запросы пакетом SYN. Мы можем напрямую искать ответы для этого типа с помощью фильтра:

sudo tcpdump -nn -r ~/scan_results/syn_scan/packets 'src target_ip_addr and tcp[tcpflags] & tcp-syn != 0' | less

Это покажет вам только успешные ответы SYN и должны соответствовать портам, которые вы видели при запускеnmap:

Outputreading from file packets, link-type EN10MB (Ethernet)
17:05:13.557597 IP 198.51.100.15.22 > 198.51.100.2.63872: Flags [S.], seq 2144564104, ack 4206039348, win 29200, options [mss 1460], length 0
17:05:13.558085 IP 198.51.100.15.80 > 198.51.100.2.63872: Flags [S.], seq 3550723926, ack 4206039348, win 29200, options [mss 1460], length 0

Вы можете сделать больше анализа данных, как считаете нужным. Все это было захвачено для асинхронной обработки и анализа.

Сканирование вашей цели на наличие открытых портов UDP

Теперь, когда вы хорошо разбираетесь в том, как запускать эти тесты, мы можем выполнить аналогичный процесс для поиска открытых портов UDP.

Настройка захвата пакета

Еще раз, давайте создадим каталог для хранения наших результатов:

mkdir ~/scan_results/udp_scan

Снова запустите захватtcpdump. На этот раз запишите файл в новый каталог~/scan_results/udp_scan:

sudo tcpdump host target_ip_addr -w ~/scan_results/udp_scan/packets

Приостановите процесс и поместите его в фон:

CTRL-Z
bg

Запустите сканирование UDP

Теперь мы готовы запустить сканирование UDP. Из-за природы протокола UDP это сканирование обычно занимает наsignificantly больше времени, чем SYN-сканирование. На самом деле, это может занять более одного дня, если вы сканируете каждый порт в системе. UDP - это протокол без установления соединения, поэтому получение ответа не может означать, что целевой порт заблокирован, что он был принят или пакет был потерян. Чтобы попытаться различить их,nmap должен повторно передать дополнительные пакеты, чтобы попытаться получить ответ.

Большинство флагов будут такими же, как мы использовали для сканирования SYN. Фактически, единственный новый флаг:

  • -sU: указываетnmap выполнить сканирование UDP.

Ускорение теста UDP

Если вас беспокоит, сколько времени займет этот тест, вы можете сначала протестировать только поднабор ваших UDP-портов. Вы можете протестировать только 1000 наиболее распространенных портов, не указав флаг-p-. Это может значительно сократить время сканирования. Если вы хотите получить полную картину, вам придется вернуться позже и отсканировать весь диапазон портов.

Поскольку вы сканируете свою собственную инфраструктуру, возможно, лучший способ ускорить сканирование UDP - это временно отключить ограничение скорости ICMP в целевой системе. Как правило, узлы Linux ограничивают ICMP-ответы до 1 в секунду (как правило, это хорошо, но не для нашего аудита), что означает, что полное сканирование UDP займет более 18 часов. Вы можете проверить этот параметр на своей целевой машине, набрав:

sudo sysctl net.ipv4.icmp_ratelimit
Outputnet.ipv4.icmp_ratelimit = 1000

«1000» - это количество миллисекунд между ответами. Мы можем временно отключить ограничение скорости в целевой системе, набрав:

sudo sysctl -w net.ipv4.icmp_ratelimit=0

Очень важно вернуть это значение после теста.

Выполнение теста

Обязательно запишите результаты в каталог~/scan_results/udp_scan. Все вместе, команда должна выглядеть так:

sudo nmap -sU -Pn -p- -T4 -vv --reason -oN ~/scan_results/udp_scan/nmap.results target_ip_addr

Даже с отключением ограничения скорости ICMP для цели, это сканирование заняло около 2 часов и 45 минут во время нашего теста. После завершения сканирования вы должны отменить ограничение скорости ICMP (если вы его изменили) на целевом компьютере:

sudo sysctl -w net.ipv4.icmp_ratelimit=1000

Остановите захват пакета tcpdump

Верните процессtcpdump на передний план на своей машине аудита, набрав:

fg

Остановите захват пакета, удерживая кнопку управления и нажав «c»:

CTRL-c

Анализ результатов

Теперь мы можем взглянуть на сгенерированные файлы.

Полученный файлnmap.results должен выглядеть примерно так, как мы видели ранее:

less ~/scan_results/udp_scan/nmap.results

~/scan_results/udp_scan/nmap.results

# Nmap 6.49BETA4 scan initiated Thu Aug 27 12:42:42 2015 as: nmap -sU -Pn -p- -T4 -vv --reason -oN /home/user/scan_results/udp_scan/nmap.results 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 50 due to 10445 out of 26111 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 50 to 100 due to 11 out of 23 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 100 to 200 due to 3427 out of 8567 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0010s latency).
Scanned at 2015-08-27 12:42:42 EDT for 9956s
Not shown: 65532 closed ports
Reason: 65532 port-unreaches
PORT    STATE         SERVICE REASON
22/udp  open|filtered ssh     no-response
80/udp  open|filtered http    no-response
443/udp open|filtered https   no-response

Read data files from: /usr/local/bin/../share/nmap
# Nmap done at Thu Aug 27 15:28:39 2015 -- 1 IP address (1 host up) scanned in 9956.97 seconds

Ключевое различие между этим результатом и ранее полученным результатом SYN, вероятно, будет заключаться в количестве портов, отмеченныхopen|filtered. Это означает, чтоnmap не может определить, означает ли отсутствие ответа, что служба приняла трафик, или он был отброшен каким-то межсетевым экраном или механизмом фильтрации на пути доставки.

Анализ выводаtcpdump также значительно сложнее, потому что нет флагов соединения и потому что мы должны сопоставлять ответы ICMP с запросами UDP.

Мы можем увидеть, какnmap должен был отправить много пакетов на порты, которые были указаны какopen|filtered, запросив просмотр UDP-трафика на один из указанных портов:

sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets 'udp and port 22'

Скорее всего, вы увидите что-то похожее на это:

Outputreading from file /home/user/scan_results/udp_scan/packets, link-type EN10MB (Ethernet)
14:57:40.801956 IP 198.51.100.2.60181 > 198.51.100.15.22: UDP, length 0
14:57:41.002364 IP 198.51.100.2.60182 > 198.51.100.15.22: UDP, length 0
14:57:41.202702 IP 198.51.100.2.60183 > 198.51.100.15.22: UDP, length 0
14:57:41.403099 IP 198.51.100.2.60184 > 198.51.100.15.22: UDP, length 0
14:57:41.603431 IP 198.51.100.2.60185 > 198.51.100.15.22: UDP, length 0
14:57:41.803885 IP 198.51.100.2.60186 > 198.51.100.15.22: UDP, length 0

Сравните это с результатами, которые мы видим на одном из отсканированных портов, который был отмечен как «закрытый»:

sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets 'udp and port 53'
Outputreading from file /home/user/scan_results/udp_scan/packets, link-type EN10MB (Ethernet)
13:37:24.219270 IP 198.51.100.2.60181 > 198.51.100.15.53: 0 stat [0q] (12)

Мы можем попытаться вручную восстановить процесс, который проходитnmap, сначала составив список всех портов, на которые мы отправляем UDP-пакеты, используя что-то вроде этого:

sudo tcpdump -nn -Q out -r ~/scan_results/udp_scan/packets "udp" | awk '{print $5;}' | awk 'BEGIN { FS = "." } ; { print $5 +0}' | sort -u | tee outgoing

Затем мы можем увидеть, какие ICMP-пакеты мы получили обратно, говоря, что порт недоступен:

sudo tcpdump -nn -Q in -r ~/scan_results/udp_scan/packets "icmp" |  awk '{print $10,$11}' | grep unreachable | awk '{print $1}' | sort -u | tee response

Затем мы можем увидеть эти два ответа и посмотреть, какие UDP-пакеты никогда не получали ответ ICMP, набрав:

comm -3 outgoing response

Это должно в основном соответствовать списку портов, о которых сообщилnmap (он может содержать некоторые ложные срабатывания из-за потерянных возвратных пакетов).

Обнаружение хоста и сервиса

Мы можем запустить несколько дополнительных тестов на нашей цели, чтобы увидеть, может лиnmap определить работающую операционную систему или любую из версий службы.

Давайте создадим каталог для хранения наших результатов контроля версий:

mkdir ~/scan_results/versions

Обнаружение версий сервисов на сервере

Мы можем попытаться угадать версии служб, работающих на цели, с помощью процесса, известного как дактилоскопия. Мы получаем информацию с сервера и сравниваем ее с известными версиями в нашей базе данных.

tcpdump не будет слишком полезным в этом сценарии, поэтому мы можем пропустить его. Если вы хотите захватить его в любом случае, следуйте процессу, который мы использовали в прошлый раз.

Сканированиеnmap, которое нам нужно использовать, запускается флагом-sV. Поскольку мы уже выполняли сканирование SYN и UDP, мы можем передать точные порты, которые мы хотим просмотреть, с помощью флага-p. Здесь мы рассмотрим 22 и 80 (порты, которые были показаны при нашем сканировании SYN):

sudo nmap -sV -Pn -p 22,80 -vv --reason -oN ~/scan_results/versions/service_versions.nmap target_ip_addr

Если вы просматриваете полученный файл, вы можете получить информацию о работе службы в зависимости от того, насколько «болтливым» или даже уникальным является ответ службы:

less ~/scan_results/versions/service_versions.nmap

~/scan_results/versions/service_versions.nmap

# Nmap 6.49BETA4 scan initiated Thu Aug 27 15:46:12 2015 as: nmap -sV -Pn -p 22,80 -vv --reason -oN /home/user/scan_results/versions/service_versions.nmap 198.51.100.15
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0011s latency).
Scanned at 2015-08-27 15:46:13 EDT for 8s
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    syn-ack ttl 63 nginx 1.4.6 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/local/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Thu Aug 27 15:46:21 2015 -- 1 IP address (1 host up) scanned in 8.81 seconds

Здесь вы можете увидеть, что тест смог определить версию сервера SSH и дистрибутив Linux, который его упаковал, а также принятую версию протокола SSH. Он также распознал версию Nginx и снова определил, что она соответствует пакету Ubuntu.

Обнаружение операционной системы хоста

Мы можем попытаться угадатьnmap операционную систему хоста на основе характеристик ее программного обеспечения и ответов. Это работает так же, как управление версиями сервисов. И снова мы не будем использовать запускtcpdump в этом тесте, но вы можете выполнить его, если хотите.

Флаг, который нам нужен для выполнения обнаружения операционной системы, --O (заглавная буква «O»). Полная команда может выглядеть примерно так:

sudo nmap -O -Pn -vv --reason -oN ~/scan_results/versions/os_version.nmap target_ip_addr

Если вы просмотрите выходной файл, вы можете увидеть что-то похожее на это:

less ~/scan_results/versions/os_version.nmap

~/scan_results/versions/os_versions.nmap

# Nmap 6.49BETA4 scan initiated Thu Aug 27 15:53:54 2015 as: nmap -O -Pn -vv --reason -oN /home/user/scan_results/versions/os_version.nmap 198.51.100.15
Increasing send delay for 198.51.100.15 from 0 to 5 due to 65 out of 215 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 5 to 10 due to 11 out of 36 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 10 to 20 due to 11 out of 35 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 20 to 40 due to 11 out of 29 dropped probes since last increase.
Increasing send delay for 198.51.100.15 from 40 to 80 due to 11 out of 31 dropped probes since last increase.
Nmap scan report for 198.51.100.15
Host is up, received user-set (0.0012s latency).
Scanned at 2015-08-27 15:53:54 EDT for 30s
Not shown: 998 closed ports
Reason: 998 resets
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=6.49BETA4%E=4%D=8/27%OT=22%CT=1%CU=40800%PV=N%DS=2%DC=I%G=Y%TM=55
OS:DF6AF0%P=x86_64-unknown-linux-gnu)SEQ(SP=F5%GCD=1%ISR=106%TI=Z%CI=Z%TS=8
OS:)OPS(O1=M5B4ST11NW8%O2=M5B4ST11NW8%O3=M5B4NNT11NW8%O4=M5B4ST11NW8%O5=M5B
OS:4ST11NW8%O6=M5B4ST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120
OS:)ECN(R=Y%DF=Y%T=40%W=7210%O=M5B4NNSNW8%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+
OS:%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
OS:T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A
OS:=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPC
OS:K=G%RUCK=G%RUD=G)U1(R=N)IE(R=N)

Uptime guess: 1.057 days (since Wed Aug 26 14:32:23 2015)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=245 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/local/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Thu Aug 27 15:54:24 2015 -- 1 IP address (1 host up) scanned in 30.94 seconds

Мы видим, что в этом случаеnmap не догадывается об операционной системе на основе увиденной подписи. Если бы он получил больше информации, он, вероятно, показал бы различные проценты, которые указывают, как сигнатура целевой машины совпадает с сигнатурами операционной системы в ее базах данных. Вы можете увидеть подпись отпечатка пальца, которуюnmap получил от цели, под линиейTCP/IP fingerprint:.

Идентификация операционной системы может помочь злоумышленнику определить, какие эксплойты могут быть полезны в системе. Настройка брандмауэра для реагирования на меньшее количество запросов может снизить точность некоторых из этих методов обнаружения.

Заключение

Тестирование брандмауэра и понимание того, как ваша внутренняя сеть выглядит для внешнего злоумышленника, может помочь минимизировать ваш риск. Информация, которую вы найдете в ходе исследования вашей собственной инфраструктуры, может открыть разговор о том, нужно ли пересматривать какое-либо из ваших политических решений для повышения безопасности. Это также может освещать любые пробелы в вашей безопасности, которые могли возникнуть из-за неправильного упорядочения правил или забытых тестовых политик. Рекомендуется проверять свои политики с использованием самых последних регулярных проверок баз данных, чтобы улучшить или хотя бы сохранить текущий уровень безопасности.

Чтобы получить представление о некоторых улучшениях политики для вашего брандмауэра, ознакомьтесь сthis guide.

Related