安全技术和防火墙
一、安全技术和防火墙
1.1 入侵检测系统
特点:不阻断网络访问,主要是提供报警和事后监督,不主动介入,默默地看着你(监控)
1.2 入侵防御系统
特点:透明模式工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断,在判定为攻击行为后会立即阻断,主动防御(所有的数据在进入本机之前,必须要通过的设备或者软件)
1.3 防火墙
1.3.1 防火墙:隔离,工作在网络或者主机的边缘,对网络或者主机的数据包基于一定的规则进行检查
1.3.2 防火墙匹配规则:放行或者拒接(即数据包被丢弃),只开放运行访问的策略(白名单机制,拒绝所有,允许个别)
1.3.3 防水墙
是一种防止内部信息泄露的产品,对外有防护墙的功能,对内是透明模式,类似监控。(事前、事中、事后都知道)
1.3.4 包过滤防火墙
iptables
这个是linux自带的防火墙,一般用于内部配置,对外一般不适用(对外都使用专业的)
firewall
这个也是linux自带防火墙,是centos7以后默认的防火墙
iptables
和firewall
都属于包过滤防火墙、工作在网络层,针对数据包
实施过滤和限制。
1.3.5 网络层防火墙
在网络层对数据包进行选择,选择的依据是防火墙设置的策略
策略:ip地址,端口,协议
优点:处理速度快,易于维护
缺点:无法检查应用层数据,病毒无法进行处理
1.3.6 应用层防火墙
在应用层对数据进行检查,比较安全。
优点:更安全,精准定位问题
缺点:所有数据都会检查,会增加防火墙负载
1.4 通信的要素
五大要素和四大要素
1.4.1 五大要素:源ip、目的ip、源端口、目的端口、协议
1.4.2 四要素:源ip、目的ip、源端口、目的端口
1.5 内核态和用户态
1.5.1 内核态:涉及到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码(开发人员更关注内核态),数据如果是内核态处理,速度相对较快。iptables
的过滤规则就是由内核
来进行控制
1.5.2 用户态:应用层软件层面,是人为控制的一系列操作,使用功能(运维人员只考虑用户态),数据只通过用户态处理,速度是比较慢的
二、 iptables的配置和策略
iptables管理选项
:在表的链中插入,增加,删除,查看规则
匹配条件
:数据包的ip地址,端口以及协议。
控制类型
:允许,拒接,丢弃
1.1 四表五链
1.1.1 iptables
的四表:
raw表
:用于控制数据包的状态,跟踪数据包的状态
mangle表
:修改数据包的头部信息
NAT表
:网络地址转换,可以1改变数据包的源地址和目的地址
filter表
:是iptables的默认表,不做声明,默认就是filter表,过滤数据包,控制数据包的进出,以及接受和拒接数据包。
1.1.2 iptables
的五链:
PREROUTING链
:处理数据包进入本机之前的规则(NAT表)
INPUTt链
:处理数据包进入本机的规则(filter表,是否允许数据包进入)
OUTPUT链
:处理本机发出的数据包的规则,或者是数据包离开本机的规则(filter表,一般不做设置)
FORWORD链
:处理数据包转发到其他主机的规则,或者允许本机进行数据包转发
POSTROUTING链
:处理数据包离开本机之后的规则(NAT表)
口诀:表里有链,链里有则
1.2 注意事项
- 不指定表名,默认就是filter表
- 不指定链名,默认就是filter里面的所有链(禁止行为)——一定要指定链名
- 除非设置了链的默认策略,否则必须指定匹配条件(一般都是指定匹配条件)
- 选项,链名,控制类型都是大写,其余都是小写
1.3 控制类型
ACCEPT
:允许数据包通过
DROP
:直接丢失数据包,且没有任何回应信息
REJECT
:拒绝数据包通过,数据包也会被丢弃,但是会有一个响应的信息
SNAT
:修改数据包的源地址(s就是source)
DNAT
:修改数据包得目的地址
1.4 管理选项
选项 | 作用 |
---|---|
-t | 指定表名 |
-A | 在链中添加一条规则,在链尾添加 |
-L | 指定位置插入一条规则 |
-P | 指定链的默认规则,链的规则一般都是设置成拒绝(默认是允许) |
-D | 删除规则 |
-R | 修改规则 (慎用) |
-vnL | v是显示详细信息,n以数字化形式展示内容,L表示查看 |
–line-numbers | 显示规则编号,和查看一起使用 |
-F | 清空链中的所有规则(慎用)(不指定表就是清空filter) |
-X | 清除自定义链中的规则 |
1.5 匹配条件
-p
:指定协议类型
-s
:指定匹配的源ip地址
-d
:指定匹配的目的ip地址
-i
:指定数据包进入本机的网络设备(ens33)
-o
:指定数据包离开本机的网络设备
--sport
:指定源端口
--dport
:指定目的端口
1.6 匹配原则
每个链中的规则都是从上到下
的顺序依次匹配,匹配到之后就不再向下匹配;如果链里面没有规则,则执行链的默认策略进行处理
1.7 命令格式
iptables [-t 表名] 管理选项 链名 匹配条件 [-j 控制类型]
#指定表名可有可不有,链名要大写
# 所有控制类型前面都是-j
三、iptables命令练习
安装iptables
systemctl stop firewalld
setenforce 0
yum -y install iptables iptables-services
iptables命令建议顺序:ip+协议+端口
1.1 查看详细信息和规则编号
iptables -vnL --line-numbers
1.2 添加规则
iptables -A INPUT -p icmp -j REJECT
#拒绝其他所有主机ping主机
iptables -A INPUT -p icmp -j ACCEPT
#不生效
使其生效
iptables -I INPUT 1 -p icmp -j ACCEPT
1.3 指定ip地址不可访问
iptables -A INPUT -s 指定ip -p icmp -j REJECT
1.4 控制指定多个ip不可访问
iptables -A INPUT -s 指定ip,ip -p icmp -j DROP
1.5 指定端口不可访问----协议在前,端口在后,否则报错
iptables -A INPUt -p tcp --dport 22 -j REJECT
1.6 主机拒绝指定端口访问,但主机可访问指定端口
iptables -A INPUT -s 指定ip -p tcp --dport 22 -j REJECT
1.7 指定ip不可访问nginx
iptables -A INPUT -s 指定ip -p tcp --dport 80 -j REJECT
1.8 删除指定编号
iptables -D INPUT 编号
1.9 修改策略(一般不用)
iptables -vnL --line-numbers
iptables -R INPUT 编号 -s 指定ip -p tcp --dport 80 -j REJECT
1.10 把链默认的策略改为DROP(不要改!!!)
iptables -P INPUT DROP
# 修改之后,页面无法操作,此时所有数据都丢弃,需要去虚拟机,删除上面策略后,新增ACCEPT策略
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
1.11 网络设备:禁止指定ip通过ens33来访问主机的80端口
iptables -A INPUT -i ens33 -s 192.168.100.11 -p tcp --dport 80 -j REJECT
1.12 拒绝整个网段
iptables -A INPUT -s 192.168.100.0/24 -p tcp --dport 80 -j REJECT
1.13 一次性禁止多个端口。如22、80(注意:端口要按照从小到大的顺序)
iptables -A INPUT -p tcp --dport 22:80 -j REJECT
拓展模块
-m扩展模块,一次性禁止多端口,可规定ip范围和mac地址
1.1 禁止多端口
iptables -A INPUT tcp -m multiport --dport 80,20,22,21,53,3306 -j REJECT
1.2 匹配ip范围
iptables -A INPUT -p tcp -m iprange --src-range 192.168.100.11-192.168.100.21 --dport 80 -j REJECT
-m iprange --src-range 源地址池
-m iprange --dst-range 目的地址池
-m mulitiport --sport 源端口池
-m mulitiport --dport 目的端口池
1.3 匹配mac地址
iptables -A INPUT -m mac --mac source 指定mac地址 -j DROP
ange --src-range 192.168.100.11-192.168.100.21 --dport 80 -j REJECT
```bash
-m iprange --src-range 源地址池
-m iprange --dst-range 目的地址池
-m mulitiport --sport 源端口池
-m mulitiport --dport 目的端口池
1.3 匹配mac地址
iptables -A INPUT -m mac --mac source 指定mac地址 -j DROP