入侵检测系统(Intrusion Detection Systems): 特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类似于监控系统,一般采用旁路部署的方式。
以透明模式工作,分析数据包的内容如: 溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式。( 必经之路 )
隔离功能,工作在网络或主机边缘,对进出网终或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中。
与防火墙相对,是一种防止内部信息泄漏的安全产品’泛意义上的防水墙: 防水墙 (waterwa11)网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径,在事前、事中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。
(1)传输层,网络层,数据链路层:
传输层 | 端口 | 防火墙 |
---|---|---|
网络层 | IP | 路由器三层 |
数据链路层 | MAC | 交换机 |
(2)划分方式:
(1)包过滤防火墙:网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制制列表 (ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否允许该数据包通过。
优点: 对用户来说透明,处理速度快且易于维护。
缺点: 无法检查应用层数据,如病毒等
(2)应用层防火墙:应用层防火墙/代理服务型防火墙,也称为代理服务器 (Proxy server)将所有跨越防火墙的网络通信链路分为两段为外网用户的访问都是通过代理服务器上的"链接”来。
实现优点:在应用层对数据进行检查,比较安全。
缺点: 增加防火墙的负载提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用层去检查。
(1)netfilter:位于Linux内核中的包过滤功能体系。称为Linux防火墙的“内核态。
(2)iptables:位于/sbin/iptables,用来管理防火墙规则的工具·称为Linux防火墙的“用户态。
(1)规则表:
表名 | 作用 |
---|---|
raw表 | 确定是否对该数据包进行状态跟踪 |
mangle表 | 为数据包设置标记 |
nat表 | 修改数据包中的源IP,目标IP或端口 |
filter表 | 确定是否放行该数据包(过滤) |
(2)规则链:
链名 | 作用 |
---|---|
INPUT | 处理入站数据包 |
OUTPUT | 处理出站数据包 |
FORWARD | 处理转发数据包 |
POSTROUTING | 在路由选择后处理 |
PREROUTING | 在路由选择前处理 |
(1)规则表之间的顺序:raw->mangle->nat->filter
(2)规则链之间的顺序:
(3)按顺序查:raw表—mangle表—nat表—filter表(看input是否允许数据进,进不来直接丢弃)—路由转发(不允许转发,直接丢弃)—一般不对出数据限制—r,m,n,f—nat表(对数据进行地址转发)—出去,送达。
(4)匹配流程示意图:
(5)nat地址转换:
(1)常见控制类型:
类型名称 | 作用 |
---|---|
ACCEPT | 允许数据包通过。 |
DROP | 直接丢弃数据包,不给出任何回应信息。 |
REJECT | 拒绝数据包通过,必要时会给数据发送端一个响应信息。 |
SNAT | 修改数据包的源地址。 |
DNAT | 修改数据包的目的地址。 |
LOG | 在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。 |
(2)常用选项:
选项 | 作用 |
---|---|
-A | 在指定链末尾追加一条:iptables -A INPUT |
-I | 在指定链中插入一条新的,未指定序号默认作为第一条 |
-P | 指定默认策略 |
-D | 删除 |
-R | 修改,替换 |
-L | 查看 |
-n | 所有字段以数字显示 |
-v | 更详细显示 |
–line-numbers | 规则带编号 |
-F | 清除链中所有规则 |
-X | 清空自定义链规则,不影响其他 |
-Z | 清空计算器 |
-S | 看链的所有规则或者某个链的规则/某个具体规则后面跟编号 |
(1)查看规则表:
[root@test1 ~]# systemctl stop firewalld.service #安装iptables前先关闭防火墙和安全机制。
[root@test1 ~]# setenforce 0
[root@test1 ~]# iptables -vnL #详细查看规则表,默认是filter表
(2)指定拒绝IP地址:
1.[root@test1 ~]# iptables -t filter -I INPUT 1 -s 192.168.174.13 -p icmp -j REJECT
[root@test1 ~]# ping 192.168.174.13
PING 192.168.174.13 (192.168.174.13) 56(84) bytes of data.
^C
--- 192.168.174.13 ping statistics ---
46 packets transmitted, 0 received, 100% packet loss, time 45076ms
2.[root@test1 ~]# iptables -t filter -I INPUT 1 -s 192.168.174.13,192.168.174.14 -p icmp -j REJECT #拒绝多个
(3)拒绝数据链出去:
[root@test1 ~]# iptables -t filter -A OUTPUT 1 -s 192.168.174.13 -p icmp -j REJECT
(4)指定端口拒绝服务器:
[root@test1 ~]# iptables -A INPUT -s 192.168.174.13 -p tcp --dport 80 -j REJECT
(5)删除:
1.[root@test1 ~]# iptables -D INPUT 1 #指定序号删除
2.[root@test1 ~]# iptables -D INPUT 1 -p icmp -j REJECT #去重删除
(6)修改规则:
[root@test1 ~]# iptables -R INPUT 1 -p icmp -j ACCEPT #慎用
(1)定义:包含网络协议,IP地址,端口号,网络接口(网卡设备)
(2)基础运用:
1.[root@test1 ~]# iptables -A INPUT ! -p icmp -j ACCEPT #假取反,默认规则仍是accept,不生效
[root@test1 ~]# iptables -A INPUT DROP #修改默认策略为drop才生效
2. [root@test1 ~]# iptables -A INPUT -s 192.168.174.12 -j DROP #禁止网址
3.[root@test1 ~]# iptables -I INPUT -i ens33 -s 192.168.174.0/24 -j DROP #禁止网段
4.[root@test1 ~]# iptables -A INPUT -s 192.168.174.0/24 -p tcp --dport 80 -j DROP #禁止端口
(1)隐藏扩展:
1.[root@test1 ~]# iptables -A INPUT -s 192.168..174.12-p tcp --dport 22:80 -j REJECT #端口隐藏扩展,端口号小的放前
(2)显示扩展:
1.[root@test1 ~]# iptables -A INPUT -s 192.168.174.13 -p tcp -m multiport --dport 80,22,21,20 -j REJECT #指定禁止多端口
(3)IP范围:
-m iprange --src-range #源IP范围
-m iprange --dst-range #目的IP范围
1.[root@test1 ~]# iptables -A INPUT -p icmp -m iprange --src-range 192.168.174.12-192.168.174.30 -j REJECT #指定禁止IP范围
2. [root@test1 ~]# iptables -A INPUT -m mac --mac--source 00:0c:29:67:c3:2b -j DROP #指定禁止MAC地址
(1)安装服务:
[root@test1 yum.repos.d]# yum -y install iptables iptables-services #(iptables-services安装后可以使用系统控制语句)
(2)重启服务:
[root@test1 yum.repos.d]# systemctl restart iptables.service #重启服务
(3)备份:
[root@test1 ~]# iptables -F #清空链中规则
[root@test1 ~]# iptables -t filter -A INPUT -s 192.168.174.12 -p icmp -j ACCEPT
[root@test1 ~]# iptables -vnL --line-number #查看规则编号
[root@test1 ~]# cd /opt/
[root@test1 opt]# iptables-save > /opt/iptables.bak #备份
[root@test1 opt]# ls
iptables.bak rh
[root@test1 ~]# iptables -F #清空
[root@test1 opt]# iptables -restore < /opt/iptables.bak #恢复备份
[root@test1 opt]# ls
iptables.bak rh
(1)自定义链名:
[root@test1 opt]# iptables -N wang #自定义链名
[root@test1 opt]# iptables -vnL #查看
(2)自定义规则:
[root@test1 opt]# iptables -t filter -I bkpp -p icmp -j ACCEPT #先创建规则
[root@test1 opt]# iptables -t filter -I INPUT -p icmp -j bkpp #调用规则
(3)删除自定义链:
[root@test1 opt]# iptables -D INPUT 1 #删除调用规则
[root@test1 opt]# iptables -D bkpp 1 #删除自定义规则
[root@test1 opt]# iptables -vnL --line-number
[root@test1 opt]# iptables -X bkpp #删除自定义链