如何在 Centos 6 上设置基本的 Iptables 防火墙如何在 Centos 6 上设置基本的 Iptables 防火墙如何在 Centos 6 上设置基本的 Iptables 防火墙如何在 Centos 6 上设置基本的 Iptables 防火墙
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Centos 6 上设置基本的 Iptables 防火墙

状态:已弃用

本文涵盖不再受支持的 CentOS 版本。如果您当前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。

原因:

请参阅:

  • Iptables Essentials:常用防火墙规则和命令
  • Iptables 防火墙的工作原理。
  • 如何在 CentOS 7 上使用 FirewallD 设置防火墙

介绍

本文将展示如何在 Centos VPS 上创建一个简单的防火墙。它只会打开我们想要的端口并关闭其他服务。我还将展示如何防止更简单的攻击,以及如果您不小心拒绝访问自己,如何让自己回到 VPS。

本教程绝不是详尽无遗的,仅展示了如何打开几个传入端口:用于 apache、SSH 和电子邮件,并关闭所有其他端口。我们不会阻止任何传出流量,只会创建一些最常见的规则来阻止寻找易受攻击的 VPS 的常用脚本和机器人程序。

iptables 是安装在大多数 Linux 发行版上的简单防火墙。 iptables 的 linux 手册页说它是一个用于 IPv4 数据包过滤和 NAT 的管理工具,这意味着它是一个过滤和阻止 Internet 流量的工具. iptables 防火墙默认包含在 DigitalOcean 提供的 Centos 6.4 linux 镜像中。

我们将一条一条地设置防火墙。简单来说:防火墙是规则的列表,因此当传入连接打开时,如果它匹配任何规则,则此规则可以接受或拒绝该连接。如果不满足任何规则,我们将使用默认规则。

注意: 本教程涵盖 IPv4 安全性。在 Linux 中,IPv6 安全性与 IPv4 分开维护。例如,\iptables\ 只维护 IPv4 地址的防火墙规则,但它有一个名为 \ip6tables\ 的 IPv6 对应项,可用于维护 IPv6 网络地址的防火墙规则。

如果您的 VPS 配置为 IPv6,请记住使用适当的工具保护您的 IPv4 和 IPv6 网络接口。有关 IPv6 工具的更多信息,请参阅本指南:如何配置工具以在 Linux VPS 上使用 IPv6

决定打开哪些端口和服务

首先,我们想知道我们想向公众开放哪些服务。让我们使用典型的网络托管服务器:它是一个网络和电子邮件服务器,我们还需要通过 SSH 服务器让自己进入。

首先,我们要让 SSH 端口保持打开状态,以便我们可以远程连接到 VPS:即端口 22。

此外,我们需要端口 80 和 443(SSL 端口)用于网络流量。为了发送电子邮件,我们将打开端口 25(常规 SMTP)和 465(安全 SMTP)。为了让用户能够接收邮件,我们会开放常用端口110(POP3)和995(安全POP3端口)。

此外,打开 IMAP 端口,如果我们安装了它:143 用于 IMAP,993 用于 IMAP over SSL。注意:建议只允许安全协议,但如果我们不能影响,那可能不是一个选项邮件服务用户更改他们的电子邮件客户端。

阻止最常见的攻击

DigitalOcean VPS 通常带有空配置:允许所有流量。为了确保这一点,我们可以清除防火墙规则——也就是说,将它们全部删除:

iptables -F

然后我们可以添加一些简单的防火墙规则来阻止最常见的攻击,以保护我们的 VPS 免受脚本小子的侵害。我们不能真正指望单独使用 iptables 来保护我们免受全面的 DDOS 或类似攻击,但我们至少可以推迟通常的网络扫描机器人,它们最终会找到我们的 VPS 并开始寻找可利用的安全漏洞。首先,我们从阻止空数据包开始。

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

我们告诉防火墙接收所有带有 tcp 标志 NONE 的传入数据包,然后丢弃它们。简单地说,空数据包是侦察数据包。攻击模式使用这些来尝试查看我们如何配置 VPS 并找出弱点。下一个要拒绝的模式是 syn-flood 攻击。

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

XMAS 数据包,也是侦察数据包。

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

我们已经排除了至少一些在我们的 VPS 中发现漏洞的常见模式。

为选定的服务打开端口

现在我们可以开始将选定的服务添加到我们的防火墙过滤器中。第一个这样的东西是本地主机接口:

iptables -A INPUT -i lo -j ACCEPT

我们告诉 iptables 添加 (-A) 规则到传入 (INPUT) 过滤表任何到达本地主机接口 (-i lo) 的流量并接受 (-j ACCEPT) 它。 Localhost 通常用于,即。您的网站或电子邮件服务器与本地安装的数据库通信。这样我们的 VPS 就可以使用数据库,但数据库对来自互联网的攻击是关闭的。

现在我们可以允许网络服务器流量:

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

我们将两个端口(http 端口 80 和 https 端口 443)添加到 ACCEPT 链——允许这些端口上的流量。现在,让我们允许用户使用我们的 SMTP 服务器:

iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT

如前所述,如果我们可以影响我们的用户,我们应该使用安全版本,但通常我们不能规定条款,客户端将使用端口 25 连接,从中窃取密码要容易得多。我们现在继续允许用户在他们的服务器上阅读电子邮件:

iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT

这两条规则将允许 POP3 流量。同样,我们可以通过使用该服务的安全版本来提高电子邮件服务器的安全性。现在我们还需要允许 IMAP 邮件协议:

iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT

限制 SSH 访问

我们还应该允许 SSH 流量,这样我们就可以远程连接到 VPS。执行此操作的简单方法是使用以下命令:

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

我们现在告诉 iptables 添加一个规则来接受 tcp 流量传入端口 22(默认 SSH 端口)。建议将 SSH 配置更改为不同的端口,并相应地更改此防火墙过滤器,但配置 SSH 不是本文的一部分。

然而,我们可以通过防火墙本身做更多的事情。如果我们的办公室有一个永久 IP 地址,我们只能允许从这个来源连接到 SSH。这将只允许来自我们所在位置的人进行连接。

首先,找出您的外部 IP 地址。确保它不是来自您的 LAN 的地址,否则它将无法工作。您只需访问 whatismyip.com 站点即可做到这一点。找到它的另一种方法是键入:

w

在终端中,我们应该看到我们已登录(如果是唯一一个登录并记下我们的 IP 地址。

输出看起来像这样:

root@iptables# w
 11:42:59 up 60 days, 11:21,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root   pts/0    213.191.xxx.xxx  09:27    0.00s  0.05s  0.00s w

现在,您可以创建防火墙规则,只允许来自一个来源的流量进入 SSH 端口:您的 IP 地址:

iptables -A INPUT -p tcp -s YOUR_IP_ADDRESS -m tcp --dport 22 -j ACCEPT

当然,用实际 IP 替换 YOUR_IP_ADDRESS。

我们可以根据需要通过更改端口号在防火墙上打开更多端口。这样我们的防火墙将只允许访问我们想要的服务。现在,我们需要再添加一条规则,允许我们使用传出连接(即从 VPS ping 或运行软件更新);

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

它将允许任何已建立的传出连接接收来自该连接另一端的 VPS 的回复。

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

现在我们有了防火墙规则。

保存配置

现在我们已经完成了所有配置,我们可以列出规则以查看是否缺少任何内容。

iptables -L -n

这里的 -n 开关是因为我们只需要 ip 地址,而不是域名。 IE。如果规则中有这样的 IP:69.55.48.33:防火墙会查找它,发现它是一个 linux教程 IP。我们不需要那个,只需要地址本身。现在我们终于可以保存我们的防火墙配置了:

iptables-save | sudo tee /etc/sysconfig/iptables

CentOS 上的 iptables 配置文件位于 /etc/sysconfig/iptables。上面的命令将我们创建的规则保存到该文件中。为了确保一切正常,我们可以重新启动防火墙:

service iptables restart

即使 VPS 重新启动,保存的规则仍将保留。

冲洗以解锁自己

如果我们在配置中出现意外,我们可能会阻止自己访问 VPS。也许我们输入了错误的 IP 地址,因此防火墙不允许来自我们工作站的连接。现在我们无法达到这些规则,如果我们保存它们,即使重新启动也无济于事。幸运的是,DO Web 界面允许我们通过控制台连接到服务器:

连接后,我们以 root 身份登录并发出以下命令:

iptables -F

这将冲洗过滤器,我们将能够再次进入 VPS。

结论

这篇文章并不详尽,它只触及了在 Linux 机器上运行简单防火墙的皮毛。对于不熟悉 linux 命令行或 iptables 的开发人员来说,它足以满足典型的 Web 和电子邮件服务器场景。

然而,还有很多事情可以做。互联网上有很好的教程和示例可以帮助我们提供更强大的配置。对于生产环境,建议创建更详细的配置或让安全专家准备配置。

©2015-2025 艾丽卡 support@alaica.com