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