CodeGym /课程 /Docker SELF /配置防火墙 (`ufw`, `iptables`)

配置防火墙 (`ufw`, `iptables`)

Docker SELF
第 5 级 , 课程 1
可用

配置防火墙 ufw, iptables

1. UFW: 简单的防火墙

为什么需要防火墙?

想象一下,你的服务器就是一栋满是各种贵重物品(数据,当然啦)的房子。如果你把门敞开,任何人都可以进去,把你的数据“吃”了,然后还留下一堆脏盘子(甚至更糟)。防火墙就像是你可以控制的门:谁可以进入,通过哪个大门,还有在什么条件下。

Linux提供了两个主要工具用于防火墙设置:ufw(简单的防火墙)和iptables。我们来看看它们是如何工作的,又有什么不同吧。

什么是UFW?

UFW是一个为了“让它更简单”而创建的防火墙设置工具。它非常适合那些想快速设置基本访问规则,但不想深入复杂细节的人。

安装和启用UFW

UFW通常在基于Debian/Ubuntu的大多数发行版中预安装。如果没有,可以用以下命令安装:

sudo apt update
sudo apt install ufw

启用UFW:

sudo ufw enable

查看状态:

sudo ufw status

初次运行时,状态大概是“inactive”。启用后,状态会变为“active”。

设置UFW规则

接下来最有趣的部分——设置规则,这些规则决定了哪些流量可以通过,哪些要被拒绝。

允许通过SSH(端口22):

sudo ufw allow 22

开放Web服务器访问(端口80):

sudo ufw allow 80

开放HTTPS(端口443):

sudo ufw allow 443

关闭不需要的端口访问(例如8080):

sudo ufw deny 8080

删除规则:

如果你改变了主意,可以通过sudo ufw status numbered指定的规则编号删除它。例如:

sudo ufw delete 1

验证与测试

为了确认一切正常,可以再次检查状态:

sudo ufw status

你会看到所有的活动规则列表。


2. IPTABLES: 更多控制力, 更多功能

什么是iptables?

如果说UFW是“简单的带锁的门”,那么iptables是“智能的保安”,它允许你设置一切。它提供了对流量的完全控制,包括路由、按照不同的标准进行过滤,甚至修改数据包的能力。

iptables的主要概念

  1. 表(Tables) — 是处理网络数据包的一组功能。
    • filter: 数据包的处理和过滤(比如允许或阻止)。
    • nat: 地址/端口的转换(比如路由器)。
  2. 链(Chains) — 是应用于数据包的规则。
    • INPUT: 用于入站流量。
    • OUTPUT: 用于出站流量。
    • FORWARD: 用于转发的流量。
  3. 目标(Targets) — 是对数据包执行的操作。
    • ACCEPT: 允许数据包。
    • DROP: 丢弃数据包。
    • REJECT: 丢弃数据包并发送通知。

让我们看看如何设置iptables规则。

查看当前规则

要查看当前已设置的规则,执行以下命令:

sudo iptables -L

可以额外添加 -v-n 来查看有关数据包和IP地址的详细信息。

使用iptables创建规则

简单规则:允许SSH(端口22):

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

阻止访问端口8080:

sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

限制IP地址的访问:

如果你希望只有某个特定的IP可以连接到你的服务器,而其他所有人都不可以:

sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

删除规则

要删除规则,需要知道它的编号。通过以下命令找到它:

sudo iptables -L --line-numbers

然后删除它:

sudo iptables -D INPUT <规则编号>

保存规则

iptables规则通常会在系统重启时“忘记”。为了避免这种情况,请保存它们:

sudo iptables-save > /etc/iptables/rules.v4

然后可以通过以下方式恢复规则:

sudo iptables-restore < /etc/iptables/rules.v4

3. UFW 和 IPTABLES: 选哪个?

UFW 和 iptables 功能一样——保护你的服务器。那么该选哪个工具?

  • UFW —— 这是一个简单的工具,用于基本的安全配置。如果你不想深入了解底层细节,或者只是想快速设置防火墙,那就选 UFW 吧。
  • Iptables —— 这是一个强大的工具,用于更复杂的配置。如果你的基础架构很复杂(比如说 NAT、路由),你会需要 iptables。

顺便说一下,UFW 实际上是基于 iptables 运行的。它只是帮你生成了 iptables 的规则。所以如果你熟悉了 iptables,你也就自动理解了 UFW 的内部工作原理。


4. 实践示例:服务器保护

示例1:使用UFW保护SSH和Web服务器

  1. 确保已安装并激活UFW:
sudo ufw enable
  1. 允许SSH和Web服务器的访问:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
  1. 检查活动规则:
sudo ufw status

示例2:使用iptables阻止不必要的流量

  1. 允许SSH访问:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  1. 允许Web流量:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  1. 阻止所有其他内容:
sudo iptables -A INPUT -j DROP

今天你了解了如何使用UFW和iptables保护服务器。这两个工具都很强大且实用,记住UFW是你“日常的好帮手”,而iptables是“高手手里的利器”。配置好防火墙,深入研究你的设置,让你的服务器成为坚不可摧的堡垒,而不是任人进出的过道。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION