linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。 (1)在许多安全技术资料中,netfilter和iptables都用来指linux防火墙,它们之间的区别如下: netfilter 位于Linux内核中的包过滤功能体系 称为Linux防火墙的“内核态” iptables 位于/sbin/iptables,用来管理防火墙规则的工具 称为Linux防火墙的“用户态” iptables防火墙默认的规则表,链结构 (2)规则链 规则的作用:对数据包进行过滤或处理 链的作用:容纳各种防火墙规则 链的分类依据:处理数据包的不同时机 (3)默认包括5种规则链 INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWARD:处理转发数据包 POSTROUTING链:在进行路由选择后处理数据包 PREROUTING链:在进行路由选择前处理数据包 (4)规则表 表的作用:容纳各种规则链 表的划分依据:防火墙规则的作用相似 (5)默认包括4个规则表 raw表:确定是否对该数据包进行状态跟踪 mangle表:为数据包设置标记 nat表:修改数据包中的源、目标IP地址或端口 filter表:确定是否放行该数据包(过滤) (6)数据包过滤的匹配流程 1) 规则表之间的顺序 rawmanglenatfilter 2)规则链之间的顺序 入站:PREROUTINGINPUT 出站:OUTPUTPOSTROUTING 转发:PREROUTINGFORWARDPOSTROUTING 3)规则链内的匹配顺序 按顺序依次检查,匹配即停止(LOG策略例外) 若找不到相匹配的规则,则按该链的默认策略处理 4)匹配流程示意图 iptables基本语法 语法构成 注意事项 1)不指定表名时,默认指filter表 2)不指定链名时,默认指表内的所有链 3)除非设置链的默认策略,否则必须指定匹配条件 4)选项、链名、控制类型使用大写字母,其余均为小写 数据包的常见控制类型 1)ACCEPT:允许通过 2)DROP:直接丢弃,不给出任何回应 3)REJECT:拒绝通过,必要时会给出提示 4)LOG:记录日志信息,然后传给下一条规则继续匹配 iptables命令的常用管理选项 添加新的规则 -A:在链的末尾追加一条规则 -I:在链的开头(或指定序号)插入一条规则 查看规则列表 -L:列出所有的规则条目 -n:以数字形式显示地址、端口等信息 -v:以更详细的方式显示规则信息 --line-numbers:查看规则时,显示规则的序号 删除、清空规则 -D:删除链内指定序号(或内容)的一条规则 -F:清空所有的规则 设置默认策略 -P:为指定的链设置默认规则 规则的匹配条件 (1)通用匹配 可直接使用,不依赖于其他条件或扩展 包括网络协议、IP地址、网络接口等条件 常见的通用匹配条件 协议匹配:-p 协议名 地址匹配:-s 源地址、-d 目的地址 接口匹配:-i 入站网卡、-o 出站网卡 (2)隐含匹配 要求以特定的协议匹配作为前提 包括端口、TCP标记、ICMP类型等条件 常用的隐含匹配条件 端口匹配:--sport 源端口、--dport 目的端口 TCP标记匹配:--tcp-flags 检查范围 被设置的标记 ICMP类型匹配:--icmp-type ICMP类型 (3)显式匹配 要求以“-m 扩展模块”的形式明确指出类型 包括多端口、MAC地址、IP范围、数据包状态等条件 常用的显式匹配条件 多端口匹配:-m multiport --sports 源端口列表 -m multiport --dports 目的端口列表 IP范围匹配:-m iprange --src-range IP范围 MAC地址匹配:-m mac --mac-source MAC地址 状态匹配:-m state --state 连接状态