防火墙:隔离功能
部署点:部署在网络边缘,或者主机边缘,在工作中,防火墙的主要作用,决定那些数据可以被外网访问,以及哪些数据可以进入内网访问
讨论防火墙,主要就是在网络层进行讨论
安全技术:
1,入侵检测系统:检测数威胁,病毒,木马,不会阻断网络访问,时候提供报警和监控。
2,入侵防御系统:一旦检测出威胁,会立即予以阻断,主动的方式保护网络安全。透明模式工作的,一般都是在线部署(所有数据进出的必经之路)
现在市面上的大部分的防火墙都是上述二者的结合体。
防水墙:water wall,主要是防止内部资料信息泄露。
防火墙的种类:
1,软件防火墙:360,卡巴斯基,金山毒霸,IPtables,firewall
2,硬件防火墙:路由器,交换机,三层交换机
防火墙的划分方式:
1,保护范围
)1,主机防火墙:服务范围就是当前自己的主机。
)2,网络防火墙:必经之路,所有数据的进出都要通过这里。
2,实现方式
)1,硬件防火墙,既有专业的硬件来自实现防火墙功能,又有软件来进行配合。(价格高)
)2,软件防火墙:主要靠自带代码判断。
3,网络协议划分
)1,网络层:(数据包)包过滤防火墙
)2,应用层(代理服务器):设置数据的进出。
Linux防火墙的种类
1,firewalld centos7专门自带的
2,iptable 包过滤防火墙
3,selinux 自带的安全工具
他们集合在一个内核中:netfilter组件
iptable 包过滤防火墙 工作地点以及作用
1,工作在:网络层
2,作用:针对数据包进行过滤和限制
过滤数据包:ip地址——端口——协议。都可以在iptable中进行配置,可以限制,也可以放行
协议:主要讨论的就是tcp
iptable的构成和工作机制:
iptable的组成本部分:四表五链组成(selinux,也是一个表,不在我们讨论范围之内。)
1,四表
)1,raw:链接跟踪机制,加快封包穿过防火墙的速度,主要是数据包的跟踪。
)2,mangle:数据标记。
)3,nat:地址转换表。
)4,filter:过滤规则表,根据规则来定义或者过滤符合条件的数据包,是iptable的默认表。
四表的优先级:
raw——》mangel——》nat——》filter
2,五链:容纳各种规则
)1,INPUT:处理数据包进入本机的规则。
)2,OUTPUT:处理数据包发出的规则,一般是不做处理的。
)3,preouting:处理数据包进入的规则。(结合地址转换使用)
)4,postouting:处理数据包离开本机之后的规则。(结合地址转换使用)
)5,FORWARD:处理数据转发的规则。
iptable的规则:
表里面有链,链里面有规则,规则就是我们自定义的对于数据包的控制命令
匹配顺序:
1,根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则,立即停止,不在表中向下继续查找,如果匹配不到规则,会按照链的默认规则进行处理。
2,报文流向
)1,流入本机:prerouting——>iuput——>用户进程(httpd服务)——>请求访问——>响应——>数据要返回用户
)2,流出本机:httpd——>响应报文——>output-——>postrouting(是否需要做地址转换——>用户
)3,转发:数据包进来,转发肯定不是同一网段,路由器转发——>数据包出去,不允许转发,数据包直接丢弃
iptable命令格式
iptable [-t 表名](不指定表名,默认就是filter表) +管理选项 +[链名] [匹配条件] [-j 控制类型]
管理选项命令:(基本都是大写)
-A :表示在链的末尾添加一条
-I(大写的i) :在链中插入一条新的规则,可以指定序号。-I 后面跟上数字,表示序号
-P:修改链的默认策略
-D:删除
-R:修改,替换规则
-L:查看链中的规则(一般和vnL结合使用)
vnL:1,v:显示详细信息
2,n:把规则以数字形式进行展示
vnL --line-number 查看规则的序号
-F :清空链中的所有规则,慎用
匹配条件:(基本都是小写)
-p:指定匹配的协议类型。
-s:指定匹配的源ip地址。
-d:指定匹配数据包的ip地址。
-i:指定数据包进入本机的网络接口。
-o:指定数据包离开本机使用的网络接口。
--sport:指定源端口号。
--dport:指定目的的端口号。
控制类型:(全部大写)-j +控制选项
ACCEPT:允许数据包通过。
DROP:拒绝,直接丢弃数据包,不给出任何信息回应。
REJECT:拒绝,会给响应信息。
SNAT:修改数据包的源ip地址
DNAT:修改数据包的目的地址
指定多个ip地址用(逗号),隔开
在生产中。iptables所有的链的默认规则都是DROP
如何修改链的默认规则
iptables -P INPUT DROP
iptables -A INPUT -P tcp --dport 22 -j ACCEPT
iptables -A INPUT -P tcp --dport 80 -j ACCEPT
实验:真个网段禁止访问80端口的服务
iptables -A INPUT -s 192.168.233.0/24 -p tcp --dport 80 -j REJECT
隐藏扩展模块:
-p 指定协议时,tcp,udp指明了是什么协议,就不需要再用-m指定扩展模块
指定端口,可以用冒号的形式,也可以用-m隐藏模块来实现
-m 可以用明确的形式指出类型,多端口,mac地址,ip地址,数据包的状态
iptables -A INPUT -p tcp -m multiport --dport 22,20,443,80 -j REJECT
-m multiport :指定多个端口,多个端口号逗号分开
ip范围:
-m iprange --scr-range:源ip地址的范围
-m iprange --dst-range:目的地址范围
iptables -A INPUT -p icmp -m iprane -- src-range
mac地址
-m mac --mac-source
iptables的备份与还原:
1,写在命令行当中的都是临时配置
2,把我们的规则配置在服务当中,形成永久生效
iptables -save > /opt/data 备份,导出
cat /etc/sysconfig/iptables
cat /opt/data > /etc/sysconfig/iptables
iptables -restore < /opt/data 导入
永久生效要写入 /etc/sysconfig/iptables配置文件中
自定义链:
1,创建自定义链:iptables -N +自定义链名(没有指定表,就默认在filter表中添加一个自定义链)
2,给自定义链改名:iptables -E +原链名 +新链名
3,添加新的规则 iptables -I ky30 -p icmp
iptables -I INPUT -p icmp -j ky30 创建在自定义链当中的规则,需要添加到默认链中,才能够使用
-j ky30 自定义的链名。
4,删除自定义链接
)1,自定义链的规则被默认链使用,要先在默认链当中国删除,再把自定义链当中的规则删除,最后才能把自定义链删除 iptables -X ky30 (自定义链名)
SNAT和DNAT
SNAT:修改数据包的源ip地址
内网到外网——>源
DNAT:修改数据包的目的地址
外网到内网——>目的
10.0.0.10 192.168.233.10
web服务器 网关服务器 网关服务器 客户端
地址转换
12.0.0.10 源 192.168.233.10 web服务器——网关服务器——12.0.0.10——网关服务器——客户端发起请求
web服务器响应请求——网关服务器——网关服务器——客户端
-t nat :指定表名
-A PREROUTING
-d :指定目的ip
-p:指定协议
--dport :指定端口号
-j DNAT:目标地址转换
--to 192.168.233.10:80
所有外部来的访问ip地址都变成11.0.0.11来访问内网,目标端口为80,协议是tcp协议的流量转发到192.168.233.10:80的端口、
外部客户端可以通过10.0.0.11:80来访问内部服务192.168.233.10:80的http服务
/etc/sysctl.conf
修改内个参数,永久生效
firewalld:防火墙,包过滤防火墙。网络层centos7自带的默认防火墙,取代iptables
两种配置模式:
1,运行时配置
2,永久配置
iptable是静态防火墙
firewalld是动态防火墙
firewalld按照区域来进行划分,一共有9个区域
9个区域的作用:
trusted:信任区域,允许所有的流量接入。
public:公共区,默认区域,默认只允许ssh和dhcpv6两个预定义服务的流量可以传入,其余都是拒绝。
external:外部区域,只允许ssh和dhcpv6两个预定义服务的流量可以传入,其余都是拒绝。如果通过此区域转发的ipv4流量,可以进行地址伪装。
home:家庭区域,只允许ssh和dhcpv6两个预定义服务的流量可以传入,其余都是拒绝。
internal:内部区域,默认值和home一个作用
work:工作区域,只允许ssh和dhcpv6两个预定义服务的流量可以传入,其余都是拒绝。
dmz:隔离区域,也称为非军事区域,只允许ssh和dhcpv6两个预定义服务的流量可以传入,其余都是拒绝。
block:限制区域,所有的流量都拒绝
drop:丢弃区域,直接丢弃,没有显回信息
预定义服务:
ssh:远程连接协议
dhcpv6:通过dhcpv6服务器进行报文交互,获取ipv6的地址
ipp:编程语言交互
samba:打印机
mdns:主机名地址解析,主要解析小型网络的ip地址
面试题:
表里时链,链里是股则,从上到下匹配,匹配到立即停止
Linux系统如何抓包?
tcpdump来实现Linux抓包,自带的工具
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net192.168.233.0/24 -w /opt/target.cap
指定抓包的协议时tcp
-i ens33 只抓经过ens33的数据包
-t 不显示时间戳
-s0 抓取完整的数据包
and 目的端口是80,and 192.168.233.0/24数据包的源地址
-w 把抓包的文件保存