如何阻止来自特定 IP 和特定端口的特定用户?

如何阻止来自特定 IP 和特定端口的特定用户?

只是好奇,没有实际用例......

答案可能是 /etc/hosts.deny,但询问是否有其他方法可以解决

答案1

您可以使用netfilter“所有者”模块/扩展来创建适当的规则来匹配来自特定用户的流量(在用户所在的 Linux 系统上)。

sudo iptables -I OUTPUT -m owner --uid-owner <USERNAME> -p tcp -m tcp -d destination-address --dport destination-port-number -j REJECT 

但是一旦 IP 流量离开系统,TCP/IP 流量中就不再有“用户名/所有者”的概念,数据包仅包含协议、IP 地址和端口号,并且没有用户标识,您可以将其用作远程系统或中间防火墙上防火墙规则的可靠基础。

对此的历史性解决方案是ident协议和identd服务(RFC 931 及其后代RFC 1413) 在传入连接的源 IP 地址上运行,这将返回与特定 TCP 连接关联的用户名。这就是允许在hosts.[allow|deny]访问控制。我不知道还有谁支持或信任 ident 服务,甚至 RFC 在第 6 节中也明确说明了安全注意事项“识别协议并非旨在作为授权或访问控制协议”,所以不要去那里。

答案2

您可以安装 UFW(简单防火墙)包,然后使用 UFW 创建一些条目。激活 UFW 时,默认情况下所有传入流量都将被阻止,传出流量则被允许。在激活 UFW 之前,请确保将 SSH 连接列入白名单,以防止使用 将您锁定在服务器之外sudo ufw allow 22。要启用防火墙,您可以使用sudo ufw enable。要重新加载防火墙配置,您可以输入sudo ufw reload

为了阻止特定的 IPv4/6 地址,您可以使用以下命令创建 ufw 条目: sudo ufw deny from [IPv4-Address] to any阻止来自整个服务器的 IPv4 地址。

但我不知道如何使用 UFW 阻止特定的 IPv4 地址和端口。

相关内容