0

服务器防火墙配置教程:iptables/firewalld/ufw三大工具实战详解

2026.05.20 | youres | 17次围观

导语

很多新手买了服务器之后,直接把所有端口都打开,结果不出三天就被扫描、被攻击。服务器防火墙配置不是可选项,而是必选项。今天就手把手教你怎么用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辅助作者原创,未经许可,转载请保留原文链接。

发表评论
881文章数 0评论数
作者其它文章