Linux网络防火墙可以由硬件方面、软件方面及定义规则(匹配标准,处理办法)等方式来组合限定各种条件。下面所讲的为使用规则来限定tcp/udp/icmp等协议
Framework: 默认规则有开放(堵)与关闭(通)
其中规则中主要使用的是钩子函数(hook function:)主要有以下5种1: perouting 路由之前2:input 本机进入3output本机出去4:forward本机转发5:postrouting路由之后
使用到的规则链主要有五种:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING。其中分别可以在以下表中使用到的是:
filter(过滤):表 INPUT、OUTPUT、FORWARD
nat(地址转换):表 PREROUTING、OUTPUT、POSTROUTING
mangle(拆开、修改、封装):表PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
raw():原始表 PREROUTING、OUTPUT
如果有N条规则这样就需要我们来使用自定义链,但自定义链只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;其中默认链无法删除。
其中每个规则都有两个内置的计数器:被匹配的报文个数、被匹配的报文大小之和
其中定义的规则格式有:匹配标准,处理动作。如:iptables [-t TABLE] COMMAND CHAIN [num] 匹配标准 -j 处理办法
匹配标准主要有两种:通用匹配和扩展匹配,其中扩展匹配又可以分为影含扩展与显式扩展。如以下命令:
通用匹配
-s, --src: 指定源地址
-d, --dst:指定目标地址
-p {tcp|udp|icmp}:指定协议
-i INTERFACE: 指定数据报文流入的接口
可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o INTERFACE: 指定数据报文流出的接口
可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD
扩展匹配(使用模块进行,需要先安装模块)有
隐含扩展:不用特别指明由哪个模块进行的扩展,因为此时使用
-p{tcp|udp|icmp}
--sport PORT[-PORT]:源端口
--dport PORT[-PORT]:目标端口
--tcp-flags mask comp只检查mask指定的标志位,是逗号分隔的标志位列表comp:
此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0 ; -- tcp-flags SYN,FIN,ACK,RST SYN,ACK
显式扩展:必须指明由哪个模块进行的扩展,在iptables中使用-m选项可完成此
功能
-m EXTESTION --spe-opt
state状态扩展
NEW:新连接请求
ESTABLISHED:已建立的连接
IN表:filter、nat、mangle和raw
命令:
管理规则
-A:附加一条规则,添加在链的尾部
-I CHAIN [num]: 插入一条规则,插入为对应CHAIN上的第num条;
-D CHAIN [num]: 删除指定链中的第num条规则;
-R CHAIN [num]: 替换指定的规则;
管理链:
-F [CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN: 设定指定链的默认策略;
-N:自定义一个新的空链
-X: 删除一个自定义的空链
-Z:置零指定链中所有规则的计数器;
-E: 重命名自定义的链;
查看类:
-L: 显示指定表中的规则;
-n: 以数字格式显示主机地址和端口号;
-v: 显示链及规则的详细信息
-vv:
-x: 显示计数器的精确值
--line-numbers: 显示规则号码
动作(目标target):
ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志
MARK:打标记
其中iptables不是服务,但有服务脚本,服务脚本的主要作用用于在保存管理的规则