如何在CentOS 6云服务器上使用iptables防火墙?

  • 发布时间:2020-02-19 13:49:56
  • 阅读次数:1362

防火墙是一种控制网络流入和流出的安全工具,通常由一系列规则来实现。防火墙的作用是让我们的云服务器免受黑客的扫描、嗅探和攻击。防火墙有硬件防火墙和软件防火墙两种。在CentOS 6云服务器上,默认安装的防火墙是iptables,这是一种软件防火墙。

本文将演示iptables在Web应用场景中的使用方法。我们将屏蔽除了SSH、Ping、Web、DNS、NTP之外的其他服务,这也是iptables最基本的使用方法,是运维人员必须掌握的内容。本文不涉及到IPv6防火墙的使用,因为IPv6防火墙有另外一个工具叫做ip6tables。另外值得注意的是,在CentOS 7中,iptables不再是默认安装的防火墙,而代之以firewalld,不过我们仍然可以在CentOS 7中重新安装并启用iptables。

我们需要先准备好一台部署CentOS 6的云服务器,并确保可以用root账户登录系统。

第一步:规划iptables规则

在本文的演示环境中,这台云服务器将提供网站服务,不提供其他服务,诸如FTP、邮件、IRC等。我们规划的需要开启的服务、协议和端口如下表,除此之外全部屏蔽。

服务 协议 端口
HTTP TCP 80
HTTPS TCP 443
SSH TCP 22
NTP TCP 123
DNS TCP & UDP 53
Ping ICMP All

正如上文所述,iptables是由一系列的规则来控制网络访问的。当网络数据包发送到云服务器上时,iptables将会依次按照这些规则来检测并处理数据包。如果满足某条规则,其他规则将被略过。如果没有满足任何规则,则使用iptables的默认规则来处理。

网络数据包分为三类:INPUT、OUTPUT、FORWARD。对于这三类数据包,我们将采取不同的处理方式,这也作为iptables的默认规则使用。

  • INPUT:流入数据包可能是安全的,也可能是有害的,因此需要区别对待。
  • OUTPUT:流出数据包通常认为是安全的,因此设置为接受。
  • FORWARD:转发数据包一般没有用处,因此设置为丢弃。

第二步:创建iptables规则

好了,下面我们就根据规划来设置iptables防火墙规则。以下命令都是用root账户登录系统后执行的,请确保登录账户有root权限。

查看当前规则:

iptables -L -n

清空当前规则:

iptables -F; iptables -X; iptables -Z

拒绝来自127.0.0.0/8的流量,除了loopback(回环流量)之外:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 -j REJECT

阻止一些常见的攻击:

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

接受所有已建立的流入连接:

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

接受HTTP和HTTPS连接:

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

接受SSH连接:

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

接受NTP连接:

iptables -A INPUT -p udp --dport 123 -j ACCEPT

接受DNS请求:

iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT

允许Ping:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

最后,设置iptables默认规则:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

第三步:保存iptables规则

需要注意的是,虽然以上设置都是即时生效的,但并非永久有效。如果没有保存,一旦系统重启后,规则将会失效。因此我们还需要把刚才设置好的规则保存到云服务器硬盘中。保存iptables的规则是:

service iptables save

iptables的规则将被保存到/etc/sysconfig/iptables文件中,你可以直接查看或修改这个文件。

cat /etc/sysconfig/iptables

我被锁在外面了,怎么办?

因为iptables的规则都是即时生效的,所以我们一旦设置错误,就有可能把自己锁在外面,无法远程管理云服务器了,怎么办呢?有两种解决办法。

  • 如果你还没保存iptables规则,那很简单,只要到朝暮数据管理中心=》业务管理=》云服务器管理中,执行重启云服务器即可。
  • 如果你已经保存了iptables规则,别忘了还可以通过控制台管理云服务器。打开朝暮数据管理中心=》业务管理=》云服务器管理=》控制台,输入用户名和密码进入系统后,执行iptables -F命令,清空所有iptables规则,就可以远程进入系统了。

【全文完】

< 上一篇:FTP无法上传问题汇总(请对照检查) 下一篇:如何在Ubuntu 16.04云服务器上使用iptables防火墙? >