《网络攻防实践》第六周作业

20199138 2019-2020-2 《网络攻防实践》第5周作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589
本次作业的目标是 学习网络安全防范技术
作业正文 见下文

1.实践内容

1.1 安全模型

  • PDR安全模型:基于时间的动态安全模型,防御机制能够抵御入侵的时间 > 检测机制发现入侵的时间 + 响应机制有效应对入侵的时间。
  • P²DR安全模型:网络安全 = 根据风险分析制定安全策略(Policy)+执行安全防护策略(Protection)+实时检测(Detection)+实时响应(Response)。
  • 防护机制:采用一切手段保护信息系统的机密性、完整性、可用性、真实性和不可抵赖性。常采用传统的静态安全技术及方法:防火墙、加密、身份认证和访问控制等。
  • 检测机制:是动态响应和加强防护的依据,检测对象主要针对系统自身的脆弱性及外部威胁,利用检测工具了解和评估系统的安全状态。检测技术包括:入侵检测和漏洞评估。

1.2 防范技术与系统

防火墙功能:在网络协议栈的各个层次上实施网络访问控制机制,对网络流量和访问进行检查和控制。

  • 检查控制进出网络的网络流量(最基本功能)
  • 防止脆弱或不安全的协议和服务(通过过滤)
  • 防止内部网络信息的外泄(Finger、DNS服务等)
  • 对网络存取和访问进行监控审计
  • 强化网络安全策略并集成其他安全防御机制

防火墙不足:

先天缺陷:

  • 来自网络内部的安全威胁
  • 通过非法外联的网络攻击
  • 病毒传播
    技术瓶颈:
  • 针对开放服务安全漏洞的渗透攻击(无法区分针对开放服务的正常访问和恶意攻击)
  • 针对网络客户端程序的渗透攻击(难以从网络流量中检测出针对客户端的渗透攻击)
  • 基于隐蔽通道进行通信的特洛伊木马或僵尸网络

防火墙技术:

  1. 包过滤技术:在路由功能基础上拓展,对网络层和传输层包头信息的检查,确定是否应该转发数据包。
  2. 基于状态检测的包过滤技术:维护所有通过防火墙的网络连接记录,并依次确定数据包是否属于一个新建的连接,或是已建连接的一部分,或是一个非法数据包。
  3. 代理技术:允许客户端通过它与另一个网络服务进行非直接的连接。
  • 应用层代理技术优点:
    1.应用代理可以起到隐藏内部网络信息的作用。
    2.通信数据必须通过代理进行中转,可对应用层数据进行严格的检查。
    3.应用代理采用存储转发机制,因此可容易的实现在线审计。
    4.应用代理可提供用户级身份认证机制,可让代理服务器只为已知的、合法的用户提供服务。
  • 应用层代理技术缺点:
    1.对不同的应用层服务需要相应的一种应用代理服务程序,且对用户不透明,需用户配置代理。
    2.应用代理的解析和处理内容多,因而处理速度较慢,不适合应用在主干网络中。
    3.需要为每种服务单独设置一个代理服务器,代价较高
    4.无法支持非公开协议的服务
  • 电路级代理技术:工作在传输层,可为多种不同的应用服务提供支持,不需要为不同的服务配置不同的代理程序
  • NAT代理技术:工作在网络层,方便安全。

防火墙部署办法:

  • 包过滤路由器
  • 双宿主堡垒主机
  • 屏蔽主机
  • 屏蔽子网

1.3 Linux开源防火墙:netfilter/iptables

工作原理:netfilter组件实现了静态包过滤和状态报文检查(动态包过滤)基本防火墙功能等,iptables是防火墙配置工具。

netfilter/iptables包含三个最基本的规则表:包过滤处理的filter表、网络地址转换处理的nat表、特殊目的修改的mangle表

2.实践过程

2.1 动手实践:防火墙配置

配置Linux平台上的iptables,完成如下功能并测试

  • 过滤ICMP数据包,使主机不接收ping包。

以SEED Ubuntu作为服务器,利用Kali访问SEED Ubuntu,Kali作为信任主机,Linux MetaSploitable作为不可信任主机。

主机 IP地址
kali-Linux 192.168.0.101
MetaSploitable-Linux 192.168.0.104
SEED Ubuntu 192.168.0.106
  1. 首先在SEED Ubuntu上通过iptables -L查看规则,发现都是默认规则。
  2. iptables -A INPUT -p icmp -j DROP指令使得主机不接受icmp的数据包。
    -A是追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。
  3. 此时Kali 无法ping通 SEED,再查看规则,发现多了一条icmp针对任何位置不允许访问。

  4. 最后执行iptables -F指令删除自定义规则。
  • 只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问。

只允许Kali可以访问SEED,MetaSploitable无法访问SEED

  1. Kali与MetaSploitable分别远程登录SEED。

  2. 使用iptables -P INPUT DROP指令拒绝一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都无法进行访问。
  3. 使用指令iptables -A INPUT -p tcp -s 192.168.0.101 -j ACCEPT开启192.168.0.101对本机的tcp服务,然后iptables -L查看规则。
  4. 再次让Kali与MetaSploitable远程登录SEED,此时发现Kali是可以正常访问,而MetaSploitable无法访问。

  5. 最后执行iptables -F和iptables -P INPUT ACCEPT指令恢复之前的状态。

2.2 动手实践:Snort

使用Snort对给定pcap文件进行入侵检测,并对检测出的攻击进行说明

  1. 在SEED Ubuntu中安装snort(原因和过程让人心累)
    输入snort -r listen.pcap -c /etc/snort/snort.conf -K ascii指令对listen.pcap进行入侵检测
    -r 从pcap格式的文件中读取数据包。
    -c 使用配置文件,这会使得snort进入IDS模式,并从中读取运行的配置信息。
    -K ascii主要是为了指定输出log文件的编码为ASCII(默认为binary)。
  2. 可以看出检测出的数据包大部分为TCP数据包。

  3. 输入cd /var/log/snort/,然后再输入vim alert查看此alert文件,这个文件是输出的日志文件,发现这个攻击是由nmap发起的。

2.3 实践作业

分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

  1. 上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
  2. 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
  3. 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
  4. Bonus:蜜网网关中的Snort规则是如何自动升级的?
数据捕获是蜜网的一个重要目的,包括三个层次,分别是防火墙的日志记录、eth1上的嗅探器记录的网络流多和Seek捕获的系统活动;记录的内容主要包括:数据包通过时间、包协议类型、进出的网络接口、源地址、目的地址、源端口、目的端口、包长度等。
Roo的数据控制包含两方面,一是防火墙Iptables对连出(Outbound)的连接数的控制,另一个是网络信息防御系统Snort_inline对连出异常数据的限制,还增加了黑名单、白名单、防护名单的功能。
- 防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
- 对于属于白名单的主机,接受且不记录。
- 对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
    1. 打开蜜网网关,输入vim /etc/init.d/rc.firewall查看防火墙的文件。
    1. 输入指令iptables -t filter -L来查看规则列表。我的蜜网网关只显示出来一些ICMP、TCP、UDP和其他相关的链。(其他的应该显示默认的规则如OUTPUT、INPUT、FORWARD都已经被关闭了,规则表上配置Roo的一些参数都没有显示出来)
  • 输入指令vim /etc/init.d/snortd 打开Snort脚本文件,可看到一些参数的选项和实际运行时候的参数。
    在指定网卡接口后,如果没有其他的参数,将按照默认参数运行。
    默认不开启-A模式,使用默认目录的config文件(/etc/snort/snort.conf),默认使用eth0、使用二进制模式保存log文件等。

  • 输入指令vim /etc/init.d/hw-snort_inline 可以看到Snort_inline运行时参数。
    snort-inline -D -c /etc/snort_inline/snort_inline.conf -Q -l [系统时间命名] -t [目录]
    -D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置

    1. 输入指令chkconfig --list | grep [服务],查询当前服务是否开启。chkconfig命令主要用于检查,设置系统的各种服务。
      若从0~6全是off,就是不自启的。
      防火墙和NIPS(snort_inline)是跟随系统启动的,并且开机自动配置刚才的脚本文件。NIDS是需要手动启动的。
    1. 输入命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,不自动更新。

3.学习中遇到的问题及解决

  • 问题1:Kali装不上Snort
  • 问题1解决方案:在SEED Ubuntu安装,esc,enter看着按就装上了,再安装vmvare tools方便拖拽文件。

4.实践总结

本章重在分析和理解,感觉我的Kali真的是要看心情才能用,醉了。

参考资料

猜你喜欢

转载自www.cnblogs.com/mywlgf/p/12651492.html
今日推荐