IPTables<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
实现包过滤,
firewall防火墙:是一个套件,极可能是软件,也可能是硬件,也可能是两者的结合。位于网络边界,根据规则进行数据包的处理。工作在内核
基于硬件实现的防火墙
主机防火墙:工作在主机边沿,网卡上
网络防火墙:
netfilter,就是一内核空间的framework即框架
iptables,用户空间的管理规则的工具
防火墙根据工作的层不同分为:
⑴包过滤型:根据OSI模型中2,3,4层首部信息特征进行处理的。封闭端口,提取地址
①简单包过滤 静态
②带状态检测的包过滤 动态 (状态有NEW,ESTABLISHED,RELATED,INVALID),比简单包过滤功能强大,且安全性高。可以实现在不打开不安全端口也可以进行TCP
⑵应用层网关防火墙
netfilter在内核上打开了5道门(INPUT,FORWARD ,OUTPUT,PREROUTING,POSTROUTING),只有iptables能进入修改规则,要在对应的门上写对应的规则。
默认的5种规则链
INPUT:处理入站数据包
FORWARD:处理转发数据包
OUTPUT:处理出站数据包
PREROUTING链:在进行路由选择前处理数据包
POSTROUTING链:在进行路由选择后处理数据包
为了代理内网用户上网:源地址转换,在路由决策后,要离开网卡之前做。而目标地址转换,在路由决策前做。
四种功能:每种功能代表对数据包的处理机制不同。有四个表:
①filter过滤 内含的链:INPUT,FORWARD,OUTPUT
②nat地址转换 OUTPUT,PREROUTING,POSTROUTING
③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不指定时就是所有地址
转载于:https://blog.51cto.com/vickydu/368380