目录
一、安全技术:
- 入侵检测机制:特点是阻断,量化,定位来自内外的网络的威胁情况。提供报警和时候监督。类似于监控
- 入侵防御系统:以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,如木马,蠕虫,系统漏洞进行分析判断,然后进行阻断。主动的防护机制。部署在整个架构,或者是集群的入口处。(必经之路)
- 防火墙:隔离功能,工作在网络或者主机的边缘
对网络或者主机进出的数据包按照一定规则进行检查。(网络层转发数据包)
我们工作中,一般对防火墙的设置都是白名单,拒绝所有,允许换个别。
- 防水墙:透明模式工作,华为的ensp监控就是防水墙。一切对于防水墙来说都是透明的。可以在事前、事中、事后都可以进行检测
二、防火墙:
保护范围:
主机防火墙:仅为当前主机服务
网络防火墙:防护的是另一侧的局域网
网络层防火墙:iptables、包过滤防火墙
访问控制,每个数据包的源ip地址,目的IP地址,端口号,协议等进行组合式的监控,由此来判断数据包是否允许通过
1、通信的五要素和四要素?
五要素:源/目的ip 源/目的端口 协议
四要素:源/目的ip 源/目的端口
iptables:系统自带的包过滤防火墙
firewalld:主机防火墙,他也有包过滤的功能。centos7以后集成的。
三、iptables:
内核防火墙,内置四个表,而且在所有的表中,配置规则。配置后立即生效,不需要重启服务。
1、四表五链:
四个表:
raw:连接跟踪跟踪数据的一种机制。配置了之后,可以加快防火墙的穿越速度(关闭raw里面的追踪)
mangle:修改数据包的标记位规则
nat:地址转换的规则表
filter:包过滤规则表。根据预定义的规则,人工设置的规则,对符合条件的数据包进行过滤,也是iptables的默认表
四个表的优先级:
raw——mangle——nat——filter
五链:
PREROUTING链:处理数据包进入本机之前的规则
input链:处理数据包进入本机规则
forward链:处理数据包,转发到其他主机的规则
output链:处理本机发出的数据包的规则,一般不做处理
postrouting链:处理数据包离开本机之后的规则 NAT
表里有链,链里面有规则
iptables的配置规则,写在链中
规则内的匹配顺序:
自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
iptables和linux防火墙有冲突要关闭
yum -y install iptables iptables-services
2、iptables的管理选项:
-A:在指定链的末尾进行追加
-I(大写):在指定链插入新的规则。可以指定插入规则的位置
-P(大写):修改默认策略(链的策略)
-D:删除
-R:修改或者替换规则
-L:查看指定链当中的规则
-n:以数字形式显示规则
-v:查看详细信息
--line-numbers:给每个链中的规则进行编号查看
-F:清空指定链当中的规则(慎用)
-X(大写):清空自定义链的规则
-t:指定表名
3、iptables匹配条件:
-p:指定数据包的协议类型
-s:指定数据包的原IP地址
-d:指定数据包的目的IP地址
-i:指定数据包进入本机的网络接口,也就是网卡设备如ens33
-o:指定数据包离开本机的时候,使用的网络接口
--sport:指定原端口
--dport:指定目的端口号
4、iptables控制类型:
-j:后面跟上下面的控制类型
ACCEPT:允许数据包通过
DROP:拒绝数据包通过,直接丢弃数据包,不给任何回应的信息
REJECT:拒绝数据包通过,但是会给回应信息
SNAT:修改数据包的原地址
DNAT:修改数据包的目的地址
5、iptables操作:
iptables -t filter -vnL 指定查看filter中的链和规则
iptables -vnL iptables默认filter表,可以省略-t
iptables -vnL --line-numbers 给链和链中的规则编号
iptables -vnL INPUT --line-numbers 查看指定表中的指定链,并且给链中的规则编号
iptables -F 清空filter表中所有规则(慎用)
只要不-t指定表明,统统默认是对filter表操作
iptables -A INPUT -p icmp -j ACCEPT
指定在INPUT链的末尾添加,拒绝icmp协议
-A:在指定链的末尾进行追加
-p:指定数据包的协议类型
-j:选择控制类型
因为自上向下按顺序依次进行检查,找到相匹配的规则即停止,上面设置的规则第一条是REJECT,执行之后,不再执行下面的ACCEPT
现在将第2条规则ACCEPT放到REJECT前面
-s:指定源数据包的IP地址 ,多个地址可以逗号隔开
--dport指定数据包的源端口
限制ssh登录
iptables -A INPUT -p tcp --dport 22 -s 20.0.0.40 -j REJECT
规则删除:
修改规则:
修改iptables的默认策略:
设置默认策略DROP或REJECT时要慎用,生效时默认全部数据不能输入
通用匹配规则:IP地址+端口+网段+接口(网卡设备).
iptables -A INPUT -i ens33 -s 20.0.0.0/24 -j DROP
进制20.0.0.0整个网段的数据从ens33网卡设备进来
隐藏扩展模块:
-p指定协议时,不需要使用-m指明扩展模块。-m tcp
-m 显示匹配:
-m扩展模块,明确指定类型,多端口,Mac地址,IP范围。
如何指定多端口:
-m multiport --sport /--dport
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j REJECT
指定IP地址的范围:
-m iprange --src-range 源IP范围
-m iprange --dst-range 目的IP范围
在20-50范围内的主机不允许ping主机
iptables -A INPUT -p icmp -m iprange --src-range 20.0.0.20-20.0.0.50 -j REJECT
备份还原:
如何使用自定义链:
先添加自定义链:
添加规则:
把自定义规则添加到系统下才能生效:
如何删除:
先删除添加系统链中的规则,再删自定义链中的规则,最后删除自定义链。和添加正好顺序相反
6、总结:
多端口、IP范围
通信要素,四表五链
查、增
iptables -t 指定表 -vnL --line-numbers
增:-A INPUT 新增
-I INPUT 插入
-R 改
-D INPUT 删除
生产中默认策略:DROP,配置规则都是ACCEPT,所以清空规则 iptables -F 慎用
命令格式:
iptables -I INPUT 1 -s 20.0.0.40 -p tcp --dport 80 -j REJECT
命令严谨,有先后顺序
四、设置NAT地址转换
SNAT和DNAT:
SANT:源地址转换
DANT:目的地址转换
通过iptables进行地址转换
SNAT内到外,把内网地址换换成可以访问公网的地址
DNAT外到内,使公网地址可以访问内网资源
实验条件:三台pc主机
test1 20.0.0.10 内网
test2 ens33:内网网关:20.0.0.254
ens36:外网网关:12.0.0.254
做SANT的地址转换
test3 20.0.0.100 外网
先添加网卡,ifconfig查看新网卡名,去
vim改
内外机器安装httpd,浏览器访问
改内外网卡:
重启网卡
地址转换:
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10
-t:指定表名
nat:专门用来做地址转换的表明
-A:添加一条规则,在行尾追加
POSTROUTING:在出本机的时候添加一个地址转换的规则
-s 20.0.0.0/24:指定原IP地址
-o ens36:从网卡设备ens36出去的数据都会做转换
-j SNAT:指定控制类型 SANT做原地址转换
--to 10.0.0.10:所有的源IP属于20.0.0.0网段,只要你是从ens36出来的,都会把他们的IP地址转换成10.0.0.10
/etc/sysctl.conf 修改内核参数文件,可以立即生效
将作为路由器的转发功能打卡
查看nat表规则:iptables -t nat -vnL
sysctl -p 使配置完的文件立即生效
test2 再添加一条规则
iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80
-t nat:指定地址转换表
-a PREROUTING:在进入本机之后添加地址转换的规则
-d 11.0.0.11:指定目的地址
-i ens36:进入内网的设备接口
-p tcp:指定协议tcp (httpd)
--dport:指定目的端口 :80(httpd)
-j DANT:转换目的地址
--to 20.0.0.10:80:只要是从ens36这个网络接口进入本机内网的IP地址,访问内网服务http的80端口,目的IP地址都可以转换成11.0.0.11
网访问内:
linux系统能抓包么?
wrieshark只适用于Windows 抓包
tcpdump 是linux自带的抓包工具
抓包方式:1、指定抓包的数量
2、动态抓包,一直会获取包,排除人工体质
tcpdump命令:
制定抓包数量,抓10个包
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 20.0.0.0/24 -w ./target.cap
tcpdump:抓包命令,固定开头
tcp:抓包协议(udp也可以抓)
-i ens33:经过,只抓进过ens33的数据
-t:不显示时间戳
-s0:抓完整的数据包
-c 10:指定抓包格式,10个
dst port 80:访问的是httpd的80端口
src net 20.0.0.0/24:指定访问的地址
-w:抓包的数据,保存的位置(位置可指定)
设成.cap结尾是因为,linux不能分析数据,拖出来Windows的wireshrak分析(wireshark识别.cap文件)
tcpdump -i ens33 -s0 -w ./ens33.cap
sz 文件名:下载到桌面
五、centos7防火墙:firewalld
firewalld:centos7自带的。和iptables一样,也是包过滤防火墙
firewalld过滤,通过区域来进行配置
iptables是一个静态防火墙,只有满足条件他才会触发
firewalld是动态防火墙
iptables靠规则
firewalld靠区域
firewalld的区域:
- trusted:信任区,所有流量都可以传入
- public:公共区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,也是firewalld的默认区域。
dhcpv6-client:获取ipv6地址的客户端工具
- external:外部区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,默认通过此区域转发的ipv4流量地址,可以进行伪装。
- home:家庭区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
- internal:内部区域,默认值与home区域的作用相同
- work:工作区域。允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
- DMZ:隔离区/非军事区,允许ssh和其他的预定义好的配置,其他的全部拒绝
- block:限制区,所有流量都会被拒绝
- drop:丢弃区,所有流量都会丢弃,没有任何响应
实验:开启防火墙,下载httpd
限制不立即生效,放行立即生效
.
以上都是临时添加:
永久添加:
永久删除:
端口管理:
在区域中添加 移除端口