UFW(简单防火墙)是用于管理iptables防火墙规则的用户友好型前端。它的主要目标是使iptables的管理更容易。
在学习Linux的时候大家一般都会关心命令,Posix API和桌面等,很少会去了解防护墙。其实除了一些网络安全厂商提供的付费防火墙,Debian系的Linux发新版本省就自带了UFW防火墙。
安装UFW
在Debian中默认没有安装UFW,但是Ubuntu是默认安装了的,我们可以先安装一下:
sudo apt update sudo apt install ufw
UFW工作状态
sudo ufw status verbose
终端输出结果:
这个说明防火墙是激活状态。
UFW默认策略
默认情况下,UFW阻止所有入站连接并允许所有出站连接。除非您专门打开端口,否则尝试访问您的服务器的任何人将无法连接,但服务器上运行的应用程序和服务将能够访问外界。
缺省策略在/etc/default/ufw文件中定义,可以使用sudo ufw default <policy> <chain>命令更改。
UFW配置
大多数应用程序附带一个描述服务的应用程序配置文件,并包含UFW设置。在软件包安装过程中,将在/etc/ufw/applications.d目录中自动创建配置文件。
sudo ufw app list
这个命令可以输出配置的应用:
要查找有关特定配置文件和包含的规则的更多信息,可以使用app info命令,后跟配置文件名称。例如,要获取有关Samba配置文件的信息,可以使用:
sudo ufw app info Samba
启用和关闭UFW
- 启用UFW
sudo ufw enable
- 关闭UFW
sudo ufw disable
端口操作
根据服务器上运行的应用程序,您需要打开运行服务的端口,,可以参考以下示例:
- 开启http服务需要的80端口:
sudo ufw allow http
- 可以使用端口号80代替http配置文件:
sudo ufw allow 80/tcp
- 开启https服务需要端口:
sudo ufw allow https
- 可以使用端口号443代替https配置文件:
sudo ufw allow 443/tcp
- 开启tomcat默认使用的8080端口:
sudo ufw allow 8080/tcp
- 除了单独开启服务及端口外,还可以通过命令以端口范围的方式开启端口。
例如,我们要允许8090到9090之间的端口都允许tcp/udp访问,我们可以通过以下命令解决。
sudo ufw allow 8090:9090/tcp sudo ufw allow 8090:9090/udp
- 允许特定的IP地址
要允许从特定IP地址访问所有端口,可以使用ufw allow from命令,后跟IP地址。命令如下:
sudo ufw allow from 115.127.62.61
当然也可以允许特定IP访问前提条件下,允许其访问特定端口,命令如下:
sudo ufw allow from 115.127.62.61 to any port 22
- 允许子网
允许从IP地址的子网进行连接的命令与使用单个IP地址时的命令相同。唯一的区别是您需要指定网络掩码。例如,如果要允许访问从192.168.1.1到192.168.1.254的IP地址到端口3360(MySQL),则可以使用以下命令:
sudo ufw allow from 192.168.1.0/24 to any port 3306
- 允许连接到特定的网络接口
要允许访问特定端口,假设仅将3360端口访问特定网络接口eth2,可以使用allow in on和网络接口名称:
sudo ufw allow in on eth2 to any port 3306
拒绝连接
所有传入连接的默认策略都设置为“拒绝”,这意味着除非你专门打开该连接,否则UFW将阻止所有传入连接。
假设您打开了端口80和443,并且服务器受到23.24.25.0/24网络的攻击。要拒绝来自23.24.25.0/24的所有连接,可以使用以下命令:
sudo ufw deny from 23.24.25.0/24
- 如果只想拒绝从23.24.25.0/24访问端口80和443,请使用:
sudo ufw deny from 23.24.25.0/24 to any port 80 sudo ufw deny from 23.24.25.0/24 to any port 443
编写拒绝规则与编写允许规则相同。您只需要将allow替换为deny即可。
重置UFW
sudo ufw reset
删除UFW规则
按照规则编号删除规则
- 查看规则编号
sudo ufw status numbered
- 删除规则
# sudo ufw delete (规则编号) sudo ufw delete 3
开放SSH连接
将UFW配置为接收SSH连接,可以运行:
sudo ufw allow OpenSSH
- 如果你的SSH端口不是22,假设是100,则需要手动放心端口:
sudo ufw allow 100/tcp