防火墙是一种组建 工作在网络边缘,对进出本网的数据基于一定的规则进行检查并在匹配某规则时由规则定义的处理机制进行处理的功能组建
防火墙对内网不进行过滤。防火墙分为硬件和软件两类,硬件是厂家设计好的主机硬件,硬件防火墙内的os主要以提供数据包过滤机制为主,软件防火墙本事就是保护系统网络安全的一套软件例如:iptables 与tcp wrappers都可以成为软件防火墙
可以按防火墙对数据包的获取方式来进行分类。分别是七层的应用层防火墙即代理网关(负载大,安全工作效率低) 和三层的网络层防火墙(检查源ip 是包过滤性防火墙)
Linux的防火墙本身是由linux内核提供的,直接由内核进行处理,性能很好
一个网络数据包进入到主机之前,会先经过netfilter进行检查,那就是iptables的规则。
处理的机制分为4种第一种:过滤 第二种:NAT第三种:MANGLE 第四种:RAW(远程机制都要用规则)
在iptables中每一个位置放置很多规则称为链,每一个位置对于不同机制的多个规则即不同的链形成表。
在iptables中一共有五个位置可以放置规则
第一个 PREROUTING(路由前) 第二种 POSTROUTING()路由后
第三种 INPUT第四种 OUTPUT 第五种 FORWARD
过滤机制放的位置:第三 四 五
NAT:PREROUTING(目标地址转换) POSTROUTING(源地址转换)OUTPUT
MANGLE:在五个地方都可以放置
RAW:PREROUTING 和OUTPUT
在链上的规则由顺序匹配,如果没有匹配到规则则就用默认规则
命令:
-t 指定机制(过滤,NAT, MANGLE, RAW)
对规则的命令:
-A (追加) –I(插入 后加数字时表示插入为第几条 如果不加默认为第一条)-R (替换 替换第几条 –R chain num 替换哪个链的第几条) –D (–D CHAIN NUM)删除第几个链的第几条
计数器:1 被规则匹配到数据包的个数 2 被规则匹配到的所有数据包的大小之和
对链的操作命令:
-N (新建一条规则链) –X(删除用户自定义的链 x 只能删除空链) -F (清空链如果后不加链名 则清空表中所有链)
-Z (清空计数器,重新开始计数)-P(默认处理策略)-E(重命名链)
List 查看链中的规则
-L 所有规则 –n 以数字的形式显示 –v 显示详细信息 –x 显示值的原有信息 不做单位换算
匹配条件:
第一种:基本匹配 第二种:扩展匹配 (隐含扩展 (对某个协议的扩展) 显示扩展
基本匹配:数据包的地址:-s ,--src , --source (匹配源地址)
-d , --dst , --destination(匹配目标地址)
-i (指定数据包的流入接口)
- o (指定数据包的流出接口)
-p 做协议匹配 (tcp udp icmp)
隐含扩展:
-p tcp
–sport ,--dport , --tcp –flays
-p udp
–sport ,--dport
-p icmp
--icmp-type echo-request(数字代码为8),echo-reply(数字代码为0,)
-j TARGET
ACCEPT DROP REJECT SNAT DNAT REDIRECT LOG
显示扩展:
-m (指定此为显示扩展)
-m multport –sport ,--dport ,--ports
-m connlimit(并发连接速率)
--connlimit-above(并发连接数超过了几个)
-m string –algo kmp –string ‘’ (字符)
-m time –time start (小时:分钟)
--time stop
例如:-m time –timestart 07:10 –timestop 23:59
修改默认规则:
Iptables –t filter –P INPUT DROP
Iptables –D INPUT 2 (删除INPUT 链中的第二条)
查看策略:
Iptables –L –n
过滤的例子:
只允许192.168.0.0//24 ssh主机
Iptables –t filter –A INPUT –s 192.168.0.0/24 –d 192.168.0.36 –p tcp –dport 22 –j ACCEPT (进来的数据)
Iptables –t filter –A OUTPUT –s 192.168.0.36 –d 192.168.0.0/24 –p tcp –sport 22 –j ACCEPT(出去的数据)
只能自己ping别人 别人ping不了自己
Iptables –A OUTPUT –s 192.168.0.36 –p icmp –icmp-type 8 –j ACCEPT
Iptables –A INPUT –d 192.168.0.36 –p icmp –icmp-type 0 –j ACCEPT(自己去ping别人)
Iptables –A INPUT –s 0.0.0.0/0.0.0.0 –d 192.168.0.36 –p icmp –icmp-type 8 –j ACCEPT
Iptables –A OUTPUT –s 192.168.0.36 –d 0.0.0.0/0.0.0.0 –p icmp –icmp-type 0 –j ACCEPT(别人能ping自己)
Iptables –F INPUT (清空filter的input 链)
调用自定义链:
定义自定义规则 拒绝来自192.168.0.0/24的用户访问web服务器
Iptables –A attach-input –s 192.168.0.0/24 –d 192.168.0.36 –p tcp –dport 80 –j DROP
把自定义规则附加到链上:
Iptables –A INPUT –s 192.168.0.0/24 –j attach-input
用户自定义的链只在用户用时才生效
NAT转换:
SNAT(不需要路由内部主机)
查看路由功能是否打开
Iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –d 192.168.0.0/24 –j SNAT –to –source 192.168.0.36
用iptables –t nat –L –n 看出nat 规则
目标地址转换:(需要做路由)
Iptables –t nat –A PREROUTING –s 192.168.1.0/24 –d 192.168.1.1 –p tcp –dport 80 –j DNAT –to-destition 192.168.0.254
股则的保存:
Iptables-save 用于保存规则,可用输出重定向(不影响正在使用的规则)
Iptables-save > /etc/sysconfig/iptables/名字