Linux防火墙简介及iptables的基本使用
一、防火墙基础知识
iptables/netfilter:网络防火墙,连接追踪(状态检测)
netfilter:工作内核中,让规则能够生效的网络框架(framework)
iptables:防火墙规则编写工具,工作与用户空间,编写规则并且发送到netfilter
所有的规则都在hook_function的函数中
PREROUTING:mangle、nat
INPUT:filter、mangle
OUTPUT:filter、nat、mangle
FORWARD:filter、mangle
POSTROUTING:mangle、nat
过滤:筛选
NAT:Network Address Translation(地址转换)
DNAT(目标地址转换)
SNAT(原地址转换)
mangle
raw
四表:filter、nat、mangle、raw
五链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
表和链的对应关系:
filter:INPUT、FORWARD、OUTPUT
nat:PREROUTING、OUTPUT、POSTROUTING
mangle:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
规则:检查条件,处理机制
防火墙的策略:通(默认为堵,只对能识别的进行放行)
堵(默认为通,只对能识别的进行阻截)
检查条件:
IP:SIP,DIP
TCP:SPORT,DPORT,Flags(ACK,SYN,FIN,RST,PSH,URG)
UDP:SPORT,DPORT
ICMP:ICMP-TYPE
扩展机制:
time,string,state(connection-tracking)连接追踪
处理机制
DROP,REJECT,ACCEPT,SNAT,DNAT,RETURN,FORWARD,REDIRECT(端口转发),LOG
二、iptables工具使用说明
iptables [-t table] -N chain
创建一条自定义的规则链
iptables [-t table] -X [chain]
删除一条自定义的空规则链,如果不为空可以先用-F清空再删除
iptables [-t table] -E old-chain-name new-chain-name
修改自定义规则链的名称
iptables [-t table] -P chain target
为链指定默认策略,指定默认规则
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
-F:清空链中的规则
规则有编号,在链中自上而下,从1开始;
-L:list,列出表中的所有规则;
-n:数字格式显示IP和Port
-v:显示详细信息
pkts bytes target prot opt in out source destination
pkts:packets,被本规则所匹配到的报文的个数
bytes:被本规则所匹配到的所有报文的大小之和,单位字节
target:目标,即处理机制
prot:协议,一般为{TCP|UDP|ICMP}
opt:可选项
in:数据包的流入接口
out:数据包的流出接口
source:源地址
destination:目标地址
-vv:显示更详细信息
-vvv:显示更更详细信息
-x:exactly:精确值,不执行单位换算
--line-numbers:显示个规则的行号
-Z:zero,清零
iptables [-t table] {-A|-D} chain rule-specification
-A:append,附加一条规则
rule-specification
匹配条件 -j 处理机制
匹配条件:
通用匹配:
-s|--src|--source: 匹配原地址,可以IP,也可以网络地址;可以使用!取反, ! 192.168.1.0/24
-d|--dst|--destination:匹配目标地址,可以IP,也可以网络地址;可以使用!取反, ! 192.168.1.0/24
-p:匹配协议,通常只是用{TCP|UDP|ICMP}三者之一
-i:数据报文流入的接口,通常只用于INPUT,FORWARD和 PREROUTING
-o:数据报文流出的接口,通常只用于OUTPUT,FORWARD和POSTROUTING
删除规则:
iptables [-t table] -D chain rulenum
插入规则:
iptables [-t table] -I chain [rulenum] rule-specification
替换指定规则:
iptables [-t table] -R chain rulenum rule-specification
只显示指定链上的规则添加命令:
iptables [-t table] -S [chain [rulenum]]
保存规则:
service iptables save
规则会被保存至/etc/sysconfig/iptables文件中
start时也会读取此文件中的内容以设置规则
保存规则
# iptables-save > /path/to/some_rulefile
重新生效规则
# iptables-restore < /path/to/some_rulefile