iptables防火墙
iptables防火墙
iptables命令 是Linux上常用的防火墙软件,位置位于/sbin/iptables,用来管理防火墙规则的工具
iptables结构
iptables包含四表五链。
默认包括4个规则表
• raw表:确定是否对该数据包进行状态跟踪
• mangle表:为数据包设置标记
• nat表:修改数据包中的源、目标IP地址或端口
• filter表:确定是否放行该数据包(过滤)
• 规则链
• 规则的作用:对数据包进行过滤或处理
• 链的作用:容纳各种防火墙规则
• 链的分类依据:处理数据包的不同时机
• 默认包括5种规则链
• INPUT:处理入站数据包
• OUTPUT:处理出站数据包
• FORWARD:处理转发数据包
• POSTROUTING链:在进行路由选择后处理数据包
• PREROUTING链:在进行路由选择前处理数据包
iptables工作匹配流程
规则表之间的顺序
• raw mangle nat filter
• 规则链之间的顺序
• 入站:PREROUTING INPUT
• 出站:OUTPUT POSTROUTING
• 转发:PREROUTING FORWARD POSTROUTING
• 规则链内的匹配顺序
• 按顺序依次检查,匹配即停止(LOG策略例外)
• 若找不到相匹配的规则,则按该链的默认策略处理
iptables语法
语法构成
• iptables [‐t 表名] 选项 [链名] [条件] [‐j 控制类型]
1 | [root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT |
• 几个注意事项
• 不指定表名时,默认指filter表
• 不指定链名时,默认指表内的所有链
• 除非设置链的默认策略,否则必须指定匹配条件
• 选项、链名、控制类型使用大写字母,其余均为小写
数据包的常见控制类型
• ACCEPT:允许通过
• DROP:直接丢弃,不给出任何回应
• REJECT:拒绝通过,必要时会给出提示
• LOG:记录日志信息,然后传给下一条规则继续匹配
iptables命令
• 添加新的规则
• ‐A:在链的末尾追加一条规则
• ‐I:在链的开头(或指定序号)插入一条规则
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
-p 用来指定协议
• 查看规则列表
• ‐L:列出所有的规则条目
• ‐n:以数字形式显示地址、端口等信息
• ‐v:以更详细的方式显示规则信息
• ‐‐line‐numbers:查看规则时,显示规则的序号
1 | [root@localhost ~]# iptables -L INPUT --line-numbers |
置默认策略
• ‐P:为指定的链设置默认规则
[root@localhost ~]# iptables -t filter -P FORWARD DROP
[root@localhost ~]# iptables -P OUTPUT ACCEPT
默认策略要么是ACCEPT、
要么是DROP
常用管理选项汇总
类别 选项 用途
添加新的规则
‐A 在链的末尾追加一条规则
‐I 在链的开头(或指定序号)插入一条规则
查看规则列表
‐L 列出所有的规则条目
‐n 以数字形式显示地址、端口等信息
‐v 以更详细的方式显示规则信息
‐‐line‐numbers 查看规则时,显示规则的序号
删除、清空规则
‐D 删除链内指定序号(或内容)的一条规则
‐F 清空所有的规则
设置默认策略
‐P 为指定的链设置默认规则
1 | 类别 条件类型 用法 |
备份以及还原
1 | 备份 |
1 | 还原 |
常用
1 | 允许源地址172.17.0.1/16访问 目的端口为9092 |
1 | 禁止源地址为172.17.26.32 出站访问 |