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