网络安全防范技术
1.实践内容
安全模型
静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
- 动态可适应网络安全模型基于闭环控制理论,典型模型有
PDR
(Protection、Detection、Response)及P^2DR(Policy、Protection、Detection、Response)- PDR安全模型是基于时间的动态安全模型,如果信息系统的防御机制能抵御入侵时间Pt,能超过检测机制发现入侵的时间Dt和响应机制有效应对入侵时间Rt之和,那么这个系统就安全。
- P^2DR中网络安全=根据风险分析制定安全策略P+执行安全防护策略P+实时检测D+实时响应R。安全策略是核心。
网络安全防范技术与系统
防火墙技术
定义:防火墙是目前最为成熟的网络防御技术之一。指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。
检查的对象是网络流量或访问行为。
- 技术的关键特性
- 只能对流经他的网络数据进行检查和控制,必须将防火墙部署在不同网络安全域之间的唯一通道上;
- 不具备主动检测区分网络攻击数据与合法数据的能力,因此要根据安全需求合理地设计安全策略规则;
- 无法保护来自网络内部的攻击。
功能:在网络协议的各个层次上实施网络访问控制机制,对网络流量和访问进行检查和控制。最基本的功能是控制在计算机网络中不同信任程度网络域之间传送的数据流。
- 为网络管理员提供的安全功能
- 检查控制进出网络的流量
- 防止脆弱或不安全的协议和服务
- 防止内部网络信息的外泄
- 对网络存取和访问进行监控审计
- 可以强化网络安全策略并集成其他安全防御机制
不足 - 先天无法防范的安全威胁包括:来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播传播。
- 由于技术瓶颈问题目前还无法防范的安全威胁包括:针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击、隐蔽通道进行通信的特洛伊木马或僵尸网络。
- 技术
- 包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
- 基于状态检测的包过滤技术:也称动态包过滤,仍然使用一组静态规则进行安全策略匹配,除了检查每个独立的数据包之外,还会试图跟踪数据包在网络连接的上下文关系,以确定是否允许通信。相比较传统的静态包过滤具有更加强大的安全功能,规则设施更加简单,同时保留了包过滤对用户的透明性,数据的合法性得到了有效的保障。
- 代理技术:允许客户端通过代理与另一个网络服务进行非直接的连接,也称“网络代理”。具体过程:客户端先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源连接请求,代理服务器与目标服务器连接或从缓存中取得请求的资源,返回给客户端。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
部署方法 - 包过滤路由器:带有包过滤防火墙功能的路由器。
- 双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
- 屏蔽主机:堡垒主机和包过滤的结合。
- 屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。
Linux开源防火墙netfilter/iptables
概念:netfilter/iptables 组合是目前Linux开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter 是Linux内核中实现的防火墙功能模块, iptables 是应用态的防火墙管理工具。
netfilter/iptables包含三个最基本的规则表:用于包过滤处理的filter表、用于网络地址转换处理的nat表、用于特殊目的数据包修改的mangle表。
iptables的命令的语法为 iptables [-t table] command [match] [target]
。 -t
指定配置规则所在的表,缺省表包括gilter、nat、mangle、raw等。 cammand
就是告诉iptables命令要做什么,比如 -A
就是在链表之后插入规则, -D
就是指定匹配的规则从链中删除该规则。 match
部分为规则匹配条件,满足规则的数据包才会被采取措施。 target
是满足规则之后要做什么,比如放行数据包ACCEPT
netfilter/iptables的NAT机制:包括IP伪装、透明代理、端口转发和其他形式的网络地址转换技术。
- IP伪装:在内部网络使用私有IP,如通过防火墙可以绑定一个外网IP,对数据包进行源IP伪装。
- SNAT机制:SNAT记住可以按照用户制定的规则,将源IP灵活的变成各种IP,IP伪装是一种SNAT机制。值得注意,SNAT机制需要在POSTOUTING链中完成,这样才能让路由、包过滤在源IP改变之前做完。
- DNAT机制:DNAT在PREROUTING链中完成,需要用到-i选项。
网络检测技术与系统
入侵检测技术:最核心的任务是信息分析,从中识别出攻击行为。
技术类型:误用检测(又叫特征检测)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
入侵检测系统的分类
- 基于主机的入侵检测系统(HIDS):监视主机信息;
- 基于网络的入侵检测系统(NIDS):以监听到的网络数据包作为分析数据源。
入侵防御系统IPS:也叫内嵌式IPS,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。
开源网络入侵检测系统:Snort - Snort除了是一款跨平台、轻量级的网络入侵检测软件之外,还具备数据包嗅探、数据包分析与记录等多种功能,还支持内联模式,可作为网络入侵防御系统使用。
- snort功能:数据包嗅探、数据包记录和分析以及各种入侵检测功能。
- snort的四个主要部件
- 数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
- 预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
- 检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。
- 输出模块:进行各种多样化的报警和日志记录。
2.实践过程
实践任务:
配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP
数据包,使得主机不接收Ping
包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问。
此次实验使用seed
、kali
、Meta linux
三台虚拟机,seed
作为被ping
机,首先使用命令iptables -V
显示出版本,iptables -L
显示出链中所有的规则
使用命令iptables -A INPUT -p icmp -j DROP
使得seed
不接受icmp数据包,其中-A
可以换成-I
,无非是加入规则的顺序问题,-p
后跟协议,这些命令使用iptables -h
都可以查看,使用命令后发现多了一条规则,作用是使得主机不接受ping
包
设定完规则后发现kali
和Meta
都不能ping通seed
,表明规则设定成功
使用命令iptables -D INPUT 1
删除上一条自己设定的规则
删除规则之后发现两台机器马上就能ping
通seed
第二步先使用kali
和 seed
对Meta
进行telnet
远程连接,发现均可以连接,这里使用Meta
被远程连接是seed
和 kali
没有开启telnet
服务,不过开启telnet
服务也就几行命令的事。
为了只让某个特定IP访问某一服务,比如telnet
,可以设定先将所有访问该主机服务的请求全部丢弃,之后再设一条规则使得特定IP可以访问这个端口服务。
即使用命令iptables -I INPUT -p tcp --dport 23 -j DROP
先拒绝所有访问23端口请求
再用命令iptables -I INPUT -s 192.168.200.16 -p tcp --dport 23 -j ACCEPT
接受特定IP可以访问这个端口
发现kali
无法连接Meta
的23号端口
而seed(192.168.200.16)
可以访问,符合设定规则
实践任务:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机上使用Snort,对给给定的pcap文件进行入侵检测,获得报警日志。
- Snort运行命令提示如下:
- 从离线的pcap文件读取网络日志数据源;
- 在snort.conf中配置明文输出报警日志文件;
- 指定报警日志log目录(或缺省log目录=/var/log/snort)。
使用之前的listen.pcap文件
使用命令snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii
对pcap文件进行入侵检测,可以查看输出的检测,大部分为tcp会话
snort会在默认目录生成一个日志文件,进入报警日志目录 cd /var/log/snort
, 查看日志文件命令 vim alert
,发现本次攻击使用nmap。攻击机IP地址是 172.31.4.178
,靶机IP为 172.31.4.188
分析虚拟网络攻防环境中蜜网网关的防火墙和 IDS/IPS 配置规则,并撰写分析报告,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
数据捕获机制:iptables可以通过记录日志的形式来捕获网络连接信息,包括源地址,目的地址,使用的端口和进行连接的协议、长度等等;Snort对符合入侵检测特征的攻击数据包发出响应的报警信息,从而标识网络流中存在的攻击事件。查看rc.firewall中的名单、白名单、防护名单的链,不同的链中对不同来源的包的处理是不同的,从而实现数据控制。
查看防火墙的文件命令 vim /etc/init.d/rc.firewall
看到创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链
获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
蜜网网关的iptables显示找不到命令 ,获取规则链的命令是iptables -L
,环境变量没有加入,于是使用/sbin/iptables -L
命令可以看到完整规则链,并且可以看到默认的规则INPUT、FORWARD、OUTPUT都是关闭。
获取snort实际执行参数 通过命令 vim /etc/init.d/snortd
打开Snort脚本文件,可以看到些参数的选项:默认使用默认目录下的snort.conf
规则,默认监听网卡为eth0
,默认存储日志路径为/var/log/snort
。
获取Snort_inline实际执行参数:通过命令 vim /etc/init.d/hw-snort_inline
打开snort_inline
的脚本文件,可以看到到实际执行的参数。
蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的
使用命令chkconfig -list
对linux系统运行的服务查询,仍然需要使用/sbin/chkconfig --list
命令,可以发现NIDS的0~6都是off,说明是需要手动启动的,而防火墙和NIPS不全是off,是跟随系统启动的。
密网网关中的Snort规则是如何自动升级的?
查阅资料得知有一个免费的工具Oinkmaster是Snort社区中的实际规则更新工具,并且在etc文件夹下有oinkmaster.conf文件,打开,发现了snort.conf文件,可以推断使用工具Oinkmaster进行了snort规则自动升级。
3.学习中遇到的问题及解决
问题1:蜜网网关比较神奇,一些命令查找不到?
解决:存放命令的/sbin
目录不在环境变量里,需要加入环境变量或者使用/sbin/chkconfig
或者/sbin/iptables
,也就是每次使用命令时加上完整路径。
问题2:最后一个实验做的云里雾里?
解决:参考其他同学博客,云里雾里的做了下来。
4.实践总结
这次实践内容是对攻击的防范,做安全不仅要懂攻击,更要懂防守,而且需要比hacker更懂,但是基于防守要懂得比单纯攻击多的知识的情况下,需要花费的时间更多,需要理解的更多,同时对最后一个实验算是对源码进行分析,能力相当不足,需要提升。