一、Iptables原理
现在防火墙主要分以下三种类型:包过滤、应用代理、状态检测
包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术的防火墙哈~
代理防火墙:因一些特殊的报文攻击可以轻松突破包过滤防火墙的保护,比如大家知道的SYN攻击、ICMP洪水攻击,所以以代理服务器作为专门为用户保密或者突破访问限制的数据转发通道的应用代理防火墙出现了哈~其使用了一种应用协议分析的新技术。
状态检测防火墙:其基于动态包过滤技术发展而来,加入了一种状态检测的模块,进一点发展了会话过滤功能,会话状态的保留是有时间限制的,此防火墙还可以对包的内容进行分析,从而避免开放过多的端口。
netfilter/iptables IP数据包过滤系统实际上由netfilter和iptables两个组件构成。netfilter是集成在内核中的一部分,其作用是定义、保存相应的规则,而iptables是一种工具,用来修改信息的过滤规则及其他配置,我们可以通过iptables来设置一些适合我们企业需求环境的规则哈~,而这些规则会保存在内核空间之中。
netfilter是Linux核心中的一个通用架构,其提供了一系列的表(tables),每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。实际上netfilter是表的容器,表是链的容器,而链又是规则的容器。
iptables内置链
PREROUTING:数据包进入本机,进入路由器之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTIONG:通过路由表后,发送到网卡接口之前
以下是表和链的对应关系
二、iptables的基本用法
基本语法:
iptables [-t table] COMMAND CHAIN CRETIRIA -j TARGET
-t table:
net,mangle,raw,filter
默认为filter
COMMAND:
链:
-F:(flush)清空规则链
-N:(new)自建一条链
-X:(delete)删除一条自定义的空链
-Z:(zero)计数器归零
-P:(policy)设置默认策略,对filter表来讲,默认规则为ACCEPT或DROP
-E:重命名自定义链
CHAIN:指定你接下来的规则到底是在哪个链上操作的
CRETIRIA:指定匹配标准
ACTION :指定如何进行处理
常用指令
DROP:悄悄丢弃;一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
DNAT:明确申明要做的是目的地地址转换操作
SNAT:明确申明要做的是源地址转换操作
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回在自定义链执行完毕后使用返回,来返回原规则链。
链中的规则
-A:(append)在所选择的链末添加一条或更多规则
-I: (insert) 根据给出的规则序号向所选链中插入一条或更多规则
-D:(delete)从所选链中删除一条或更多规则
-R:(replace)从选中的链中取代一条规则
常用查询命令
-L
-n :数字格式显示主机地址端口
-v:显示详细格式信息
-vv
-vvv:越多显示的越详细
--line-numbers:显示规则编号
-x: exactly,不要对计数器的计数结果做单位换算,而显示其精确值
pkts bytes target prot opt in out source destination
pkts: packets, 被本规则所匹配到的报文的个数;
bytes: 被本规则所匹配到的所有报文的大小之和,会执行单位换算;
target: 目标,即处理机制;
prot: 协议,一般为{TCP|UDP|ICMP};
opt: 可选项
in: 数据包的流入接口;
out: 数据包的流出接口;
source: 源地址;
destination: 目标地址;
Iptables原理及应用解析