安全技术:
1、入侵检测机制:特点是阻断,量化,定位来自内外网络的威胁情况
提供报警和事后监督,类似于监控
2、入侵防御:以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,木马,蠕虫,系统漏洞进行分析判断,然后进行阻断。主动的防护机制。部署在整个架构,或者是集群的入口处(必经之路)
3、防火墙:隔离功能,工作在网络或者是主机的边缘
对网络或者主机进出的数据包按照一定规则进行检查(网络层转发的数据包)
我们在工作当中,一般对防火墙的设置都是白名单,拒绝所有,允许个别
4、防水墙,透明模式工作,华为的ensp监控就是防火墙。一切对于防水墙都是透明的
在事前,事中,事后,都可以进行检测
防火墙的种类
防护墙
保护范围:主机防火墙,仅为当前主机服务
网络·防火墙,防护的是另一侧的局域网
网络层·防火墙,iptables,包过滤防火墙
访问控制,每个数据包的源ip地址,目的ip地址,端口号,协议等等进行组合式监控,由此来判断数据包是否允许通过
通信的五要素和四要素
源IP 目的IP 源/目的 端口 协议
源/目的IP 源/目的 端口
iptables:洗头自带的包过滤防火墙
firewalld:主机防火墙,他也有包过滤的功能,centos7以后集成的
iptables:内核防火墙,内置四个表,而且所有在表中的 ,配置规则。配置后立即生效,不需要重启服务
四表五链
- 四个表
raw:连接跟踪,跟踪数据的一种机制,配置了之后,可以加快防火墙的穿越速度
mangle:修改数据包的标记位规则
nat:地址转换的规则表
filter:包过滤的规则表。根据预定义的规则,人工设置的规则,对符号条件的数据包进行过滤,也是iptables的默认表
- 四表的优先级
raw–>mangle–>nat–>filter
四表五链
- 五个链
prerouting链:处理数据包进入本机之前的规则
input链:处理数据包进入本机的规则
FORWARD:处理数据包转发到其他主机的规则
output:处理本机发出的数据包的规则,一般不做处理
postrouting:处理数据包离开本机之后的规则
表里有链,链里面有规则
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:修改数据包的目的地址
[root@test1 ~]# iptables -t filter -A INPUT -p icmp -j REJECT 不允许ping
-------------------------------
[root@localhost ~]# ping 192.168.233.50
PING 192.168.233.50 (192.168.233.50) 56(84) bytes of data.
From 192.168.233.50 icmp_seq=1 Destination Port Unreachable
From 192.168.233.50 icmp_seq=2 Destination Port Unreachable
From 192.168.233.50 icmp_seq=3 Destina
[root@test1 ~]# iptables -I INPUT 1 -p icmp -j ACCEPT 插入允许的规则 放在拒绝前面
---------------------------------
[root@localhost ~]# ping 192.168.233.50
PING 192.168.233.50 (192.168.233.50) 56(84) bytes of data.
64 bytes from 192.168.233.50: icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from 192.168.233.50: icmp_seq=2 ttl=64 time=0.657 ms
64 bytes from 192.168.233.50: icmp_seq=3 ttl=64 time=0.617 ms
[root@test1 ~]# iptables -I INPUT -s 192.168.233.20 -p icmp -j REJECT
指定IP地址不可ping
---------------------------------------
[root@test1 ~]# iptables -A INPUT -s 192.168.233.20 -p tcp --dport 80 -j REJECT
禁止指定IP指定协议端口号访问
匹配规则的策略:
从上往下按照规则顺序进行匹配 ,匹配到了规则后面的规则就不再匹配 。针对相同规则的类型,匹配到了之后后续的规则也不生效
num --line-numbers 序号
pkts:匹配规则收到的报文个数
bytes:包的大小总和
target:规则对应的动作
删除
[root@test1 ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 44086 packets, 3388K bytes)
num pkts bytes target prot opt in out source destination
1 14 2288 REJECT tcp -- * * 192.168.233.20 0.0.0.0/0 tcp dpt:22 reject-with icmp-port-unreachable
2 1 60 REJECT tcp -- * * 192.168.233.20 0.0.0.0/0 tcp dpt:80 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 68341 packets, 13M bytes)
num pkts bytes target prot opt in out source destination
[root@test1 ~]# iptables -D INPUT 2 -------删除2 序号的规则
[root@test1 ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 77 packets, 5577 bytes)
num pkts bytes target prot opt in out source destination
1 14 2288 REJECT tcp -- * * 192.168.233.20 0.0.0.0/0 tcp dpt:22 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 120 packets, 21552 bytes)
num pkts bytes target prot opt in out source destination
修改
[root@test1 ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 77 packets, 5577 bytes)
num pkts bytes target prot opt in out source destination
1 14 2288 REJECT tcp -- * * 192.168.233.20 0.0.0.0/0 tcp dpt:22 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 120 packets, 21552 bytes)
num pkts bytes target prot opt in out source destination
[root@test1 ~]# iptables -R INPUT 1 -p icmp -j ACCEPT 也是根据列名序号来进行修改
[root@test1 ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 60 packets, 4645 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 86 packets, 17548 bytes)
num pkts bytes target prot opt in out source destination
修改默认策略 (在工作中也都是通过策略来拒绝而不是规则拒绝)
[root@test1 ~]# iptables -P INPUT DROP
拒绝所有,允许个别 跟白名单效果一样的 你需要什么,要用什么就开什么
这只是临时的 ,重启服务就会还原
通用匹配规则 :
ip+端口+网段+接口(指的就是网卡设备)
[root@test1 ~]# iptables -A INPUT -s 192.168.233.20 -j DROP
只要是192.168.233.20ip过来的数据通通拒绝
----------
[root@test1 ~]# iptables -A INPUT -i ens33 -s 192.168.233.0/24 -j DROP
192.168.233.0/24这个网段的所有机器全部禁止访问
----------
[root@test1 ~]# iptables -A INPUT -s 192.168.233.0/24 -p tcp --dport 80 -j REJECT
指定网段指定协议端口不可访问
隐藏扩展模块
-p 指定协议时 ,不需要使用-m来指明这个扩展模块
指定多端口匹配
[root@test1 ~]# iptables -A INPUT -p tcp --dport 22:80 -j REJECT
小的端口号要在前,大的端口号要在后,不然会保存,这是固定格式 (22:80)
-m 扩展模块 明确指定类型 多端口MAC地址 ip范围。
[root@test1 ~]# iptables -A INPUT -p tcp -m multiport --dport 80,22,21,53 -j REJECT
-m 扩展模块相对于上面的 更为方便一点,可以不用管大小随意排序,用,隔开即可
-m iprange --src-range 源ip范围
-m iprange --dst-range 目的ip范围
指定IP范围做出限制
[root@test1 ~]# iptables -A INPUT -p icmp -m iprange --src-range 192.168.233.20-192.168.233.30 -j REJECT
-m mac --mac-source 禁止MAC地址
[root@test1 ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:2d:9c:95 -j REJECT
主要知识点
通信元素 四表五链
查看: iptables -vnL --line-numbers 给链里面的规则来进行编号
增:-A INPUT -I INOUT
改:-R
删:-D INPUT
在生产中默认策略都是拒绝所有,允许个别 与白名单差不多
配置规则都是ACCEPT 所有在生产环境中 iptables -F (慎用)
规范的格式 iptables -I INPUT 1 -s 192.168.233.20 -p tcp --dport 80 -j REJECT
备份与还原
[root@localhost ~]# iptables-save > /opt/iptables.bak 备份
[root@localhost opt]# iptables-restore < /opt/iptables.bak 还原
创建自定义链
[root@localhost opt]# iptables -N czy
[root@localhost opt]# iptables -vnL
****
Chain czy (0 references)
pkts bytes target prot opt in out source destination
--------------------
czy就是我自定义的链