防火墙:隔离功能
部署在网络边缘或者主机边缘,在工作中,防火墙的主要作用,决定哪些数据可以被外网使用,以及哪些数据可以进入内网访问
主要工作在网络层
安全技术
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
iptables的备份和还原
1.写在命令行当中的都是临时配置
2.把规则,配置在服务的文件当中形成永久生效
备份
导出配置
导入配置
导入配置也是临时设置,写入配置文件中才是永久生效
自定义链
1.创建自定义链,没有-t指定表,默认在filer表中添加一个自定义链
怎么给自定义链改名
把规则添加到INPUT链中
创建在自定义链当中的规则,需要添加默认链当中才能够使用
删除;自定义链的规则被默认链使用,要先在默认链当中删除,再把自定义链当中的规则删除,最后才能把自定义链删除
SNAT和DNAT
SNAT :源ip地址转换(内网到外网)
DNAT:目标地址转换(外网到内网)
客户端发起请求---> 网关服务器(地址转换)---->网关服务器----->web服务器
web服务器响应请求---->网关服务器----->网关服务器----->客户端
源地址,目标IP地址转换 nat
linux系统如何抓包
tcpdump来实现linux抓包,自带的
文件传到桌面
tcpdump可以抓包,但是不可以分析数据包,可以看出来linux显示的是乱码,所以我们需要.cap格式的文件,把文件sz的命令传到电脑桌面,用wileshark来分析
动态抓包,需要手动停止
iptables 软件防火墙,包过滤防火墙
firewalld 防火墙,包过滤防火墙,工作在网络层,centos7自带的默认的防火墙;作用:为了取代iptables
firewalld两种配置模式:
运行时配置
永久配置
iptables是静态防火墙
firewalld是动态防火墙
firewalld按照区域来进行划分:9个区域 (需要人工手动切换的)
mobar可以看:firewalld -confige
trusted:信任区域,允许所有的流量传入
public:公共区域,也是默认区域,只允许ssh和dhcpv6这两个预定义服的流量可以传入,其余都是拒绝
external:外部区域,只允许ssh和dhcpv6这两个预定义服务的流量传入,其余都是拒绝,如果通过此区域转发的ipv4流量,可以进行地址伪装
home:家庭区域,只允许ssh和dhcpv6这两个预定义服务的流量可以出传入,区域的都是拒绝
internal:内部区域,默认值和home一个作用
work:工作区域,只允许ssh和dhcov6这两个自定义服务的流量可以传入,其余都是拒绝
dmz:隔离区域,也成为非军事区域,只允许ssh和dhcpv6这两个预定义服务的流量传入,其余都是拒绝的
block:限制区域,所有流量都拒绝
drop:丢弃区域,直接丢弃,没有回显信息
预定义服务:系统自带的
ssh:远程连接协议
dhcpv6:通过dhcpv6服务器进行报文交互,获取ipv6的地址
ipp:编程语言交互 java pyhton
samba:打印机
mdns:主机名的IP地址解析(解析小型网络的ip地址)
查看防火墙状态
查看默认区
切换使用区域
查看防火墙策略
添加单个服务
添加多个服务
删除服务
以上临时的,重启即失效
永久添加
永久删除
永久添加永久删除都要使其生效的命令
端口管理
添加端口
移除端口
指定多个端口必须使用同一协议,不然只能分开写
端口范围添加