Linux防火墙常规配置

常见linux发行版的防火墙配置

1. firewall-cmd系列

适用RHEL系,包括CentOS、AlmaLinux等

1.1 直接开关或者封禁

是否关闭防火墙,取决于你的需求,如果关闭,参照如下:

1
2
3
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask --now firewalld

如果正常使用,那么一些基础配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看当前所有规则
firewall-cmd --list-all
# 查看指定zone的所有规则
firewall-cmd --zone=my_lan --list-all
# 查看最近日志
journalctl -xe
# 封禁ip-公网使用drop,建议统一使用drop方式
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='178.62.65.89' drop"
# 封禁ip-内网使用reject
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='178.62.65.89' reject"
# 开放端口给所有区域
firewall-cmd --add-port=80/tcp --permanent

# 配置生效
firewall-cmd --reload

参考:https://cloud.tencent.com/developer/article/1685401

1.2 基于区域进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# selinux放开端口
semanage port -a -t http_port_t -p tcp 12345
# selinux,如果端口已经定义,需要迁移到http_port_t
semanage port -m -t http_port_t -p tcp 8002
# 查看所有zone
firewall-cmd --get-active-zones
# 创建一个zone
firewall-cmd --new-zone=my_lan --permanent
# 删除一个zone
firewall-cmd --delete-zone=my_lan --permanent
# 将一个ip段加入指定zone
firewall-cmd --zone=trusted --add-source=192.168.0.0/16 --permanent
# 将端口开放给指定区域
firewall-cmd --zone=my_lan --add-port=80/tcp --permanent

# 为指定IP段,开放指定端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/16" port protocol="tcp" port="3306" accept'

firewall-cmd --zone=trusted --add-source=192.168.0.0/16 --permanent;
firewall-cmd --zone=trusted --add-source=10.0.0.0/8 --permanent;
firewall-cmd --zone=trusted --add-source=172.16.0.0/16 --permanent;
firewall-cmd --zone=trusted --add-port=1-65535/tcp --permanent;
firewall-cmd --zone=trusted --add-port=1-65535/udp --permanent;
firewall-cmd --reload;
setsebool -P httpd_can_network_connect 1;

2. UFW系列

适用Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 查看ufw服务的状态
sudo ufw status verbose
# 启动ufw服务
sudo ufw enable;
# 设置模式为默认禁止所有访问
sudo ufw default deny;

# 直接放开ssh服务
sudo ufw allow ssh
# 查看所有已添加的规则
sudo ufw status numbered
# 基于规则序号,删除规则。注意,序号是实时生成的。你每删除一个,都要重新查看
sudo ufw delete 数字

# 允许ip段的访问
sudo ufw allow from 192.168.0.0/16;
# 放行指定端口
sudo ufw allow 20022;
# 放行端口段-tcp
sudo ufw allow 60000:65535/tcp;
# 放行端口段-udp
sudo ufw allow 60000:65535/udp;

# 封禁ip
sudo ufw deny from 46.101.138.249;

# 配置生效
sudo ufw reload