防火墙与Nginx安全配置全解析
·
以下是关于防火墙(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
更多推荐
所有评论(0)