使用iptables基于MAC地址进行访控

本文介绍了一台基于CentOS的SVN服务器如何通过iptables进行访问控制,利用MAC地址限制特定设备访问,防火墙配置由bash脚本自动化实现。

近日完成一台基于CentOS的SVN服务器配置,由于该服务器上的文件非常重要,仅部分用户需要访问,最后决定采用iptables来做访控,并且是根据MAC地址来限制,为了便于后期维护,防火墙的配置是通过一个bash脚本来完成的,该脚本内容如下:

#!/bin/bash
iptables=/sbin/iptables
#Flush chains
$iptables –F
#Change the INPUT chains
$iptables -A INPUT -m state --state INVALID -j DROP
$iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Read allowed mac from file /root/allow_mac
for i in $(grep -v '^#' /root/allow_mac)
do
    $iptables -A INPUT -m mac --mac-source $i -j ACCEPT
done
#Change the INPUT chain's default Policy to DROP
$iptables -P INPUT DROP

   把允许访问的机器的MAC地址放入文件/root/allow_mac中,每个mac独占一行,然后编辑/etc/rc.local文件让系统在启动的时候执行该防火墙脚本即可。
### 配置基于 MAC 地址访制 在 OpenWrt 系统中,可以通过 `iptables` 和 `ipset` 的结合使用来实现基于 MAC 地址的网络访制。该方法允许根据设备的 MAC 地址限制其对特定目标(如 IP 地址或域名)的访问权限。 #### 创建自定义规则链 为了更好地组织和管理规则,可以创建两个新的规则链,例如 `AUTH_POLICY` 和 `FLOW_POLICY`: ```bash iptables -N AUTH_POLICY iptables -N FLOW_POLICY ``` 随后将这些自定义链挂接到主链上,比如 FORWARD 链: ```bash iptables -I FORWARD -j AUTH_POLICY ``` 这种方式适用于需要对局域网设备进行精细访制的场景,例如限制未认证 MAC 地址的上网权限[^1]。 #### 实现 MAC 地址过滤 对于未通过认证的 MAC 地址,可以通过以下命令禁止其访问互联网: ```bash iptables -I AUTH_POLICY -i br-lan -m set ! --match-set auth_pass_mac src -j DROP ``` 上述规则表示:对于从 `br-lan` 接口进入的数据包,如果源 MAC 地址不在 `auth_pass_mac` 的 ipset 列表中,则丢弃该数据包[^1]。 同时,也可以设置黑名单机制,阻止某些特定 MAC 地址访问特定的目标地址: ```bash iptables -A AUTH_POLICY -i br-lan -m set --match-set direct_blacklist_mac src -j FLOW_POLICY iptables -A FLOW_POLICY -i br-lan -m set --match-set direct_ip dst -j DROP ``` 以上规则表示:对于源 MAC 地址在 `direct_blacklist_mac` 列表中的设备,如果目标地址属于 `direct_ip` 列表,则丢弃该数据包[^1]。 #### 持久化保存规则 默认情况下,通过命令行添加的 iptables 规则在系统重启后会丢失。为了确保规则持久生效,可以将规则写入 `/etc/firewall.user` 文件中,或者使用 `iptables-save` 和 `iptables-restore` 工具进行备份与恢复: ```bash iptables-save > /etc/iptables.rules ``` 然后在系统启动时自动加载: ```bash iptables-restore < /etc/iptables.rules ``` 此方法可确保规则在每次重启后仍然有效[^3]。 #### 基于时间的访制 如果需要根据时间限制某些设备的网络访问,例如限制某个 MAC 地址在特定时间段内不能上网,可以使用如下命令: ```bash nohup sleep 60 && iptables -I FORWARD -m mac --mac-source 00:EA:88:00:44:4B -m time --timestart 02:00 --timestop 12:00 --kerneltz -j DROP && iptables -I FORWARD -m mac --mac-source 00:EA:88:00:44:4B -m time --timestart 13:00 --timestop 21:30 --kerneltz -j DROP & ``` 上述命令会在系统启动后延迟执行,并设置规则以阻止指定 MAC 地址在上午和下午的时间段内访问网络[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值