蚊章汇 - UFW
type: channel
link: https://linuxcn.bwsl.wang/tag/UFW/
items: Linux 防火墙 ufw 简介
items: CentOS 上的 FirewallD 简明指南
items: 在 Ubuntu 中用 UFW 配置防火墙
items: 为你的 Linux 服务器加把锁
items: Debian/Ubuntu系统中安装和配置UFW－简单的防火墙

Linux 防火墙 ufw 简介
type: item
date: 2020-04-07T05:42:36+08:00
description: 我们来研究下 Linux 上的 ufw（简单防火墙），为你更改防火墙提供一些见解和命令。ufw（ 简单防火墙 Uncomplicated FireWall ）真正地简化了 iptables，它从出现的这几年，已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且 ufw 出乎意料的简单，这对新管理员来说是一个福音，否则他们可能需要投入大量时间来学习防火墙管理。ufw 也有 GUI 客户端（例如 gufw），但是 ufw 命令通常在命令行上执行的。本文介绍了一些使用 ufw 的命令，并研究了它的工作方式。首先，快速查看 ufw 配置的方法是查看其配置文件 —— /etc/default/ufw。使用下面的命令可以查看其配置，使用 grep 来抑制了空行和注释（以 # 开头的行）的显示。$ grep -v '^#\|^$' /etc/default/ufw IPV6=yes DEFAULT_INPUT_POLICY="DROP" DEFAULT_OUTPUT_POLICY="ACCEPT" DEFAULT_FORWARD_POLICY="DROP" DEFAULT_APPLICATION_POLICY="SKIP" MANAGE_BUILTINS=no IPT_SYSCTL=/etc/ufw/sysctl.conf IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns"正如你所看到的，默认策略是丢弃输入但允许输出。允许你接受特定的连接的其它规则是需要单独配置的。ufw 命令的基本语法如下所示，但是这个概要并不意味着你只需要输入 ufw 就行，而是一个告诉你需要哪些参数的快速提示。ufw [--dry-run] [options] [rule syntax]--dry-run 选项意味着 ufw 不会运行你指定的命令，但会显示给你如果执行后的结果。但是它会显示假如更改后的整个规则集，因此你要做有好多行输出的准备。要检查 ufw 的状态，请运行以下命令。注意，即使是这个命令也需要使用 sudo 或 root 账户。$ sudo ufw status Status: active To Action From -- ------ ---- 22 ALLOW 192.168.0.0/24 9090 ALLOW Anywhere 9090 (v6) ALLOW Anywhere (v6)否则，你会看到以下内容：$ ufw status ERROR: You need to be root to run this script加上 verbose 选项会提供一些其它细节：$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN 192.168.0.0/24 9090 ALLOW IN Anywhere 9090 (v6) ALLOW IN Anywhere (v6)你可以使用以下命令轻松地通过端口号允许和拒绝连接：$ sudo ufw allow 80 <== 允许 http 访问 $ sudo ufw deny 25 <== 拒绝 smtp 访问你可以查看 /etc/services 文件来找到端口号和服务名称之间的联系。$ grep 80/ /etc/services http 80/tcp www # WorldWideWeb HTTP socks 1080/tcp # socks proxy server socks 1080/udp http-alt 8080/tcp webcache # WWW caching service http-alt 8080/udp amanda 10080/tcp # amanda backup services amanda 10080/udp canna 5680/tcp # cannaserver或者，你可以命令中直接使用服务的名称。$ sudo ufw allow http Rule added Rule added (v6) $ sudo ufw allow https Rule added Rule added (v6)进行更改后，你应该再次检查状态来查看是否生效：$ sudo ufw status Status: active To Action From -- ------ ---- 22 AL…

CentOS 上的 FirewallD 简明指南
type: item
date: 2017-01-07T16:56:00+08:00
description: FirewallD 是 iptables 的前端控制器，用于实现持久的网络流量规则。它提供命令行和图形界面，在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比，使用 FirewallD 有两个主要区别：FirewallD 使用区域和服务而不是链式规则。它动态管理规则集，允许更新规则而不破坏现有会话和连接。FirewallD 是 iptables 的一个封装，可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD，但建议使用 FirewallD 时仅使用 FirewallD 命令。本指南将向您介绍 FirewallD 的区域和服务的概念，以及一些基本的配置步骤。安装与管理 FirewallDCentOS 7 和 Fedora 20+ 已经包含了 FirewallD，但是默认没有激活。可以像其它的 systemd 单元那样控制它。1、 启动服务，并在系统引导时启动该服务：sudo systemctl start firewalld sudo systemctl enable firewalld 要停止并禁用：sudo systemctl stop firewalld sudo systemctl disable firewalld 2、 检查防火墙状态。输出应该是 running 或者 not running。sudo firewall-cmd --state 3、 要查看 FirewallD 守护进程的状态：sudo systemctl status firewalld 示例输出firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled) Active: active (running) since Wed 2015-09-02 18:03:22 UTC; 1min 12s ago Main PID: 11954 (firewalld) CGroup: /system.slice/firewalld.service └─11954 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 4、 重新加载 FirewallD 配置：sudo firewall-cmd --reload 配置 FirewallDFirewallD 使用 XML 进行配置。除非是非常特殊的配置，你不必处理它们，而应该使用 firewall-cmd。配置文件位于两个目录中：/usr/lib/FirewallD 下保存默认配置，如默认区域和公用服务。 避免修改它们，因为每次 firewall 软件包更新时都会覆盖这些文件。/etc/firewalld 下保存系统配置文件。 这些文件将覆盖默认配置。配置集FirewallD 使用两个配置集：“运行时”和“持久”。 在系统重新启动或重新启动 FirewallD 时，不会保留运行时的配置更改，而对持久配置集的更改不会应用于正在运行的系统。默认情况下，firewall-cmd 命令适用于运行时配置，但使用 --permanent 标志将保存到持久配置中。要添加和激活持久性规则，你可以使用两种方法之一。1、 将规则同时添加到持久规则集和运行时规则集中。 sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --add-service=http 2、 将规则添加到持久规则集中并重新加载 FirewallD。 sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --reload reload 命令会删除所有运行时配置并应用永久配置。因为 firewalld 动态管理规则集，所以它不会破坏现有的连接和会话。防火墙的区域“区域”是针对给定位置或场景（例如家庭、公共、受信任等）可能具有的各种信任级别的预构建规则集。不同的区域允许不同的网络服务和入站流量类型，而拒绝其他任何流量。 首次启用 FirewallD 后，public 将是默认区域。区域也可以用于不同的网络接口。例如，要分离内部网络和互联网的接口，你可以在 internal 区域上允许 DHCP，但在external 区域仅允许 HTTP 和 SSH。未明确设置为特定区域的任…

在 Ubuntu 中用 UFW 配置防火墙
type: item
date: 2017-01-04T01:15:00+08:00
description: UFW，即 简单防火墙 （ uncomplicated firewall ） ，是一个 Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端。 UFW 通过命令行使用（尽管它有可用的 GUI），它的目的是使防火墙配置简单（即 不复杂 （ uncomplicated ） ）。开始之前1、 熟悉我们的入门指南，并完成设置服务器主机名和时区的步骤。2、 本指南将尽可能使用 sudo。 在完成保护你的服务器指南的章节，创建一个标准用户帐户，强化 SSH 访问和移除不必要的网络服务。 但不要跟着创建防火墙部分 - 本指南是介绍使用 UFW 的，它对于 iptables 而言是另外一种控制防火墙的方法。3、 更新系统Arch Linuxsudo pacman -Syu Debian / Ubuntusudo apt-get update && sudo apt-get upgrade 安装 UFWUFW 默认包含在 Ubuntu 中，但在 Arch 和 Debian 中需要安装。 Debian 将自动启用 UFW 的 systemd 单元，并使其在重新启动时启动，但 Arch 不会。 这与告诉 UFW 启用防火墙规则不同，因为使用 systemd 或者 upstart 启用 UFW 仅仅是告知 init 系统打开 UFW 守护程序。默认情况下，UFW 的规则集为空，因此即使守护程序正在运行，也不会强制执行任何防火墙规则。 强制执行防火墙规则集的部分在下面。Arch Linux1、 安装 UFW：sudo pacman -S ufw 2、 启动并启用 UFW 的 systemd 单元：sudo systemctl start ufw sudo systemctl enable ufw Debian / Ubuntu1、 安装 UFWsudo apt-get install ufw 使用 UFW 管理防火墙规则设置默认规则大多数系统只需要打开少量的端口接受传入连接，并且关闭所有剩余的端口。 从一个简单的规则基础开始，ufw default命令可以用于设置对传入和传出连接的默认响应动作。 要拒绝所有传入并允许所有传出连接，那么运行：sudo ufw default allow outgoing sudo ufw default deny incoming ufw default 也允许使用 reject 参数。警告：除非明确设置允许规则，否则配置默认 deny 或 reject 规则会锁定你的服务器。确保在应用默认 deny 或 reject 规则之前，已按照下面的部分配置了 SSH 和其他关键服务的允许规则。添加规则可以有两种方式添加规则：用端口号或者服务名表示。要允许 SSH 的 22 端口的传入和传出连接，你可以运行：sudo ufw allow ssh 你也可以运行：sudo ufw allow 22 相似的，要在特定端口（比如 111）上 deny 流量，你需要运行：sudo ufw deny 111 为了更好地调整你的规则，你也可以允许基于 TCP 或者 UDP 的包。下面例子会允许 80 端口的 TCP 包：sudo ufw allow 80/tcp sudo ufw allow http/tcp 这个会允许 1725 端口上的 UDP 包：sudo ufw allow 1725/udp 高级规则除了基于端口的允许或阻止，UFW 还允许您按照 IP 地址、子网和 IP 地址/子网/端口的组合来允许/阻止。允许从一个 IP 地址连接：sudo ufw allow from 123.45.67.89 允许特定子网的连接：sudo ufw allow from 123.45.67.89/24 允许特定 IP/ 端口的组合：sudo ufw allow from 123.45.67.89 to any port 22 proto tcp proto tcp 可以删除或者根据你的需求改成 proto udp，所有例子的 allow 都可以根据需要变成 deny。删除规则要删除一条规则，在规则的前面加上 delete。如果你希望不再允许 HTTP 流量，你可以运行：sudo ufw delete allow 80 删除规则同样可以使用服务名。编辑 UFW 的配置文件虽然可以通过命令行添加简单的规则，但仍有可能需要添加或删除更高级或特定的规则。 在运行通过终端输入的规则之前，UFW 将运行一个文件 before.rules，它允许回环接口、ping 和 DHCP 等服务。要添加或改变这些规则，编辑 /etc/ufw/before.rules 这个文件。 同一目录中的 before6.rules 文件用于 IPv6 。还存…

为你的 Linux 服务器加把锁
type: item
date: 2016-12-25T22:49:15+08:00
description: 无论你使用的哪种 Linux 发行版，你都需要使用基于 iptables 的防火墙来保护它。啊哈！你已经设置好了你的第一台 Linux 服务器并且已经准备发车了！是么？嗯，慢着。默认情况下，你的 Linux 系统对攻击者来说并非是足够安全的。当然，它比 Windows XP 要安全多了，但这说明不了什么。想要使你的 Linux 系统真正稳固，你需要按照 Linode 的 服务器安全指南 来操作。总的来说，首先你必须关闭那些你不需要的服务。当然要这样做的话，你先要知道你正在使用哪些网络服务。你可以使用 shell 命令来找到是哪些服务：netstat -tulpn netstat 将会告诉你正在运行哪些服务和这些服务正在使用的端口是什么。如果你不需要其中的某项服务或端口，你就应该关闭它。例如，除非你正在运行一个网站，否则你是不需要运行中的 Apache 或 Nginx 服务器，也不需要开启 80 或 8080 端口。总之一句话，不确定的话，就关了它先。在一个最简单的，没有做过任何额外更改的 Linux 服务器上，你会看到 SSH、 RPC 和 NTPdate 运行在它们的公开端口上。不要添加像 telnet 这样陈旧而不安全的 shell 程序，否则老司机就会在你不经意间将你的 Linux 小跑车开走了。也许，在上世纪 80 年代的时候你喜欢把 telnet 当作你 SunOS 机器上的备份登录方式，但是那早已成为了过去。就 SSH 来说，你应该使用 RSA 密钥 和 Fail2Ban 来加固。除非你需要 RPC，否则就卸载它——如果你不知道需要不需要它的话，那就是不需要。关于如何关门已经说的够多了；让我们来聊聊利用 iptables 来锁定进来的流量吧。当你启动 Linux 服务器的时候它是没有任何规则的。这就意味着所有的流量都是被允许的。这当然是不好的。因此，你需要及时的设置你的防火墙。Iptables 是一种用来给 netfilter 设置网络策略规则的 shell 工具，netfilter 是Linux 系统下的默认防火墙，它利用一组规则来允许或禁止流量。当有人尝试连接上你的系统——有些人无时不刻地尝试这么干，而且从不气馁——iptables 就会检查这些请求是否与规则列表相匹配。如果没有匹配到任何的规则，它就会采取默认操作。这个默认操作应该是将连接“Drop”掉，即禁掉这些意图闯入者。而且这不会让他们知道这些网络探测行为发生了什么。（你也可以将链接“Reject”掉，但是这会同时让他们知道你有一个正在运行的 Linux 防火墙。就目前而言，让陌生人能获取到我们系统的信息越少越好。至少，我是这么认为的。）现在，你可以用 iptables 来设置你的防火墙了。我已经这么做了。就像以前，我骑着自行车去六英里外上班，并且两边都是上坡。而现在，我开车去。这其实比喻的是我使用 Fedora 发行版的 FirewallD 和 Debian 系发行版的 UFW（Uncomplicated Firewall）。这些都是易用的 iptables 的 shell 前端。你可以在以下的 Linode 指南中找到适合的使用方式：FirewallD 和 UFW。从本质上来说设置这些规则就是在你的服务器上放置“非请勿入”的告示牌。用起来吧。但是也别太兴奋地把所有的链接都关闭了。例如：sudo ufw default deny incoming 看起来是个好主意哦。别忘了，它禁止了所有链接，包括你自己哦！很好，它就是这么干的。这意味着它也同样禁止了 SSH 的登录。也就是说你再也不能登录你那新服务器了。哇哦！不过，如果你犯了错，错误的将更多的链接都禁止了。你看，老司机也同样被你挡在门外了。或者，更准确得说，这不是你或你的服务器所遇到的个别现象。当然，你也不是每天受到 3 亿多次攻击尝试的美国国家安全局（NSA）。但是攻击脚本根本不在乎你是谁。它只是不断的检查寻找网络中存在已知漏洞的服务器。在平常的一天中我自己的小服务器就会受到数以百计的攻击。都这样了，你还在等什么呢？去吧，加固你的网络服务吧。安装 FirewallD 或者 UFW 来加固你的服务器吧。你会愿意去做的。关于作者：Steven J. Vaughan-Nichols 是一位资深的 IT 专栏作家，他的作品出现在许多行业领袖媒体上，包括 ZDNet.com、PC Magazine、InfoWorld、ComputerWorld、Linux Today 和 eWEEK 等。Steven 在 IT 专业方面的见解犀利，虽然他的观点和云计算方面的认识，并不代表 Linode 观点，但是我们仍然非常感谢他的贡献。你可以在 Twitter 上关注他 （@sjvn）。via: https://mediu…

Debian/Ubuntu系统中安装和配置UFW－简单的防火墙
type: item
date: 2014-01-20T06:41:00+08:00
description: 自从计算机互连后，各种服务迅速发展。用户使用的电子邮件、社交媒体、在线商城、即时聊天甚至网络会议等服务如雨后春笋般涌现。但从另一方面来说，这些连接服务也具有双刃剑，比如它们当中的病毒、恶意软件、特洛伊木马等会向计算机发送恶意消息。安装 UFW 防火墙作为最大的计算机网络，互联网上可并不都是善意的用户。因此，为了确保我们的计算机或服务器安全，我们需要进行保护。在你的计算机或服务器上一个必须有的组件就是防火墙。在维基百科中，其定义是：防火墙是计算机中一款应用软件或基于硬件的网络安全系统。它根据应用配置的规则，分析数据包，然后决定是否允许此数据包通过，来控制整个系统的网络数据进出访问权限。iptables 是一款广泛使用于服务器的防火墙。它是一款应用程序，它会根据一系列规则来管理服务器上的进出数据流。一般来说，只有可信任的连接才允许进入服务器。但 iptables 是在控制台模式下运行，它非常的复杂。不熟悉 iptables 配置规则和命令的用户可以读读下面的文章，它描述了如何使用iptables防火墙。iptables 基础 (Linux 防火墙) 指南Debian/Ubuntu 系统中安装 UFW 防火墙为了降低 iptables 设置的复杂度，有许多对应的前端应用。如果你运行的是 Ubuntu linux 系统的话， UFW 就是一款默认的防火墙工具。我们开始来探讨 UFW 防火墙吧。什么是 UFWUFW (简单的防火墙) 是广泛使用的 iptables 防火墙 的前端应用，这是非常适合于基于主机的防火墙。UFW 即提供了一套管理网络过滤器的框架，又提供了控制防火墙的命令行界面接口。它给那些不熟悉防火墙概念的 Linux 新用户提供了友好、易使用的用户界面。同时，另一方面，它也提供了命令行界面，为系统管理员准备了一套复杂的命令，用来设置复杂的防火墙规则。UFW 对像 Debian、Ubuntu 和 Linux Mint 这些发布版本来说也是上上之选。UFW 基本用法首先，用如下命令来检查下系统上是否已经安装了 UFW 。$ sudo dpkg --get-selections | grep ufw 如还没有安装，可以使用 apt 命令来安装，如下所示：$ sudo apt-get install ufw 在使用前，你应该检查下 UFW 是否已经在运行。用下面的命令来检查。$ sudo ufw status 如果你发现状态是： inactive , 意思是没有被激活或不起作用。启用/禁用 UFW要启用它，你只需在终端下键入如下命令：$ sudo ufw enable 在系统启动时启用和激活防火墙要禁用，只需输入：$ sudo ufw disable 列出当前UFW规则在防火墙被激活后，你可以向里面添加你自己的规则。如果你想看看默认的规则，可以输入。$ sudo ufw status verbose 输出样例：Status: active Logging: on (low) Default: deny (incoming), allow (outgoing) New profiles: skip $ 添加UFW规则如你所见，默认是不允许所有外部访问连接的。如果你想远程连接你的机器，就得开放相应的端口。例如，你想用 ssh 来连接，下面是添加的命令。允许访问$ sudo ufw allow ssh [sudo] password for pungki : Rule added Rule added (v6) $ 再一次检查状态，会看到如下的一些输出。$ sudo ufw status To Action From -- ----------- ------ 22 ALLOW Anywhere 22 ALLOW Anywhere (v6) 如果你有很多条规则，想快速的在每条规则上加个序号数字的话，请使用 numbered 参数。$ sudo ufw status numbered To Action From ------ ----------- ------ [1] 22 ALLOW Anywhere [2] 22 ALLOW Anywhere (v6) 第一条规则的意思是所有通过22端口访问机器的 tcp 或 udp 数据包都是允许的。如果你希望仅允许 tcp 数据包访问应该怎么办？可以在服务端口后加个 tcp 参数。下面的示例及相应的输出。$ sudo ufw allow ssh/tcp To Action From ------ ----------- ------ 22/tcp ALLOW Anywhere 22/tcp ALLOW Anywhere (v6) 拒绝访问添加拒绝规则也是同样的招数。我们假设你想拒绝 ftp 访…