1,Firewall
工作在网络或主机边缘,对进出的数据包根据定义的规则进行检查,并作出相应的动作。
2,检查规则:匹配条件和处理办法的办法
匹配条件:
帧首部,IP首部(源IP,目的IP),TCP首部(标识位,URG,ACK,SYN,RST ,PSH,FIN端口),应用层首部
TCP的有限状态机:CLOSED,LISTEN,SYN_SENT,SYN_RECV,ESTABLISHED,FIN_WAIT1,CLOSE_WAIT,FIN_WAIT2,LAST_ACK,TIME_WAIT
3,软件:在主机的内核中的TCP/IP 协议栈上的附加一套规则
硬件:netscreen,checkpoint
4,防火墙类型,
包过滤型防火墙(IP/TCP) 对带宽影响不大,安全性较低
简单包过滤墙
带状态检测包过滤;连接状态
应用层网关防火墙 (对特定的应用协议做过滤)效率很低,但更安全
5,ipfw 2.0
ipchains 2.2
iptalbes 2.4
iptables:用户控件工具
netfilter:内核中的防火墙框架(framework,platform 平台)hook function
规则链:INPUT;OUTPUT;FORWORD,PREROUTING,POSTROUTING
6,NAT
SNAT 源地址
DNAT 目的
PNAT 端口转换
7,防火墙功能:
filter
nat
mangle 修改FTP/IP首部
raw
8,数据包流向
进来的包:Prerouting –> Input
转发的包:Prerouting –> Forward –>Postrouting
出去的包:Output –> Postrouting
9, raw:PREROUTING,OUTPUT
mangle:所有都可以nat:prerouting ,output,postrouting
file:input,forward,output
10,filter
匹配条件
netfilter,检查模块
处理动作
ACCEPT
DROP
REJECT
11,iptables [-t TABLE] COMMAND CHAIN [CRETIRIA] –j ACTION
-t raw
mangle
nat
filter:默认
COMMAND:对链,或者对链中的规则进行管理操作
链中规则:
-A:附加规则
-I #:插入为第几条
-R#: 替换(replace) 第几条
-D#: 删除第几条
-D CRETERIA 删除匹配的规则
链:
-N:新建一个自定义链
-X:删除一个自定义的空链
-E:重命名一条自定义链
-F:清空指定链,如果不指定链,则清空表中所有链
-P:设定链的默认策略
-Z:置零(每条规则都有两个计数器,包括默认策略,一个是被本规则匹配到的数据包的个数,另一个是本规则匹配到的体积之和) 对规则生效,对默认不生效
查看:-L
-v
-vv
--line-numbers显示规则行号
-x显示计数器精确值
-n不要对地址或端口反解
iptables 对应脚本 /etc/rc.d/init.d/iptables {status|start|stop|save}
脚本配置文件:/etc/sysconfig/iptables-config
规则保存位置:/etc/sysconfig/iptables
匹配条件:
通用匹配:
-s 源
-d 目标
-p protocal {icmp|tcp|udp}
-i 流入接口
-o 流出接口
扩展匹配:
隐式扩展
-p tcp
--sport PORT[-PORT2]
--dport PORT[-PORT2]
--tcp-flags SYN,ACK,RST SYN(必须为一的位)
--syn 三次扩展第一次握手
-p udp
--sport
--dport
-p icmp
--icmp-type
8 :echo-request
0 :echo-reply
显式扩展 位于 /lib/iptables
netfilter扩展模块引入的扩展,用于匹配条件,通常需要额外的专用选项来定义
-m state 用于实现连接的状态检测
--state
NEW,ESTABLISHED,RELATED(一个服务多种连接如ftp),INVALID
-m multiport
--sourceports 22,80
--destination-ports 22,80
--ports
-m limit
--limit 2/min 速率
--limit-burst 峰值
-m connlimit 最大连接数
[!] --connlimit-above 多余n个满足条件
-m iprange IP的范围
--src-range ip-ip
--dst-range ip-ip
-m mac 基于mac过滤
--mac-source XX:XX:XX:XX:XX:XX
-m string
--algo {bm|kmp}
--string “PATERN” 模式
-m recent
-m time
--datastart
--datastop
--timestart
--timestop
--weekdays
-m layer7
--l7proto 特征码
动作: –j TARGET
ACCEPT
DROP
REJECT
REDIRECT
DNAT nat表的prerouting中
--to-destination
iptables –t nat –A PREROUTING –d 1.1.1.1 –p tcp –dport 80 –j DNAT –to-destination 192.168.1.10:8080
SNAT nat表的postrouting中
--to-source
PNATMASQUERADE 自动选择一个合适地址作为转换后的源地址 地址伪装
LOG
--log-prefix “iptables,dnat 192.168.10.1) --
RETURN
自定义链名
同一物理机不能用同一网段的地址
iptables的规则保存
service iptables save
/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables.3
iptables-restore < /etc/sysconfig/iptables.3
应用层过滤: