Skip to content

Linux 防火墙

Debian 防火墙 UFW (Uncomplicated Firewall)

UFW (Uncomplicated Firewall) 是 Debian/Ubuntu 默认推荐的管理工具。它会将管理员输入的简单规则,自动转换为底层的 iptables 或 nftables 命令。

以下是一个让系统仅开放 SSH (22)、HTTP (80)、HTTPS (443) 端口的完整示例:

shell
# 1. 安装UFW(Debian 系统可能未预装)
sudo apt update && sudo apt install ufw -y

# ⚠️ 强烈警告:对于远程服务器,务必先执行下一步“放行SSH”,再执行“启用UFW”,否则将立即与服务器断开连接!

# 2. 设置默认策略(按最小权限原则,先放行必需的服务再设置默认策略)
sudo ufw default deny incoming   # 拒绝所有入站流量
sudo ufw default allow outgoing   # 允许所有出站流量

# 3. 放行必要的服务(按服务名或端口号)
sudo ufw allow ssh                # 放行 SSH (22/tcp)
sudo ufw allow http               # 放行 HTTP (80/tcp)
sudo ufw allow https              # 放行 HTTPS (443/tcp)

# 4. 启用防火墙
sudo ufw enable

# 5. 查看状态以确认
sudo ufw status verbose           # 查看详细状态,包括默认策略和当前生效的规则

# 端口控制
# 允许TCP 8080端口
sudo ufw allow 8080/tcp
# 拒绝TCP 25端口
sudo ufw deny 25/tcp
# 端口范围(允许从3000到3100的所有TCP端口)
sudo ufw allow 3000:3100/tcp

# IP与子网控制
# 允许单个IP
sudo ufw allow from 192.168.1.100
# 允许整个网段访问本机SSH
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

# 删除特定规则
sudo ufw delete allow 80/tcp

# 先查看规则编号再删除(更安全)
sudo ufw status numbered
# 然后执行
sudo ufw delete <>

# 重置所有规则(会禁用UFW并清空所有规则,请谨慎操作)
sudo ufw reset

CentOS 7 防火墙 firewalld 开放端口

如果没有安装,可通过以下命令安装:

shell
# 安装(debian 可用 apt install firewalld -y)
sudo dnf install firewalld -y
bash
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
sudo firewall-cmd --state

# 查看已经开放的端口:
sudo firewall-cmd --list-ports

# 重启防火墙
sudo firewall-cmd --reload
# 启动 firewall
sudo systemctl start firewalld.service
# 停止 firewall
sudo systemctl stop firewalld.service
# 开机时启动firewall
sudo systemctl enable firewalld.service
# 禁止firewall开机启动
sudo systemctl disable firewalld.service

# 开放端口(这里开放 3306和3307 端口)
# –zone 作用域;–add-port=80/tcp 添加端口,格式为:端口/通讯协议;–permanent #永久生效,没有此参数重启后失效
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3306/tcp --add-port=3307/tcp --permanent
sudo firewall-cmd --reload

# 开放端口范围
sudo firewall-cmd --zone=public --add-port=20000-20010/tcp --permanent
sudo firewall-cmd --reload

# 给固定IP开放端口:
sudo firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'

# 关闭一个端口
sudo firewall-cmd --zone=public --remove-port=3306/tcp --permanent
sudo firewall-cmd --reload

更多参考:https://blog.csdn.net/s_p_j/article/details/80979450

CentOS 6 防火墙 iptables 开放端口

查看防火墙状态及开启关闭命令

shell
# 开启/关闭防火墙(永久)
# 开启:
chkconfig iptables on
# 关闭:
chkconfig iptables off

# 查看防火墙状态
[root@localhost ~]# service iptables status
iptables:未运行防火墙。
# 开启防火墙
[root@localhost ~]# service iptables start
# 关闭防火墙
[root@localhost ~]# service iptables stop
# 重启防火墙
[root@localhost ~]# service iptables restart

centos6.x 添加防火墙端口

shell
# 查看已开放的端口
[root@localhost ~]# /etc/init.d/iptables status

# 开放 3306 和 8080 端口
[root@localhost ~]# /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
[root@localhost ~]# /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# 保存
[root@localhost ~]# /etc/rc.d/init.d/iptables save

# 查看已开发的端口
[root@localhost ~]# /etc/init.d/iptables status