防火墙用于监控过滤传入和传出网络流量,可以定义一组规则用来放行或者组织特定流量。
很多大厂自带防火墙相当强力,但是对于大部分IDC商而言,并没有提供相应的面板,如果想要达到阻断某些流量的效果就需要自行安装并配置。比如22(ssh) 端口只允许特定IP登录。
Debian10 附赠UFW防火墙配置工具,用于管理iptables,不过更加友好,简单,易使用。
本文介绍如何使用UFW在Debian 系统中配置和管理防火墙。文章只包含基础用法。
本文环境:Debian11 默认root 权限
使用UFW
安装UFW
1
2
| apt update
apt install ufw
|
安装完成后可以使用 ufw status verbose
查看当前状态
UFW默认策略
ufw防火墙默认阻止所有传入和转发流量,允许所有出站流量。这就意味着除非打开专门的ssh端口,否则所有访问服务器的流量,包括你自己都无法连接。
应用配置文件
1
2
3
4
| # 查看软件安装包
ufw app list
# 查看相应配置文件
ufw app info 'SSH'
|
开启UFW
一定注意,使用UFW第一项就要开启你相应的ssh 端口,否则下次将无法登录!
1
2
3
4
5
6
| # 按照默认配置开启tcp 22端口
ufw allow ssh
# 如果改变了ssh 端口,如33
ufw allow 33/tcp
# 开启ufw
ufw enable
|
通用规则
通过上文的开启ssh 端口并启用UFW,其实已经可以看出一般规则
增加规则
1
2
3
4
5
6
7
| # 端口以999为例
# 指定端口协议
ufw allow port/protoc
# 指定端口,不指定协议,将同时允许tcp,udp
ufw allow port
# 如开启999端口的udp 协议
ufw allow 999/udp
|
1
2
3
4
| # 开启80,440端口
ufw allow 80,443/tcp
# 开启888-999的tcp 协议端口
ufw allow 888:999/tcp
|
1
2
3
4
| # IP 66.66.66.66 可以访问连接所有服务器端口
ufw allow from 66.66.66.66
# 只有IP 66.66.66.66 可以访问22端口进行ssh连接
ufw allow from 66.66.66.66 to any port 22
|
1
2
| # 192.168.1.1 - 192.168.1.254 可以访问3306 端口
ufw allow from 192.168.1.0/24 to any port 3306
|
1
2
3
| # 只需将allow 改为deny 即可
# 如拒绝1.2.3.4 访问网页
ufw deny from 1.2.3.4 to any port 80,443
|
1
2
3
4
5
6
| # 使用服务名称,如http
ufw allow http
# 指定协议端口
ufw allow 80/tcp
# 如安装了Nginx可使用
ufw allow 'Nginx HTTP'
|
查看当前已添加规则
使用 ufw status numbered
1
2
3
4
5
6
7
8
9
| root@gogo:~# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 668/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 668/tcp (v6) ALLOW IN Anywhere (v6)
[ 4] 80/tcp (v6) ALLOW IN Anywhere (v6)
|
删除规则
ufw delete id
1
2
3
4
5
| root@gogo:~# ufw delete 2
Deleting:
allow 80/tcp
Proceed with operation (y|n)? y
Rule deleted
|
1
2
| # 删除端口访问
ufw delete allow 80/tcp
|
设置 UFW 状态
1
2
3
4
| # 禁用ufw
ufw disable
# 启用ufw
ufw enable
|
下一条命令为危险命令,将会删除所有活动规则,谨慎使用
ufw reset
1
2
3
| root@gogo:~# ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)?
|
问题解决
Docker 在UFW中的网络处理
安装了Docker后,涉及Docker网络放通存在变化,可以查以下资料适配。
解决-ufw-和-docker-的问题
1
2
3
4
5
6
7
8
9
10
11
12
13
| #命令备忘
#按container_name管理
ufw-docker allow nginx-proxy-manager
ufw-docker allow nginx-proxy-manager 443/tcp
ufw-docker delete allow nginx-proxy-manager
#放通docker容器内部
ufw allow from 172.16.0.0/12 to any
#放通zerotier
ufw allow from 10.147.x.0/24 to any
#放通本地
ufw allow from 192.168.x.0/24 to any
|