博客 / Others/ Debian 系统 iptables 防火墙配置指南:增强服务器安全性

Debian 系统 iptables 防火墙配置指南:增强服务器安全性

在 Debian 系统中,iptables 是一个功能强大的防火墙工具,用于控制网络流量,是保障服务器安全的关键组件。默认情况下,新安装的 Debian 系统可能未启用 iptables。对于作为网络服务器使用的系统,配置 iptables 是防止常见网络攻击、增强安全性的必要步骤。

1. 检查 iptables 安装状态

首先,确认系统是否已安装 iptables。在终端中执行以下命令:

whereis iptables

如果输出类似以下路径信息,则表示 iptables 已安装:

iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz

如果未安装,可以使用包管理器安装:

sudo apt update
sudo apt install iptables

2. 查看当前 iptables 规则

使用以下命令查看当前的防火墙规则:

sudo iptables -L -n

如果输出显示所有链(如 INPUT、FORWARD、OUTPUT)的策略均为 ACCEPT,且没有具体的限制规则,则意味着防火墙已启用但未进行任何安全配置,所有流量都被允许。

3. 配置基础防火墙规则

建议创建一个规则文件来管理配置,而不是直接使用命令行添加临时规则。创建一个新的规则文件:

sudo nano /etc/iptables.rules

将以下规则内容复制到文件中。这些规则实现了“默认拒绝,显式允许”的安全策略:

*filter
# 允许所有本地回环(lo)接口的流量
-A INPUT -i lo -j ACCEPT
# 允许所有已建立的和相关的连接
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许所有出站流量(可根据需要限制)
-A OUTPUT -j ACCEPT
# 允许 HTTP (80) 和 HTTPS (443) 端口入站
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# 允许 SSH (22) 端口入站(建议后续限制为特定IP)
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# 允许 ICMP (ping) 请求
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 记录被拒绝的流量(便于调试)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# 设置默认策略:拒绝所有其他入站和转发流量
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT

重要说明: 上述规则允许了 SSH (端口22)、HTTP (端口80) 和 HTTPS (端口443)。在生产环境中,强烈建议将 SSH 访问限制为特定的管理 IP 地址,而不是向所有 IP 开放。示例规则如下(替换 your_trusted_ip 为你的 IP):

# 替换默认的 SSH 规则,仅允许特定 IP
-A INPUT -p tcp -s your_trusted_ip -m state --state NEW --dport 22 -j ACCEPT

保存文件(在 nano 编辑器中按 Ctrl+O,然后按 Enter),然后退出(按 Ctrl+X)。

4. 应用防火墙规则

使用以下命令从文件加载规则,使其立即生效:

sudo iptables-restore < /etc/iptables.rules

再次运行 sudo iptables -L -n 验证规则是否已正确加载。

5. 设置 iptables 开机自动加载

为了确保系统重启后防火墙规则依然有效,需要配置一个启动脚本。

创建或编辑网络接口启动前执行的脚本:

sudo nano /etc/network/if-pre-up.d/iptables

添加以下内容:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules

保存并退出后,为该脚本添加可执行权限:

sudo chmod +x /etc/network/if-pre-up.d/iptables

现在,每次系统启动或网络接口重启时,都会自动加载 /etc/iptables.rules 文件中定义的规则。

6. 保存当前规则(可选)

你也可以将当前内存中的规则保存到配置文件,作为备份或更新:

sudo iptables-save > /etc/iptables.rules

安全建议与后续步骤

  • 限制 SSH 访问: 如前所述,将 SSH 端口(22)的访问限制在必要的管理 IP 范围内。
  • 考虑使用 UFW: 对于新手,Debian 上的 ufw (Uncomplicated Firewall) 提供了更简单的命令行界面来管理 iptables。
  • 定期审查规则: 使用 iptables -L -n -v 查看流量统计,并根据服务器运行的服务调整规则。
  • 注意规则顺序: iptables 规则按顺序匹配,第一条匹配的规则生效。请确保允许规则在拒绝规则之前。

通过以上步骤,你已经在 Debian 服务器上建立了一个基础的防火墙配置,可以有效阻挡未经授权的访问,为你的服务提供第一层安全防护。

  1. avatar
    无纯洁

    技术文~

    1. 也不算了~~只是自己要用到的东西 记录下来 下次好用

发表评论

您的邮箱不会公开。必填项已用 * 标注。