IPTABLES 中的 MAC 地址过滤

IPTABLES 中的 MAC 地址过滤

我是 CentOS7 的新手,目前正在开发一个项目,该项目需要非常有限的用户通过 SSH 访问 Cent OS 7 服务器,因此使用 IPtables 命令仅向某些用户提供访问权限。

下面是我用来允许访问具有 MAC 地址的一个用户的命令:

iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT

它可以工作并按照以下输出添加到 iptables 中:

ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh MAC XX:XX:XX:XX:XX:XX

当添加第二条规则以阻止所有其他人访问端口 22 时,我与 Cent OS 7 盒子断开连接:

iptables -A INPUT -p tcp --destination-port 22 -j DROP

任何我可能出错的想法

答案1

“出错”的是你在第二个命令中告诉 iptables:删除目标端口 22 上的所有连接,这显然包括你自己到盒子的连接。您是否从具有第一条规则中指定的 MAC 地址的客户端计算机进行连接?

我建议您使用 iptables 规则文件来解决此问题。并使用命令iptables-saveiptables-restore。基本上,您创建一个文本文件 ( iptables_rulesv4),然后告诉 iptables 根据此规则恢复自身。这是一个具有两个规则的基本示例。

*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT ACCEPT
-A INPUT -p tcp --destination-port 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -m comment --comment "Allow ssh connections from specific MAC address" -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "Maintain open connections" -j ACCEPT
COMMIT

1: *filter- 这是要操作的iptables表,过滤器表

2-4:这些文件是默认状态:INPUT和FORWARD默认被丢弃(DROP),OUTPUT默认被允许(ACCEPT)。

5:规则 1 - 允许源自 MAC 地址的端口 ssh 连接XX:XX:XX:XX:XX:XX

6:规则 2 - 允许所有已建立或打开的连接。

7:将这些规则提交到 iptables。

注意:iptables 的工作原理是将数据包与它发现的第一个匹配的规则进行匹配,然后如果没有规则匹配,则使用相应的默认规则。

然后你可以运行命令

sudo iptables-restore iptables_rulesv4

将这些规则应用到计算机上。然后你可以查看你的规则集

sudo iptables -L -n -t filter

请注意:不要盲目地将上述规则集用于您的服务器。它仅作为示例。您必须确定您的安全需求是什么以及您的组织的安全需求是什么,并设计满足您的安全需求的规则集。

相关内容