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

简介

本文将展示如何在Centos VPS上创建一个简单的防火墙。它将只打开我们想要的端口,并关闭其他服务。我还将展示如何防止更简单的攻击,以及如果您拒绝意外访问自己,如何让自己回到VPS。 本教程不是穷举,只显示如何打开一些传入端口:对于apache,SSH和电子邮件和关闭所有其他。我们不会阻止任何传出的流量,并且只创建几个最常见的规则来阻止寻找易受攻击的VPS的常见脚本和bot。 iptables的是安装在大多数Linux发行版的简单防火墙。 在Linux 手册页iptables的说,这是 IPv4数据包过滤和NAT,这在翻译,意味着它是过滤掉并阻止互联网流量的工具的 管理工具 。iptables防火墙默认情况下,在所提供的Centos 6.4 Linux映像包含DigitalOcean。 我们将逐个设置防火墙。为了简化:防火墙是一个 规则列表,所以当一个进来的连接打开,如果它匹配任何规则,这个规则可以接受连接或拒绝它。如果没有满足规则,我们使用默认规则。 注: 本教程介绍IPv4的安全性。 在Linux中,IPv6安全性与IPv4分开维护。 例如,“iptables”仅维护IPv4地址的防火墙规则,但它有一个称为“ip6tables”的IPv6对等体,可用于维护IPv6网络地址的防火墙规则。 如果您的VPS配置为IPv6,请记住使用适当的工具保护IPv4和IPv6网络接口。 有关IPv6工具的更多信息,请参阅本指南: 如何配置工具使用IPv6在Linux VPS

确定要打开的端口和服务

首先,我们想知道我们想要向公众开放什么服务。让我们使用典型的Web托管服务器:它是一个Web和电子邮件服务器,我们还需要让我们自己通过SSH服务器。 首先,我们要让SSH端口打开,这样我们可以远程连接到VPS:即端口22。 此外,我们需要端口80和443(SSL端口)用于Web流量。对于发送电子邮件,我们将打开端口25(常规SMTP)和465(安全SMTP)。为了让用户接收电子邮件,我们将打开常用的端口110(POP3)和995(安全POP3端口)。 此外,我们将开放IMAP端口,如果安装了它:143 IMAP和993对IMAP超过 SSL.Note:建议只允许安全协议,但可能不是一个选择,如果我们不能影响邮件服务用户更改其电子邮件客户端。

阻止最常见的攻击

DigitalOcean VPS通常带有空配置:允许所有流量。只是为了确保这一点,我们可以 刷新防火墙规则-也就是,删除所有这些:
iptables -F
然后我们可以添加一些简单的防火墙规则来阻止最常见的攻击,以保护我们的VPS免受脚本小ies。我们不能真正指望iptables单独来保护我们免受全面DDOS或类似的,但我们至少可以推迟常见的网络扫描机器人,最终找到我们的VPS并开始寻找安全漏洞利用。首先,我们开始阻塞空包。
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
我们告诉防火墙采取与TCP标记NONE所有传入数据包,只是删除它们。 空包被,只是淡淡地说,侦察包。攻击模式使用它们来尝试看看我们如何配置VPS并找出弱点。拒绝的下一个模式是同步洪水攻击。
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
SYN Flood攻击是指攻击者打开一个新的连接,但没有说明他们想要的东西(即SYN,ACK,等等)。 他们只是想占用我们的服务器的资源。 我们不接受这种包裹。 现在我们转移到多一个常见的模式: 圣诞包,还包侦察。
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
我们已经排除了在我们的VPS中发现漏洞的至少一些常见模式。

打开所选服务的端口

现在我们可以开始将所选服务添加到我们的防火墙过滤器。第一个这样的东西是localhost接口:
iptables -A INPUT -i lo -j ACCEPT
我们告诉iptables添加(-A)一个规则到传入(INPUT)过滤器表到任何trafic到localhost接口(-i lo)和接受(-j ACCEPT)它。本地主机通常用于,即。您的网站或电子邮件服务器与本地安装的数据库通信。这样我们的VPS可以使用数据库,但数据库被关闭以利用从互联网。 现在我们可以允许Web服务器流量:
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。 我们可以通过更改端口号,根据需要在防火墙上打开更多端口。这样我们的防火墙将只允许访问我们想要的服务。现在,我们需要添加一个规则,允许我们使用传出连接(即ping从VPS或运行软件更新);
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
它将允许任何已建立的出站连接接收来自该连接另一侧的VPS的应答。当我们所有的设置,我们将阻塞一切,并允许所有传出的连接。
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
现在我们有防火墙规则到位。

保存配置

现在我们有所有的配置,我们可以列出规则,看看是否有任何缺失。
iptables -L -n
这里的 -n开关是因为我们只需要IP地址,而不是域名。也就是说。如果在规则中有一个IP,如下所示:69.55.48.33:防火墙会去查找它,看到它是一个digitalocean.com 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和电子邮件服务器场景来说足够了。 然而,可以做更多的事情。在互联网上有很好的教程和示例,以帮助我们提供更强大的配置。对于生产环境,建议创建更详细的配置或由安全专家准备配置。 希望,简短的说明将为新的VPS提供基本的安全性。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏