如何在 Ubuntu 20.04 服务器上断开现有连接?

如何在 Ubuntu 20.04 服务器上断开现有连接?

我执行了以下命令来禁止它们。但是没有用。只有当该 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)

相关内容