20199319 2019-2020-2 《网络攻防实践》第六周作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589 |
我在这个课程的目标是 | 学习并掌握网络攻防知识,能完成相关实践 |
这个作业在哪个具体方面帮助我实现目标 | 学习了防火墙和入侵检测技术 |
1.知识点梳理与总结
安全模型
1、传统安全评估和防范方法:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
2、动态可适应网络安全模型:基于闭环控制理论
- PDR安全模型:基于时间的动态安全模型,以经典的网络安全不等式P>D+R(抵御入侵的时间、超过检测机制发现入侵的时间、响应机制有效应对入侵的时间)为本质基础,并提出安全性可量化和可计算的观点。
- P∧2DR安全模型:基于PDR安全模型提出,网络安全=根据风险分析指定安全策略(Policy)+执行安全防护策略(Protection)+实时监测(Detection)+实时响应(Response)。Policy为核心。
防护机制:采用传统静态安全技术实现。包括:防火墙、加密、身份认证、访问控制等。
检测机制:针对系统自身脆弱性及外部威胁。包括:入侵检测、漏洞评估。
响应措施:应急处理、备份恢复、灾难恢复。
网络安全防范技术与系统
设在被保护主机与外部网络中间
1、防火墙技术及产品
- 定义:是一种访问控制机制,置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。
- 分类:包过滤(网络层);电路级网关(传输层);应用层代理(应用层)
- 功能:
检查控制进出网络的流量。
防止脆弱或不安全的协议和服务。(免受基于路由得攻击)
防止内部网络信息的外泄。
对网络存取和访问进行监控审计。(日志记录)
强化网络安全策略并集成其他安全防御机制。- 不足:
先天不足:无法防范:来自网络内部的安全威胁、通过非法外联的网络攻击(内部人员私自接入外部网络)和计算机病毒传播(磁盘、U盘)。
技术瓶颈:无法防范:针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击(防火墙很难从网络流量中检测出针对)和基于隐蔽通道(HTTP隧道)进行通信的特洛伊木马或僵尸网络。- 技术:
包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包(适用小型内部网络、实现简单、安全功能有限)。仅对数据包本身的信息进行检查和过滤。
基于状态检测的包过滤技术(动态包过滤):维护所有通过防火墙的网络连接记录,除了使用静态规则进行安全策略匹配,还跟踪数据包在网络连接的上下文关系,以确定是否允许通信,即在网络连接层次上匹配和实施防火墙规则。
对TCP数据包:根据三次握手过程,丢弃所有外部连接企图;记录内部发出的连接请求;允许外部的响应数据包及随后两系统的通信数据包。
对UDP数据包:使用的地址和协议与传出的连接请求相匹配则通过。
相比较传统的包过滤技术安全性更高,数据合法性得到了更有效的保障,对网络性能有的影响)。
代理技术:允许客户端通过代理与另一个网络服务进行非直接的连接,也称“网络代理”。过程:客户端先与代理服务器(提供代理服务的计算机或网络节点)连接,然后发出对另外目标服务器的文件或资源的连接请求,代理服务器再与目标服务器连接,并返回给客户端。
代理技术包括:应用层代理(工作在应用层):HTTP代理、邮件代理
电路级代理(工作在传输层):可同时为多种不同的应用服务提供支持.
NAT代理(工作在网络层):网络地址转换,充分使用有限的IP地址资源。方便、安全.
- 部署方法:
包过滤路由器:将带有包过滤防火墙功能的路由器作为内部网络和外部网络之间唯一的连接点。路由器依据管理员配置的访问控制列表,对数据包进行过滤。
双宿主堡垒主机:使用应用代理网关作为双宿主堡垒主机代替包过滤路由器。
屏蔽主机:堡垒主机(进行应用的安全控制)和包过滤的结合。包过滤防火墙和应用代理技术的集成。
屏蔽子网:与屏蔽主机的区别:在应用代理及对外服务器所构成网段和内部主机之间安装了第二个包过滤路由器。
2.Linux开源防火墙:netfilter/iptables介绍
- 原理:netfilter位于Linux内核空间,实现静态包过滤和状态报文检查功能,具备构建防火墙、NAT共享上网、构建透明代理、构建QoS或策略路由器的功能。iptables(应用态防火墙管理工具)通过命令行方式允许用户为netfilter配置各种防火墙过滤和管理规则。不同来源和目的网络数据包在协议栈处理是会通过不同的netfilter检查链,并依据Iptables在规则链上的配置进行操作。
- 命令:iptables的命令的语法为:iptables -t [table] command [match] [target]。-t指定规则所在的表,缺省表包括gilter、nat、mangle、raw。
cammand告诉iptables要做什么,比如-A就是在链表末尾插入规则。
Match:规则匹配条件,满足规则的数据包才会被采取措施。
Target:目标操作, ACCEPT(接受)、DROP(丢弃)、REJECT、RETURN等。
- 规则链:链是顺序执行规则的编排方式,在复杂的网络环境中,管理员需求这种可控的、有序执行的规则应用方式。iptables 提供了5条链:INPUT链、OUTPUT链、FORWARD链、路由前链(PreRouting)、路由后链(PostRouting)。
- 规则表:表的本质就是规则集的组织形式。iptables提供了以下5种表:filter表(用于包过滤)、nat表(用于网络地址转换处理)、mangle表(用于特殊目的数据包修改)、raw表、security表(强制访问)。
3、netfilter/iptables的NAT机制
- IP伪装:在内部网络使用私有IP,将内部发出的网络连接源IP伪装成防火墙自身外网IP。
- SNAT机制:改变网络连接数据包的源地址。可以按照用户制定的规则,将源IP灵活的变成各种IP。SNAT机制需要在POSTOUTING链中完成,这样才能让路由、包过滤在源IP改变之前做完。
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.254.2的意思是将发出的源IP改为192.168.254.2。- DNAT机制:改变网络连接数据包的目的地址。在PREROUTING链中完成。
网络检测技术与系统
1、入侵检测技术
- 入侵检测:通过对计算机网络或计算机系统中若干关键点信息的收集和分析,从中发现入侵行为的一种安全技术。防火墙之后的第二道防线。
- 评估指标:检测率(系统捕获到的攻击行为与全部攻击数目之比)和误报率(系统对正常行为的误报数目与系统输出的全部报警数目之比)。 漏报比误报更可怕。
- 最核心任务:信息分析,从中识别出攻击行为。旁路监听方式
- 技术类型:误用检测/特征检测(对入侵行为的特征进行描述,形成特征库)、异常检测(入侵者行为与正常用户存在差别)。二者通常结合使用。
- 入侵检测系统的分类
基于主机的入侵检测系统(HIDS):监视主机信息;
基于网络的入侵检测系统(NIDS):以监听到的网络数据包作为分析数据源。
- 入侵防御系统IPS:内嵌式IDS,直接在网络边界位置内联。检测到的异常行为后直接进行阻断。 “即插即用”
2、开源网络入侵检测系统:Snort
- 简介:Snort是一款跨平台、轻量级的网络入侵检测软件,还具备数据包嗅探、数据包分析与记录等多种功能,还支持内联模式,可作为网络入侵防御系统使用。
- snort的四个主要部件:
数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行抓包。
预处理器:弥补检测引擎检测能力的不足。在检测引擎之前对数据包进行检查和操作。包括:TCP/IP协议栈模拟、应用层协议解码、异常检测。
检测引擎:核心功能,对数据包的信息进行模式匹配,检测引擎依据预先设置的规则检查数据包。主要包括规则库解析、多模式匹配、规则插件。
输出模块:进行各种报警和日志记录。
- alert tcp 源ip范围(默认any) any ->目标ip范围 21 (msg: ""; content:""😉
alert表示规则动作为报警。
tcp表示协议类型为TCP协议。
源ip范围(默认any)。
any表示源端口为任意端口。
->表示发送方向操作符。
21表示目的端口为21。
content:匹配的字符串。
msg:触发规则之后的报警信息。
content:用于字符串匹配的攻击特征。
- 三种工作模式:嗅探器(从网络上读取数据包,命令./snort -vde)、数据包记录器(将数据包记录到硬盘上,常用命令./snort –vde -b)、网络入侵检测系统(分析网络数据流以发现攻击行为)。
2.实践过程
实践一:防火墙配置
配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问。
第一问:
- 首先在SEED Ubuntu(192.168.200.3)上通过【iptables -L】查看规则,均为默认规则。此时用kali(192.168.200.8)可以ping通
- 通过指令【iptables -A INPUT -p icmp -j DROP】指令使得主机不接受icmp的数据包。-A是追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。此时通过Kali ping SEED Ubuntu,已经ping不通了,并且再次查看规则,可以看到icmp针对任何位置不允许访问的规则。
- 用【iptables -F】删除自定义规则。
第二问:
- 选择使用kali和metasploitable对SEED进行telnet访问,并设定只允许kali进行访问。
- 首先确定kali和metasploitable均能对SEED进行telnet访问
- 使用【iptables -P INPUT DROP】指令拒绝一切的数据包流入,此时kali和metasploitable都无法对SEED进行访问。
- 然后使用指令【iptables -A INPUT -p tcp -s 192.168.200.8 -j ACCEPT】开启192.168.200.8对SEED的tcp服务,用【iptables -L】查看规则。
- 再次尝试用kali和metasploitable对SEED进行telnet访问,发现kali可以正常访问,metasploitable不可以。
- 执行【iptables -F】和【iptables -P INPUT ACCEPT】恢复之前的状态。
实践二:Snort
任务:使用Snort对给定pcap文件(listen.pcap文件)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或 Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
- 在kali中使用【snort -r listen.pacp -c /etc/snort/snort.conf -K ascii】对listen.pacp进行入侵检测,-K ascii指定输出log文件的编码为ASCII。可以看出,大部分为TCP包,少部分为ARP包。
- 在缺省log目录/var/log/snort/目录下可以找到alert文件,即输出的日志文件。利用vim打开可以看到nmap发起的攻击。
实践三:分析蜜网网关的防火墙和IDS/IPS配置规则。
- 上述脚本是如何实现蜜网的数据捕获和数据控制的
打开蜜罐(roo,honey),【su -】,然后执行【vim /etc/init.d/rc.firewall】查看防火墙文件。在防火墙文件中可以看到有三个链,分别是黑名单、白名单、防护名单。-N的意思表示根据用户指定的名字创建新链。
防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
对于属于白名单的主机,接受且不记录。
对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
另外可以发现蜜罐系统识别的协议:TCP、UDP、ICMP、其他。在对数据控制时,要对各协议设置单位时间内发送包的上限,对于超出发送上限包的方式处理有三种:Drop、Reject和Replace。
对于数据捕获,iptables或snort可以通过记录日志的形式来捕获网络连接信息。
- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
使用命令【iptables -t filter -L】来查看规则列表,-t是指定规则表,-L表示列表。
Snort和Snort_inline的实际执行参数:
执行【vim /etc/init.d/snortd】,snortd是snort启动的脚本文件,可以看到一些实际执行参数,默认使用snort.conf规则,默认监听网卡为eth0等。
执行【vim /etc/init.d/hw-snort_inline】打开snort_inline的脚本文件,可以看到一些参数选项。-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置。
- 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
使用命令【chkconfig --list | grep 服务】对服务进行查询,如果从0~6全是off,那就不自动启动。chkconfig命令主要用于检查,设置系统的各种服务。可以发现NIDS是需要手动启动的,防火墙、NIPS是跟随系统启动的。
- Snort规则是如何自动升级的?
使用命令【vim /etc/honeywall.conf】打开配置文件,找到update variables,可以看到其值为no,即不自动更新。还可以看到Oinkmaster,这是个自动更新的软件,利用Oinkmaster进行升级。
3、学习中遇到的问题及解决
1、SEED虚拟机telnet服务没有打开。
2、蜜罐翻页问题
通过shift键+Fn键+上下键来翻页
3、kali又连不上网了
按之前的方法解决。
4、学习感悟、思考
本次实践主要学习了网络安全防范技术,对防火墙和入侵检测娱乐更多的了解。但对于一些原理上的内容还是理解的不够透彻。很多分析还比较浅显,还是要多寻找相关资料进行学习。