20211904 2021-2022-2 《网络攻防实践》第五次作业

1.实验介绍

1.1 防火墙

防火墙是由软件和硬件设备组合而成的一种网络的保护屏障。它是一种计算机硬件和软件的结合,防火墙是基础的网络安全防护设备,实现对外网到数据中心的访问控制,采用白名单机制,默认拒绝所有访问行为通过防火墙,通过配置防火墙安全访问控制策略为用户打通访问链路,防止未经授权的访问进入专用网络的系统。
'''
-从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。
主机防火墙:针对于单个主机进行防护。
网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。
网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体), 主机防火墙主内(个人)。
-从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低
'''

 

 

1.2 Linux上的iptables与netfilter

iptables是建立在 Netfilter 之上的数据包过滤器,通过向 Netfilter 的挂载点上注册钩子函数来实现对数据包过滤的,从iptables这个名字上可以看出一定具有表的概念,iptables通过把这些规则表挂载在 Netfilter 的不同链上,对进出内核协议栈的数据包进行过滤或者修改操作。简单来说,iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter。
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。
netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

 

1.3 Snort 入侵检测系统

防火墙可以比喻为办公室门口的警卫,用来检查进出者的身份。而入侵检测系统就像是网上的警报器,当发现入侵者时,指出入侵者的“来历”,“他们正在做什么”。入侵检测系统被视为防火墙之后的第二道安全闸门。

Snort的结构由以下四⼤软件模块组成。
-数据包捕获模块:负责监听⽹络数据包,对⽹络进⾏分析。
-预处理模块:该模块⽤相应的插件来检查原始数据包,从中发现原始数据的“⾏为”,如端⼝扫描、IP碎⽚等,数据包经过预处理后才传到检测引擎。
-检测模块:该模块是Snort的核⼼模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,⼀旦发现数据包中的内容和某条规则匹配,就通知报警模块。
-报警/⽇志模块:经检测引擎检查后的Snort数据需要以某种⽅式输出。如果检测引擎中的某条规则被匹配,则会触发⼀条报警。这条报警信息会传送给⽇志⽂件,甚⾄可以将报警传送给第三⽅插件。另外,报警信息也可以记⼊SQL数据库。

Snort拥有三⼤基本功能:嗅探器、数据包记录器和⼊侵检测。嗅探器模式仅从⽹络上读取数据包并作为连续不断的流显⽰在终端上。数据包记录器模式是把数据包记录到硬盘上。⽹络⼊侵检测模式是最复杂的,⽽且是可配置的。可以让Snort分析⽹络数据流以匹配⽤户定义的⼀些规则,并根据检测结果采取⼀定的动作。

 


 

2.实验过程

2.1 防火墙配置要求

- 过滤ICMP数据包,使得主机不接收Ping包;
- 只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问

2.2 使用到的主机的IP地址

虚拟机名称IP地址
Kali 192.168.25.4
SEEDUbuntu 192.168.25.5
WinXPattacker 192.168.25.6
MetasploitableUbuntu 192.168.25.25
Win2kServer 192.168.25.26

2.3 iptables命令选项输入顺序:

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

 

2.4 Linux操作系统平台

过滤ICMP数据包,使得主机不接收Ping包

  • 查看Kali上规则链中已有的条目。指令:sudo iptables -L

    image-20220415101427119

  • 使用Ping指令测试与同一局域网内SEEDUbuntu主机的联通性 image-20220415102613835

     此时的联通性是正常的

  • 向现有入站规则链添加规则条目,即“过滤ICMP数据包,使得主机不接收Ping包” 也就是不接受ICMP数据包。指令:sudo iptables -A INPUT -p icmp -j DROP image-20220415103509840

  • 再次测试连通性,在SEEDUbuntu主机上尝试Ping Kali image-20220415103652437 没有反应,打开SEEDUbuntu上的Wireshark查看确实有往Kali发ICMP包 image-20220415103831812

    在Kali上打开Wireshark发现确实也有回应 image-20220415104000201

  • 删除设置的规则以后恢复正常,说明防火墙确实起到了作用 查询已经添加的规则

    image-20220415104523670

    删除此规则 image-20220415104542666

    再次测试联通性

    image-20220415104631238 恢复正常


只允许特定IP地址,访问主机的某一网络服务,而其他的IP地址无法访问

  • 首先查看Kali上TELNET服务和FTP服务的状态

    image-20220415111555820

    image-20220415111647608

  • 在SEEDUbuntu上连接Kali,测试服务

    image-20220415111926339

    image-20220415112017759

     服务正常

  • 在SEEDUbuntu上连接Kali,测试服务 image-20220415131859552

    image-20220415132002300

          服务正常

  • 因为要“只允许特定IP地址,访问主机的某一网络服务,而其他的IP地址无法访问“ 所以需要在INPUT规则链设置过滤,仅允许特定IP。我这里实验测试TELNET服务使用的特定IP是SEEDUbuntu(192.168.25.5),其他IP就用winXPattacker(192.168.25.6)表示。测试FTP服务就反过来,服务使用的特定IP是winXPattacker(192.168.25.6),其他IP就用SEEDUbuntu(192.168.25.5)表示。 允许指令1:sudo iptables -A INPUT -p tcp -s 192.168.25.5 --dport 23 -j ACCEPT 允许指令2:sudo iptables -A INPUT -p tcp -s 192.168.25.6 --dport 21 -j ACCEPT 禁止指令:sudo iptables -P INPUT DROP [-P是设置默认规则链,这里指令的意思就是默认对于输入的包都进行丢弃,所以我们必须配合上边的允许指令,不然防火墙相当于阻止了一切连接请求] image-20220415134434969

  • 尝试在SEEDUbuntu(192.168.25.5)上访问Kali TELNET服务

    image-20220415134626453 访问成功

  • 尝试在winXPattacker(192.168.25.6)上访问Kali TELNET服务 image-20220415134743305 访问失败

  • 尝试在SEEDUbuntu(192.168.25.5)上访问Kali FTP服务 image-20220415134838153 访问失败

  • 尝试在winXPattacker(192.168.25.6)上访问Kali FTP服务 image-20220415134937168 访问成功

  • 再尝试用其他的虚拟机MetasploitableUbuntu (192.168.25.25)上进行测试 image-20220415135932148 无法访问TELNET服务与FTP服务


2.5 Windows操作系统平台

过滤ICMP数据包,使得主机不接收Ping包

  • 打开WinXPattacker的控制面板,进入防火墙

    image-20220415155713049

  • 启用防火墙

    image-20220415155904841

  • 取消所有例外控制实验变量 image-20220415155959028

  • 选择高级选项卡,点击设置

    image-20220415160041492

  • 切换ICMP选项卡,取消“允许传入的回显请求” image-20220415160157942

  • 尝试使用其余虚拟机ping WinXPattacker(192.168.25.6) image-20220415160342844

    image-20220415160404660 无一成功

  • 将选项“允许传入的回显请求”选上后,再用其余主机ping

    image-20220415160529422

    image-20220415160557726

    全都成功


只允许特定IP地址,访问主机的某一网络服务,而其他的IP地址无法访问

  • 打开WinXPattacker防火墙例外页面

    image-20220415160730871

  • 按照下图所示进行配置,这里选择Kali(192.168.25.4)作为允许访问FTP服务的特定IP

    image-20220415161003106

  • 按照下图所示进行配置,这里选择SEEDUbuntu(192.168.25.5)作为允许访问TELNET服务的特定IP (没有telnet可以手动添加端口) image-20220415161111641

  • 在Kali上尝试访问WinXPattacker的FTP服务

    image-20220415161325501

    访问成功

  • 在Kali上尝试访问WinXPattacker的TELNET服务 image-20220415161614387

    访问失败,一直没有回应

  • 在SEEDUbuntu上尝试访问WinXPattacker的FTP服务 image-20220415161523524

    访问失败

  • 在SEEDUbuntu上尝试访问WinXPattacker的TELNET服务

    image-20220415161707997

    访问成功

  • 尝试使用其他的虚拟机访问WinXPattacker的TELNET服务和FTP服务

    image-20220415161949734

    都无法访问


 

2.6 动手实践Snort

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

Snort运行命令提示如下:

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

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

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

Snort参数说明

参数说明
-c 使⽤配置⽂件,这会使得snort进⼊IDS模式,并从中读取运⾏的配置信息。
-r 从pcap格式的⽂件中读取数据包。
-K 设置保存⽂件的格式:pcap,ascii,none。pcap是默认格式,同于-b选项的格式。ascii是⽼的模式格式。none则关闭数 据包记录。
  • 从pcap数据包文件中读取网络日志数据。指令:snort -c /etc/snort/snort.conf -r listen.pacp -K ascii

    image-20220415163854130

  • 从目录/var/log/snort中找到生成的日志数据文件

    image-20220415164256604

  • 查看日志数据文件

    image-20220415164541510 可以看到源主机和目的主机的IP地址以及相应的端口号等信息


 

2.7 分析配置规则

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

  • 开启密网网关虚拟机roo,查看开机时iptables的初始化。指令:vim/etc/init.d/rc.firewall image-20220415165249766

    image-20220415165822044

  • 在vim中使用 / 查询start () 函数 image-20220415165953801

  • 分析start () 函数

    create_chains函数,定义了程序中使用的规则。 BlackList: 源地址和目的地址黑名单 WhiteList: 源地址和目的地址白名单 FenceList: 源地址和目的地址的防护名单 XXHandler: XX协议对应的Handler链

    default_policy: 默认全部丢弃的规则 image-20220415213018927 loaclhost_policy:允许本地主机转发的规则 image-20220415213234016 management_policy:允许管理接口的规则 image-20220415213539218

    HwFWWHITE:预定义白名单

    HwFWBLACK:预定义黑名单

    HwFWFENCE:预定义防护名单

  • 查看roo的防火墙规则 cd /etc/init.d 指令:./iptables status image-20220415215510438 image-20220415215548137 image-20220415215636606

   可以看到先前我们第一次实验中配置的信息,包括指定的IP以及通过先设置INPUT规则默认全部丢弃,再添加其他的规则,达到过滤指定IP以及端口号或者指定协议的目的。

  • 查看snort运行参数。指令:vim /etc/init.d/snortd image-20220415220213412

    image-20220415220226785 可以看到snort很多参数,以及默认的参数配置

  • 查看服务的情况,使用chkconfig指令,列出服务等级

    等级0表示:表示关机

    等级1表示:单用户模式

    等级2表示:无网络连接的多用户命令行模式

    等级3表示:有网络连接的多用户命令行模式

    等级4表示:不可用

    等级5表示:带图形界面的多用户模式

    等级6表示:重新启动

  • image-20220415221411380

    可以看到入侵防御系统(NIPS|snort_inline)和防火墙是自启动的,但是入侵检测系统(NIDS)需要手动打开

 


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

  • 问题1:winXPattackerFTP无法登录,不知道用户名密码

  • 问题1解决方式:winXPattacker默认自带ftpserver软件,可以在软件里自己设置用户名密码

4.学习感悟

通过这次实验,我了解了Linux系统以及WIndows系统下防火墙的配置规则以及修改规则的方式,认识了Linux中规则链和表以及功能的具体实现,通过源代码看到了蜜网网关使用防火墙技术过滤指定IP地址及指定端口上的数据包的方式,还有snort入侵检测系统的检测流程,这对以后的实验有很大的帮助,刷新了从前对防火墙浅显的认知。

参考资料

posted @ 2022-04-15 22:29  20211904  阅读(90)  评论(0编辑  收藏  举报