一、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 需要具备基本的配置和管理能力,才能保障整个系统网络的安全性。