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

Может ли tcpdump узнать номера портов доступа?

У меня есть сервер с двумя сетевыми адаптерами, и я хотел бы, чтобы эти порты были открыты только на eth1 которые используются.

Вопрос

Как я могу получить tcpdump чтобы сообщить мне номера портов, к которым осуществляется доступ eth1?

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

Итак, что вам действительно нужно выяснить:

  1. Что на самом деле предоставляется и используется сервером
  2. какой должен предоставляться сервером

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

tcpdump - отличный инструмент, но он не совсем подходит для тех исследований, которые вам нужны. Проблема с захватом все пакетов, что означает, что вы увидите все сетевые сканирования, широковещательные рассылки и прочую ерунду, которая фактически не подключается. Преимущество использования анализа потока для этой цели заключается в том, что вы можете фильтровать трафик только по установленным соединениям. Это важно. Это позволяет узнать, кто на самом деле использует службы в вашей системе. Конечно, само понятие «установленный» в значительной степени зависит от TCP, поэтому для протоколов без установления соединения, таких как UDP, вам нужно быть немного более внимательными в своем анализе.

Самый простой ответ - использовать что-то вроде чистые потоки. Поговорите со своими сетевыми людьми. Большинство, если не все, крупные игроки в сетевом пространстве могут производить что-то, что выполняет ту же функцию, что и Cisco netflow. В Juniper это называется jflow, а открытый стандарт - sflow. Ребята из вашей сети, возможно, уже включили это, если вы не посмотрите, можете ли вы получить данные потока, сгенерированные для порта коммутатора, к которому подключен ваш сервер.

Если у вас нет доступного netflow, то есть приложение с открытым исходным кодом, созданное Qosient, которое называется Аргус. Argus также производит данные потока, но вместо работы на сетевом устройстве это программный пакет, который запускается в системе. Традиционно вы указываете демону argus интерфейс, подключенный к порту зеркала / диапазона или к крану. Однако вы можете так же легко направить его на свой eth1 и сгенерируйте данные потока специально для этого порта.

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

Войдите в это с открытыми глазами. Этот процесс неприятен, подвержен ошибкам и труден. Будут ошибки. Как я уже сказал, право способ - спросить администратора, что должно быть запущено. Когда вы не можете этого сделать, это лучший вариант.