IPTables
实现包过滤,
firewall防火墙:是一个套件,极可能是软件,也可能是硬件,也可能是两者的结合。位于网络边界,根据规则进行数据包的处理。工作在内核
 
基于硬件实现的防火墙
   主机防火墙:工作在主机边沿,网卡上
netfilter,就是一内核空间的framework即框架
iptables,用户空间的管理规则的工具
防火墙根据工作的层不同分为:
⑴包过滤型:根据OSI模型中234层首部信息特征进行处理的。封闭端口,提取地址
简单包过滤  静态
 带状态检测的包过滤  动态 (状态有NEWESTABLISHEDRELATED,INVALID),比简单包过滤功能强大,且安全性高。可以实现在不打开不安全端口也可以进TCP
 ⑵应用层网关防火墙
 
netfilter在内核上打开了5道门(INPUTFORWARD OUTPUTPREROUTINGPOSTROUTING),只有iptables能进入修改规则,要在对应的门上写对应的规则。
默认的5种规则链
INPUT:处理入站数据包
FORWARD:处理转发数据包
OUTPUT:处理出站数据包
PREROUTING链:在进行路由选择前处理数据包
POSTROUTING链:在进行路由选择后处理数据包
 
 
为了代理内网用户上网:源地址转换,在路由决策后,要离开网卡之前做。而目标地址转换,在路由决策前做。
四种功能:每种功能代表对数据包的处理机制不同。有四个表:
filter过滤   内含的链:INPUTFORWARDOUTPUT
nat地址转换    OUTPUTPREROUTINGPOSTROUTING
mangle对数据包的首部特征做更改,添加标记等。 含有5条链。
raw
自上而下做检查,若被第一条链匹配到,则直接处理;没被匹配到,就向下继续匹配……直到第五条链,如果都没被匹配到,就由默认规则链处理。(定义规则链时要注意,要把限制范围小的链放上面)
 
iptables语法结构:
iptables  [–t  table]  command  CHAIN [num]  criteria  -j  target
 
-t  table指定修改的表,
对链做什么管理,有以下子命令:
  rules(管理规则的命令)
-A追加规则,在链的尾部加入规则
-I [num]插入规则
-D [num]删除规则
-R [num]替换规则
 chains(管理链的命令)
  -N  chain_name 新建一条链
  -X  chain_name 用来删除用户自定义的空链
  -F  [chain_name] 用来清空所有的规则链
  -P  chain_name {DROP|ACCEPT} 对某条链设置默认策略
  -Z  chain_name 清零计数器
  -E  oldchain_name  newchain_name重命名用户自定义的规则链
 view(显示规则的命令)
  -L  (list)
-v,-vv,-vvv     v越多显示的越详细
-n    以数字形式而不是主机名显示信息
--line-numbers 给每条规则编号后显示
 
 
criteria(匹配条件)
l       通用匹配
n       -s--src--source用来匹配源地址
n       -d--dst 用来匹配目标地址
n       -i  [interface]用来匹配数据包的流入接口
n       -o  [interface]用来匹配数据包的流出接口
n       -p  {tcp|udp|icmp}用来匹配协议
l       扩展匹配
n       -p  tcp
u     --sport
u     --dport
u     --tcp-flags  syn,ack,rst  syn    检查表中每位必须为0,检查syn必须为1。--syn就可实现此目的
(SYN,ACK,FIN,RST,URG,PSH)
n       -p  udp
u     --sport
u     --dport
n       -p icmp
u     -icmp-type 进来是8,出去是0
-m {state|multiport|limit|string|…}
  --state
  --ports
tcp 21命令连接端口,
tcp 20数据连接
控制连接没打开时就不会打开数据连接
NEW:新建立的连接
ESTABLISHED:响应之前连接的
RELATED:一个协议的两个连接之间
INVALID:无法识别的
 
若主机中有两块网卡,实现转发功能的话要先打开主机的路由转发功能。
 
firewall上做日志,在做规则之前做日志,只记录请求的不记录相应的。
       eg.    iptables -I FORWARD 1  -s  192.168.0.0/24 -d 192.168.10.2 -p tcp --dport  80  -j  LOG  –log-prefix “Web Server:”
在做firwall的源地址转换时,既要在nat表中的POSTROUTING链上定义,还要在filter表中的FORWARD链上定义。
-j 处理办法
 
-s-d不指定时就是所有地址