npx machina-cli add skill chaterm/terminal-skills/firewall --openclaw防火墙配置
概述
iptables、firewalld、nftables、ufw 防火墙配置技能。
iptables
基础命令
# 查看规则
iptables -L -n -v
iptables -L -n --line-numbers
iptables -t nat -L -n -v
# 清空规则
iptables -F
iptables -X
iptables -t nat -F
# 默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
常用规则
# 允许回环
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许特定 IP
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# 允许网段
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
# 拒绝其他
iptables -A INPUT -j DROP
删除规则
# 按行号删除
iptables -D INPUT 3
# 按规则删除
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
NAT 配置
# 开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# SNAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# DNAT 端口转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
保存规则
# Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
# CentOS/RHEL
service iptables save
firewalld
基础命令
# 状态
systemctl status firewalld
firewall-cmd --state
# 重载
firewall-cmd --reload
# 查看区域
firewall-cmd --get-zones
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
服务管理
# 查看服务
firewall-cmd --list-services
firewall-cmd --get-services
# 添加服务
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
# 删除服务
firewall-cmd --remove-service=http --permanent
端口管理
# 查看端口
firewall-cmd --list-ports
# 添加端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=5000-5100/tcp --permanent
# 删除端口
firewall-cmd --remove-port=8080/tcp --permanent
富规则
# 允许特定 IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
# 允许网段访问端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' --permanent
# 拒绝 IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.100" reject' --permanent
ufw (Ubuntu)
基础命令
# 启用/禁用
ufw enable
ufw disable
# 状态
ufw status
ufw status verbose
ufw status numbered
规则管理
# 允许端口
ufw allow 22
ufw allow 80/tcp
ufw allow 443/tcp
# 允许服务
ufw allow ssh
ufw allow http
# 允许 IP
ufw allow from 192.168.1.100
# 允许网段到端口
ufw allow from 192.168.1.0/24 to any port 3306
# 拒绝
ufw deny 23
# 删除规则
ufw delete allow 80
ufw delete 3
默认策略
ufw default deny incoming
ufw default allow outgoing
常见场景
场景 1:Web 服务器
# iptables
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
# firewalld
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
场景 2:数据库服务器
# 只允许应用服务器访问
iptables -A INPUT -s 192.168.1.10 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 192.168.1.11 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
场景 3:限速防护
# 限制 SSH 连接频率
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
故障排查
| 问题 | 排查方法 |
|---|---|
| 连接被拒 | 检查规则顺序、默认策略 |
| 规则不生效 | 检查 --permanent、reload |
| NAT 不工作 | 检查 ip_forward、FORWARD 链 |
# 查看计数
iptables -L -n -v
# 日志
iptables -A INPUT -j LOG --log-prefix "IPT_DROP: "
tail -f /var/log/messages | grep IPT_DROP
# 连接跟踪
conntrack -L
Source
git clone https://github.com/chaterm/terminal-skills/blob/main/security/firewall/SKILL.mdView on GitHub Overview
该技能提供对 iptables、firewalld、nftables、ufw 的完整防火墙配置能力。你可以查看、添加、删除规则,设置默认策略,配置 NAT 转发,以及在 Debian/Ubuntu 与 CentOS/RHEL 等发行版上保存规则。通过模板化示例,你可以快速在开发、测试和生产环境中部署安全网关策略。
How This Skill Works
你通过该技能生成可直接执行的命令片段和配置块,覆盖基础链、常用规则、NAT、以及规则持久化。技能按工具分模块,提供 iptables 的基础命令、火墙区域管理、ufw 的简化工作流等,并给出故障排查的诊断步骤。该技能围绕四大工具(iptables、firewalld、ufw、nftables)的常用场景展开,确保你能在不同 Linux 发行版上实现一致的防火墙行为。
When to Use It
- 需要为新服务器快速建立最小权限的防火墙并确保基本可用性
- 需要保护常见服务端口(SSH、HTTP/HTTPS、数据库等)并实现具体访问控制
- 需要实现 NAT 转发、端口映射或网段级访问控制
- 在多网段环境中对流量进行分段、白名单或黑名单策略
- 需要持久化防火墙规则并在重启后保持生效
- 进行网络边界的合规性和日志监控相关配置时
Quick Start
- 备份现有防火墙配置(规则文件或当前规则)
- 选择目标工具(iptables、firewalld、ufw、nftables),并安装/启用相关服务
- 应用基础规则:允许回环、允许已建立/相关连接、设置默认策略
- 逐步加入应用场景中的规则,如只开放必要端口、限制源IP/网段
- 保存并重载防火墙配置,验证连通性与安全性
Best Practices
- 默认策略采取最小权限原则(INPUT DROP、FORWARD DROP、OUTPUT ACCEPT,如有需要再放通)
- 始终允许回环接口以及已建立/相关连接的流量
- 对 SSH、HTTP/HTTPS、数据库等关键端口使用明确的允许规则,避免广域放通
- 启用日志记录并定期轮换日志,便于故障排查与安全审计
- 使用持久化/永久性配置(permanent、保存到规则文件),并在版本控制系统中管理规则变更
- 在变更前后执行充分的测试(连通性、重复应用、重启后规则保持生效)
Example Use Cases
- 场景 1:Web 服务器 ```bash # iptables iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -j DROP # firewalld firewall-cmd --add-service=ssh --permanent firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload ```
- 场景 2:数据库服务器 ```bash # 只允许应用服务器访问 iptables -A INPUT -s 192.168.1.10 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -s 192.168.1.11 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP ```
- 场景 3:限速防护 ```bash # 限制 SSH 连接频率 iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP ```
- 场景 4:NAT/端口转发 ```bash # 开启转发 echo 1 > /proc/sys/net/ipv4/ip_forward # SNAT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # DNAT 端口转发 iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80 iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT ```
- 场景 5:数据库前置网段隔离 ```bash # 只允许应用服务器网段访问 3306 iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP ```
Frequently Asked Questions
Related Skills
ssh
chaterm/terminal-skills
SSH 管理与安全
audit
chaterm/terminal-skills
--- name: audit description: 安全审计 version: 1.0.0 author: terminal-skills tags: [security, audit, auditd, logging, compliance, vulnerability] --- # 安全审计 ## 概述 安全审计、漏洞扫描、合规检查技能。 ## auditd 审计系统 ### 安装与管理 ```bash # 安装 apt install auditd audispd-plugins # Debian/Ubuntu yum install audit
erpnext-permissions
OpenAEC-Foundation/ERPNext_Anthropic_Claude_Development_Skill_Package
Complete guide for Frappe/ERPNext permission system - roles, user permissions, perm levels, data masking, and permission hooks
SEO Technical
openclaw/skills
Technical SEO audit across 8 categories: crawlability, indexability, security, URL structure, mobile, Core Web Vitals, structured data, and JavaScript rendering.
Auto-Update Systems Expert
martinholovsky/claude-skills-generator
Expert in Tauri auto-update implementation with focus on signature verification, rollback mechanisms, staged rollouts, and secure update distribution
CI/CD Pipeline Security Expert
martinholovsky/claude-skills-generator
Expert in CI/CD pipeline design with focus on secret management, code signing, artifact security, and supply chain protection for desktop application builds