基本概念
iptables只是linux的防火墙的管理工具,真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables过滤各种规则的,主要依赖于如下的四表五链:
- filter表——过滤数据包 【重要】
- Nat表——用于网络地址转换(IP、端口)
- Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
- Raw表——决定数据包是否被状态跟踪机制处理
- INPUT链——进来的数据包应用此规则链中的策略 【重要】
- OUTPUT链——外出的数据包应用此规则链中的策略 【重要】
- FORWARD链——转发数据包时应用此规则链中的策略 【重要】
- PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
- POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
基本语法
iptables 表名 链名 匹配条件 动作
-t 表名(默认为filter)
链名 ( INPUT | OUTPUT | FORWARD )
匹配条件:
-P设置默认策略:iptables-P INPUT(DROP|ACCEPT)
-F清空规则链
-L查看规则链
-A在规则链的末尾加入新规则
-I num在规则链的头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d匹配目标地址
-i网卡名称匹配从这块网卡流入的数据
-o网卡名称匹配从这块网卡流出的数据
-p匹配协议,如tcp,udp,icmp
--dport num匹配目标端口号
--sport num匹配来源端口号
动作:
ACCEPT:对满足策略的数据包允许通过
DROP:丢弃数据包,且不返回任何信息
REJECT:丢弃数据包,但是会返回拒绝的信息
LOG:把通过的数据包写到日志中(相当于一个门卫对进去的人进行登记)
示例:iptables -t filter -A INPUT –s 192.168.0.0/24 -p tcp --dport 80 –j REJECT
说明: 对filter表的INPUT链,追加一条策略,策略是,源地址在192.168.0.0/24网段内,使用tcp协议,目标端口为80的所有输入包都执行REJECT动作(拒绝)
常用命令
iptables -nvL --line-number (详细信息)
iptables -L (简单列表)