iptables详解及基本用法

一、防火墙分类:

a.逻辑上

主机防火墙:针对单个主机进行防护

网络防火墙:处与网络入口或边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网

b.物理上

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高、成本高

软件防火墙:应用软件处理逻辑运行与通用硬件平台之上的防火墙,性能低、成本低

iptables 并不是真正意义上的防火墙,我们可以理解为一个客户端工具,用户通过 ipatbles 这个客户端,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫 netfilter

iptables 是一个命令行工具,位于用户空间,通过这个命令行工具来操作 netfilter

netfilter 才是防火墙真正的安全框架, netfilter 位于内核空间。

netfilter / iptables (简称为 iptables )组成 Linux 平台下的包过滤防火墙,与大多数的 Linux 软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换( NAT )等功能。

二、iptables启动

① 在开机时禁用firewalld服务:

[root@localhost ~]# systemctl disable firewalld

②安装iptables-services

[root@localhost ~]# yum install iptables-services -y

③将它设置为开机自启

安装以后查看服务状态显示未启动,可以将它设置为开机自启

[root@localhost ~]# systemctl enable iptables

三、iptables 四表五链详解

“四表”是指 iptables 的功能,默认的 iptables规则表

filter 表(过滤规则表)

nat 表(地址转换规则表)

mangle(修改数据标记位规则表)

raw(跟踪数据表规则表)

“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链

INPUT(入站数据过滤)

OUTPUT(出站数据过滤)

FORWARD(转发数据过滤)

PREROUTING(路由前过滤)

POSTROUTING(路由后过滤)

四、iptables基本用法

基本语法:

[root@liangxu ~]# iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION

iptables 命令常用的选项及各自的功能:

选 项    功 能
-A  添加防火墙规则
-D  删除防火墙规则
-I  插入防火墙规则
-F  清空防火墙规则
-L  列出添加防火墙规则
-R  替换防火墙规则
-Z  清空防火墙数据表统计信息
-P  设置链默认规则

iptables 命令常用匹配参数及各自的功能:

参 数    功 能
[!]-p  匹配协议,! 表示取反
[!]-s  匹配源地址
[!]-d  匹配目标地址
[!]-i  匹配入站网卡接口
[!]-o  匹配出站网卡接口
[!]--sport  匹配源端口
[!]--dport  匹配目标端口
[!]--src-range  匹配源地址范围
[!]--dst-range  匹配目标地址范围
[!]--limit  四配数据表速率
[!]--mac-source  匹配源MAC地址
[!]--sports  匹配源端口
[!]--dports  匹配目标端口
[!]--stste  匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
[!]--string  匹配应用层字串

iptables 命令触发动作及各自的功能:

触发动作   功 能
ACCEPT  允许数据包通过
DROP  丢弃数据包
REJECT  拒绝数据包通过
LOG  将数据包信息记录 syslog 曰志
DNAT  目标地址转换
SNAT  源地址转换
MASQUERADE  地址欺骗
REDIRECT  重定向

内核会按照顺序依次检查 iptables 防火墙规则,如果发现有匹配的规则目录,则立刻执行相关动作,停止继续向下查找规则目录;如果所有的防火墙规则都未能匹配成功,则按照默认策略处理。使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后,而使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则。

1、查看规则

[root@xxx ~]# iptables -nvL

-L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
-n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
-v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。


--line-number 找出该条规则的行号
[root@xxx ~]# iptables -nL --line-number

2、添加

添加规则有两个参数分别是 -A 和 -I。其中 -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。

添加到尾部
[root@liangxu ~]# iptables -A INPUT -s 192.168.1.5 -j DROP

3、修改规则

参数 -R

[root@xxx ~]# iptables -R INPUT 6 -s 194.168.1.5 -j ACCEPT
[root@xxx ~]# iptables -nL --line-number

4、删除

参数 -D

[root@liangxu ~]# iptables -D INPUT 6 -s 194.168.1.5 -j ACCEPT

[root@liangxu ~]# iptables -D INPUT 6

5、备份和还原

默认的 iptables 防火墙规则会立刻生效,但如果不保存,当计算机重启后所有的规则都会丢失,所以对防火墙规则进行及时保存的操作是非常必要的。

iptables 软件包提供了两个非常有用的工具: iptables-save 和 iptables-restore;最大优势是处理庞大的规则集时速度非常快

CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中,使用 iptables-save 将规则保存至该文件中可以实现保存防火墙规则的作用,计算机重启后会自动加载该文件中的规则。如果使用 iptables-save 将规则保存至其他位置,可以实现备份防火墙规则的作用。当防火墙规则需要做还原操作时,可以使用 iptables-restore 将备份文件直接导入当前防火墙规则。

iptables-save

存在默认文件夹中(保存防火墙规则):
[root@xxxx ~]# iptables-save > /etc/sysconfig/iptables
保存在其他位置(备份防火墙规则):
[root@xxxx ~]# iptables-save > 文件名称

列出nat表的规则内容
iptables-save -t nat

iptables-restore

iptables-restore 命令可以批量导入Linux防火墙规则,同时也需要结合重定向输入来指定备份文件的位置。

[root@xxxx ~]# iptables-restore < 文件名称

五、运用

iptables限制方法 创建链WHITELIST:iptables -w -t mangle -N WHITELIST 所有请求XXXX端口 都进入这个链:iptables -w -t mangle -A PREROUTING -p tcp -m tcp –dport 30129 -j WHITELIST 只允许特定ip通过:iptables -w -t mangle -A WHITELIST -s 10.30.0.176 -j ACCEPT 其他拒绝:iptables -w -t mangle -A WHITELIST -j DROP

示例:

端口9100,9200,9300 进允许部分节点(172.24.134.222/223….)通过

iptables -w -t mangle -N WHITELIST
iptables -w -t mangle -A PREROUTING -p tcp -m tcp --dport 9200  -j WHITELIST
iptables -w -t mangle -A PREROUTING -p tcp -m tcp --dport 9100  -j WHITELIST
iptables -w -t mangle -A PREROUTING -p tcp -m tcp --dport 9300  -j WHITELIST
iptables -w -t mangle -A WHITELIST -s 172.24.134.222 -j ACCEPT
iptables -w -t mangle -A WHITELIST -s 172.24.134.223 -j ACCEPT
iptables -w -t mangle -A WHITELIST -s 127.0.0.1 -j ACCEPT
iptables -w -t mangle -A WHITELIST -j DROP  

清理规则链方法

iptables -w -t mangle -D WHITELIST -j DROP 

 

MARK:

iptables配置与基本用法:

https://blog.csdn.net/weixin_65690979/article/details/127966265

iptables命令详解:

https://zhuanlan.zhihu.com/p/513470164