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

问题
作业所属课程 网络攻防实践
作业要求 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589
课程目标 了解网络攻防的概要
这个作业在哪个具体方面帮助我实现目标 了解防火墙原理并进行简单的实践
作业正文.... 见后文
其他参考资料 见后文

一、实践内容

防火墙

  • 作用:防火墙是在不同的网络安全领域之间,对网络流量或访问行为实施访问控制的安全组件或设备。它根据具体的安全需求和策略设置决定是否允许网络通过从而访问,就像是设卡,拒绝“非法”访问。

  • 防火墙技术分类:在网络协议栈的各个层次都可以使用防火墙来进行访问控制。根据防火墙在协议栈工作的层次,可以分类为包过滤、电路级网关和应用层代理技术,对应的层次为网络层、传输层和应用层。

  • 防火墙具备的几个安全功能:
    1.检查控制进出网络的网络流量。
    2.防止脆弱或不安全的协议和服务。
    3.防止内部网络信息的外泄
    4.对网络存取和访问进行监控审计
    5.防火墙可以强化网络安全策略并集成其他安全防御机制

  • 防火墙的几点不足:
    1.无法防范来自内部网络的安全威胁
    2.无法防范通过非法外联的网络攻击
    3.无法防范计算机病毒传播
    4.无法有效防范准对开放服务安全漏洞的渗透攻击
    5.无法有效防范针对网络客户端程序的渗透攻击
    6.无法有效防范基于隐蔽通道进行通信的特洛伊木马和僵尸网络

防火墙技术

  • 包过滤技术:基于路由功能,通过对网络层和传输层包头信息的检查,根据安全策规则集,将不符合安全策略的数据包阻挡在网络边界处。它对于小型内部网络,是一种经济实用的防火墙技术,工作在网络层,包过滤也称为路由器ACL机制

  • 基于状态检测的包过滤技术:区别于包过滤技术,它是动态包过滤技术。它维护所有通过防火墙的网络连接记录,并依次判定这个包的连接状态。它试图追踪数据包在网络连接的上下文关系,在网络连接层次上匹配和实施防火墙规则。

  • 代理技术:也称“网络代理”。它能让客户端通过它与另一个网络服务进行非直接的连接,有利于保障网络安全,防止网络攻击。提供这项服务的设备叫做代理服务器。代理过程为:客户端与代理服务器建立连接->发出对目标服务器的文件或其他资源请求->代理服务器通过与目标服务器连接或从缓存中取出所请求的资源->代理服务器反馈给客户端。它根据工作的网络协议栈不同,有以下几个分类:

    • 应用层代理技术:工作在应用层,能理解应用层协议的数据内容,进行全面的检查。

    • 电路级代理技术:工作在传输层

    • NAT代理技术:网络地址转换,工作在网络层,它的两大优势就是方便和安全。

防火墙产品

  • 集成包过滤功能的路由器

    • 它利用路由器本身具有的对数据包得解析和转发能力,以访问控制表作为依据对网络数据包进行过滤。无需购买额外的防火墙产品,只需要配置路由器即可达到防护作用。
  • 基于通用操作系统的防火墙软件产品
    -Windows防火墙、防火墙内核模块、网络服务代理程序、SOCK代理软件。

  • 基于安全操作系统的防火墙

    • 安全厂商可自主可控的在专用操作系统源代码中集成其他许多附属功能,例如NAT代理、身份认证、VPN加密、审计等。
  • 硬件防火墙设备:

    • 使用硬件设备实现高速的防火墙过滤技术,例如RISC架构防火墙、ASIC架构防火墙等。这类防火墙价格昂贵,应用于安全性较高的大型企业。

Linux开源防火墙:netfilter/iptables

  • 其中,netfilter是Linux内核中实现的防火墙功能模块,iptables时应用态的防火墙管理工具。

  • 工作原理:netfilter组件位于Linux内核中,实现静态包过滤和状态报文检查基本防火墙功能。netfilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理、构建QoS或策略路由器等安全功能。iptables通过命令方式允许用户为netfilter配置各种防火墙过滤和管理规则。

  • netfilter/iptables包含了三个基本的规则表,如下:

    • 用于包过滤的filter表
    • 用于网络地址转换处理的nat表
    • 用于特殊目的的数据包修改的mangle表

网络检测技术与系统

入侵检测技术

  • 概念:对入侵行为的检测与发现入侵就是任何尝试破坏信息资源的保密性、完整性、可用性行为。而入侵检测是通过对计算机网络和计算机系统中若干关键信息的收集与分析,从中揪出入侵行为。它是继防火墙之后第二道安全屏障。

  • 入侵者分类:

    • 外部渗透者:攻破系统的外部边界访问控制机制,渗透进内部。
    • 假冒者:未经授权使用计算机系统(以合法身份)
    • 违法者:越权操作的合法用户
    • 秘密用户:对系统具有完全控制能力的内部人员
  • 入侵检测技术:

    • 误用检测:主要关注对复杂攻击特征的描述和检测。
    • 异常检测:方式多样化,例如采用统计方法的IDES统计异常检测器等。
  • 入侵检测技术评估指标:

    • 检测率:入侵检测系统捕获的攻击行为数目和全部攻击数目的比例。
    • 误报率:入侵检测系统对正常行为的误报输目与入侵检测系统输出的全部报警数目比。

开源网络入侵检测系统:Snort

  • 基本介绍:Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。

  • Snort基本架构:

    • 数据包嗅探模块(负责监听网络数据包,对网络进行分)
    • 预处理模块(用相应的插件来检查原始数据包)
    • 检测模块(检测引擎依据预先设置的规则检查数据包)
    • 报警/日志模块(经检测引擎检查后的Snort数据输出)。
  • Snort的三种工作模式:

    • 嗅探器模式:从本质上说,Snort与tcpdump和snoop一样,都是网络数据包嗅探器,常用命令snort -dev
    • 数据包记录器模式:把数据包记录到硬盘上,常用命令snort -b
    • 入侵模式:需要载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警。如果包并不与任何一个规则匹配,那么它将会被悄悄丢弃,并不做任何记录。运行Snort的入侵检测模式的时候,通常会在命令行指定一个配置文件。
  • snort规则头包含规则行为、协议、源信息、目的信息,Snort预置的规则动作有以下5种:

    • pass:将忽略当前的包,后继捕获的包将被继续分析。
    • log:按照自己配置的格式记录包。
    • alert:按照自己配置的格式记录包,然后进行报警。它的功能强大,但是必须恰当的用,因为如果报警记录过多,从中攫取有效信息的工作量增大,反而会使安全防护工作变得低效。 
    • dynamic:比较独特的一种,它保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包。
    • activate:功能强大,当被规则触发时生成报警,并启动相关的dynamic类型规则。在检测复杂的攻击,或对数据进行归类时,该动作选项相当有用。
  • 规则体:它在规则头信息的基础上进一步分析,有了它才能确认复杂的攻击(Snort的规则定义中可以没有规则体)。规则体由若干个被分别隔开的片断组成,每个片断定义了一个选项和相应的选项值。一部分选项是对各种协议的详细说明,包括IP、ICMP和TCP协议,其余的选项是:规则触发时提供给管理员的参考信息,被搜索的关键字,Snort规则的标识和大小写不敏感选项。

二、实践过程

任务一:防火墙配置

问题: 配置Linux平台上的iptables,完成如下功能并测试
- 过滤ICMP数据包,使主机不接受ping包。
- 只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问。

解决:
我先将实践所需的虚拟机的ip地址记录在下,便于实践所需

虚拟机 IP地址
SEED 192.168.200.4
Kali 192.168.200.2
Metasploitable 192.168.200.125

第一小节:*
1. 我用SEED作为服务器,kali作为信任主机去访问SEED,Metasploitable为不信任主机。

2. 在服务器SEED使用命令iptables -L查看现有规则,截图如下,可以看是都是初始默认规则(使用命令时必须要在root模式)。

3. 使用命令iptables -A INPUT -p icmp -j DROP,这条指令的作用是让主机不接受ICMP协议的数据包。命令解析如下:
- -A表示追加一条规则
- -p表示所要匹配协议
- -j表示要做的动作
- INPUT表示规则为数据包的入口

4. 使用Kali ping SEED,发现是ping不通的。

5. 再到SEED使用命令iptables -L查看,发现多了一条限制icmp数据包的规则:

第二小节:
1. 先用kali和metapolitable对seed发起telnet服务,发现都是可行的。(ps:使用ctrl+]可以退出telnet)

2. 使用命令iptables -P INPUT DROP,拒绝一切的数据包传入,此时应该两台电脑都无法进行访问。

3. 使用指令iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT开启kali(192.168.200.2)对seed的tcp服务。

4. 我再用kali和metapolitable对seed发起telnet服务,发现kali可以,metapolitable不行,截图图下:

5. 使用命令iptables -Fiptables -P INPUT ACCEPT让seed恢复初始态。

任务二:Snort

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

解决:
1. 我使用了老师之前提供的listen.pcap数据流文件。在kali中,进入到文件目录下,使用命令snort -r listen.pcap -c /etc/snort/snort.conf -K ascii对该数据流文件进行入侵检测。-K ascii是为了转换输出的日志文件为ASCII格式,在输出结果中可以看到TCP协议的包占了大多数。

2. 上述的日志输出文件在系统日志目录中,位于/var/log/snort/,在里面可以看到关于攻击的各类信息,包括攻击机是谁、靶机是谁、哪种类型的攻击等等。

任务三:分析蜜网网关的防火墙和IDS/IPS配置规则。

问题: 说明蜜网网关是如何利用防火墙喝入侵检测技术完成其攻击数据捕获和控制需求
- 上述脚本是如何实现蜜网的数据捕获和数据控制?
- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
- 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
- Snort规则是如何自动升级的?

解决:
1. 首先打开linux自带防火墙netfilter/IPTables的配置文件rc.firewall(所在目录为/etc/init.d/),向下拉找到create_chains()函数,该函数分别创建了黑名单和白名单,防护名单以及防护日志删除。函数中可以看到,防火墙对属于黑名单的主机,不与其建立联系;对于白名单的主机,与之通信且不做记录;对于属于保护名单内的主机,禁止访问受限的内容。

2. 在蜜罐中,使用iptables -t filter -L命令来查看规则列表。可以看出,默认的规则例如OUTPUT、INPUT、FORWARD都已经被关闭了,取而代之的是一些自定义的规则(包括之前配置Roo的一些参数也反映在规则表上)。

查看snort文件,使用命令vim /etc/rc.d/init.d/snortd来获取Snort的实际执行参数

查看通过Snort_inline脚本文件,使用命令vim hw-snort_inline,可以观察到实际运行的参数,以及在最前面定义的参数。下面列出各个参数的作用:
- -D表示Daemon模式
- -c表示读取config文件
- -Q表示使用QUEUE模式
- -l表示输出log文件的目录
- -t表示改变程序执行时所参考的根目录位置

3. 使用命令chkconfig --list | grep iptables 可以过滤出服务开启的情况,可以看到iptables和snort_inline(NIPS)是随系统开机而开启的,而snort(NIPS)需要手动开启:

4. 使用指令vim /etc/honeywall.conf打开honeywall配置文件,我们可以找到snort规则更新的地方。默认是不自动更新。

三、学习中遇到的问题及解决

  • 问题1:找不到rc.firewall文件
  • 问题1解决方案:可能是看电脑时间太久了,脑子有点迷糊,在kali和seed里面找了半天,回过头发现这个问题属于蜜罐的。。。。。。
  • 问题2:习惯了在kali中使用sudo su获取权限,忘记怎么获取蜜罐的权限
  • 问题2解决方案:跑去问了同学才知道是使用su -
  • 问题3:不会在蜜罐上下滚动查看信息
  • 问题3解决方案:在我电脑上并没有看到pgup和pgdn键,还没发现怎么翻页。。。

四、实践总结

本次实践需要动手的地方并不是很多,相对的,看书并进行总结是一段漫长的过程,很多原理看起来有些枯燥,虽然耐心看完了,但是并没有吃透,还需要多加用功。对于一些指令的使用还需要借助网络资源来学习,继续加油学吧~

参考资料

linux命令行终端的翻屏滚屏
iptables命令详解和举例
linux防火墙查看状态firewall、iptable

原文地址:https://www.cnblogs.com/j1551163790/p/12643363.html