linux防火墙 iptables/netfilter详解

linux防火墙 iptables/netfilte详解

  1. 防火墙发展历史
    防火墙是什么?
    是一种高级访问控制设备,置于不同网络安全域之间,它是不同安全域间通信流的唯一通道,能够根据安全策略控制进出网络的访问行为。(通过对数据包中的五元组进行检查达到访问控制的目的。)

防火墙发展历史
这里写图片描述
这里写图片描述
2. iptables/netfilter工作原理
这里写图片描述
iptables:只是防火墙规则的编写工具,工作于用户空间,编写规则并发送到netfilter,是一个管理工具。

netfilter:能使规则生效的防护框架,工作于内核空间。

iptables/netfilter的架构
口诀:四表五链+规则
这里写图片描述

RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和 ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。

Mangle表主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用。

NAT表主要用于做IP地址转换作用。

Filter表主要用于做数据包过滤作用。

优先级高低:raw>mangle>nat>filter


netfilter模块收发和转发数据包流程
这里写图片描述
3. iptables语法
Iptables规则:
Iptables [-t 表名] 参数 链名 匹配条件 -j 动作
注:如果不加 -t,则默认是filter表。
(1)参数:1)、-A:追加方式增加一条规则。
2)-D 数字: 删除第n条规则。
3)-F:清空链中的所有规则。
4)-L:查看规则信息。
5)-n:以数字形式显示IP
6)-v:显示详细信息。
7)-I num : 插入,把当前规则插入为第几条。-I 3 :插入为第三条
8)-R num:Replays替换/修改第几条规 格式:iptables -R 3 …………
9)-D num:删除,明确指定删除第几条规则
(2)匹配条件:1)-s:匹配源IP地址(即可匹配具体IP地址,也可以匹配一个网段地址)
eg:-s 1.1.1.1
-s 1.1.1.0/24
2)-d:匹配目的IP地址(即可匹配具体IP地址,也可以是一个网段地址)
3)-p:匹配协议(不能匹配应用层的协议)
eg:-p icmp
4)- -sport 端口号:匹配源端口(必须和-p一起连用)
eg:- -sport 80
- -sport 100:200(过滤100~200的端口)
5)- -dport 端口号:匹配目的端口(必须和-p一起连用)
-m multiport - -sport 80,90,100:过滤多个不连续的端口号
6)-i 接口名:匹配入接口
-o 接口名:匹配出接口
(3)动作:1)ACCEPT:允许通过
2)DROP:拒绝通过(悄悄丢弃)
3)REJECT:明示拒绝
4)DNAT:目的ip地址转换
5)SNAT:源ip地址转换
6)MASQUERADE:源IP地址伪装(自动匹配出接口上的IP地址)
(4)cat /proc/sys/net/ipv4/ip_forward:如果值是1,开启转发功能,如果值是0,关闭转发功能。
echo “1” > /proc/sys/net/ipv4/ip_forward,临时开启转发功能。
永久开启Linux转发功能: vim /etc/sysctl.conf,将net.ipv4.ip_forward=0改成1
(5)显示规则行号:iptables (-t 表名) -nvL - -line-number
(6)删除某一条规则:iptables -t 表名 -D 链名 行号
(7)清除浏览器缓存:Ctrl +F5


Netfilter/iptables 的规则:
(1)每条链上均可存放多条规则
(2)匹配规则原则:从上往下匹配,一次匹配,直到匹配成功。(在写规则时,范围大的规则在下面,范围小的规则在上面)
(3)连接跟踪表的匹配:根据状态匹配。4种状态:New,Established,Related
作用:1)可记录dnat,方便还原。
2)加快数据包转发速度。


控制规则的存放和开启

注意:你所定义的所有内容,当你重启的时候都会失效,要想我们能够生效,需要使用一个命令将它保存起来

1.service iptables save 命令
它会保存在/etc/sysconfig/iptables这个文件中
2.iptables-save 命令
iptables-save > /etc/sysconfig/iptables

3.iptables-restore 命令
开机的时候,它会自动加载/etc/sysconfig/iptabels
如果开机不能加载或者没有加载,而你想让一个自己写的配置文件(假设为iptables.2)手动生效的话:
iptables-restore < /etc/sysconfig/iptables.2
则完成了将iptables中定义的规则手动生效


应用举例
1.来自于172.16.0.0/16网段的都允许访问我本机的172.16.100.1的SSH服务:
iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp –dport 22 -j ACCEPT

2.将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT –to-source 172.16.100.1

3.将状态为ESTABLISHED数据包直接转发:
iptables -t filter -A FORWARD -m state –state ESTABLISHED -j ACCEPT

猜你喜欢

转载自blog.csdn.net/qq_42019406/article/details/81431050