写在前面
当你的服务跑在一台公网 Linux 服务器上时,安全性就是绕不开的话题。既要防止被黑客入侵,也要避免造成不必要的损失。本文将围绕 Linux 服务器安全的最佳实践继续展开。
上一篇文章介绍了一些基础安全配置,这一篇我们接着用 iptables 对服务器做加固。本文不深入 iptables 底层原理,只讲与实际安全防护相关的配置操作。
什么是 iptables?
iptables是Linux系统上的防火墙管理工具,它允许你控制网络流量,并决定哪些数据包可以通过服务器、哪些应该被拒绝。它具备较强的过滤和转发能力,可以根据规则集来处理进出流量。
iptables 基础操作
先快速熟悉一下 iptables 的常用基础操作。
1. 添加规则
命令:iptables -A(Append)
# 例:允许 SSH 连接(默认端口 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
2. 查看规则及规则号
命令:iptables -L --line-numbers
sudo iptables -L --line-numbers
3. 删除规则
命令:iptables -D
# 例:删除规则号为 2 的规则
sudo iptables -D INPUT 2
4. 清空规则
命令:iptables -F
5. 保存规则
命令:iptables-save
# 保存规则
sudo iptables-save > /etc/iptables/rules.v4
6. 加载规则
命令:iptables-restore
# 恢复规则
sudo iptables-restore < /etc/iptables/rules.v4
使用 iptables 加固 Linux 服务器的步骤
下面是一些基本步骤以及对应的命令示例。
1. 默认策略
首先要确定默认策略:可以选择默认拒绝所有流量,再按需放行特定流量;也可以默认允许所有流量,再拒绝特定流量。通常情况下,建议选择默认拒绝,只开启必要的端口和服务。
# 默认拒绝所有流量
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
2. 常用规则设置
接着创建规则,定义允许或拒绝哪些流量。规则可以基于协议(如 TCP、UDP)、端口号和 IP 地址来设置。
# 允许 SSH 连接(默认端口 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 流量流入
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT # 流量流出
# 允许 HTTP 连接(默认端口 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# 封禁 IP,拒绝该 IP 访问本机服务
sudo iptables -A INPUT -p tcp -s 193.243.182.204 -j DROP
3. 日志记录
启用 iptables 日志记录有助于追踪流量,日志也能帮你识别和分析潜在的安全问题。
# 启用日志记录
sudo iptables -A INPUT -j LOG --log-prefix "iptables: "
4. 保存规则
设置完 iptables 规则后,要确保服务器重启后规则仍然生效,可以用下面的命令保存:
# 保存规则
sudo iptables-save > /etc/iptables/rules.v4
注意
调整 iptables 设置时务必谨慎,避免把自己锁在服务器外面。建议逐步测试规则,确认每条规则的影响后再继续。随着经验积累,你也能创建出更复杂、更贴合实际安全需求的规则。
如果你对更多 Linux 安全实践感兴趣,也欢迎到云栈社区交流。