Как заблокировать пакеты, поступающие на порт 23 на моем компьютере? - PullRequest
0 голосов
/ 16 июня 2011

Я использую библиотеку libpcap. Я сделал одну программу-сниффер C, используя pcap.h. Теперь я хочу заблокировать пакеты, поступающие через порт 23 на моем компьютере через устройство eth0. Я попытался использовать функцию pcap_filter, но это бесполезно для блокировки. Пожалуйста, объясните мне, как закодировать эту функцию с помощью программы.

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Libpcap просто используется для захвата пакетов, то есть делает пакеты доступными для использования в других программах.Он не выполняет никаких настроек сети, таких как блокировка, открытие портов.В этом смысле pcap является чисто пассивным средством мониторинга.

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

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

  2. Вы по-прежнему хотите, чтобы другие программы (sshd) прослушивали порт 23, но весь этот трафик вас раздражает.ваше приложение.Libpcap имеет функцию фильтрации для этого, которая довольно мощная.С помощью этой функции вы можете передавать небольшие скрипты в libpcap и сообщать только о соответствующих пакетах.Посмотрите фильтрацию в документации pcap для получения дополнительной информации.Это, однако, не будет «блокировать трафик», только остановит pcap от его захвата.

2 голосов
/ 23 октября 2012

На самом деле, используя pcap, вы не можете создать брандмауэр. Это связано с тем, что пакеты, видимые внутри вашего анализатора (построенные с использованием pcap), являются просто копией пакетов, которые (с анализатором или без него) используются сетевым стеком. Другими словами: использование фильтров в pcap приведет к тому, что вы не увидите копии оригинальных пакетов (насколько я знаю, pcap компилирует фильтры и добавляет их в ядро, чтобы на уровне ядра копия не выполнялась); в любом случае оригинальный пакет все равно попадет в сетевой стек.

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

...