![如何在 Ubuntu 20.04 服务器上断开现有连接?](https://linux22.com/image/1191875/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%2020.04%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%96%AD%E5%BC%80%E7%8E%B0%E6%9C%89%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
我执行了以下命令来禁止它们。但是没有用。只有当该 IP 有新连接时它才有效。
sudo ufw insert 1 deny from 46.1.67.244 to any && sudo ufw reload
状态 ufw:Anywhere DENY 46.1.67.244
我有一个服务始终在端口 A 上监听。来自该 IP 的连接始终保持,只是当我停止该服务时,连接就会丢失。如何在不停止服务的情况下断开当前连接?
答案1
UFW 只是 iptables 的一个前端。通常,生成的规则集在 INPUT 链的早期具有 RELATED、ESTABLISHED ACCEPT 规则。如果在该通用规则之前添加特定的 DROP 规则,则数据包将被拦截并丢弃。
在此示例中,我将添加一条规则,并将来自 192.168.111.122 的后续数据包丢弃到我位于 192.168.111.132 的主测试服务器。为了演示,我设置了一个非常简单的 iptables 规则:
$ sudo iptables -xvnL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2 100 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 LOG tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID LOG flags 0 level 6 prefix "IINVALID:"
0 0 DROP tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 ctstate NEW LOG flags 0 level 6 prefix "NEW TCP no SYN:"
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 ctstate NEW
159 11289 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
1 52 ACCEPT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate NEW tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
当前我已通过 SSH 从两台计算机连接:
$ who
doug pts/0 2023-01-05 15:55 (192.168.111.1)
doug pts/1 2023-01-05 15:56 (192.168.111.122)
现在添加新规则来丢弃来自 192.168.111.122 的数据包:
$ sudo iptables -I INPUT 2 -s 192.168.111.122 -i br0 -j DROP
SSH 会话终止(可能需要一段时间)。
$ client_loop: send disconnect: Connection reset
数据包被丢弃:
$ sudo iptables -xvnL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
26 2926 DROP all -- br0 * 192.168.111.122 0.0.0.0/0
0 0 LOG tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID LOG flags 0 level 6 prefix "IINVALID:"
0 0 DROP tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 ctstate NEW LOG flags 0 level 6 prefix "NEW TCP no SYN:"
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 ctstate NEW
100 8437 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
1 52 ACCEPT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 ctstate NEW tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
请注意,会话仍然显示为已登录,但最终将被删除:
$ who
doug pts/0 2023-01-05 15:55 (192.168.111.1)
doug pts/1 2023-01-05 15:56 (192.168.111.122)