Linux закрыть сетевое соединение

Как закрыть активное tcp соединение linux?

Я заблокировал ип, н ос него всё ещё висят 51 запрос на tcp порт который оно досило. Соединение обрубается только если я перезагружу приложение которое было под атакой.

Его запросы: netstat -na | grep 117.94.104.57 tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35696 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35728 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35784 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35672 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35842 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35716 ESTABLISHED

Трафика с него никакого не идёт: tcpdump host 117.94.104.57 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on enp1s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes ^Z [12]+ Остановлено tcpdump host 117.94.104.57

Как его разорвать желательно автоматически или вручную без перезагрухки порта/приложения?

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

sudo gdb -p $PID -ex "call close("$FD")" -ex "detach" -ex "quit" 

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

Если ты не знаешь PID своего приложения, то обратись в Job.

соединения такие должно рвать либо само приложение либо проксирующий фронт, очевидно у тебя ни первого не происходит ни второго нет, тогда почему что-то должно происходить автоматически, вопрос тот еще

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

Читайте также:  Linux var from command

Проблема в том что при бане ип через Iptables все активные запросы с Ip включая соединение остаётся неизменным. Просто прекращается идти трафик. Почему это происходит я не знаю.

Прошу прощения. Я не так понял. Пид приложения знаю. Попробую ваш вариант.

sudo ss -K src sport = -bash: ошибка синтаксиса около неожиданной лексемы `6183’ стоит ubuntu

sudo gdb -p 4799 -ex «call close(»$FD»)» -ex «detach» -ex «quit» GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type «show copying» and «show warranty» for details. This GDB was configured as «x86_64-linux-gnu». Type «show configuration» for configuration details. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/. For help, type «help». Type «apropos word» to search for commands related to «word». Attaching to process 4799 [New LWP 23445] [New LWP 27368] [New LWP 30050] [New LWP 1372] [New LWP 5619] [New LWP 8942] [New LWP 10733] [New LWP 17700] [New LWP 22303] [Thread debugging using libthread_db enabled] Using host libthread_db library «/lib/x86_64-linux-gnu/libthread_db.so.1». 0x00007fdae9f3a693 in select () at ../sysdeps/unix/syscall-template.S:84 84 ../sysdeps/unix/syscall-template.S: Нет такого файла или каталога. $1 = 0 Detaching from program: /home/user/bin/newmakro/makro++, process 4799

Возможно я что то делаю не так.

Удивительно, как с такими знаниями, у тебя вообще что-то работает.

похоже на оптимизацию бизнес-модели: уволили эникея, он «дудосит» с домашней кофеварки, новый эффективный МЕНЕДЖЕР ВООХОДИТ В ООЙТИ

Читайте также:  Linux начинающий командная строка

Ваша оценка моей личности очень важна для меня.

Источник

Close established TCP connection on Linux

I am not able to find an answer to a simple thing I will try to achive: once a tcp connection is established to my linux server, let’s say ssh / tcp 22 or x11 / tcp 6000 display -> how do I close this connection without killing the process (sshd / x11 display server). I saw also some suggestoin to use iptables, but it does not work for me, the connection is still visible in netstat -an. would be good if someone can point me to the right direction. what I tried so far

tcpkill: kills the process, not good for me iptables: does not close the established connection, but prevent further connections. 

Attach to the process with a debugger, then call shutdown() followed by close() , or just close() , on the appropriate file descriptor. Then hope the process can handle that.

2 Answers 2

Ok, I found at least one solution (killcx) which is working. Maybe we will be able to find an easier solution. Also, i saw the comment from «zb» — thanks — which might also work, but I was not able to find a working syntax, since this tool seems to be really useful but complex. So here is an example how to work with the 1. solution which is working for me:

netstat -anp | grep 22 output: tcp 0 0 192.168.0.82:22 192.168.0.77:33597 VERBUNDEN 25258/0 iptables -A INPUT -j DROP -s 192.168.0.77 (to prevent reconnect) perl killcx.pl 192.168.0.77:33597 (to kill the tcp connection) 

killcx can be found here: http://killcx.sourceforge.net/ it «steals» the connection from the foreign host (192.168.0.77) and close it. So that solution is working fine, but to complex to setup quickly if you are under stress. Here are the required packages:

apt-get install libnetpacket-perl libnet-pcap-perl libnet-rawip-perl wget http://killcx.sourceforge.net/killcx.txt -O killcx.pl 

however, would be good to have an easier solution.

Читайте также:  Djvu читалки для linux

Источник

Рабочий метод разрыва конкретного активного соединения из командной строки linux (drop/kill/cut/close ESTABLISHED connection)

Иногда бывает необходимо принудительно разорвать активное соединение. Самый распространенный способ:

Проблема в том, что один воркер может одновременно обслуживать несколько соединений, поэтому правильнее будет убить соединение а не воркер. Для этого на многих форумах рекомендуют использовать tcpkilll, cutter или awk+hping3. Однако, хоть эти утилиты и находятся в официальных репозиториях, мне не удалось заставить их разрывать соединения.

После продолжительных поисков был обнаружен perl скрипт killcx, разрывающий соединение по удаленному хосту и порту.

killcx 94.133.119.242:4403

[PARENT] checking connection with [94.133.119.242:4403]
[PARENT] found connection with [78.220.184.126:80] (ESTABLISHED)
[PARENT] forking child
[CHILD] interface not defined, will use [eth0]
[CHILD] setting up filter to sniff ACK on [eth0] for 5 seconds
[CHILD] hooked ACK from [77.220.184.126:80]
[CHILD] found AckNum [3091573605] and SeqNum [3105164779]
[CHILD] sending spoofed RST to [78.220.184.126:80] with SeqNum [3091573605]
[CHILD] sending RST to remote host as well with SeqNum [3105164779]
[CHILD] all done, sending USR1 signal to parent [13723] and exiting
[PARENT] received child signal, checking results.
=> success : connection has been closed !

Для его работы требуется целый набор библиотек.

apt-get install \
libpcap0.8 \
libpcap-dev \
libnet-pcap-perl \
libyaml-perl \
libyaml-dev \
libyaml-0-1 \
-y

cpan -i \
Net::RawIP \
NetPacket::Ethernet

Источник

Оцените статью
Adblock
detector