今天学习了iptables以及netfilter相关的知识,这个两个功能是对访问或发出去的流量进行控制的,比如Linux服务器受到了攻击,那么这个服务器就可以根据攻击的IP地址,拒绝接受这个IP地址的流量,以达到不被攻击的目的,当然这只是其中一个作用。
首先说明一下这两者的关系:netfilter是Linux系统的内核的功能,但是用户不能直接对netfilter进行修改等操作,对用户来说,我们使用iptables这个程序来对netfilter进行控制,以达到我们拦截过滤的目的。
其中有几个概念要介绍一下:
1、chain(过滤点):所谓的过滤点,就是在数据发送传播的途中的“关卡”,一共有5个,分别是INPUT(输入),FORWARD(转发),OUTPUT(输出),PREROUTING(路由前),POSTROUTING(路由后)
2、tables(表):表只是一个名称,我们这里可以看做是“关卡”上的士兵,一共有三种士兵,他们管理的点和方向不一样。有filter,nat和mangle三种。
其中filter只能在INPUT,FORWARD,OUTPUT过滤拦截。
nat只能在OUTPUT,PREROUTING,POSTROUTING进行操作。
而mangle能对全部的过滤点进行操作。
表如下:
chain | filter | nat | mangle |
INPUT | v | v | |
FORWARD | v | v | |
OUTPUT | v | v | v |
PREROUTING | v | v | |
POSTROUTING | v | v |
3、iptables规则:每个过滤条件称为一个“规则”。每个规则占用一行配置。在配置文件中,规则的顺序是一定要注意的,因为在进行条件匹配时,会根据规则的顺序匹配,比如有两个配置,一个是允许10.1.1.1的流量通过。一个是不允许10.*.*.*的流量通过,那么这两条规则的顺序改变了,最后的结果也是不一样的,因为他会在匹配到规则之后立即处理,而不管后边是否还有别的规则。
4、(注意,以下命令都是临时修改,重启后即消失)
//列出当前所有规则
iptables -L
//添加规则
iptables -I 过滤点 排序位置 -p/s/d/i/o 过滤条件 -j 动作
//删除规则
iptables -D 过滤点 排序位置
//删除全部规则
iptables -F
若想永久保存配置,则要使用service iptables save命令永久保存
配置文件的位置在/etc/sysconfig/iptables文件中。
5、参数匹配
在新增配置时,不同的过滤参数对应的前缀也不同
(1)-s 原地址 -d 目标地址
(2)-i 从哪个接口(网卡)接收的 -o 从哪个接口(网卡)发送的
(3)-s '!' 排除该参数
(4)-p 协议名称--dport 端口号 数据的目标端口 -p 协议名称--sport 端口号 数据的来源端口