Как мне разорвать произвольное соединение TCP / IP в Linux? - PullRequest
10 голосов
/ 03 июня 2011

Есть ли какая-либо команда, которая может использоваться для разрыва существующего соединения TCP / IP с какой-либо программой?

Есть ли что-либо в TCP-соединении, о котором знает ОС, или ОС видит только передачу TCP по локальным сокетам и не знает, какой запрос к какому сокету подается?

ДляНапример, если Firefox отправляет запрос на порт 80 какого-либо сервера и ожидает ответа.Можно ли тогда найти порт прослушивания Firefox и заставить Firefox показать ERR_CONNECTION_REFUSED или что-то подобное.

Мне бы хотелось решение, которое не препятствует потоку данных и позволяет приложению справляться с этой ситуацией по-своему,но скорее закройте сокет или соединение TCP / IP (что должно быть возможно, поскольку сокет - это то, за что отвечает ОС, я думаю? Является ли соединение также свойством ОС или просто приложением?), чтобы приложение реагировало немедленно.

Ответы [ 3 ]

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

Использование tcpkill .

2 голосов
/ 27 декабря 2014

Cutter

Cutter будет отправлять пакеты на оба конца TCP / IP-соединения, чтобы закрыть соединение.Он предназначен для использования на маршрутизаторе Linux для отключения нежелательных соединений.

Веб-сайт: http://www.digitage.co.uk/digitage/software/linux-security/cutter

В комплект поставки Debian входит: https://packages.debian.org/stable/cutter

0 голосов
/ 21 августа 2013

Это можно сделать с помощью `iproute2 framework.

Создайте таблицу правил для блочной / недоступной корзины (в моем примере id 33 таблицы) и задайте для нее высокий приоритет:

# ip rule add from all lookup 33 prio 1

Теперь найдите соединения, которые вы пытаетесь заблокировать. В моем случае я использовал Chromium для подключения к google.com:

# ss -n -e -p | grep "chrom" | grep "173.194.*:443"
ESTAB      0      0               10.211.55.4:46710         173.194.35.2:443    timer: (keepalive,38sec,0) users:(("chromium-browse",8488,106)) uid:1000 ino:38318 sk:f6a4f800
ESTAB      0      0               10.211.55.4:49288        173.194.35.18:443    timer:(keepalive,34sec,0) users:(("chromium-browse",8488,109)) uid:1000 ino:38047 sk:f6a4cb00

Итак, давайте добавим 173.194.0.0/16 в таблицу 33 и очистим кеш:

# ip route add unreachable 173.194.0.0/16 table 33
# ip route flush cache

Попробуйте подключиться к google.com прямо сейчас в своем браузере, и вы получите ERR_CONNECTION_REFUSED в своем браузере.

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

# ip route flush table 33

Конечно, если вам нужно более детальное различие, вы можете использовать tc и классификатор u32, чтобы пометить точную комбинацию IP:PORT (и другие аспекты пакета) и добавить правило fw в корзину (не проверено):

# tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 \
    match ip src 173.194.0.0/16 match ip dport 443 classid :1
# ip rule add fwmark 1 table 33 prio 1 realms 3/4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...