1.防火墙:硬件,软件:规则(匹配标准,处理方法)
Framework:默认规则
开放:堵
关闭:通
规则:匹配标准
IP:SIP,DIP SYN=1,FIN=0,SYN=0,ACK=0;SYN=1,FIN=0,SYN=0,ACK=1;SYN=0,FIN=0,SYN=0,ACK=1(ESTABLISHED);
TCP:SPORT,DPORT
UDP:SPORT,DPORT
ICMP:icmp-type
2.hook function:钩子函数
prerouting
input
output
forward
postrouting
规则链
PREROUTING
INPUT
OUTPUT
FORWARD
POSTROUTING
filter(过滤):表
INPUT
OUTPUT
FORWARD
nat(地址转换):表
PREROUTING
OUTPUT
POSTROUTING
mangle():表
PREROUTING
INPUT
OUTPUT
FORWARD
POSTROUTING
raw():表
PREROUTING
OUTPUT
自定义链只在被调用时才发挥作用,如果没有与自定义中的任何规则匹配,还应该有返回机制
用户可以删除自定义空链,默认链无法删除
每个规则都有两个内置计数器
被匹配的报文个数
被匹配的报文大小之和
3.规则:匹配标准,处理动作
匹配标准:
通用匹配
-s,--src:指定源地址
-d,--dst:指定目标地址
-p {tcp|udp|icmp}:指定协议
-i INTERFACE:指定数据报文流入的接口
可用于标准定义的链:PREROUTING,INPUT,FORWARD
-o INTERFACE:指定数据报文流出的接口
可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD
扩展匹配
隐含扩展:不必特别指明由哪个模块进行的扩展,使用-p {tcp|udp|icmp}
-p tcp
--sport PORT[-PORT]:源端口
--dport PORT[-PORT]:目标端口
--tcp-flags mask omp:只检查mask指定的标志位,是逗号分隔的标志位列表;comp表示此列表中的标志位必须为一,comp中没出现,而mask中出现的必须为0
--tcp-flags SYN,FIN,ACK,RST SYN = --syn
--syn:tcp三次握手中的第一次
-p icmp
--icmp-type
0:echo-reply
8:echo-request
-p udp
--sport
--dport
显示扩展:必须指明由哪个模块进行的扩展,在iptables中使用-m选项
-m EXTESTION --spe-opt
state:状态扩展
结合ip_conntrcak追踪会话的状态
NEW:新连接请求
ESTABLISHED:已建立的连接
INVALID:非法连接
RELATED:相关联的
-m state --state NEW -j ACCEPT
multiport:离散的多端口扩展
--source-ports
--destination-ports
--ports
-m multiport --destination-ports 21,22,80, -j ACCEPT
!:条件取反 -s ! 172.16.100.6
iptables [-t TABLE] COMMAND CHAIN [num] 匹配标准 -j 处理办法
-j TARGET(ACCEPT,DROP,REJECT)
命令:
管理规则:
-A:附加一条规则,添加在链的尾部
-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条,省略num为第一条
-D CHAIN [num]:删除指定链中第num条规则
-R CHAIN [num]:替换指定的规则
管理链:
-F [CHAIN]:flush,清空指定规则,省略CHAIN删除对应表中的所有链
-P CHAIN:设定指定链的默认策略
-N:自定义一条新的空链
-X:删除一条自定义的空链
-Z:置零指定列中所有规则的计数器
-E:重命名自定义的链
查看类:
-L:显示指定表中的规则
-n:以数字格式显示主机地址和端口号
-v:显示链及规则的详细信息
-x:显示计数器的精确值
--line-numbers:显示规则号码
动作(target):
ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志
MARK:打标记
保存规则:
# service iptables save(重启生效)
/etc/sysconfig/iptables
# iptables-save > /etc/sysconfig/iptables.2014051101
# iptables-restore < /etc/sysconfig/iptables.2014051101(重启生效)