zoukankan      html  css  js  c++  java
  • Linux 中 UFW 的使用

    这几天部署了一些服务,有用到UFW来管理防火墙规则,十分好用,下面大致记录一下其安装及使用方法,方便后续可以快速应用。

    UFW,或称 Uncomplicated Firewall,是 iptables 的一个接口,为不熟悉防火墙概念的初学者提供了易于使用的界面,同时支持 IPv4 和 IPv6,广受欢迎。

    先决条件

    • 任意一台安装有 Linux 发行版的主机
    • root 权限(以下命令默认在 root 账户下运行,如果是其他账户,使用 sudo 也是一样的)

    安装

    Ubuntu & Debian

    $ apt-get install ufw -y
    

    CentOS

    CentOS 默认软件源不提供 UFW,所以你需要安装 EPEL 软件源,运行以下命令:

    $ yum install epel-release -y
    

    安装完成后使用以下命令安装 UFW:

    $ yum install --enablerepo="epel" ufw -y
    

    UFW 安装后,可以通过以下命令来启动 UFW 服务并使其在启动时启动(一般在完成默认配置后再重启):

    $ ufw enable
    

    如果运行 ufw 命令时报 Command Not Found 错误,可以使用 whereis ufw 来确定 ufw 的位置,之后你也可以顺手设置一下 alias。
    接下来,使用以下命令检查 UFW 的状态,可以看到以下输出:

    $ ufw status 
    Status: active
    

    还可以通过运行以下命令来禁用 UFW 防火墙(后面可以通过 enable 命令随时启用服务):

    $ ufw disable
    

    如果你决定要重新开始,则可以使用 reset 命令:

    $ ufw reset
    

    这将禁用 UFW 并删除之前定义的任何规则。

    使用

    最新版的 UFW 默认启用了 IPV6 配置,你也可以通过以下命令进行检查,可以看到以下输出:

    $ cat /etc/default/ufw | grep -i ipv6
    IPV6=yes
    

    如果输出为 IPV6=no,可以使用 vim 编辑该文件将其改为 yes

    第一步:设置 UFW 默认策略

    默认情况下,UFW 默认策略设置为阻止所有传入流量并允许所有传出流量,你可以使用以下命令来设置自己的默认策略:

    $ ufw default allow outgoing 
    $ ufw default deny incoming
    

    如果现在重启机器(这会儿不要这么做),UFW配置会在重启后生效,它将拒绝所有传入的连接。因为我们没有允许SSH连接,这意味着,重启过后我们将无法远程连接到服务器。如果我们希望服务器响应这些类型的请求,我们就需要明确指定允许传入连接的规则 (例如 SSH 或 HTTP 连接)。

    第二步:设置 SSH 或其他规则

    要将防火墙配置为允许传入 SSH 连接,可以使用以下命令:

    $ ufw allow ssh
    

    这将创建防火墙规则-允许端口 (22) 上的所有连接,这是 SSH 守护程序默认监听的端口,类似的快捷指令还有 ufw allow httpufw allow https

    实际上也可以通过直接指定端口来创建等效规则,下面这条命令将产生相同的结果:

    $ ufw allow 22
    

    如果你的 SSH 守护程序配置在其他端口,则需要手动指定相应的端口。

    第三步:其他规则的设置

    UFW 可以基于 TCP 或 UDP 协议来过滤数据包,命令如下:

    $ ufw allow 80/tcp
    $ ufw allow 21/udp
    

    之后使用以下命令检查已添加规则的状态,应该可以看到如下输出:

    $ ufw status verbose
    Status: active
    Logging: on (low)
    Default: deny (incoming), allow (outgoing), deny (routed)
    New profiles: skip
    To                         Action      From
    80/tcp                     ALLOW IN    Anywhere
    21/udp                     ALLOW IN    Anywhere
    80/tcp (v6)                ALLOW IN    Anywhere (v6)
    21/udp (v6)                ALLOW IN    Anywhere (v6)
    

    还可以使用以下命令随时拒绝指定端口任何传入和传出的流量:

    $ ufw deny 80
    $ ufw deny 21
    

    如果要删除 HTTP 允许的规则,只需在原始规则前加上 delete 即可,如下所示:

    $ ufw delete allow http
    $ ufw delete deny 21
    

    也可以按编号删除规则,使用以下命令查看规则及其编号:

    $ ufw status numbered
    OutputStatus: active
         To                         Action      From
         --                         ------      ----
    [ 1] 22/tcp                     ALLOW IN    Anywhere
    [ 2] 443/tcp                    ALLOW IN    Anywhere
    [ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
    [ 4] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
    

    举个例子,要删除允许端口 (443) 上的 HTTPS 连接规则,也就是编号 (2)(注意删除完规则后编号会更新):

    $ ufw delete 2
    

    在设置完规则后,重启或执行命令:

    $ ufw reload
    

    即可完成 UFW 配置。

    后记

    本文选自 简明教程|Linux中UFW的使用 - 知乎,有改动。

  • 相关阅读:
    从零开始学习Sencha Touch MVC应用之六
    从零开始学习Sencha Touch MVC应用之七
    从零开始学习Sencha Touch MVC应用之四
    从零开始学习Sencha Touch MVC应用之四
    从零开始学习Sencha Touch MVC应用之七
    从零开始学习Sencha Touch MVC应用之五
    从零开始学习Sencha Touch MVC应用之三
    JpGraph
    thinkphp RBAC 详解
    PHPExcel常用方法总结
  • 原文地址:https://www.cnblogs.com/Sam2007/p/14319539.html
Copyright © 2011-2022 走看看