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

1.实践内容

一、防火墙配置

防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。

  • 防火墙功能
    防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。其功能包括:网络安全的屏障,强化网络安全策略,监控审计,防止内部信息的外泄,日志记录与事件通知。
  • 部署方式
    防火墙是为加强网络安全防护能力在网络中部署的硬件设备,有多种部署方式,常见的有桥模式、网关模式和NAT模式等。
    1、桥模式
    桥模式也可叫作透明模式。最简单的网络由客户端和服务器组成,客户端和服务器处于同一网段。为了安全方面的考虑,在客户端和服务器之间增加了防火墙设备,对经过的流量进行安全控制。正常的客户端请求通过防火墙送达服务器,服务器将响应返回给客户端,用户不会感觉到中间设备的存在。工作在桥模式下的防火墙没有IP地址,当对网络进行扩容时无需对网络地址进行重新规划,但牺牲了路由、VPN等功能
    2、网关模式
    网关模式适用于内外网不在同一网段的情况,防火墙设置网关地址实现路由器的功能,为不同网段进行路由转发。网关模式相比桥模式具备更高的安全性,在进行访问控制的同时实现了安全隔离,具备了一定的私密性。
    3、NAT模式
    NAT(Network Address Translation)地址翻译技术由防火墙对内部网络的IP地址进行地址翻译,使用防火墙的IP地址替换内部网络的源地址向外部网络发送数据;当外部网络的响应数据流量返回到防火墙后,防火墙再将目的地址替换为内部网络的源地址。NAT模式能够实现外部网络不能直接看到内部网络的IP地址,进一步增强了对内部网络的安全防护。同时,在NAT模式的网络中,内部网络可以使用私网地址,可以解决IP地址数量受限的问题。
    如果在NAT模式的基础上需要实现外部网络访问内部网络服务的需求时,还可以使用地址/端口映射(MAP)技术,在防火墙上进行地址/端口映射配置,当外部网络用户需要访问内部服务时,防火墙将请求映射到内部服务器上;当内部服务器返回相应数据时,防火墙再将数据转发给外部网络。使用地址/端口映射技术实现了外部用户能够访问内部服务,但是外部用户无法看到内部服务器的真实地址,只能看到防火墙的地址,增强了内部服务器的安全性。
    4、高可靠性设计
    防火墙都部署在网络的出入口,是网络通信的大门,这就要求防火墙的部署必须具备高可靠性。一般IT设备的使用寿命被设计为3至5年,当单点设备发生故障时,要通过冗余技术实现可靠性,可以通过如虚拟路由冗余协议(VRRP)等技术实现主备冗余。到2019年为止,主流的网络设备都支持高可靠性设计。

二、动手实践:Snort

  • 1.snort简介
    snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。Snort是一个基于Libpcap的轻量级网络入侵检测系统。它运行在一个“传感器(Sensor)”主机上,监听网络数据。Snort对主机的要求不高,这台机器可以使一台捡漏的运行FreeBSD系统的PC,但是至少有一个网卡。Snort讷讷狗狗吧网络数据和规则集进行模式匹配,从而检测可能的入侵企图。或者使用SPADE插件,使用统计学方法对网络数据进行异常检测。Snort使用一种易于扩展的模块化体系结构,可以加入自己编写的模块来扩展Snort的功能。这些模块包括:HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等
  • 2.Snort的特点
    Snort是一个强大的轻量级的入侵检测系统,它具有实时数据流量分析和捕获IP网络数据包的能力,能够进行协议分析,对内容进行搜索匹配;它能够检测各种不同的攻击方式,对攻击对象进行实时报警;此外,Snort具有很好的扩展性和可移植性。Snort遵循通用公共许可证GPL,所以只要遵守GPL的任何组织和个人都可以使用。
    1.Snort的跨平台性能很好
    与大多数商用入侵检测软件只能支持其中的1~2中操作系统,甚至需要特定的操作系统不同的是,Snort具有跨平台的特点,他支持的操作系统比较广泛。
    2.Snort的功能非常强大
    Snort具有实时流量分析的能力。能够快速地检测网络攻击,及时地发出报警。Snort的报警机制很丰富,例如:syslog、用户指定的文件、一个UNIX套接字,还有使用SAMBA协议想Windows客户程序发出WinPopup消息
    Snort呢能够进行协议分析。包括TCP、UDP和ICMP等
    Snort的日志格式既可以是Tepdump式的二进制格式,也可以解码成ASCII字符形式,更加便于用户检查
    使用TCP流插件,Snort可以对TCP包进行重组。Snort能够对IP包的内容进行匹配,但是对于TCP攻击,如果攻击者使用一个程序,每次发送只有字节的TCP包,完全可以避开Snort的模式匹配。而被攻击的主机的TCP协议栈会重组这些数据,将其送给在目标端口上监听的进程,从而使攻击包逃过Snort的监视
    使用SPADE(Statistical Packet Anomaly Detection Engine)插件,Snort能够报告非正常的可疑包,从而对端口扫描进行有效的检测。
    Snort还有很强的系统防护能力。
    3.扩展性较好
    作为一个轻量级的网络入侵检测系统,Snort有足够的扩展能力。它使用一种简单的规则描述语言。最基本的规则只是包含4个域:处理动作、协议、方向和注意的端口。Snort支持插件,可以使用具有特定功能的报告、检测子系统插件对其功能进行扩展。Snort的规则语言非常简单,能够对信的网络攻击做出很快的反应。遵循公共通用许可证GPL
  • 3.Snort的组成
    Snort由3个重要的子系统构成:数据包解码器、检测引擎、日志与报警系统。
    (1)数据包解码器
    数据包解码器主要是对各种协议栈上的数据包进行解析、预处理,以便提交给检测引擎进行规则匹配。解码器运行在各种协议栈之上,从数据链路层到传输层,最后到应用层。
    (2)检测引擎
    Snort用一个而为链表存储它的检测规则,其中一维称为规则头,另一维称为规则选项。规则头中防止的是一些公共的属性特征,而规则选项中防止的是一些入侵特征。为了提高检测速度,通常把最常用的目的IP地址和端口信息放在规则头链表中,而把一些独特的检测标志放在规则选项链表中。规则匹配查找采用递归的方法进行,检测机制指针对对当前已经建立的链表选项进行检测。当数据包满足一个规则时,就会差法相应的操作。
    (3)日志和报警子系统
    日志和报警子系统可以在运行Snort的时候以命令行交互的方式进行选择,可供选择的日志形式有3种,报警形式有5种。
    Snort可以把数据包以解码后的文本形式或者Tepdump的二进制形式进行记录。解码后的格式便于系统对数据进行分析,而Tcpdump格式可以保证很快的完成磁盘记录功能,而第三种日志机制就是关闭日志服务,什么都不做
    报警信息可以发往系统日志。也可以用两种格式记录到报警文件中去,或者通过Samba发送WinPopup信息。发送到报警文件的警告格式分为完全和快递两种格式,完全警告是将保温的爆头信息和警告信息全部记录下来、而快速方式将只把报头中的部分信息记录下来,以便提高记录效率。
    系统日志的警告信息可以用Swatch之类的工具很方便的进行监视。WinPopup警告信息则可以很方便的在Windows系统的桌面进行显示。同样,第五种方法就是关闭报警,什么也不做。

2.实践过程

机器 IP地址
kali 192.168.200.6
ubuntu 192.168.200.3
Linux MetaSploitable 192.168.200.31

一、防火墙配置

任务要求:配置Linux操作系统平台上的iptables,Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:

  • 首先我们以Ubuntu作为服务器,利用Kali访问Ubuntu,Kali作为信任主机,Linux MetaSploitable作为不可信任主机。

(1)过滤ICMP数据包,使得主机不接收Ping包;

  1. 首先在Ubuntu上通过iptables -L查看规则,发现都是默认规则。

  2. 通过指令iptables -A INPUT -p icmp -j DROP指令使得主机不接受icmp的数据包。指令详解:-A是追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。更多的指令参照上面理论部分给的链接。

  3. 此时通过Kali ping Ubuntu,发现是ping不通的,并且可以查看规则,发现多了一条icmp针对任何位置不允许访问的规则。

  1. 最后别忘了使用iptables -F删除自定义规则。至此过滤ICMP数据包实践完成。

  • widows的防火墙配置
    我选择的是winXPattackter作为服务器也是Kali作为信任主机,Linux MetaSploitable作为不可信任主机。
    打开防火墙

    配置Windows个人防火墙:要求只允许使用TCP的2000-3000端口或80端口连接本机地址的某个端口
    查看当前端口 netstat -an

    发现tcp 21端口开放

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

只允许Kali访问SEED Ubuntu的telnet服务。

  1. 首先,我们确定两台机器都可以进行telnet登陆。

  2. 接下来使用iptables -P INPUT DROP指令拒绝一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都无法进行访问。

  3. 使用指令iptables -A INPUT -p tcp -s 192.168.3.19 -j ACCEPT开启192.168.3.19对本机的tcp服务。并用iptables -L查看规则。

  4. 此时我们发现Kali是可以正常访问telnet服务的,但是MetaSploitable却是无法访问的。

  1. 最后别忘了执行iptables -F和iptables -P INPUT ACCEPT两条指令恢复之前的状态。

  • widows的防火墙配置
    | 机器 | IP地址 |
    | :----: | :----: |
    | kali | 192.168.200.6 |
    |ubuntu|192.168.200.3|
    |winXP| 192.168.200.2 |

  • 打开Kali,ping WinXP,测试可以ping通,如图。

  • 打开WinXP,点击开始--控制面板--Windows防火墙--还原为默认值(还原为默认值后ICMP的设置里允许传入回显请求会被自动取消勾选),如图。

  • 打开Kali,ping WinXP,发现ping不通了。

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

  • 首先确保kali和SEEDUbuntu可以正常telnet WinXP,但是输入之后发现不能正常telnet WinXP。

  • 在WinXP点击开始--运行打开cmd,输入services.msc,跳出服务界面,找到Telnet,发现目前状态是已禁止,我们需要右键--属性,修改启动类型为自动或者手动。然后,再回到列表的Telnet,右键--启动。

  • 在cmd输入net start telnet,也显示已启动,表明启动成功,如图。

  • 开始--控制面板--Windows防火墙--高级--网络连接设置--勾选Telnet服务器,如图。

    再回到kali和SEEDUbuntu就可以正常telnet WinXP啦。

4)下面再WinXP设置IP安全策略来限制固定IP(kali的IP)访问。

  • 创建安全策略:控制面板--管理工具--本地安全策略--IP安全策略右键--创建IP安全策略,进入设置向导,设置IP安全策略名称为“限制固定IP远程访问”,在警告提示框选择“是”,其他均保持默认点击下一步。

结果如下图,我们创建了一个IP筛选器。

  • 添加阻止特定IP访问的筛选器。
    点击添加--进入安全规则向导--一直保持默认设置点击下一步--遇到警告点击“是”,点击添加--自定义IP筛选器名称为“阻止特定IP远程访问”--添加--进入安全规则向导。点击下一步--源地址选择“一个特定的IP地址(Kali:192.168.200.6)”--下一步--目标地址选择“我的IP地址”--选择协议类型“TCP”--下一步--设置IP协议端口“从任意端口”“到此端口(输入23:Telnet服务器的端口号23)”--下一步--完成。完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。


  • 点击添加--选择允许--确定,得到下图“新筛选操作(阻住)”。然后选中“新筛选操作(阻止)”,点击下一步--完成,如图所示,至此我们添加好了阻止特定IP访问的筛选器。

  • 添加允许特定IP访问的筛选器(跟添加阻止特定IP访问的筛选器步骤一样)
    继续点击添加--点击添加--进入安全规则向导--一直保持默认设置点击下一步--遇到警告点击“是”。

点击添加--自定义IP筛选器名称为“允许特定IP远程访问”--添加--进入安全规则向导,如图。

点击下一步--源地址选择“一个特定的IP地址(SEEDUbuntu:192.168.200.3)”--下一步--目标地址选择“我的IP地址”--选择协议类型“TCP”--下一步--设置IP协议端口“从任意端口”“到此端口(输入23)”--下一步--完成。配置IP筛选器允许的动作:在点确定后--选择配置的“允许所有IP远程访问”,点击下一步。点击添加--选择允许--确定,得到下图“新筛选操作(许可)”,代表的是允许。

  • 应用我们刚刚配置的两个IP安全规则(允许特定IP远程访问和阻止特定IP远程访问)
    指派此安全规则:右键“限制固定IP远程访问”——选择“指派”,至此所有工作配置完成,如图。

    这样被阻止访问WinXP的Kali去telnet靶机WinXP,发现一直处于trying状态,而被允许访问WinXP的SEEDUbuntu去telnet靶机WinXP发现可以连通,如图。

二、动手实践:Snort

  • 使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
    Snort运行命令提示如下:

①从离线的pcap文件读取网络日志数据源

首先利用指令snort -r listen.pacp -c /etc/snort/snort.conf -K ascii对listen.pacp进行入侵检测,-K ascii主要是为了指定输出log文件的编码为ASCII(默认为binary)。

②在snort.conf中配置明文输出报警日志文件

查看输出,我们可以看到检测出的数据包大部分为TCP数据包。

③指定报警日志log目录(或缺省log目录=/var/log/snort)

  1. 在/var/log/snort/目录下可以查找到alert文件,这个文件即输出的日志文件,通过vim打开可以发现这个攻击是nmap发起的,当然还有很多其他的信息,譬如源地址、目的地址等等。

三、分析配置规则

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

  • 上述脚本是如何实现蜜网的数据捕获和数据控制?
  1. 数据控制:通常数据控制一般包括两个方面,一个是防火墙对数据的控制,还有一个是IPS对异常数据的限制(snort_inline)。我们稍微看一下其防火墙的文件vim /etc/init.d/rc.firewall我们可以看下如下的创建了三个链,分别是黑名单、白名单、防护名单(FenceList)。所以,大致在上面的功能之上,增加了:
  • 防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
  • 对于属于白名单的主机,接受且不记录。
  • 对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
  1. 数据捕获:
    数据捕获主要包括:
    防火墙的日志记录:记录的只是简单的信息如目的地址/端口、源地址/端口、协议、长度等。
    Snort记录的网络流。
  • 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
  1. IPTables的实际规则列表:通过指令iptables -t filter -L来查看规则列表。不难发现,默认的规则入OUTPUT、INPUT、FORWARD都已经被关闭了,取而代之的是一些自定义的规则(包括之前配置Roo的一些参数也反映在规则表上)。

  2. Snort实际执行参数:通过vim snortd打开Snort脚本文件,观察第一张图可以看到一开始是一些参数的选项。第二张图对应的就是实际运行时候的参数了。简单分析,譬如在指定网卡接口后,如果没有其他的参数,将按照默认参数运行。如默认不开启-A模式,使用默认目录的config文件(/etc/snort/snort.conf),默认使用eth0、使用二进制模式保存log文件等(了解了Snort的指令之后,这个比较好懂)。

  3. Snort_inline实际执行参数:通过vim hw-snort_inline打开Snort_inline脚本文件,可以观察到实际运行的参数,以及在最前面定义的参数。我们将前面的变量带入这个运行指令应该为(-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置):
    snort-inline -D -c /etc/snort_inline/snort_inline.conf -Q -l [系统时间命名] -t [目录]

  • 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
    防火墙、NIDS、NIPS启动:通过指令chkconfig --list | grep [服务]来查询当前服务是不是开启的。chkconfig命令主要用于检查,设置系统的各种服务。我们发现防火墙和NIPS(snort_inline)是跟随系统启动的,并且开机自动配置刚才的脚本文件。NIDS是需要手动启动的。

  • Snort规则是如何自动升级的?
    Snort规则如何自动升级:在/etc目录下使用指令vim honeywall.conf打开honeywall配置文件,这个里面可以看到很多东西,譬如我们之前安装roo时配置的IP地址、譬如白名单黑名单的位置等。找到update variables,可以看到其值为no,不自动更新。

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

对于WinXP的配置问题,通过查找资料和同学讨论进行解决

4.学习感想和体会

通过这次实验对防火墙和snort入侵检测系统有了更深入的了解

posted @ 2022-04-15 11:20  张婷20211920  阅读(77)  评论(0编辑  收藏  举报