前言
由于我家是电信公网,在后台日志中常常看到来自世界各地的访问。
这些IP尝试爆破我SSH服务的密码、微软远程桌面的用户名和密码,显然是一个安全隐患。
为了使我的防火墙更加安全,我决定将其设置为只允许国内访问。
openwrt 22.03 版开始使用 nftables,不再使用 iptables。
openwrt 22.03.3 版本 Luci 界面支持配置 IP集
安装所需的依赖包
安装 ipset
, openwrt 22.03 或更新版本需要安装 iptables-nft
来兼容iptables命令。
PS: nftables
自带列表功能,不需要 ipsec
。
1 | opkg update |
配置 IP 列表
1 | # 创建一个名为cnip的规则 |
注意:最后有一条命令会覆盖这个文件的内容,或者手动插入 ipset -R < /etc/ipset.conf
到 exit 0
命令前一行
1 | # 创建一个名为cnip的规则 |
新安装的系统需要手动配置 firewall.user
。参考以下链接或代码块。
1 | config include |
自行准备一个cn.zone
文件,内容为国家IP段。
- 打开
网络
->防火墙
->IP集合
- 点击
添加
数据包字段匹配
选择IP地址
- 通过
包括文件
上传cn.zone
文件,点击保存
- 点击
保存&应用
配置防火墙
1 | # 将规则写入防火墙的自定义规则文件中 |
openwrt的防火墙Filter
表中INPUT
链处理所有接入的包, 其中zone_wan_input
链是wan
空间的INPUT
链。
zone_wan_input
链中可能有规则会允许所有的包通过,为保证规则的效应iptables
使用插入(-I)
而不是添加(-A)
。
1 | # firewall.user文件可能不存在,反正能在防火墙运行时添加规则就行 |
- 打开
网络
->防火墙
->通信规则
- 点击
添加
,源区域wan
,目的区域输入
,把要限制的端口添加到目的端口
中,操作丢弃
,点击保存
- 点击
添加
,源区域wan
,目的区域输入
,限制的端口添加到目的端口
中,操作接受
,高级设置里使用IP集
选择之前创建的IP集,点击保存