导语
很多新手买了服务器之后,直接把所有端口都打开,结果不出三天就被扫描、被攻击。服务器防火墙配置不是可选项,而是必选项。今天就手把手教你怎么用iptables、firewalld和ufw这三种主流工具把服务器防火墙配好,做到只开必要的端口,其余一律拒绝。
一、为什么服务器必须配置防火墙
服务器暴露在公网上,每时每刻都在被各种扫描器探测。SSH的22端口、数据库的3306端口、Redis的6379端口,这些都是黑客最喜欢光顾的目标。如果不做任何过滤,你的服务器就像一扇开着的门,谁都能进来逛一圈。
防火墙的核心作用就是:默认拒绝所有入站连接,只放行你明确允许的流量。这是网络安全的基本原则——最小权限原则。不管你的服务器跑的是什么业务,SSH、HTTP/HTTPS、数据库端口,该关的关,该限制IP的限制IP。
二、iptables防火墙配置详解
iptables是Linux内核自带的防火墙工具,虽然配置语法比较复杂,但功能强大、性能优秀,适合对网络规则有精细控制需求的场景。
2.1 iptables基本概念
iptables通过表(table)、链(chain)、规则(rule)三层结构来管理网络流量。常用的表有filter(过滤表)和nat(地址转换表),常用的链有INPUT(入站)、OUTPUT(出站)和FORWARD(转发)。
2.2 常用配置命令
查看当前规则:
iptables -L -n --line-numbers
设置默认策略——拒绝所有入站,允许所有出站:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
放行回包(已建立的连接):
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
放行SSH(22端口),建议限制来源IP:
iptables -A INPUT -p tcp --dport 22 -s 你的IP地址 -j ACCEPT
放行HTTP和HTTPS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
放行回环地址:
iptables -A INPUT -i lo -j ACCEPT
2.3 保存规则
CentOS系统使用service iptables save或iptables-save > /etc/sysconfig/iptables保存;Ubuntu/Debian系统使用iptables-persistent包来持久化规则。
三、firewalld防火墙配置详解
firewalld是CentOS 7及以上版本的默认防火墙管理工具,采用区域(zone)概念,支持动态更新规则,不需要重启防火墙服务即可生效,比iptables更加灵活易用。
3.1 firewalld区域概念
firewalld预设了多个区域,常用的有:public(公共区域,仅放行SSH和DHCP)、trusted(信任区域,放行所有流量)、drop(丢弃区域,拒绝所有入站流量)。默认使用public区域。
3.2 常用配置命令
查看当前状态:
firewall-cmd --state
firewall-cmd --get-default-zone
查看当前区域的放行规则:
firewall-cmd --list-all
永久放行端口:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
永久放行服务:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
限制来源IP访问SSH:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="你的IP" service name="ssh" accept'
firewall-cmd --reload
移除端口或服务:
firewall-cmd --permanent --remove-port=3306/tcp
firewall-cmd --reload
四、ufw防火墙配置详解
ufw(Uncomplicated Firewall)是Ubuntu/Debian系统的默认防火墙工具,设计理念就是简单易用,非常适合新手和中小型服务器。
4.1 ufw基本操作
启用/禁用防火墙:
ufw enable
ufw disable
查看状态:
ufw status verbose
4.2 常用配置命令
放行SSH(启用ufw前务必先放行,否则会断连):
ufw allow 22/tcp
放行HTTP和HTTPS:
ufw allow 80/tcp
ufw allow 443/tcp
放行指定来源IP:
ufw allow from 你的IP to any port 22
拒绝指定端口:
ufw deny 3306/tcp
删除规则:
ufw delete allow 80/tcp
ufw status numbered
限制连接频率(防暴力破解):
ufw limit 22/tcp
这条命令会在30秒内超过6次连接尝试时自动拒绝该IP,是防SSH暴力破解的利器。
五、三种防火墙工具对比与选型
iptables适合需要精细控制规则、高性能场景的服务器,但配置复杂,新手容易误操作。
firewalld适合CentOS/RHEL系列系统,支持动态更新、区域管理,适合需要灵活管理多端口多服务的场景。
ufw适合Ubuntu/Debian系统,语法简单直观,适合新手和追求快速配置的场景。
不管用哪种工具,核心原则都是一样的:默认拒绝、按需放行、最小权限。
六、总结与建议
服务器防火墙配置是运维基本功,也是安全防护的第一步。建议:
1. 新服务器上线第一时间配置防火墙,不要裸奠上线。
2. SSH端口改默认、限制来源IP,配合fail2ban使用效果更佳。
3. 数据库端口(3306、6379、27017等)不要对外开放,除非有明确的远程访问需求。
4. 配置完成后用在线端口扫描工具验证,确保不该开放的端口确实关闭了。
5. 养成定期检查防火墙规则的习惯,及时清理不再需要的放行规则。
相关推荐:
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论