您的位置:

CentOS Iptables详解

一、Iptables 简介

Iptables 是 Linux 自带的防火墙程序,可以对网络流量进行管理和过滤,来保障网络的安全。Iptables 可以被运用于 IPv4/IPv6 网络,支持网络地址转换(NAT)、端口转发、数据包过滤等功能。

二、安装与基本概念

1、安装Iptables

在 CentOS 上,Iptables 防火墙系统默认已安装。如果没有,可以通过 yum 命令进行安装。

yum install -y iptables-services

安装完成后,通过以下命令启动 Iptables 服务:

systemctl start iptables.service

2、Iptables 分类

Iptables 有三个分类,分别是表、链和规则。

表:一个表就是一个数据结构,可以提供不同的处理方式。Linux 操作系统默认提供了三个表:

  • filter 表: 是默认的表,用于过滤网络数据包。
  • nat 表:用于网络地址转换(NAT)。
  • mangle 表:这个表可以修改报文头,而不是过滤数据报。比如可以修改某个特定的IP地址,修改TTL值等。

链: 链是表的组成部分,它能够执行指定的动作。CentOS 默认选择了五个主要的链。

  • INPUT链:用于处理输入数据报。所有进入到本地计算机的网络数据包都要进入该链。
  • OUTPUT链:用于处理输出数据报。所有发出本地计算机的网络数据包都要通过该链。
  • FORWARD链:用于处理转发数据报。当本地计算机作为路由器或者网关,数据必须经过本机的时候,就走这个链。
  • PREROUTING链:用于在数据报到达本地计算机之前修改该数据报,能够修改报文头中的一些内容。
  • POSTROUTING链:用于在数据报将离开本地计算机之前修改该数据报,能够修改报文头中的一些内容。

规则: 规则是链的组成部分,每个规则定义了 Iptables 命令如何对数据包执行一个动作。 Iptables 命令用一些规则对链进行定义,设置这些规则可以限制、转发、修改、丢弃或允许流量通过这些链。

三、Iptables 常用命令与操作

1、查看规则

通过 iptables -L 命令可以查看规则,其中 -L 参数表示查看所有的规则,如果想查看针对某个表的规则,可以加上表的名称,如下:

# 查看 filter 表内规则
iptables -L -v --line-numbers -t filter 

2、添加规则

下列命令表示:通过实现 DROP 动作,从输入连接中丢弃所有的 ICMP ,因为所有的 ICMP 连接都来源于外部网络,我们不能让外部网络访问内部网络。

iptables -A INPUT -p icmp -j DROP

3、删除规则

删除规则可以通过 iptables -D 命令,规则的编号可以从iptables -L中找到。

iptables -D INPUT 2

4、修改规则

修改规则可以先利用 iptables -D 删除原有规则,再使用 iptables -A 添加新规则。

iptables -D INPUT -p tcp --dport ssh -j DROP
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

5、重置规则

重置规则可以通过下面的命令实现,默认的规则是允许所有的流量通过。

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

四、例子

1、允许 Ping

如何允许 Ping 呢?可以加入下面的规则:

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

2、允许SSH

如何允许SSH?可以加入下面的规则:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables-save

上面的命令中,第一条规则代表只有在状态为 NEW,来源为 TCP,目标端口为22的时候才允许连接通过。

3、设置端口转发

下面是一些开源服务的 Iptables 配置示例:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

上面的命令是将所有端口 80 的请求转发到端口 8080 上,如果是本地访问,则需要在 OUTPUT 链进行配置。

4、DDoS 防御

下面的规则可以防御基于 SYN 的攻击:

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

上面的命令表示只有 SYN 请求的 TCP 数据包才被接受,其他的都需要被丢弃。

五、总结

以上就是 CentOS Iptables 的详解。作为系统安全的重要一环,Iptables 需要具备基本的配置和管理能力,才能保障整个系统网络的安全性。