UFW,即简单防火墙(uncomplicated firewall),是一个 Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端。 UFW 经过命令行使用(尽管它有可用的 GUI),它的目的是使防火墙配置简单(即不复杂(uncomplicated))。前端
开始以前node
一、 熟悉咱们的入门指南,并完成设置服务器主机名和时区的步骤。服务器
二、 本指南将尽量使用 sudo。 在完成保护你的服务器指南的章节,建立一个标准用户账户,强化 SSH 访问和移除没必要要的网络服务。 但不要跟着建立防火墙部分 - 本指南是介绍使用 UFW 的,它对于 iptables 而言是另一种控制防火墙的方法。网络
三、 更新系统ssh
Arch Linuxtcp
sudo pacman -Syu Debian / Ubuntu命令行
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
一、 安装 UFW:
sudo pacman -S ufw 二、 启动并启用 UFW 的 systemd 单元:
sudo systemctl start ufw sudo systemctl enable ufw Debian / Ubuntu
一、 安装 UFW
sudo 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 。
还存在一个 after.rule 和 after6.rule 文件,用于添加在 UFW 运行你经过命令行输入的规则以后须要添加的任何规则。
还有一个配置文件位于 /etc/default/ufw。 今后处能够禁用或启用 IPv6,能够设置默认规则,并能够设置 UFW 以管理内置防火墙链。
UFW 状态
你能够在任什么时候候使用命令:sudo ufw status 查看 UFW 的状态。这会显示全部规则列表,以及 UFW 是否处于激活状态:
Status: active To Action From
22 ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 启用防火墙
随着你选择规则完成,你初始运行 ufw status 可能会输出 Status: inactive。 启用 UFW 并强制执行防火墙规则:
sudo ufw enable 类似地,禁用 UFW 规则:
sudo ufw disable UFW 会继续运行,而且在下次启动时会再次启动。
日志记录
你能够用下面的命令启动日志记录:
sudo ufw logging on 能够经过运行 sudo ufw logging low|medium|high 设计日志级别,能够选择 low、 medium 或者 high。默认级别是 low。
常规日志相似于下面这样,位于 /var/logs/ufw:
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