Linux 防火墙的两层

应用层规则(iptables / nftables / firewalld / ufw)
                ↓
netfilter(内核里的包过滤框架)

底层是 netfilter(内核组件),各种"防火墙工具"只是它的不同前端。常见的:

工具 偏好 风格
ufw Ubuntu 极简(推荐新手)
firewalld RHEL / CentOS / Fedora 中等(zone 概念)
iptables 通用 底层(复杂但精确)
nftables 新方向 iptables 替代

ufw(Ubuntu 推荐)

# 看状态
sudo ufw status

# 默认拒绝入站、允许出站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 放行端口
sudo ufw allow 22/tcp                  # SSH
sudo ufw allow 80/tcp                  # HTTP
sudo ufw allow 443/tcp                 # HTTPS

# 放行端口范围
sudo ufw allow 6000:6100/tcp

# 仅允许某 IP 访问
sudo ufw allow from 1.2.3.4 to any port 22

# 删规则
sudo ufw delete allow 80/tcp

# 启用
sudo ufw enable

# 查规则编号
sudo ufw status numbered

# 按编号删
sudo ufw delete 3

开 ufw 之前先确认 22 端口已 allow——否则你下一秒就 SSH 不上来。

firewalld(RHEL 系)

# 看状态
sudo firewall-cmd --state
sudo firewall-cmd --list-all

# 放行服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=8080/tcp

# 删
sudo firewall-cmd --permanent --remove-port=8080/tcp

# 重新加载(让 --permanent 规则生效)
sudo firewall-cmd --reload

firewalld 用 zone 概念(trusted / public / dmz / drop 等)——可以一个网卡放一个 zone。

iptables(底层)

iptables 把规则组织成"链"(chain)和"表"(table):

表 (table):filter(包过滤)/ nat / mangle / raw
链 (chain):
  filter 表:
    INPUT       入站包
    OUTPUT      出站包
    FORWARD     转发包
  nat 表:
    PREROUTING  入站前
    POSTROUTING 出站前
# 看规则
sudo iptables -L -n -v

# 允许已建立连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许 lo
sudo iptables -A INPUT -i lo -j ACCEPT

# 允许 SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 默认丢弃入站
sudo iptables -P INPUT DROP

# 删规则(按行号)
sudo iptables -L INPUT --line-numbers
sudo iptables -D INPUT 3

⚠ iptables 规则默认不持久化——重启就丢。要装 iptables-persistent 或导出 iptables-save > /etc/iptables/rules.v4

云上还有"安全组"

阿里云 / 腾讯云 / AWS 等都有云平台层防火墙(安全组)——这是第一道防线,云控制台配。

互联网 → 云安全组 → 服务器 OS 防火墙(ufw / firewalld)→ 应用

两层都要配

  • 安全组只开 22 / 80 / 443
  • OS 防火墙再开同样几个

云上数据库绝对不要在安全组里开 0.0.0.0/0——只对应用服务器 IP 开。

实战:基础服务器防火墙

# Ubuntu,ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# 验证
sudo ufw status verbose

5 行命令搞定基础防御。

下一篇起进入模块六:Shell 脚本编程。