uos系统需用ufw或iptables实现精细化流量控制:先启用ufw并设默认策略;再添加端口、ip、序号规则;特殊场景直调iptables;通过ufw应用配置协同持久化;最后开启日志调试。

如果您在UOS系统中需要对网络流量进行精细化控制,仅依赖图形界面的防火墙设置可能无法满足需求,则需通过ufw或iptables手动添加自定义规则。以下是针对UOS系统的高级防火墙配置步骤:
一、启用并初始化ufw服务
ufw(Uncomplicated Firewall)是UOS默认集成的前端工具,用于简化iptables规则管理。启用ufw前需确保其服务处于活动状态,并清除可能存在的残留策略。
1、执行命令检查ufw当前状态:sudo ufw status verbose
2、若显示“Status: inactive”,则运行:sudo ufw enable
3、重置为默认策略以避免冲突:sudo ufw reset
4、设置默认入站拒绝、出站允许:sudo ufw default deny incoming && sudo ufw default allow outgoing
二、使用ufw添加端口与服务规则
ufw支持按端口号、协议类型及来源IP范围设定访问控制,适用于常见服务开放与限制场景。
1、允许特定端口(如SSH):sudo ufw allow 22/tcp
2、限制某端口仅来自指定子网:sudo ufw allow from 192.168.1.0/24 to any port 80
3、拒绝某个IP的所有连接:sudo ufw deny from 203.0.113.45
4、插入规则至指定序号位置(例如插入为第一条):sudo ufw insert 1 deny proto udp from 198.51.100.22 to any port 53
三、直接调用iptables编写底层规则
当ufw无法覆盖特殊匹配条件(如基于包长度、TTL值或连接状态)时,可绕过ufw直接操作iptables链,但需注意ufw后续启用可能覆盖手动规则。
1、查看当前filter表规则:sudo iptables -L -v -n
2、在INPUT链开头添加DROP规则(拦截特定源IP):sudo iptables -I INPUT -s 192.0.2.100 -j DROP
3、允许已建立连接的响应流量通过:sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
4、保存当前iptables规则至配置文件(UOS中通常为/etc/iptables/rules.v4):sudo iptables-save | sudo tee /etc/iptables/rules.v4
四、配置ufw与iptables协同工作
为避免ufw重启后丢失手动iptables规则,需将自定义规则写入ufw框架支持的组件目录,使其随ufw启动自动加载。
1、创建ufw应用配置文件:sudo nano /etc/ufw/applications.d/custom-rules
2、在文件中定义规则组,例如:[Custom-Log-Drop]
title=Log and drop malicious packets
description=Logs then drops packets matching TTL=1 or invalid flags
ports=any
3、启用该配置并应用:sudo ufw app update Custom-Log-Drop && sudo ufw allow Custom-Log-Drop
4、验证是否生效:sudo ufw app info Custom-Log-Drop
五、调试与日志追踪规则匹配情况
启用日志记录可确认规则是否被触发,尤其在排查误拦或漏放问题时至关重要。UOS中ufw默认不记录所有匹配动作,需显式开启。
1、启用ufw日志功能(级别设为low):sudo ufw logging on && sudo ufw logging low
2、查看实时日志输出:sudo tail -f /var/log/ufw.log
3、在iptables中为特定规则添加日志标记(使用NFLOG目标):sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j NFLOG --nflog-group 1
4、监听NFLOG消息(需安装ulogd2):sudo ulogd2 -d -v










