如何在操作使用ufw设置防火墙

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规则

按照规则编号删除规则

  1. 查看规则编号

    sudo ufw status numbered
    

  2. 删除规则

    # sudo ufw delete (规则编号)
    sudo ufw delete 3
    

开放SSH连接

将UFW配置为接收SSH连接,可以运行:

sudo ufw allow OpenSSH
  • 如果你的SSH端口不是22,假设是100,则需要手动放心端口:
sudo ufw allow 100/tcp