㈠ netfilter
linux一般都是作为服务器使用,对外提供一些基于网络的服务
通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能
常见的访问控制包括:哪些IP可以访问服务器,可以使用哪些协议,哪些接口,是否需要对数据包进行修改等等
如服务器可能受到来自某IP的攻击,这时就要禁止来自该IP的所有访问
linux的内核集成了网络访问的控制功能,通过netfilter模块实现
linux内核通过netfilter模块实现网络访问控制功能
在用户层我们可以通过iptables程序对netfilter进行控制管理
netfilter可以对数据进行允许、丢弃、修改操作
netfilter支持以下方式对数据包进行分类:
●源IP地址
●目标IP地址
●使用接口
●使用协议
●端口号
●连接状态
注释:
① filtering point:过滤点,你需要选择合适的过滤点
★ input:输入的数据
★ forward:转发的数据
★ output:服务器发出的数据
★ prerouting:路由前的数据
★ postrouting:路由后的数据
② table:netfilter的功能的划分
★ filter:用以对数据进行过滤
★ nat:用以对数据包的源、目标地址进行修改
★ mangle:用以对数据包进行高级修改
当你需要创建一条访问控制策略时,首先要选择正确的过滤点,然后选择合适的功能
常用功能(流量也就是数据包)
作为服务器使用
▲ 过滤到本机的流量:在input过滤点,使用filter表
▲ 过滤到本机发出的流量:在output过滤点,使用filter表
作为路由器使用
▲ 过滤转发的流量:在forward过滤点,使用filter表
▲ 对转发数据的源、目标IP 进行修改:在prerouting或postrouting过滤点,使用nat表
㈡ iptables
iptables通过策略对数据进行访问控制
一个策略使用一行配置
策略按顺序排列
当收到、发出、转发数据包时,使用策略对数据包进行匹配,并且按策略顺序进行逐条匹配
数据包按照第一个匹配上的策略执行相关动作:丢弃、放行或者修改
没有匹配的策略时,则使用默认动作(每个过滤点都拥有各自默认的动作,一般是放行)
策略
通过iptables命令创建一条策略
策略包含以下几个部分
例子:iptables -t filter -A INPUT -s 192.168.1.1 -j drop
● 表:规定使用的表(filter、nat、mangle,不同表有不同功能)
● 过滤点:规定过滤点
● 匹配属性:规定匹配数据包的特征
● 匹配后的动作:放行、丢弃、记录