我正在使用 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 -aunt
grep 来查找 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 stop
then 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
我希望这有帮助。