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, [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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeAmmon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值