配置防火墙 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的主要概念
- 表(Tables) — 是处理网络数据包的一组功能。
filter
: 数据包的处理和过滤(比如允许或阻止)。nat
: 地址/端口的转换(比如路由器)。
- 链(Chains) — 是应用于数据包的规则。
INPUT
: 用于入站流量。OUTPUT
: 用于出站流量。FORWARD
: 用于转发的流量。
- 目标(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服务器
- 确保已安装并激活UFW:
sudo ufw enable
- 允许SSH和Web服务器的访问:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
- 检查活动规则:
sudo ufw status
示例2:使用iptables阻止不必要的流量
- 允许SSH访问:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 允许Web流量:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 阻止所有其他内容:
sudo iptables -A INPUT -j DROP
今天你了解了如何使用UFW和iptables保护服务器。这两个工具都很强大且实用,记住UFW是你“日常的好帮手”,而iptables是“高手手里的利器”。配置好防火墙,深入研究你的设置,让你的服务器成为坚不可摧的堡垒,而不是任人进出的过道。
GO TO FULL VERSION