一、防火墙规则配置实战
防火墙是网络安全的第一道防线,通过定义流量过滤规则实现访问控制。以下是常见防火墙(如 iptables、nftables、云防火墙)的规则配置方法:
1. 基础规则语法
以 iptables 为例,规则由 链(Chain)、匹配条件(Match) 和 动作(Action) 组成:
iptables -A <CHAIN> -p <PROTOCOL> --dport <PORT> -j <ACTION>
2. 常见配置场景
(1) 允许 SSH 访问(仅限内网)
# 允许来自 192.168.1.0/24 网段的 SSH 连接(TCP 22)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
# 拒绝其他来源的 SSH 连接
iptables -A INPUT -p tcp --dport 22 -j DROP
(2) 限制 Web 服务端口
# 允许 HTTP/HTTPS 流量(TCP 80/443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 禁止其他端口
iptables -A INPUT -p tcp --dport 1024:65535 -j DROP
(3) 防止 IP 欺骗
# 拒绝私有地址段(如 10.0.0.0/8、192.168.0.0/16)
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
(4) NAT 端口转发
# 将公网 80 端口流量转发到内网 192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
3. 规则优化与注意事项
- 规则顺序:防火墙按顺序匹配规则,需将宽松规则放在严格规则之前。
# 允许 SSH 后再拒绝其他流量
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
- 日志记录:记录被拒绝的流量以便审计。
iptables -A INPUT -j LOG --log-prefix "BLOCKED: " --log-level 4
- 保存规则:重启后规则失效,需持久化保存。
# Ubuntu/Debian
sudo apt install iptables-persistent
# CentOS/RHEL
sudo service iptables save
二、WAF 工作原理与实战
WAF(Web Application Firewall,Web 应用防火墙)专注于应用层(HTTP/HTTPS)的安全防护,核心目标是防御 Web 攻击(如 SQL 注入、XSS)。
1. WAF 核心功能
- 攻击检测:识别恶意请求(如 UNION SELECT、<script> 标签)。
- 签名匹配:基于已知漏洞特征库(如 OWASP ModSecurity CRS)。
- 行为分析:检测异常流量(如高频请求、CC 攻击)。
- 内容过滤:拦截敏感信息(如信用卡号、密码)。
2. WAF 技术实现原理
- 签名检测:匹配已知攻击模式(如 SQL 注入正则表达式)。
# 示例:检测 SQL 注入关键字
(select\s+.*\s+from|insert\s+into|union\s+select)
- 语义分析:解析 HTTP 请求结构,检测逻辑漏洞(如绕过路径遍历防护)。
- 速率限制:限制单个 IP 的请求频率(防 CC 攻击)。
# Nginx 速率限制配置示例
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
3. 部署架构
WAF 部署架构
- 反向代理模式:WAF 作为前置代理,过滤后转发请求到后端服务器。
- 插件模式:集成到 Web 服务器(如 Nginx 的 ngx_http_modsecurity_module)。
4. 实战案例:ModSecurity 规则配置
# 启用 ModSecurity 规则
LoadModule security2_module modules/mod_security.so
LoadModule unique_id_module modules/mod_unique_id.so
# 阻塞 SQL 注入尝试
SecRule ARGS "@rx (select|union)" "id:1001,phase:2,deny,status:403,msg:'SQL Injection Detected'"
# 限制请求体大小(防文件上传攻击)
SecRequestBodyLimit 1048576 # 限制为 1MB
三、防火墙与 WAF 联合防御实战
场景:防御针对 Web 服务器的 DDoS 攻击和 SQL 注入。
- 防火墙规则:
# 仅允许 HTTP/HTTPS 流量
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
# 限制单个 IP 的并发连接数(防 CC 攻击)
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT
- WAF 配置(ModSecurity):
# 阻塞敏感路径访问
SecRule REQUEST_URI "@streq /admin" "id:1002,phase:1,deny,status:403"
# 拦截恶意 User-Agent
SecRule REQUEST_HEADERS:User-Agent "@contains sqlmap" "id:1003,phase:1,deny,status:403"
四、总结与最佳实践
- 防火墙规则:
- 最小权限原则:仅开放必要端口(如 80/443)。
- 日志监控:定期分析防火墙日志,发现异常流量。
- WAF 防护:
- 定期更新规则库:应对新型 Web 攻击。
- 误报处理:通过白名单排除误拦截的合法请求(如 API 接口)。
- 分层防御:
- 防火墙(网络层) + WAF(应用层) + RASP(运行时防护)形成立体防护。
通过合理配置防火墙规则和部署 WAF,可显著提升 Web 应用的安全性,降低被入侵风险!