Программное обеспечение для блокирования пакетов - PullRequest
0 голосов
/ 24 февраля 2010

Может кто-нибудь предложить мне программное обеспечение для блокировки пакетов ??

Мое требование - блокировать пакеты в локальной сети. (Интернет не входит в картину).

Предположим, CLIENT_A взаимодействует с CLIENT_B в той же сети (LAN).

Я хочу, чтобы CLIENT_C (который находится в той же сети) перехватывал (для этой цели я могу использовать анализатор библиотеки jpcap) и блокировал пакеты, отправленные CLIENT_A в CLIENT_B.

Как заблокировать пакеты по локальной сети ..?

Заранее спасибо.

С уважением, Веенит Шах

Ответы [ 3 ]

2 голосов
/ 24 февраля 2010

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

Это не та вещь, которую разумно реализовать в Java.

РЕДАКТИРОВАТЬ - в ответ на это продолжение

Я знаю, что такая вещь не рекомендуется в Java .. но все же я должен ее реализовать .. так есть ли какие-либо способы сделать это ..?

Допустим, вы говорите о реализации клиентского брандмауэра на компьютере с Linux. Я могу думать о двух подходах:

  • Вы можете использовать Process.execute() и друзей для запуска утилиты администратора iptables(8) Linux, которая управляет сетевыми фильтрами пакетов ядра ОС. Это самый простой подход на основе Java. Но для этого требуется, чтобы ваше Java-приложение работало как root.

  • Вы можете перепроектировать то, что iptables(8) делает для манипулирования фильтрами пакетов и кодировать те же функции в Java. Это будет больше работы по кодированию, включая реализацию части функциональности в C через JNI или JNA. И ваше приложение должно работать как root.

Но гораздо более простой подход состоит в том, чтобы просто запустить iptables(8) из командной строки или внести изменения, используя причудливые инструменты администратора на основе графического интерфейса.

Обратите внимание, что в приведенных выше сценариях сам брандмауэр не реализован в Java. Все, что вы делаете, это администрирование брандмауэра из приложения Java. Я не могу придумать ЛЮБОГО способа фактически выполнить фильтрацию / блокировку в Java, который даже отдаленно практичен.

1 голос
/ 26 февраля 2010

Возможно, вам понадобятся некоторые атаки arp для перенаправления пакетов с CLIENT-A на Client-C вместо CLIent-B.

Не думаю, что это хорошая идея.

0 голосов
/ 24 февраля 2010

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

Единственный способ сделать это - заставить А связаться с В через С, тогда С сможет решить, следует ли отправлять пакеты. Это называется брандмауэром. Вместо того, чтобы писать один, вы можете использовать iptables в Linux для этого.

Но чтобы использовать это, вам нужно понять, как работает сеть, и я не уверен, что вы делаете это на основе вашего вопроса. Таким образом, вам нужно будет многое узнать о ethernet (при условии, что вы используете ethernet) и различных сетевых уровнях. Я не уверен в ресурсах для этого.

...