安全技术
1、入侵检测机制:特点是阻断,量化,定位来自内外的网络的威胁情况,提供报警和事后监督,类似于监控
2、入侵防御:以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,木马,蠕虫,系统漏洞进行分析判断,然后,进行阻断,主动的防护机制,部署在整个架构,或者是集群的入口处,(必经之路)
3、防火墙:隔离功能,工作在网络或者主机的边缘,对网络或者主机进出的数据包按照一定规则进行检查(网络层转发的数据包)
我们在工作当中,一般对防火墙的设置都是白名单,拒绝所有,允许个别
4、防水墙,透明模式工作,华为的ensp监控就是防火墙,一切对于防水墙都是透明的
防火墙的种类
保护范围:主机防火墙,仅为当前主机服务
网络防火墙,防护的是另一侧的局域网
网络层防火墙,iptables,包过滤防火墙
访问控制,每个数据包的源IP地址,目的IP地址,端口号,协议等等进行组合式监控,由此来判断数据包是否允许通过
通信的五要素和四要素
源/目的IP 源/目的 端口 协议(五要素)
源/目的IP 源/目的 端口(四要素)
iptables:系统自带的包过滤防火墙
firewalld:主机防火墙,它也有包过滤的功能,centos7以后集成的
iptables:内核防火墙,内置四个表,而且所有在的表中,配置规则,配置后立刻生效,不需要重启服务
四表五链
四个表
raw:连接跟踪,跟踪数据的一种机制,配置了之后,可以加快防火墙的穿越速度(关闭raw里面的追踪)
mangle:修改数据包的标记位规则
nat:地址转换的规则表
filter:包过滤规则表,根据预定义的规则,人工设置的规则,对符合条件的数据包进行过滤,也是iptables的默认表
四表是有优先级的
raw------> mangle------->nat-------->filter
五个链
prerouting链:处理数据包进入本机之前的规则(地址转换nat)
input链:处理数据包进入本机的规则
FORWARD:处理数据包转发到其他主机的规则
output:处理本机发出的数据包的规则,一般不做处理
postrouting:处理数据包离开本机之后的规则(地址转换nat)
iptables的配置规则
管理选项
-A在指定链的末尾进行追加
-I在指定链插入新的规则,可以指定插入规则的位置
-P修改摸摸人策略(链的策略)
-D删除
-R修改,替换规则
-L 查看指定链当中的规则
-n以数字形式显示规则
-v查看详细信息
--line-numbers:给每个链中的规则进行编号查看
-F清空指定指定链当中的规则(慎用)
-X清空自定义链的规则
-t:指定表名(可加可不加)
匹配条件
-p:指定数据包的协议类型
-s:指定数据包的源IP地址
-d:指定数据包的目的IP地址
-i:指定数据包进入本机的网络接口(网络接口设备)
-o:指定数据包离开本机的时候使用的网络接口
--sport:指定数据包的源端口(源端口)
--dport:指定数据包的目的端口号(目的端口号)
控制类型
-j:后面跟上控制类型
ACCEPT:允许数据包通过
DROP:直接丢弃数据包(直接丢弃),不给任何回应的信息
REJECT:拒绝,拒绝数据包通过,但是会给一个回应的信息
SNAT:修改数据包的源地址
DNAT:修改数据包的目的地址
环境配置
关闭主机防火墙
安装服务iptables
重启服务
开机自启
实例
给规则排序
iptables -vnL --line-numbers
对所有的IP地址做限制
iptables -t filter -A INPUT -p icmp -j REJECT
允许所有的IP地址访问
iptables -A INPUT -p icmp -j ACCEPT
iptables -I INPUT 1 -p icmp -j ACCEPT
对指定IP地址做限制
iptables -I INPUT -s IP地址 -p 协议 -j REJECT
指定多个IP地址做限制
iptables -I INPUT -s IP地址,IP地址 -p 协议 -j REJECT
指定IP地址和端口做限制
iptables -A INPUT -s IP地址 -p 协议 --dport 端口号 -j REJECT
对序号删除(先查后删)
iptables -D INPUT 序号
根据序号修改控制类型
iptables -R INPUT 序号 -p 协议 -j ACCEPT
修改默认策略
iptables -P INPUT DROP
通用匹配规则:IP+端口+网段+接口(网卡设备)
方式一:iptables -A INPUT -s IP地址 -j DROP
方式二(拒绝网段):iptables -A INPUT -i ens33 -s 网段 -j DROP
拒绝网段访问服务
iptables -A INPUT -s 网段 -p 协议 --dport 端口号 -j REJECT
隐藏扩展模块
-p:制定协议时,不需要使用-m指明扩展模块 -m tcp
指定多端口匹配(小的端口号在前,大端口号在后面)
iptables -A INPUT -p tcp --dport 端口号:端口号 -j REJECT
-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地址范围
iptables -A INPUT -p icmp -m iprange --src-range IP地址范围 -j REJECT
对指定Mac地址
iptables -A INPUT -m mac --mac-source Mac地址 -j REJECT
备份和还原
备份
iptables-save > 指定文件
还原
iptables-restore < 指定文件
iptables 默认策略目录
/etc/sysconfig/iptables
自定义链
添加自定义链 iptables -N 链名
修改自定义链名 iptables -E 链名 修改之后的链名
给自定义链添加规则并让系统识别
iptables -I 链名 序号 -p 协议 -j ACCEPT
iptables -I INPUT 序号 -p 协议 -j 链名
删除自定义规则和链(根据序号删除)
iptables -D INPUT 序号
iptables -D INPUT 链名 序号
iptables -X 链名
firewalld
firewalld:centos7自带的,和iptables一样,也是包过滤防火墙
firewalld过滤,通过区域来进行配置
iptables 静态的防火墙
firewalld 是动态防火墙
firewalld靠的是区域:
1、trusted:信任区,所有流量都可以传入
2、public:公共区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,也是firewalld的默认区域
3、external:外部区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,默认通过此区域转发的ipv4流量地址,可以进行伪装
4、home:家庭区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
5、internal:内部区域,默认值与home区域的作用相同
6、work工作区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
7、DMZ:隔离区又叫非军事区 ,允许ssh,其他的预定义好配置,其他的全部拒绝
8、block:限制区,拒绝所有的流量
9、drop:丢弃区域,所有流量都会丢弃,而且没有任何响应
dhcpv6-client:获取ipv4地址的客户端工具
开启防火墙
查看防火墙的状态 systemctl staus firewalld
firewalld-cmd --get-default-zone 显示当前系统中的默认区域
firewalld-cmd --list-all 显示默认区域内的所有规则
firewalld-amd --set-default-zone=block 限制
firewalld-cmd --list-service 查看区域内允许访问(通过)的服务
firewalld-cmd --add-service=http --zone=public 添加服务
firewalld-cmd --remove-service=http --zone=public 删除服务
添加多个服务(临时)
方式一
firewalld-cmd --add-service=http --add-service=ftp --zone=public
方式二
firewalld-cmd --add-service={ftp http}
添加多个服务(永久)
firewalld-cmd --add-service={ftp http} --zone=public --permanent
firewalld-cmd --reload
删除服务
firewalld-cmd --remove-service=http --zone=public --permanent
firewalld-cmd --reload
端口管理:
添加端口
firewalld-cmd --zone=public --add-port80/tcp
移除端口
firewalld-cmd --zone=public --remove-port80/tcp
添加多个端口
firewalld-cmd --zone=public --add-port={3306,80,21}/tcp
添加范围端口
firewalld-cmd --zone=public --add-port=30-40/tcp
实验
准备三台主机
test1 20.0.0.10 内网
test2 ens33 20.0.0.254
ens36 12.0.0.254
做SNAT的地址转换
test3 12.0.0.10 外网
test2添加网络适配器
ifconfig 查看是否添加成功
关闭防火墙
关闭安全机制
test2的网卡配置
cp ifcfg-ens33 ifcfg-ens36
配置 ifcfg-ens33
配置 ifcfg-ens36
sysctl.conf 修改内核参数的文件
net.ipv4.ip_forward=1 开启内核转发功能
sysctl -p 立刻生效
test1 test3安装httpd
重启服务
检查一下httpd能访问吗
重启网卡
test2
访问外网
iptables -t nat -A POSTROUTING -s 192.168.233.0/24 -o ens36 -j SNAT --to 10.0.0.10
iptables -t nat -A PERROUTING -d10.0.0.10 -i ens33 -p tcp --dport 80 -j DNAT --to 20.0.010:80
查看nat表
iptables -t nat -vnL
test1在虚拟机里打开浏览器访问test3,test3查看日志tail /var/log/httpd/access_log
test3同理