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表