20212907 2021-2022-2 《网络攻防实践》实践五报告

一.实践内容

1.防火墙
防火墙技术:防火墙技术属于一种网络上的访问控制机制,通过在不同网络安全域之间建立起安全控制点,通过对网络传输数据进行检查,根据具体的安全需求和策略设置是否允许网络访问通过防火墙。
防火墙的功能:检查控制进出的网络的网络流量、防止脆弱或不安全的协议和服务、防止内部网络信息的外泄、对网络存取和访问进行监控审计和防火墙可以强化网络安全策略并集成其他安全访问机制。
防火墙的不足:来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播、针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击和基于隐蔽通道进行通信的特洛伊木马和僵尸网络。
对应下图的字节传输流程,可以分为以下几层:

包过滤(Packet filtering):工作在网络层,仅根据数据包头中的IP地址、端口号、协议类型等标志确定是否允许数据包通过。
应用代理(Application Proxy):工作在应用层,通过编写不同的应用代理程序,实现对应用层数据的检测和分析。
状态检测(Stateful Inspection):工作在2~4层,访问控制方式与1同,但处理的对象不是单个数据包,而是整个连接,通过规则表和连接状态表,综合判断是否允许数据包通过。
完全内容检测(Compelete Content Inspection):工作在2~7层,不仅分析数据包头信息、状态信息,而且对应用层协议进行还原和内容分析,有效防范混合型安全威胁。

Linux操作系统平台上的iptables:
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

iptables的基本语法格式
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
说明:表名、链名用于指定 iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样 条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理。

iptables有Filter, NAT, Mangle, Raw四种内建表:
(1)Filter表
Filter是iptables的默认表,它有以下三种内建链(chains):
INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。
(2) NAT表
NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
OUTPUT链 – 处理本机产生的数据包。
(3) Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链(chains):
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING
(4)Raw表
Raw表用于处理异常,它具有2个内建链:
PREROUTING chain
OUTPUT chain

Windows操作系统平台上的个人防火墙:
Windows Defender是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。防火墙可以是一台专属的硬件也可以是架设在一般硬件上的一套软件。Windows防火墙顾名思义就是在Windows操作系统中系统自带的软件防火墙。

打开,配置windows中的防火墙:
图形化界面:
依次选择 开始 | 设置 | 控制面板 | windows防火墙选项,就能打开Windows防火墙的基本配置界面.
命令行:
键盘键入win + R 打开 [运行] ,输入’r’ 回车打开windows防火墙控制台

Windows防火墙的规则扫描有它自己特定的顺序,其优先级为:
1、只允许安全连接
2、阻止连接
3、允许连接
4. 默认规则(如果没有设置,那就是默认阻止)

2.Snort
Snort已发展成为一个具有多平台(Multi-Platform)、实时(Real-Time)流量分析、网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。SNORT是一个强大的轻量级的网络入侵检测系统,它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容搜索或者匹配。它是一个基于特征检测的入侵检测系统,并具有很好的扩展性和可移植性。

具有功能:嗅探器、数据包记录器和网络入侵检测系统。嗅探器模式仅从网络上读取数据包并作为连续不断的流显示在终端上,常用命令snort -dev。数据包记录器模式是把数据包记录到硬盘上,常用命令snort -b。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。

Snort的结构由4大软件模块组成,它们分别是:
   (1)数据包嗅探模块——负责监听网络数据包,对网络进行分;
   (2)预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎;
   (3)检测模块——该模块是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块;
   (4)报警/日志模块——经检测引擎检查后的Snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket、WindowsPopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库。

3.配置规则
防火墙和IPS属于访问控制类产品,而IDS属于审计类产品。我们可以用一个简单的比喻,描述三者的不同和关系——将网络空间比喻成一个大厦,那么防火墙相当于门锁,有效隔离内外网或不同安全域,IDS相当于监视系统,当有问题发生时及时产生警报,而IPS则是巡视和保证大厦安全的安保人员,能够根据经验,主动发现问题并采取措施。
防火墙较多应用在转发、内网保护(NAT)、流控、过滤等方面。
IDS和IPS主要针对一些攻击情况。一般的防火墙只能做到3-4层的保护,对于5-7层的应用保护很一般,而5-7层的保护正式IDS和IPS的长处。

(1)防火墙通常采用串行接入,部署在网络边界,用来隔离内外网。

(2)IDS通常采用旁路接入,在网络中的位置一般选择为:尽可能靠近攻击源、尽可能靠近受保护资源,这些位置通常是:服务器区域的交换机上;Internet接入路由器滞后的第一台交换机上;重点保护网段的局域网交换机上。

(3)IPS通常采用Inline接入,在办公网络中,至少需要在以下区域部署:办公网与外部网络的连接部位(入口/出口);重要服务器集群前端;办公网内部接入层。

IPS原理:

防火墙是重要的网络边界控制设备,主要通过策略5要素(源、目的、协议、时间、动作,各厂家根据定义不同,会有所扩展)实现对网络的访问控制。
IDS主要针对已发生的攻击事件或异常行为进行处理,属于被动防护。
IPS针对攻击事件或异常行为可提前感知及预防,属于主动防护。根据设置的过滤器,分析相对应的数据包,通过检查的数据包可以继续前进,包含恶意内容的数据包就会被丢弃,被怀疑的数据包需要接受进一步的检查。

二.实践过程

1.防火墙配置
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问

1.1 Linux系统防火墙
kali IP:192.168.1.110
ubuntu IP:192.168.1.111
WinXP IP:192.168.1.108
·首先使用WinXP去Ping攻击机Kali

·在Kali执行iptables命令:iptables -A INPUT -p icmp -j DROP, 其中-A代表增加规则,-p代表指定协议,-j代表对该规则执行的操作

·再用主机WinXP 去ping Kali,发现超时,无法ping通,由于使用DROP,主机丢弃ICMP包并不会返回信息

·使用命令iptables -A INPUT ! -s 192.168.1.108 -p icmp -j REJECT,表示只有WinXP能连通,这里iptables -F可以删除规则表中内容,回归默认ACCEPT设置

此时使用了REJECT,所以ubuntu显示目标端口不可达结果如下:

1.2 Windows系统防火墙
·使用kali去ping winxp,测试可以ping通

·在WinXP,按以下路径:开始--控制面板--Windows安全中心--Windows防火墙--还原为默认值,此时还原为默认值后ICMP的设置里允许传入回显请求会被自动取消勾选

·使用kali去ping winxp,此时已经无法ping通

下面测试只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问。

·kali此时不能正常telnet WinXP

·WinXP打开cmd,输入services.msc,找到Telnet,目前状态是已禁止,右键--属性,修改启动类型为自动或者手动,再启用,使得kali可以正常telnet WinXP

·cmd输入net start telnet,显示启动成功

·winxp中开始--控制面板--Windows防火墙--高级--网络连接设置--勾选Telnet服务器

·kali此时可以正常telnet WinXP

·WinXP设置IP安全策略来限制固定IP访问
winxp中控制面板--管理工具--本地安全策略--IP安全策略右键--创建IP安全策略,进入设置向导,设置IP安全策略名称为“限制访问”,可以创建一个IP筛选器

·添加阻止特定IP访问的筛选器

源地址选择“一个特定的IP地址(Kali:192.168.1.110)”--下一步--目标地址选择“我的IP地址”--选择协议类型“TCP”--下一步--设置IP协议端口“从任意端口”“到此端口(输入23)”--下一步--完成。完成后,会在IP筛选列表看到添加的信息

配置IP筛选器阻止的动作:在点确定后--选择配置的“阻止访问”

·添加允许特定IP访问的筛选器,与前述步骤类似

源地址选择“一个特定的IP地址(Ubuntu:192.168.1.111)”--下一步--目标地址选择“我的IP地址”--选择协议类型“TCP”--下一步--设置IP协议端口“从任意端口”“到此端口(输入23)”--下一步--完成

·被阻止访问WinXP的Kali去telnet WinXP,不通;被允许访问WinXP的Ubuntu去telnet WinXP,可以连通

2.实践Snort
任务:使用Snort对给定pcap文件(第4章中的解码网络扫描任-一个peap文件)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。

·使用snort命令snort -c /etc/snort/snort.conf -r listen.pcap -K ascii -A full,即可用ascii码输出日志文件alert

·在kali上用snort对listen.pcap文件进行入侵检测
输入命令 snort -c /etc/snort/snort.conf -r /home/user/桌面/listen.pcap -K ascii -A full,查看数据包信息

输出里检测出的数据包,大部分数据流为tcp包

·报警数据包有10条,均被日志记录,所有数据包都裁决允许

数据流统计:

此时snort会在默认目录生成一个日志文件,进入报警日志目录cd /var/log/snort, 查看日志文件vim snort.alert.fast,记录了报警数据10条的入侵检测信息,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178 ,网络扫描的目标IP地址是172.31.4.188
分析相关文件可知攻击机使用了nmap扫描工具,并使用了DDOS攻击

3.分析配置规则
任务:分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
·先使用su -提权,然后输入vim /etc/init.d/rc.firewall去查看文件,create_chains函数定义了3个链,白名单、黑名单和防护名单,白名单是设置能通过的用户,白名单以外的用户都不能通过,黑名单是设置不能通过的用户,防护名单是部分包能通过

·获取IPTables的实际规则列表、snort和snort_line的实际执行参数,输入iptables -L来查看规则列表

·获取Snort实际执行参数,使用命令snort --h

·查询snort文件 vim /etc/rc.d/init.d/snortd

可以看到部分参数的选项:默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,默认存储日志路径为/var/log/snort

·获取Snort_inline实际执行参数
执行命令vim /etc/init.d/hw-snort_inline打开snort_inline的脚本文件,可以看到到实际执行的参数

-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置

·蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的
chkconfig命令主要用于检查,设置系统的各种服务。使用chkconfig -list命令来对linux上运行的服务进行查询。

根据chkconfig --list | grep snort可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。

可以发现NIPS(snort)的0-6都是off,说明是需要手动启动的,而防火墙(iptables)和NIPS(snort_inline)不全是off,是随系统开机而开启的

·密网网关中的Snort规则是如何自动升级的
使用命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,默认不自动更新

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

  • 问题1:在使用telnet过程中,winxp不能被正确连通
  • 问题1解决方案:检查了网络连接方式,并重启了一下虚拟机得以解决

四.实践总结

通过本次实验,学习实践了防火墙和入侵检测系统等知识,对于日常使用的电脑上的防火墙等系统有了更为清晰地原理性认识。在以后的学习生活中也会更加注重信息安全与隐私保护,尽可能的将所学知识落到实处,并加以引用。

posted @ 2022-04-11 18:54  白桃令  阅读(236)  评论(0编辑  收藏  举报