首先,我们先简单学习了解一下有关Linux防火墙的知识点:
防火墙具有隔离功能,工作在网络或主机边缘,对进出网络或主机的 数据包基于一定的规则检查,并在匹配某规
则时由规则定义的行为进行处理的一 组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允
许访问的策略。
接下来我们将学习有关于使用管理防火墙的命令:
iptables :命令行工具,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。
iptables由五个表(table:filter、nat、mangle、raw、security filter)和五个链(chain : INPUT、OUTPUT、FORWARD、
PREROUTING、POSTROUTING)以及一些规则组成 。
filter表:根据预定义的规则过滤符合条件的数据包 。
nat表:network address translation 地址转换规则表 。
mangle表:修改数据标记位规则表 。
raw表:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度。
security表:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现,优先级由高到低的顺序为:
security -->raw-->mangle-->nat-->filter
规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动 作作出处理。
规则格式:iptables [-t 表名] 选项 chain [-m 扩展需加载模块 [per-match-options]] -j 动作 [per-target-options]
选项:1、链管理: -N:new, 自定义一条新的规则链
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有: ACCEPT:接受 DROP:丢弃
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除。
、 2.查看: -L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号
-v:verbose,详细信息 -vv 更详细
--line-numbers:显示规则的序号 常用组合: -vnL --line-numbers
-S: selected,以iptables-save 命令格式显示链上规则
3、规则管理: -A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除 (1) 指明规则序号 (2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零 iptables的每条规则都有两个计数器 (1) 匹配到的报文的个数 (2) 匹配到的所有
报文的大小之和
匹配规则:1.基本规则:[!] -s, --source address[/mask][,...]:源IP地址或范围
(! 表示取反)[!] -d, --destination address[/mask][,...]:目标IP地址或范围
[!] -p, --protocol protocol:指定协议,可使用数字如0(all) protocol: tcp, udp, icmp, icmpv6, 等等。
[!] -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只 应用于INPUT、
FORWARD、PREROUTING链
[!] -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环 节,只应用于
FORWARD、OUTPUT、POSTROUTING链
2.拓展规则:(1)隐式扩展:在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块 的扩
展机制,不需要手动加载扩展模块
tcp协议的扩展选项
[!] --source-port, --sport port[:port]:匹配报文源端口,可为端口范围
[!] --destination-port,--dport port[:port]:匹配报文目标端口,可为范围
(2)显示拓展:必须使用-m选项指明要调用的扩展模块的扩展机制,要手动加载扩
展模块 [-m matchname [per-match-options]]
处理动作:-j 动作 [per-target-options]
简单:ACCEPT,DROP
扩展:REJECT:--reject-with:icmp-port-unreachable默认
RETURN:返回调用链
REDIRECT:端口重定向
DNAT:目标地址转换
SNAT:源地址转换
等等,在此只介绍一些常用的选项
处理动作的显示拓展:multiport扩展 :以离散方式定义多端口匹配,最多指定15个端口。
[!] --source-ports,--sports port[,port|,port:port]... 指定多个源端口
[!] --destination-ports,--dports port[,port|,port:port]... 指定多个目标端口
[!] --ports port[,port|,port:port]...多个源或目标端口
iprange扩展 :指明连续的(但一般不是整个网络)ip地址范围
[!] --src-range from[-to] 源IP地址范围
[!] --dst-range from[-to] 目标IP地址范围
举例:
4、string扩展 对报文中的应用层数据做字符串模式匹配检测
--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]