安全技术和防火墙:
安全技术
入侵检测系统:特点是不阻断网络访问,主要是提供报警和事后监督。不主动介入,默默的看着你(监控)
入侵防御系统:透明模式工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断。
在判定攻击行为后会立即阻断。主动的防御(所有的数据在进入本机之前,必须要通过的设备或者软件)。
防火墙
防火墙:隔离,工作在网络或者主机的边缘。
对网络或者主机的数据包基于一定的规则进行检查。匹配到的规则
放行,拒绝(数据包将会被就丢弃)。
只开放允许访问的策略。(白名单机制,拒绝所有,允许个别)
防水墙
防水墙:是一种防止内部信息泄露的产品。对外有防火墙的功能,对内是透明模式工作。类似监控。
事前,事中,事后都知道。
防火墙:
iptables 这个是linux自带的防火墙,一般用于内部配置。对外一般不适用(对外都使用专业的。)
firewalld 这个也是linux自带的防火墙,是centos7以后默认的防火墙。
包过滤防火墙(数据包进行控制)
网络层对数据包进行选择,选择的依据就是防火墙设置的策略。
策略:IP地址,端口。协议。
优点:处理速度快,易于维护
缺点:无法检测应用层数据,病毒无法进行处理。
应用层防火墙:在应用层对数据进行检查,比较安全。
优点:更安全,问题可以精准定位。
缺点:所有数据都会检查,增加防火墙的负载。
iptables:工作在网络层,针对数据包实施过滤和限制。包过滤防火墙
通信的要素:五大要素和四大要素
五大要素:源ip 目的ip 源端口 目的端口 协议(tcp/upd)
四要素:源ip,目的ip 源端口 目的端口
内核态和用户态:
内核态:涉及到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码。
开发人员更关注内核态
数据如果是内核态处理,速度相对较快。
iptables的过滤规则就是由内核来进行控制。
用户态:
应用层软件层面,人为控制的一系列操作,使用功能。
运维人员我们只考虑用户态。用
数据只通过用户态处理,速度是比较慢的
iptables的配置和策略:
四表五链:
iptables的四表:
raw表:用于控制数据包的状态,跟踪数据包的状态。
mangle表:修改数据包的头部信息
NAT表:网络地址转换。可以改变数据包的源地址和目的地址
filter表:也iptables的默认表,不做声明,默认就是filter表,过滤数据包,控制数据包的进出。以及接受和拒绝数据包。
五链:
PREROUTING链:处理数据包进入本机之前的规则(NAT表)
INPUT链:处理数据包进入本机的规则(filter表,是否允许数据包进入)
outpot链:处理本机发出的数据包规则,或者是数据包离开本机的规则(filter表,一般不做设置。)
forward链:处理数据包转发到其他主机的规则,或者是否允许本机进行数据包转发
postrouting链:处理数据包离开本机之后的规则(NAT表)
表里面有链,链里面有规则。
管理选项:在表的链中插入,增加,删除,查看规则。
匹配的条件:数据包的ip地址,端口,协议。
控制类型:允许,拒绝,丢弃。
注意事项:
1、不指定表名,默认就是filter表
2、不指定链名,默认就是所有链,(禁止行为)
3、除非设置了链的默认策略,否则必须指定匹配条件(一般都是指定匹配条件)
4、选项,链名和控制类型都是大写,其余的都是小写。
控制类型:
ACCEPT:允许数据包通过
DROP:直接丢弃数据包没有任何回应信息
REJECT:拒绝数据包通过,数据包也会被丢弃,但是会有一个响应的信息。
SNAT:修改数据包的源地址
DNAT:修改数据包的目的地址。
管理选项:
-t 指定表名
-A 在链中添加一条规则,在链尾添加。
-I 指定位置插入一条规则。
-P 指定链的默认规则,链的规则一般都是设置成拒绝(默认是允许。)
-D 删除规则
-R 修改规则(慎用)
-vnL v显示详细信息,n以数字形式展示内容 L 查看
--line-numbers:显示规则的编号,和查看一起使用
-F 清空链中的所有规则(慎用)
-X 清除自定义链中的规则
匹配条件:
-p 指定协议类型
-s 指定匹配的源ip地址
-d 指定匹配的目的ip地址
-i 指定数据包进入本机的网络设备(ens33)
-o 指定数据包离开本机的网络设备
--sport 指定源端口
--dport 指定目的端口
iptables的命令格式
iptables [-t 表名] 管理选项 链名(大写) 匹配条件 [-j 控制类型]
所有的控制类型前面都是-j
操作:IP+协议+端口
[root@test2 ~]# systemctl stop firewalld [root@test2 ~]# setenforce 0 [root@test2 ~]# yum -y install iptables iptables-services [root@test2 ~]# systemctl restart iptables [root@test2 ~]# systemctl enable iptables.service [root@test2 ~]# iptables -L [root@test2 ~]# iptables -t nat -L [root@test2 ~]# iptables -vnL [root@test2 ~]# iptables -vnL --line-numbers
添加规则
[root@test2 ~]# iptables -A INPUT -p icmp -j REJECT #拒绝其他所有主机ping本机
匹配原则:
每个链的规则都是从上到下的顺序匹配,匹配到之后不再向下匹配。
如果链中没有规则,则执行链的默认策略进行处理
[root@test2 ~]# iptables -F [root@test2 ~]# iptables -A INPUT -p icmp -j REJECT From 192.168.60.20 icmp_seq=37 Destination Port Unreachable From 192.168.60.20 icmp_seq=38 Destination Port Unreachable
[root@test2 ~]# iptables -I INPUT 1 -p icmp -j ACCEPT 64 bytes from 192.168.60.20: icmp_seq=65 ttl=64 time=0.533 ms 64 bytes from 192.168.60.20: icmp_seq=66 ttl=64 time=0.531 ms 64 bytes from 192.168.60.20: icmp_seq=67 ttl=64 time=0.525 ms
拒绝IP
[root@test2 opt]# iptables -A INPUT -s 192.168.60.20 -p icmp -j REJECT #指定一个IP地址不能访问 [root@test2 opt]# iptables -F [root@test2 opt]# iptables -A INPUT -s 192.168.60.30,192.168.60.40 -p icmp -j DROP 指定多个IP地址不能访问
拒绝端口
[root@test2 opt]# iptables -A INPUT -p tcp --dport 22 -j REJECT #协议在前,端口在后。拒绝22端口
同时拒绝ip地址访问我的端口
[root@test2 opt]# iptables-A INPUT -s 192.168.60.30 -p tcp --dport 22 -j REJECT
删除:
[root@test2 opt]# iptables -D INPUT 1 #根据序号来删除
修改策略:(一般不用)
[root@test2 opt]# iptables -R INPUT 1 -s 192.168.60.40 -p tcp --dport 80 -j REJECT
修改链的策略:(仅限实验)
[root@test2 opt]# iptables -P INPUT DROP
拒绝整个网段:
[root@test2 opt]# iptables -A INPUT -s 192.168.60.0/24 -p tcp --dport 80 -j REJECT [root@test2 opt]# curl 192.168.60.20 curl: (7) Failed connect to 192.168.60.20:80; 拒绝连接
一次对多个端口进行操作(小的端口在前,大的端口在后)
iptables -A INPUT -p tcp --dport 22:80 -j REJECT
-m 扩展模块,一次性禁止多端口,ip范围,指定mac地址。
[root@test2 opt]# iptables -A INPUT -p tcp -m multiport --dport 80,22,21,53,3306 -j REJECT
[root@test2 opt]# iptables -A INPUT -p tcp -m iprange --src-range 192.168.60.30-192.168.60.40 --dport 80 -j REJECT
--src-range #源地址池 --dst-range #目的地址池 -m multiport --sport #源端口池 -m multiport --dport #目的端口池 -m iprange --src-range #源地址池 -m iprange --dst-range #目的地址池
匹配mac地址
[root@test2 opt]# iptables -A INPUT -m mac --mac-source 00:0c:29:6f:95:d6 -j DROP