IPTables<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

实现包过滤,

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

l       显式扩展
-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不指定时就是所有地址