安全技术:
1.入侵检测机制 特点:阻断,量化,定位来自内外的网咯的威胁情况。提供报警和事后监控,类似于监控。
2.入侵防御:以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,木马,蠕虫,系统漏洞进行分析判断,然后进行判断,主动的防护机制,部署在整个架构,或者是集群的入口处。(必经之路)
3.防火墙:隔离功能 工作在网络或主机的边缘
对网络或者主机进出的数据包按照一定规则进行检查。(网络层转发的数据包)
我们在工作当中,一般对防火墙的设置都是白名单啊,拒绝所有,允许个别。
4.防水墙,透明模式工作,华为的ensp监控就是防水墙。一切对于防水墙都是透明的
在事前,事中,事后,都可以进行检测。
按保护范围分为:
主机防火墙 仅为当前主机服务
网络防火墙 防护的是另一侧的局域网
网络层防火墙:iptables/包过滤防火墙
访问控制,每个数据包的源ip地址,目的ip地址,端口号,协议等等进行组合式监控,由此来判断数据包是否允许通过
通信的五要素和四要素:
五要素:源/目的ip 源/目的端口 协议
四要素:源/目的ip 源/目的端口
iptables:内核防火墙,内置四个表,而且是在所有表中,配置规则,配置后立即生效,不需要重启服务
四个表:
raw:连接跟踪,跟踪数据的一种机制。配置了之后,可以加快防火墙的穿越速度(关闭raw里面的追踪)
mangle:修改数据包的标记位规则
nat:地址转换的规则表
filter:包过滤规则表。根据预定义的规则,人工设置的规则,对符合条件的数据包进行过滤,也是iptables的默认表
四个表也是有优先级的
raw------->mangle-------->nat------->filter
五个链:
prerouting链:处理数据包进入本机之前的规则
input链:处理数据包进入本机的规则
FORWARD:处理数据包转发到其他主机的规则
output:处理本机发出的数据包的规则,一般不做处理
postrouting:处理数据包离开本机之后的规则
(prerouting和postrouting这个两个链是结合nat表使用的)
表里有链,链里面有规则
iptables的配置规则,写在链当中
管理选项:
-A:在指定链的末尾进行追加
-I:在指定链插入新的规则,可以指定插入规则的位置
-P:修改默认策略(链的策略)
-D:删除
-R:修改,替换规则
-L:查看指定链当中的规则
-n:以数字形式显示规则
-v:查看详细信息
--line-number:给每个链中的规则进行编号查看
-F:清空指定链当中的规则(慎用!)
-X:清空自定义链的规则
-t:指定表名
匹配条件:
-p:可以指定数据包的协议类型
-s:指定数据包的源ip地址
-d:指定数据包的目的ip地址
-i:指定数据包进入本机的网络接口
-o:指定数据包离开本机的时候使用的网络接口
--sport:指定源端口
--dport:指定目的端口号
控制类型:
-j:后面跟上控制类型
ACCEPT:允许数据包通过(配置规则)
DROP:拒绝数据包通过,直接丢弃数据包,不给任何回应的信息(默认策略)
REJECT:拒绝,拒绝数据包通过,但是会给一个回应的信息
SNAT:修改数据包的原地址
DNAT:修改数据包的目的地址
匹配规则的策略:
从上往下按照规则顺序匹配,匹配到了规则,后面的规则就不再匹配。针对相同规则的类型,匹配到之后后续的规则也不生效。
iptables安装
1.关闭防火墙
systemctl stop firewalld.service
2.安装iptables 防火墙
yum -y install iptables iptables-services
3.设置iptables开机启动
systemctl start iptables.service
systemctl enable iptables.service
4.iptables防火墙的配置方法:
1、使用iptables命令行。
2、使用system-config-firewall; centso7不能使用 centos 6可以使用
iptables的命令格式:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
-t:如果不指定 默认是filter
表名、链名用来指定 iptables 命令所操作的表和链,未指定表名时将默认使用 filter 表;
注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链,一般不这么操作
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
1.查看规则
粗略查看默认规则:
[root@localhost ~]#iptables -L
数字化的形式查看规则:
[root@localhost ~]#iptables -nL
注意:当-nL同时使用时,n一定要在L 的前面,否则会报错,使用-vnL时也是如此,L要在最后面
指定表查看:
[root@localhost ~]#iptables -t filter -vnL
查看行规则的位置
[root@localhost ~]#iptables -t filter -vnL --line-number
2.添加规则
添加规则的两个常用选项:
-A,在末尾追加规则。
-I,在指定位置前插入规则。如果不指定,则在首行插入
添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。
禁止所有主机ping本机
[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT
允许ping通,-A在前一条规则后添加
指定序号插入,插入到第一条
禁止任何主机tcp
iptables -t filter -A INPUT -p tcp -j REJECT
允许任何主机udp
iptables -I INPUT 1 -p udp -j ACCEPT
对单个ip进行拒绝
iptables -t filter -A INPUT -s 192.168.233.22 -p icmp -j REJECT
对多个ip进行拒绝
iptables -t filter -A INPUT -s 192.168.233.22,192.168.233.23 -p icmp -j REJECT
指定端口
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT
协议在前,指定端口号在后,否则识别不了端口,无法匹配就会报错!
指定IP地址的服务端口拒绝
iptables -t filter -A INPUT -s 192.168.233.22 -p tcp --dport 22 -j REJECT
例题:写一个禁止192.168.233.22:80的端口入访问
iptables -t filter -A INPUT -s 192.168.233.22 -p tcp --dport 80 -j REJECT
3.删除规则 -D
清空所有规则
iptables -F
(慎用!!!)
根据序号删除内容
删除INPUT里的第一条规则
iptables -D INPUT 1
4.修改规则 -R(不推荐使用)
修改默认规则:
默认策略是指四表五链中链的默认策略,INPUT,FORWARD,OUTPUT,filter三条链的默认值为ACCEPT
就像是设定黑名单一样,默认其他的协议操作都是允许的,只有指定加入的且声明权限的为(DROP 或 REJECT)
是拒绝禁止的对象。
如果远程连接的相关规则清除导致无法远程连接主机此时的解决方案有三种:
第一种:我的防火墙设置只是临时设置,并为保存,重启服务器即可
第二种:操作服务器,重启iptables服务
第三种:进入机房操作该服务器(将设置恢复,重新修改规则)
在生产中都是默认DROP
指定IP地址
禁止22的数据进入
iptables -A INPUT -s 192.168.233.22 -j DROP
指定网络接口
禁止指定的网络设备名称ens33的所有网段
iptables -I INPUT 1 -i ens33 -s 192.168.233.0/24 -j DROP
指定端口
禁止整个网段访问80端口
iptables -t filter -A INPUT -s 192.168.233.0/24 -p tcp --dport 80 -j REJECT
禁止整个网段访问22和80端口
这里写发要注意,小的数字写在前面,大的写在后面
显示匹配
-m 扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件
-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
-m iprange --src-range 源IP范围
-m iprange --dst-range 目的IP范围
-m mac --mac-source MAC地址
多端口匹配
一次性禁止多个tcp网络协议的端口匹配规则
ip范围匹配
禁止网段内的ip地址ping主机
MAC匹配
iptables -A INPUT -m mac --mac-source 00:0c:29:f7:24:38 -j DROP
自定义链
自定义链添加
iptables -N custom(链名,自定义的)
自定义链重命名
iptables -E custom(原来名称) dym(新名称)
删除自定义链
iptables -X dym(自定义链名)
创建自定义链规则
iptables -t filter -I dym 1 -p icmp -j REJECT
删除自定义规则链
先删除iptables INPUT链中的对应关系,然后删除自定义链中的规则,删除完规则最后再删除链
SNAT 和DNAT
SNAT:原地址转换
DNAT:目的地址转换
实验
首先准备三台虚拟机,一台做内网,一台做外网,一台网关服务器
给对内和对外的服务器yum安装httpd服务,安装完成启动这个服务,给网关服务器的虚拟机添加一个网卡,三台服务器都关闭防火墙和安全机制。
1.先配置作为网关服务器的虚拟机
先查看一下新添加的网卡名字(ens33作为对内的网卡,ens36作为对外的网卡)
修改ens33的网卡
修改ens36的网卡
开启网关服务器路由转发功能
sysctl -p 永久开启,立即重启
2.设置外网虚拟机网卡
3.修改内网虚拟机网卡
4.去网关服务器虚拟机配置SNAT和DNAT
Linux系统能否抓包吗?
可以
tcpdump是linux自带的抓包工具
抓包方式:1.指定抓包的数量
2.动态抓包,一直会获取包,除非人工停止
抓包命令格式:
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.120.0/24 -w ./target.cap
tcpdump抓包命令,固定开头
tcp:抓包的协议
-i:只抓经过ens33的数据包
-t:不显示时间戳
-s0:抓完整的数据包
-c:指定抓包的个数
dst port 80:访问的是httpd 80
src net 192.168.120.0/24:源地址来自192.168.120.0网段的ip
-w:抓包的数据,保存位置
*.cap Wireshark分析.cap 后缀的
firewalld:centos7自带的。和iptables一样,也是包过滤防火墙。
firewalld过滤,通过区域来进行配置
uptables静态的防火墙
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:丢弃区域,所有流量都会丢弃
服务管理
显示当前系统中的默认区域
firewall-cmd --get-default-zone
显示默认区域内的所有规则
firewaL-cmd --list-all
默认区域的开关服务
关闭
firewall-cmd --set-default-zone=block
开启
firewall-cmd --set-default-zone=public
查看区域内允许通过的服务
firewall-cmd --List-service
临时添加服务
单个添加
添加http服务到public中
firewall-cmd --add-service=http --zone=public
一次性添加多个
添加http和nginx服务到public中
方法一
firewall-cmd --add-service=http --add-service=nginx --zone=public
方法二
firewall-cmd --add-service={ftp,http} --zone=public
永久添加
firewall-cmd --add-service={ftp,http} --zone=public --permanent
firewall-cmd--reload
配置永久生效要重新加载配置
端口管理
添加80端口
移除80端口
一次性添加多个端口
添加端口范围