如何在Ubuntu中用UFW配置防火墙

UFW,即简单防火墙(uncomplicated firewall),是一个 Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端。 UFW 通过命令行使用(尽管它有可用的 GUI),它的目的是使防火墙配置简单(即不复杂(uncomplicated))。

开始之前

1、 熟悉我们的入门指南,并完成设置服务器主机名和时区的步骤。

2、 本指南将尽可能使用 sudo。 在完成保护你的服务器指南的章节,创建一个标准用户帐户,强化 SSH 访问和移除不必要的网络服务。 但不要跟着创建防火墙部分 - 本指南是介绍使用 UFW 的,它对于 iptables 而言是另外一种控制防火墙的方法。

3、 更新系统

Arch Linux


  1. sudo pacman -Syu 

Debian / Ubuntu


  1. sudo apt-get update && sudo apt-get upgrade 

安装 UFW

UFW 默认包含在 Ubuntu 中,但在 Arch 和 Debian 中需要安装。 Debian 将自动启用 UFW 的 systemd 单元,并使其在重新启动时启动,但 Arch 不会。 这与告诉 UFW 启用防火墙规则不同,因为使用 systemd 或者 upstart 启用 UFW 仅仅是告知 init 系统打开 UFW 守护程序。

默认情况下,UFW 的规则集为空,因此即使守护程序正在运行,也不会强制执行任何防火墙规则。 强制执行防火墙规则集的部分在下面。

Arch Linux

1、 安装 UFW:


  1. sudo pacman -S ufw 

2、 启动并启用 UFW 的 systemd 单元:


  1. sudo systemctl start ufw
  2. sudo systemctl enable ufw 

Debian / Ubuntu

1、 安装 UFW


  1. sudo apt-get install ufw 

使用 UFW 管理防火墙规则

设置默认规则

大多数系统只需要打开少量的端口接受传入连接,并且关闭所有剩余的端口。 从一个简单的规则基础开始,ufw default命令可以用于设置对传入和传出连接的默认响应动作。 要拒绝所有传入并允许所有传出连接,那么运行:


  1. sudo ufw default allow outgoing 
  2. sudo ufw default deny incoming 

ufw default 也允许使用 reject 参数。

警告:

除非明确设置允许规则,否则配置默认 deny 或 reject 规则会锁定你的服务器。确保在应用默认 deny 或 reject 规则之前,已按照下面的部分配置了 SSH 和其他关键服务的允许规则。

添加规则

可以有两种方式添加规则:用端口号或者服务名表示。

要允许 SSH 的 22 端口的传入和传出连接,你可以运行:


  1. sudo ufw allow ssh 

你也可以运行:


  1. sudo ufw allow 22 

相似的,要在特定端口(比如 111)上 deny 流量,你需要运行:


  1. sudo ufw deny 111 

为了更好地调整你的规则,你也可以允许基于 TCP 或者 UDP 的包。下面例子会允许 80 端口的 TCP 包:


  1. sudo ufw allow 80/tcp 
  2. sudo ufw allow http/tcp 

这个会允许 1725 端口上的 UDP 包:


  1. sudo ufw allow 1725/udp 

高级规则

除了基于端口的允许或阻止,UFW 还允许您按照 IP 地址、子网和 IP 地址/子网/端口的组合来允许/阻止。

允许从一个 IP 地址连接:


  1. sudo ufw allow from 123.45.67.89 

允许特定子网的连接:


  1. sudo ufw allow from 123.45.67.89/24 

允许特定 IP/ 端口的组合:


  1. sudo ufw allow from 123.45.67.89 to any port 22 proto tcp 

proto tcp 可以删除或者根据你的需求改成 proto udp,所有例子的 allow 都可以根据需要变成 deny。

删除规则

要删除一条规则,在规则的前面加上 delete。如果你希望不再允许 HTTP 流量,你可以运行:


  1. sudo ufw delete allow 80 

删除规则同样可以使用服务名。

编辑 UFW 的配置文件

虽然可以通过命令行添加简单的规则,但仍有可能需要添加或删除更高级或特定的规则。 在运行通过终端输入的规则之前,UFW 将运行一个文件 before.rules,它允许回环接口、ping 和 DHCP 等服务。要添加或改变这些规则,编辑 /etc/ufw/before.rules 这个文件。 同一目录中的 before6.rules 文件用于 IPv6 。

还存在一个 after.rule 和 after6.rule 文件,用于添加在 UFW 运行你通过命令行输入的规则之后需要添加的任何规则。

还有一个配置文件位于 /etc/default/ufw。 从此处可以禁用或启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。

UFW 状态

你可以在任何时候使用命令:sudo ufw status 查看 UFW 的状态。这会显示所有规则列表,以及 UFW 是否处于激活状态:


  1. Status: active 
  2. To                         Action      From 
  3. --                         ------      ---- 
  4. 22                         ALLOW       Anywhere 
  5. 80/tcp                     ALLOW       Anywhere 
  6. 443                        ALLOW       Anywhere 
  7. 22 (v6)                    ALLOW       Anywhere (v6) 
  8. 80/tcp (v6)                ALLOW       Anywhere (v6) 
  9. 443 (v6)                   ALLOW       Anywhere (v6) 

启用防火墙

随着你选择规则完成,你初始运行 ufw status 可能会输出 Status: inactive。 启用 UFW 并强制执行防火墙规则:


  1. sudo ufw enable 

相似地,禁用 UFW 规则:


  1. sudo ufw disable 

UFW 会继续运行,并且在下次启动时会再次启动。

日志记录

你可以用下面的命令启动日志记录:


  1. sudo ufw logging on 

可以通过运行 sudo ufw logging low|medium|high 设计日志级别,可以选择 low、 medium 或者 high。默认级别是 low。

常规日志类似于下面这样,位于 /var/logs/ufw:


  1. Sep 16 15:08:14 <hostname> kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0 

前面的值列出了你的服务器的日期、时间、主机名。剩下的重要信息包括:

  • [UFW BLOCK]:这是记录事件的描述开始的位置。在此例中,它表示阻止了连接。
  • IN:如果它包含一个值,那么代表该事件是传入事件
  • OUT:如果它包含一个值,那么代表事件是传出事件
  • MAC:目的地和源 MAC 地址的组合
  • SRC:包源的 IP
  • DST:包目的地的 IP
  • LEN:数据包长度
  • TTL:数据包 TTL,或称为 time to live。 在找到目的地之前,它将在路由器之间跳跃,直到它过期。
  • PROTO:数据包的协议
  • SPT:包的源端口
  • DPT:包的目标端口
  • WINDOW:发送方可以接收的数据包的大小
  • SYN URGP:指示是否需要三次握手。 0 表示不需要。

作者:Linode

来源:51CTO

时间: 2024-07-29 00:50:10

如何在Ubuntu中用UFW配置防火墙的相关文章

在 Ubuntu 中用 UFW 配置防火墙

UFW,即简单防火墙uncomplicated firewall,是一个 Arch Linux.Debian 或 Ubuntu 中管理防火墙规则的前端. UFW 通过命令行使用(尽管它有可用的 GUI),它的目的是使防火墙配置简单(即不复杂uncomplicated). 开始之前 1. 熟悉我们的入门指南,并完成设置服务器主机名和时区的步骤. 2. 本指南将尽可能使用 sudo. 在完成保护你的服务器指南的章节,创建一个标准用户帐户,强化 SSH 访问和移除不必要的网络服务. 但不要跟着创建防火

如何在 Ubuntu 服务器中配置 AWStats

如何在 Ubuntu 服务器中配置 AWStats AWStats 是一个开源的网站分析报告工具,可以生成强大的网站.流媒体.FTP 或邮件服务器的访问统计图.此日志分析器以 CGI 或命令行方式进行工作,并在网页中以图表的形式尽可能的显示你日志中所有的信息.它可以"部分"读取信息文件,以便能够频繁并快速处理大量的日志文件.它支持绝大多数 Web 服务器日志文件格式,包括 Apache,IIS 等. 本文将帮助你在 Ubuntu 上安装配置 AWStats. 安装 AWStats 包

如何在 Ubuntu 上安装配置管理系统 Chef (大厨)

Chef是面对IT专业人员的一款配置管理和自动化工具,它可以配置和管理你的基础设施(设备),无论它在本地还是在云上.它可以用于加速应用部署并协调多个系统管理员和开发人员的工作,这包括可支持大量的客户群的成百上千的服务器和程序.chef最有用的是让基础设施变成代码.一旦你掌握了Chef,你可以获得自动化管理你的云端基础设施或者终端用户的一流的网络IT支持. 下面是我们将要在本篇中要设置和配置Chef的主要组件. 安装Chef的要求和版本 我们将在下面的基础环境下设置Chef配置管理系统. 管理和配

如何在Ubuntu 14.04中配置PXE服务器

PXE(预启动执行环境Preboot Execution Environment) 服务器允许用户从网络中启动 Linux 发行版并且可以不需要 Linux ISO 镜像就能同时在数百台 PC 中安装.如果你客户端的计算机没有 CD/DVD 或USB 引导盘,或者如果你想在大型企业中同时安装多台计算机,那么 PXE 服务器可以帮你节省时间和金钱. 在这篇文章中,我们将告诉你如何在 Ubuntu 14.04 配置 PXE 服务器. 配置网络 开始前,你需要先设置 PXE 服务器使用静态 IP.在你

如何在 Ubuntu 中播放3D电影

亲爱的 Linux 极客们, Q: 我下载了一部高品质 3D 电影,但是当我用 VLC 播放器播放的时候,画面被分割成两个部分,我可不想这样欣赏我的高清大片. 在本教程中你将会学习如何在 Ubuntu 中用名为bino的 3D 电影播放器来观看 3D 电影.你可以在终端中执行以下命令来轻松获取有关 3D 电影播放器的相关信息. apt-cache search bino 在你的 Ubuntu 电脑中打开新终端(CTRL+ALT+T),执行以下命令来安装 bino. sudo apt-get in

如何在Ubuntu下安装和配置FTP服务器

FTP(文件传输协议)是一个较老且最常用的标准网络协议,用于在两台计算机之间通过网络上传/下载文件.然而, FTP 最初的时候并不安全,因为它仅通过用户凭证(用户名和密码)传输数据,没有进行加密. 警告:如果你打算使用 FTP, 需要考虑通过 SSL/TLS(将在下篇文章中讨论)配置 FTP 连接.否则,使用安全 FTP,比如 SFTP 会更好一些. 在这个教程中,我将向你们展示如何在 Ubuntu 中安装.配置并保护 FTP 服务器(VSFTPD 的全称是 "Very Secure FTP D

如何在Ubuntu下配置L2TP VPN

如何在Ubuntu下配置L2TP VPN 之前发布了一篇如何在Ubuntu下架设PPTP协议的VPN服务的文章,不过有些情况下,PPTP会受到影响而不能正常使用,那么你还有一种选择,就是使用L2TP/IPSec 的VPN.  安装软件包 sudo apt-get install xl2tpd openswan ppp IPSec / Openswan 打开 /etc/ipsec.conf 文件,做如下配置: config setup nat_traversal=yes virtual_priva

如何在 Ubuntu 14/15 上配置 Apache Solr

如何在 Ubuntu 14/15 上配置 Apache Solr 大家好,欢迎来阅读我们今天这篇 Apache Solr 的文章.简单的来说,Apache Solr 是一个最负盛名的开源搜索平台,配合运行在网站后端的 Apache Lucene,能够让你轻松创建搜索引擎来搜索网站.数据库和文件.它能够索引和搜索多个网站并根据搜索文本的相关内容返回搜索建议. Solr 使用 HTTP 可扩展标记语言(XML),可以为 JSON.Python 和 Ruby 等提供应用程序接口(API).根据 Apa

Linux 有问必答:如何在 Ubuntu 上配置网桥

Linux 有问必答:如何在 Ubuntu 上配置网桥 Question: 我需要在我的Ubuntu主机上建立一个Linux网桥,共享一个网卡给其他一些虚拟主机或在主机上创建的容器.我目前正在Ubuntu上使用网络管理器(Network Manager),所以最好>能使用网络管理器来配置一个网桥.我该怎么做? 网桥是一个硬件装备,用来将两个或多个数据链路层(OSI七层模型中第二层)互联,以使得不同网段上的网络设备可以互相访问.当你想要互联一个主机里的多个虚拟机器或者以太接口时,就需要在Linux