防火墙:隔离功能
部署在网络边缘或者主机边缘,在工作中,防火墙的主要作用,决定哪些数据可以被外网使用,以及哪些数据可以进入内网访问
主要工作在网络层
安全技术
1.入侵检测系统:检测出威胁,病毒,木马,不会阻断网络访问,时候提供报警,监督,类似于监控,看着你,但是不干预,出了事再来找你
2.入侵防御系统:一旦检测出威胁,会立即予以阻断,会主动的方式保护网络安全,透明模式工作的,一般都是用在线部署的方式(所有数据进出的必经之路)
现在市面上,大部分防火墙都是上述二者的结合体
防水墙:waterwall 防止信息泄露(实时监控)
软件防火墙:360,金山毒霸,iptables,firewall
硬件防火墙:路由器,交换机,三层交换机
保护范围:
1.主机防火墙:服务范围就是当前自己的主机
2.网络防火墙:必经之路
实现方式
1.硬件防火墙,既有专业的硬件来实现防火墙功能,又有软件来进行配合
2.软件防火墙:代码实现,判断
网络协议划分:
网络层:数据包过滤防火墙
应用层(代理服务器)设置数据的进出
linux防火墙:firewalld centos7专门自带的
iptables 数据包过滤防火墙
selinux:自带的安全工具
集成在一个内核中,net filter组件
iptables数据包过滤防火墙
工作在网络层,正对数据包继续宁过滤和限制
iptables属于用户态
net filter 属于内核态
过滤数据包:ip地址 端口 协议(tcp udp),都可以在iptables中进行配置,可以限制,也可以放行
iptables的构成和工作机制
组成部分:四表五链组成(selinux,也是一个表,不在我们讨论范围之内)
四表:
raw:连接跟踪机制,加快封包穿过防火墙的速度
mangle:数据标记
nat:地址转换表
filter(默认表):过滤规划表,根据规则来定义或者过滤符合条件的数据包
四表的优先级 security----->raw----->mangle---->nat----->filter
五链:
INPUT 处理数据包进入本机的规则
OUTPUT 处理数据包发出的规则,一般不做处理
PREROUTING 处理数据包进入的规则
POSTROUTING 处理数据包离开本机之后的规则 结合地址转换使用
FORWARD 处理数据转发的规则
iptables的规则
表里面由链,链里面有规则,规则就是自定义的对于数据包的控制命令
匹配顺序:
1.根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则立即停止,不在表中向下继续查找,如果匹配不到规则,按照链的默认规则进行处理
2. 报文流向
流入本机:prerouting ------->iuput---------->用户进程(httpd服务)------请求--------响应--------->数据要返回用户
流出本机:httpd----------->响应--------->output--------------->postrouting-(地址转换)------------>用户
转发:数据包进来,肯定不是同一网段,路由转发-------->forward--------->数据包出去,不允许转发,数据包直接丢弃。
iptables的命令格式:
iptables [ -t 表明](不指定表名,默认是filter)管理选项 [链名] [匹配条件] [-j 控制类型]
管理选项:
-A 在链的末尾追加一条,添加
-I 在链中插入一条新的规则,可以指定序号(后面跟上数字,表示序号)
-P 修改链的默认策略
-D 删除
-R 修改替换规则
-L 查看链中的规则
-vnL
v:显示详细信息 n:把规则以数字形式进行展示
-F 清空链中的所有规则,慎用
匹配条件:
-p 指定匹配的数据包协议类型
s 指定匹配的数据包源ip地址
-d 指定匹配数据包目的ip地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机使用的网络接口
--sport 指定源端口号
--dport 指定目的端口号
控制类型:
ACCEPT:允许数据包通过
DROP: 拒绝,直接丢弃,不给出任何信息回应
REJECT:拒绝,会给个响应信息
SNAT: 修改数据包的源ip地址
DNAT: 修改数据包的目的地址
不加-t指定,默认就是filter
加-t指定
清空链中数据,慎用
拒绝ping
-I链中指定插入新规则(根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则立即停止)
在规则前面显示编号
指定端口,端口要写在协议后 (-p tcp --dport 80)
指定ip地址,写在协议前(-s 192.168.88.20 -p icmp)
指定多个ip地址
指定端口
删除
网段端口一起使用
修改规则,一般不用
-R
在生产中,iptables所有的链的默认规则都是DROP
整个网段,直至访问80端口的服务
禁止22,80端口传输
端口号:小的数字写前面,大的写后面; :表示22端口和80端口
隐藏拓展模块
-p指定协议时,tcp udp指明了是什么协议,就不需要再用-m来指明扩展模块
指定多端口,可以用冒号的形式,也可以用-m隐藏模块来实现
-m可以用明确的形式指出类型:多端口,mac地址,ip地址数据包的状态
-m multiport指定多端口,使用多端口,多个端口用,隔开
-m multiport --dport -m multiport --sport
ip范围
-m iprange --src-range 源ip地址的范围
-m iprange --dst-range 目的ip地址的范围
mac地址
-m mac --mac-source