Linux系统防火墙与iptables开放出战入站配置
在 Linux 系统中,防火墙 和 iptables 是密切相关但又不完全相同的概念
一、概念
1. iptables
iptables是 Linux 内核中实现防火墙功能的一个 用户空间工具,它用于配置内核中的 Netfilter 框架。- 它直接操作内核的网络规则,可以设置 数据包过滤、NAT、地址转换、端口转发等功能。
iptables是较早的标准防火墙工具,广泛使用于传统的 Linux 发行版中。
2. 防火墙(Firewall)
- “防火墙”是一个更广义的概念,指的是用来控制进出网络流量的一套机制。
- 在 Linux 中,“防火墙”通常是指一个 服务或守护进程,它通过调用底层的
iptables或其他工具来管理网络规则。 - 常见的现代防火墙工具包括:
firewalld(常见于 CentOS/RHEL)ufw(常见于 Ubuntu/Debian)
二、关系
| 工具 | 类型 | 是否基于 iptables |
|---|---|---|
iptables |
基础工具 | 直接操作 Netfilter |
firewalld |
高级防火墙服务 | 使用 iptables 作为后端 |
ufw |
高级防火墙工具 | 使用 iptables 作为后端 |
也就是说:
firewalld或ufw这些“防火墙服务”其实是对iptables的封装,最终还是通过iptables来生效。
Q: 为什么关闭防火墙并没有清除 iptables 规则?
你可能执行了如下命令:
systemctl stop firewalld
systemctl disable firewalld
发现规则依然存在!
A: Linux关闭防火墙不像Windows那般使防火墙内的出入站规则失效
-
firewalld底层是iptables,可根据网卡分区管理防火墙规则, 是管理iptables的上层工具, 关闭了firewalld只是没法通过firewall-cmd 命令动态管理这些规则 -
iptables规则是内核层面的,关闭防火墙(如firewalld/ufw)服务不会自动清空规则,需要手动清空或重启。 -
只是关闭还不够, 还需要
sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
警告!!!:
-
所有操作完毕后, 务必测试
SSH是否还能连接,以免被锁在SSH外面。 -
iptables-save > /etc/iptables/rules.v4保存之前一定要确定当前SSH连接是否正常, 否则重启后, 无法连接SSH -
如果发现自己被挡在
SSH之外, 则需要去云控制台或者物理机 登入后 开放tcp 22 INPUT端口
三、彻底清空 iptables 规则
# 列出 iptables 的防火墙规则,包括允许和拒绝的流量规则, 操作前查看对应新端口新部署的服务访问情况
iptables -L -n -v
# 清空所有现有规则
sudo iptables -F
sudo iptables -X
sudo iptables -Z
# 设置默认策略为 ACCEPT(允许所有)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -L -n -v
iptables -F # 清空所有链中的规则
iptables -X # 删除所有自定义规则
iptables -Z # 清空(归零)所有链的流量计数器iptables -P INPUT ACCEPT # 允许所有端口入站流量
iptables -P FORWARD ACCEPT # 允许所有端口转发流量
iptables -P OUTPUT ACCEPT # 允许所有端口出战流量
虽然 “所有端口开放” 在测试环境中可能有用,生产环境中 强烈不建议 这样做:
- 会暴露系统给外部攻击(如端口扫描、漏洞利用等)
- 应该只开放必要的端口(如 80、443、22)
- 使用防火墙工具(如
firewalld或iptables)进行细粒度控制
四、重新制定 iptables 规则
1. 允许本地回环接口(lo)通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
2. 允许已建立的连接和相关数据包(保持已有连接不断开)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
3. 开放特定 TCP 端口:22(SSH)、80(HTTP)、443(HTTPS)
也可以使用
vim编辑vim etc/iptables/rules.v4文件
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 如果需要开放输出方向(一般不需要出口方向):
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
22, 80, 443 端口应用不需要UDP
4. 设置默认策略(安全起见,INPUT 默认拒绝)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
5. 保存 iptables 规则,以便重启后仍生效
# 持久化当前配置(重启不会被重置)
iptables-save > /etc/iptables/rules.v4
iptables -F > /etc/iptables/rules.v4
iptables -F > /etc/sysconfig/iptables
# 重启防防火墙规则服务
service iptables restart
支持 IPv6,需要使用 ip6tables 做类似的配置。
6. 启动并启用 iptables 服务开机自启
systemctl start iptables
systemctl enable iptables
systemctl status iptables
# Ubuntu防火墙启用
systemctl start ufw
systemctl status ufw
7. 验证规则是否生效
查看当前规则列表:
iptables -L INPUT -n -v
iptables -L OUTPUT -n -v
iptables -L -n -v
类似如下内容(简化版):
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain FORWARD (policy DROP)
...
Chain OUTPUT (policy ACCEPT)
...
8. 重启系统, iptables 服务开机自启, 配置是否生效
9. Ubuntu相关命令
lsb_release -a [显示系统的发行版信息]
uname -m [显示处理器信息 ,aarch64:arm架构, x86_64:amd架构]
systemctl stop ufw [停止 UFW 防火墙服务]
systemctl disable ufw [禁用 UFW 防火墙服务,使其在系统启动时不自动启动]
systemctl status ufw [检查 UFW 防火墙服务的状态]
iptables -L -n -v [列出 iptables 的防火墙规则,包括允许和拒绝的流量规则]
iptables -L INPUT -n -v [列出 iptables 的 INPUT 链规则,用于检查入站流量控制策略]
iptables -X [删除所有用户自定义的链]
iptables -F [清空(Flush)所有链中的规则]
ls /etc/iptables/rules.v4 [列出 /etc/iptables/rules.v4 文件, 无法访问会提示]
cat /etc/iptables/rules.v4 [查看 /etc/iptables/rules.v4 文件的内容,该文件通常保存 iptables 规则]
iptables-save > /etc/iptables/rules.v4 [将当前的 iptables 规则保存到 /etc/iptables/rules.v4 文件中]
reboot [重启系统]

浙公网安备 33010602011771号