专栏首页ITCoder如何在 Debian 10 上使用 UFW 来设置防火墙

如何在 Debian 10 上使用 UFW 来设置防火墙

一个被正确配置的防火墙是所有系统安全中最重要的部分。UFW (Uncomplicated Firewall) 是一个用来管理 iptables 防火墙规则的用户友好的前端。它的主要目的就是为了使得管理 iptables 更简单,就像名字所说的,简单的。

本文描述了如何在 Debian 10 上使用 UFW 设置防火墙。

一、前提条件

仅仅 root 或者其他有 sudo 权限的用户可以管理系统防火墙。

二、安装 UFW

输入下面的命令,安装ufw软件包:

sudo apt update
sudo apt install ufw

三、检查 UFW 的状态

安装过程不会自动激活防火墙,以避免服务器被锁住。你可以检查 UFW 的状态,输入:

sudo ufw status verbose

输出如下:

Status: inactive

如果 UFW 激活了,输入应该类似下面这样:

四、UFW 默认策略

默认情况下,UFW 阻塞了所有进来的连接,并且允许所有出去的连接。这意味着任何人无法访问你的服务器,除非你打开端口。运行在服务器上的应用和服务可以访问外面的世界。

默认的策略定义在/etc/default/ufw文件中,并且可以通过使用sudo ufw default <policy> <chain>命令来修改。

防火墙策略是用来构建更多详细的和用户自定义的规则的基础。通常情况下,初始的默认策略是一个很好的起点。

五、应用配置

大部分应用都附带一份应用配置,它描述了服务,并且包含了 UFW 设置。这个规则在软件包安装的时候,被自动创建在/etc/ufw/applications.d目录下。

想要列举出你系统上所有的应用配置,输入:

sudo ufw utf --help

与你系统上安装的软件包有关系,输出应该看起来像下面这样:

Available applications:
  DNS
  IMAP
  IMAPS
  OpenSSH
  POP3
  POP3S
  Postfix
  Postfix SMTPS
  Postfix Submission
  ...

想要查找更多关于指定配置和包含规则的信息,使用app info命令,加上配置名称。例如,你想要获得 OpenSSH 配置,你可以使用:

sudo ufw app info OpenSSH

输出如下:

Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.

Port:
  22/tcp

输出包含配置名称,标题,描述,以及防火墙规则。

六、允许 SSH 连接

在启用 UFW 防火墙之前,你需要允许 SSH 连接。

如果你从远程位置访问你的服务器,并且你在明确允许 SSH 连接之前启用 UFW 防火墙,你将永远无法连接到你的 Debian 服务器。

想要配置你的 UFW 防火墙接受 SSH 连接,运行下面的命令:

sudo ufw allow OpenSSH

输出:

Rules updated
Rules updated (v6)

如果 SSh 服务器没有监听默认端口 22,你还需要打开那个端口。

例如,你的 SSH 服务器 监听端口 7722,你将会执行:

sudo ufw allow 7722/tcp

七、启用 UFW

现在 UFW 防火墙被配置允许 SSH 远程连接,启用它,输入:

sudo ufw enable

输出:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

你将会被警告启用防火墙可能会中断现有的 SSH 连接,输入"y”,并且回车。

八、打开端口

取决于运行在你服务器上的应用,你需要根据服务打开不同的端口。

下面是几个例子,用来演示如何允许对最常用的服务的连接。

8.1 打开端口 80 - HTTP

允许 HTTP 连接:

sudo ufw allow http

除了使用http,你还可以使用端口号码,80

sudo ufw allow 80/tcp

8.2. 打开端口 443 - HTTPS

允许 HTTPS 连接:

sudo ufw allow https

你还可以使用端口号码,443

sudo ufw allow 443/tcp

8.3. 打开端口 8080

如果你运行 Tomcat 或者其他监听8080端口的应用,打开这个端口:

sudo ufw allow 8080/tcp

九、打开端口范围

使用 UFW,你可以允许一个端口访问的访问。当你打开一个端口访问,你需要指定端口的协议。

例如想要允许端口从71007200同时支持tcpudp,运行下面的命令:

sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp

十、允许指定 IP 地址

想要允许指定 IP 地址访问所有的端口,使用ufw allow from命令,加上 IP 地址:

sudo ufw allow from 64.63.62.61

十一、允许指定 IP 地址访问指定端口

想要允许指定端口,比如从你 IP 地址64.63.62.61的工作机器访问22端口,使用下面的命令:

sudo ufw allow from 64.63.62.61 to any port 22

十二、允许子网

允许一个子网 IP 地址的访问和允许一个单个 IP 地址的访问,命令是一样的。唯一的不同是需要指定网络掩码。例如,如果你想要允许 IP 地址(192.168.1.1 到 192.168.1.254),通过 3360(MySQL),你可以使用这个命令:

sudo ufw allow from 192.168.1.0/24 to any port 3306

十三、允许指定网络接口的连接

想要允许指定端口,比如指定网络接口eth2访问3360端口,使用allow in on 和 网络接口的名字:

sudo ufw allow in on eth2 to any port 3306

十四、禁止连接

对于所有进来连接的默认的策略被设置为deny,它代表 UFW 将会屏蔽所有进来的连接,除非你指定打开连接。

比如说你打开了端口80443,并且你的服务器处于来自23.24.25.0/24网络的攻击。想要禁止来自23.24.25.0/24的所有连接,使用下面的命令:

sudo ufw deny from 23.24.25.0/24

如果你仅仅像禁止从23.24.25.0/2480443端口的访问,使用:

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

有两种不同的方式可以删除 UFW 规则。通过规则序号和通过指定的规则。

通过规则序号来删除 UFW 规则很简单,特别是你刚接触 UFW。

想要通过规则序号来删除,你需要找到你想删除的规则序号。想要这么做,运行下面的命令:

sudo ufw status numbered

输出:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 8080/tcp                   ALLOW IN    Anywhere

想要删除规则,序号为3,这个规则允许对端口8080的连接,你可以使用下面的命令:

sudo ufw delete 3

删除规则的第二种方法就是指定实际的规则。例如,如果你添加过一个打开端口8069的规则,你可以通过下面的命令删除它:

sudo ufw delete allow 8069

十六、禁用 UFW

如果因为任何原因,你需要停止 UFW,并且使得所有规则失效,你可以运行:

sudo ufw disable

稍后,如果你想重新启用 UFW,并且激活所有规则,输入:

sudo ufw enable

十七、重置 UFW

重置 UFW 将会禁用 UFW,删除所有激活的规则。如果你想撤销所有的应用规则,并且重新开始时,这个很有用。

想要重置 UFW,简单输入下面的命令:

sudo ufw reset

十八、总结

你已经学会了如何在你的 Debian 10 机器上安装和配置 UFW 防火墙。在限制所有不必要连接时,请确保系统正常运行所需要的允许进来的连接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在 Ubuntu 20.04 上使用 UFW 来设置防火墙

    本文最先发布在:https://www.itcoder.tech/posts/how-to-setup-a-firewall-with-ufw-on-ubunt...

    雪梦科技
  • 如何在 Ubuntu 20.04 上使用 UFW 来设置防火墙

    防火墙是一个用来监视和过滤进出网络流量的工具。它通过定义一系列安全规则,来决定是否允许或者屏蔽指定的流量。

    雪梦科技
  • 如何在 Ubuntu 20.04 上安装 Spotify

    本文最先发布在:https://www.itcoder.tech/posts/how-to-install-spotify-on-ubuntu-20-04/

    雪梦科技
  • macOS 终端改用指纹授权

    小贝壳
  • Python|单调栈判断132模式

    给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。...

    算法与编程之美
  • vue.js应用开发笔记

    看vue.js有几天了,之前也零零散散的瞅过,不过一直没有动手去写过demo,这几天后台事比较少,一直在讨论各种需求(其实公司对需求还是比较重视与严谨的,一个项...

    用户1141560
  • 大数据小视角4:小议Lambda 与 Kappa 架构,不可变数据的计算探索

    首先我们来看看什么是Lambda架构,Lambda演算在编程语言之中是一个编程范式,它遵循如下几个特点:

    HappenLee
  • Vue常见面试题汇总

    MVVM 是 Model-View-ViewModel 的缩写。mvvm 是一种设计思想。Model 层代表数据模型,也可以在 Model 中定义数据修改和操作...

    物流IT圈
  • 面试中Vue被问的最多的题目是哪些?

    MVVM 是 Model-View-ViewModel 的缩写。mvvm 是一种设计思想。Model 层代表数据模型,也可以在 Model 中定义数据修改和操作...

    Javanx
  • Django + Gunicorn + Nginx 部署 Ubuntu 服务器

    本人的服务器使用的是腾讯云,腾讯云默认是没有开放 root 用户的,我们来创建 root 用户。 创建 root 账号并设置密码。

    希希里之海

扫码关注云+社区

领取腾讯云代金券