如何在 Ubuntu 12.04 中取消来自特定 IP 的所有当前通信?

如何在 Ubuntu 12.04 中取消来自特定 IP 的所有当前通信?

我正在使用 Ubuntu 12.04 防火墙。我想在运行时拒绝任何 IP。我正在使用“ufw 拒绝来自 IP”。它适用于未来的连接。但它不会取消现有的连接,如 ssh。

我如何取消来自特定 IP 的所有当前通信?

问候,

答案1

我发现最好的选择是使用tcpkill。当我安装它时,它是软件包的一部分dsniff,所以我必须先安装它。然后,你可以像这样使用它:

$ sudo tcpkill ip host 20.129.11.86 and port 22
tcpkill: listening on eth0 [ip host 20.129.11.86 and port 22]
10.206.22.202:42532 > 20.129.11.86:22: R 1785992582:1785992582(0) win 0
10.206.22.202:42532 > 20.129.11.86:22: R 1785992732:1785992732(0) win 0
10.206.22.202:42532 > 20.129.11.86:22: R 1785993032:1785993032(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065251855:4065251855(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065301087:4065301087(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065399551:4065399551(0) win 0

一旦 tcpkill 检测到匹配的流量,它就会终止连接。

要查看 IP 还访问了您的系统的其他位置,您可以使用netstat -auntgrep 来查找 IP 地址。例如,

$ netstat -aunt | egrep 115.125.
tcp        0      0 10.20.22.25:56156     115.125.225.67:80        ESTABLISHED
tcp        0      0 10.20.22.25:42360     115.125.225.1:80         ESTABLISHED
tcp        0      0 10.20.22.25:35210     115.125.225.64:80        ESTABLISHED

如果有必要,创建进一步的 ufw 规则。

重新启动 ssh 是一个选项吗?

您可以使用sudo /etc/init.d/sshd stopthen sudo /etc/init.d/sshd start,或者使用服务机制:

$ sudo service ssh stop
ssh stop/waiting
$ sudo service ssh start
ssh start/running, process 4427

如果可以的话,您可以暂时删除该界面。

有一款名为“cutter”的应用程序应该可以工作,它以 IP 地址和端口作为参数。但是,我无法从

$ sudo apt-get install cutter

它的工作方式如下(假设 ssh 的标准端口为 22):

$ cutter 10.10.10.10 22

您可能还会检查类似denyhosts包裹的东西。

答案2

我不确定,但你可以尝试iptables

sudo iptables -A INPUT -p tcp --dport 22 --source 192.168.1.1 -j REJECT

或者如果你想要吹毛求疵

sudo iptables -A INPUT -p tcp --dport 22 --source 192.168.1.1 REJECT --reject-with icmp-host-prohibited

查看本教程:https://help.ubuntu.com/community/IptablesHowTo

我希望这有帮助。

相关内容