防火墙配置有哪些技巧?

话题来源: 从带宽使用图看出异常攻击行为

说起防火墙配置,很多人可能认为就是简单地开几个端口、关几个服务,但真的这么简单吗?我去年接手的一个项目就吃了个大亏——当时为了图省事,直接在防火墙上放行了所有UDP端口,结果服务器差点被DNS放大攻击搞垮。从那以后我才明白,防火墙配置不仅是个技术活,更是一场攻防心理战啊!

最小权限原则是个好东西,可惜…

实践中我发现,很多人配置防火墙时总担心”漏掉什么”,于是就习惯性地放宽权限。但现代攻击手段这么狡猾,开100个端口意味着要防范100个入口。建议用白名单模式管理端口,比如Web服务器只放行80、443,数据库只开3306,其他默认拒绝。不过有意思的是,有些企业宁可买十几万的安全设备,却不愿意花时间做好这个基础配置。

那些容易忽略的隐藏入口

你以为关掉SSH的22端口就安全了?有次审计时发现,某个运维在6789端口偷偷架了SSH隧道,说是”方便维护”。结果这个后门被恶意爬虫扫描到,服务器成了肉鸡。所以配置防火墙时要特别注意:

  • 所有未使用的管理界面端口(包括3389、5900、8080等)
  • ICMP协议的精细化管控(ping有时会成为攻击跳板)
  • 临时开放的端口要有自动关闭机制

活用连接状态跟踪

现在的防火墙早就不只是简单的包过滤了。就拿我最喜欢的连接跟踪(conntrack)功能来说,它能智能识别TCP会话状态。配置规则时可以加上状态检测,比如只允许ESTABLISHED状态的包通过,这样能有效防御SYN洪水攻击。

# iptables示例:允许已建立的SSH连接
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

不过要注意,连接跟踪会占用内存资源,在大流量环境下需要适当调整nf_conntrack_max参数。

日志配置的黄金组合

有一次排查入侵事件时,发现防火墙确实拦住了攻击,但由于没配详细日志,根本不知道攻击者尝试了什么手段。建议采用这种日志策略:

  • 被拒绝的连接全记录(但要注意日志轮转)
  • 关键端口的成功连接也记录
  • 配合logrotate做日志切割

说实话,看着防火墙日志里密密麻麻的扫描记录,你会惊讶于互联网上的恶意请求居然这么多!这感觉就像在监控里看见自家门口每天有几十个陌生人在转悠…

评论