Linux网络安全原理之Linux防火墙工具iptables
一、基础的概念性东西,我就不再赘述了点击这里参考网址,netfilter/iptables全攻略二、iptables用法说明iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]1.[-t table]:指定表raw, mangle, nat
一、基础的概念性东西,我就不再赘述了点击这里参考网址,netfilter/iptables全攻略
二、iptables用法说明
iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
1.[-t table]:指定表raw, mangle, nat, [filter]默认
2.SUBCOMMAND:子命令 ,定义如何对规则进行管理
- 链管理类
-N:new, 自定义一条新的规则链
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃
-F: FLASH:清空规则链的(注意每个链的管理权限)
- 规则管理类
-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除
(1) 指明规则序号
(2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
iptables的每条规则都有两个计数器
(1) 匹配到的报文的个数
(2) 匹配到的所有报文的大小之和
- 查看类
-L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号,若不加n,会将ip反向解析成主机名
-v:verbose,显示详细信息
-vv 更详细,v越多越详细
-x:exactly,显示计数器结果的精确值,而非单位转换后的易读值
--line-numbers:显示规则的序号
-S selected,以iptables-save 命令格式显示链上规则
-t nat:显示所有的关卡的信息
常用组合:-vnL和-vvnxL --line-numbers
3.chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
4.匹配标准
- 通用匹配:通用的,PARAMETERS,源地址目标地址的匹配
-s, --source address[/mask][,...]:源IP地址或者不连续的IP地址
-d, --destination address[/mask][,...]:目标IP地址或者不连续的IP地址
-p, --protocol protocol:指定协议,(tcp, udp, icmp等)
-i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、FORWARD、PREROUTING链
-o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于FORWARD、OUTPUT、POSTROUTING链
- 扩展匹配:需加载模块,MATCH EXTENTIONS,显示扩展和隐式扩展
隐式扩展:无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块
(1)tcp 协议的扩展选项
--source-port, --sport port[:port]:匹配报文源端口,可为端口连续范围
--destination-port,--dport port[:port]:匹配报文目标端口,可为连续范围
--tcp-flags mask comp
mask 需检查的标志位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔tcp协议的扩展选项
(2)udp 协议的扩展选项
--source-port, --sport port[:port]:匹配报文的源端口或端口范围
--destination-port,--dport port[:port]:匹配报文的目标端口或端口范围
(3)icmp 协议的扩展选项
--icmp-type {type[/code]|typename}
type/code
0/0 echo-reply icmp应答
8/0 echo-request icmp请求
显示扩展:必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块
(1)multiport扩展
#指定多个源端口
--source-ports,--sports port[,port|,port:port]...
# 指定多个目标端口
--destination-ports,--dports port[,port|,port:port]...
#多个源或目标端
--ports port[,port|,port:port]...
(2)iprange扩展:指明连续的(但一般不是整个网络)ip地址范围
--src-range from[-to] 源IP地址范围
--dst-range from[-to] 目标IP地址范围
(3) mac扩展:mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains
--mac-source XX:XX:XX:XX:XX:XX
(4)string扩展:对报文中的应用层数据做字符串模式匹配检测
--algo {bm|kmp} 字符串匹配检测算法
bm:Boyer-Moore
kmp:Knuth-Pratt-Morris
--from offset 开始偏移
--to offset 结束偏移
--string pattern 要检测的字符串模式
--hex-string pattern要检测字符串模式,16进制格式
(5)time扩展:根据将报文到达的时间与指定的时间范围进行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 时间
--timestop hh:mm[:ss]
--monthdays day[,day...] 每个月的几号
--weekdays day[,day...] 星期几,1 – 7 分别表示星期一到星期日
--kerneltz:内核时区(当地时间),不建议使用,CentOS 7版本以上系统默认为 UTC
注意: centos6 不支持kerneltz ,--localtz指定本地时区(默认)
(6)connlimit扩展:根据每客户端IP做并发连接数数量匹配,可防止Dos(Denial of Service,拒绝服务)攻击
--connlimit-upto N #连接的数量小于等于N时匹配
--connlimit-above N #连接的数量大于N时匹配
(7)limit扩展:基于收发报文的速率做匹配 , 令牌桶过滤器
--limit-burst number #前多少个包不限制
--limit #[/second|/minute|/hour|/day]
(8)state扩展:可以根据”连接追踪机制“去检查连接的状态,较耗资源
5.处理动作:-j targetname [per-target-options]
- 简单动作
ACCEPT
DROP
- 扩展动作
REJECT:--reject-with:icmp-port-unreachable默认
RETURN:返回调用链
REDIRECT:端口重定向
LOG:记录日志,dmesg
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:地址伪装
自定义链
在学习中进步,如有错误,请多多批评指正
更多推荐
所有评论(0)