以下是关于防火墙(Firewall)的全面知识讲解,涵盖基础概念、分类、配置实践及与Nginx的协同使用:


一、防火墙基础概念

1. 防火墙是什么?
  • 核心功能:网络安全系统,监控和控制进出网络的流量(基于预定义规则)

  • 工作层级

    • 网络层(IP/TCP/UDP/ICMP)

    • 应用层(HTTP/FTP/DNS等)

2. 防火墙类型
类型工作层级典型工具特点
包过滤防火墙网络/传输层iptables/nftables速度快,无状态检测
状态检测防火墙网络/传输层Cisco ASA跟踪连接状态
应用层防火墙应用层WAF(ModSecurity)深度内容检测
下一代防火墙(NGFW)全栈Palo Alto集成IPS/IDS/沙箱

二、Linux防火墙实践(iptables/nftables)

1. iptables 四表五链
# 表类型:
1. filter(默认)   # 包过滤
2. nat             # 地址转换
3. mangle          # 包修改
4. raw             # 连接跟踪豁免

# 链类型:
INPUT       # 入站流量
OUTPUT      # 出站流量
FORWARD     # 转发流量
PREROUTING  # 路由前处理
POSTROUTING # 路由后处理
2. 常用命令示例
# 查看规则
iptables -L -n -v

# 允许SSH访问(22端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许Nginx流量(80/443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 默认拒绝策略
iptables -P INPUT DROP
iptables -P FORWARD DROP

# 保存规则(CentOS)
service iptables save
3. nftables(iptables替代方案)
# 创建简单规则
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; }
nft add rule inet filter input tcp dport {22,80,443} accept
nft add rule inet filter input drop

三、防火墙与Nginx的协同配置

1. 基础防护策略
# Nginx层面限制(需配合防火墙使用)
location /admin {
    allow 192.168.1.0/24;
    deny all;
}

# 防火墙层面限制
iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
2. 防DDoS配置
# 限制单个IP连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

# 启用SYN Cookie防护
sysctl -w net.ipv4.tcp_syncookies=1
3. 端口转发场景
# 将80端口转发到Nginx监听的8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080


四、防火墙管理最佳实践

1. 规则优化原则
  • 从严格到宽松:先设置默认DROP策略

  • 合并相似规则:减少规则数量提升性能

  • 定期清理:删除过期规则

2. 审计与监控
# 记录被拒绝的流量
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DENIED: "

# 查看日志(CentOS)
tail -f /var/log/messages | grep IPTABLES
3. 灾难恢复
# 备份规则
iptables-save > /etc/iptables.rules

# 恢复规则
iptables-restore < /etc/iptables.rules

五、常见问题排查

1. Nginx无法访问
# 检查防火墙是否放行
iptables -L -n | grep 80

# 临时禁用防火墙测试
systemctl stop firewalld  # CentOS
ufw disable              # Ubuntu
2. 性能问题诊断
# 查看被丢弃的包
iptables -L -v

# 监控连接跟踪表
conntrack -L
3. 规则冲突检测
# 按顺序打印规则编号
iptables -L --line-numbers

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐