20212928 2021-2022-2 《网络攻防实践》第7周作业
1.实践基础知识
1)防火墙技术
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实
施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
2)入侵检测系统
IDS是计算机的监视系统,它通过实时监视系统,一旦发现异常情况就发出警告。以信息来源的不同和检测方法的差异分为几类:根据信息来源可分为基于主机IDS和基于网络的IDS,
根据检测方法又可分为异常入侵检测和误用入侵检测。不同于防火墙,IDS入侵检测系统是一个监听设备,没有跨接在任何链路上,无须网络流量流经它便可以工作。因此,对IDS的
部署,唯一的要求是:IDS应当挂接在所有所关注流量都必须流经的链路上。在这里,"所关注流量"指的是来自高危网络区域的访问流量和需要进行统计、监视的网络报文。在如今
的网络拓扑中,已经很难找到以前的HUB式的共享介质冲突域的网络,绝大部分的网络区域都已经全面升级到交换式的网络结构。因此,IDS在交换式网络中的位置一般选择在尽可能
靠近攻击源或者尽可能靠近受保护资源的位置。这些位置通常是:服务器区域的交换机上;Internet接入路由器之后的第一台交换机上;重点保护网段的局域网交换机上。
3)入侵防御系统
入侵防御系统(IPS: Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件和防火墙的补充。入侵防御系统是一部能够监视网络或网络设备的网络资料传输行为的
计算机网络安全设备,能够及时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。
4)Snort
Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,
可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。
Snort有数据包嗅探,数据包分析,数据包检测,响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。例如,预处理插件的功能
就是在规则匹配误用检测之前运行,完成TIP碎片重组,http解码,telnet解码等功能,处理插件完成检查协议各字段,关闭连接,攻击响应等功能,输出插件将得理后的各种情况以
日志或警告的方式输出。
2.实践过程
(一)防火墙配置
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问
实验环境如下:
名称 | IP |
---|---|
Kali | 192.168.200.4 |
ubuntu | 192.168.200.123 |
SEED | 192.168.200.2 |
Linux操作平台
(1)首先在 SEED 上输入 sudo iptables -L,查看默认规则,如下所示:
紧接着,执行指令 sudo iptables -A INPUT -p icmp -j DROP
使得主机不接受 icmp 的数据包。
之后,再打开Kali虚拟机,输入ping.192.168.200.2这时Kali则无法ping通SEED,
在 SEED 中可以看到新添加的规,如下所示:
最后,可以删除上述新添加的自定义规则,如下图:
(2)首先确认 Kali 和 Ubuntu 都可以连接至 SEED 的 telnet 服务,如下所示:
接下来,在 SEED 上执行以下命令,sudo iptables -P INPUT DROP,拒绝一切数据包流入:
在Kali中的截图如下
在ubuntu中的截图如下:
之后在seed中输入指令:sudo iptables -A INPUT -p tcp -s 192.168.200.4 -j ACCEPT
开启 192.168.200.4(Kali) 对 SEED 的 tcp 服务,并查看规则:
之后,再打开Kali进行连接,如下图,Kali 就可顺利连接至 SEED 了!
测试Ubuntu的连通性,由于SEED中并没有对其开通权限,所以Ubuntu仍然联不通哦!
实验结束,执行以下命令恢复规则至默认:
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -L
具体如下图:
WIndows操作平台
(1)实验环境如下:
名称 | IP |
---|---|
Kali | 192.168.200.4 |
seed | 192.168.200.2 |
WinXP | 192.168.200.3 |
(2)首先,先打开Kali虚拟机, ping WinXP,发现测试可以ping通,如图。
之后在WI你XP中点击开始--控制面板--Windows安全中心--Windows防火墙--还原为默认值,如下图:
还原为默认值后ICMP的设置里允许传入回显请求会被自动取消勾选,说明此时过滤ICMP数据包,使得主机不接收Ping包。
紧接着 ,再打开Kali虚拟机,再次ping WinXP,此时ping不通,如下所示:
(3)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.2),访问主机的某一网络服务(如FTP、HTTP、SMB),
而其他的IP地址(如Windows攻击机192. 168.200.3)无法访问。
1)首先,必须确保kali和SEEDUbuntu可以正常telnet WinXP,但是当我输入telnet 192.168.200.3
的时候,发现并不能联通,如下图:
2)究其原因,在于WinXP,便在WinXP点击开始--运行打开cmd,输入services.msc,跳出服务界面,找到Telnet,
发现目前状态是已禁止,我们需要右键--属性,修改启动类型为自动或者手动,点击确认,如下图所示:
然后,再回到列表的Telnet,右键-->启动,如下图
之后在cmd输入net start telnet,也显示已启动,表明启动成功,如下图。
之后,在开始菜单中,依次选择开始--控制面板--Windows防火墙--高级--网络连接设置--勾选Telnet服务器,如下图。
完成上述步骤后,继续在kali和SEEDUbuntu中telnet WinXP,发现可以了,如下图。
(4)之后,在WinXP中设置IP安全策略来限制固定IP(kali的IP)访问,具体步骤如下:
1)创建安全策略:控制面板--管理工具--本地安全策略--IP安全策略右键--创建IP安全策略,进入设置向导,
之后,设置IP安全策略名称为“限制固定IP远程访问”,在警告提示框选择“是”,其他均保持默认点击下一步,如下图所示:
然后,我们可以发现已经创建好了一个动态的IP筛选器列表,如下图所示:
2)添加阻止特定IP访问的筛选器
从上述的1)中继续往下进行,点击添加--进入安全规则向导--一直保持默认设置点击下一步--遇到警告点击“是”,如下图所示:
之后,我们可以看到IP筛选器列表中有两个,如下图所示:
然后,在继续进行添加,选择自定义IP筛选器名称为“阻止特定IP远程访问”,进入添加,在进入安全规则向导,如下图所示:
选择下一步,源地址写为一个特定的IP地址,如:Kali:192.168.200.4,选择下一步,
目标地址选择“我的IP地址”,如下图所示:
下一步,选择协议类型“TCP”-
下一步,设置IP协议端口“从任意端口”“到此端口(输入23)”
点击完成
完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。
得到如下图所示:
配置IP筛选器阻止的动作:在点确定后--选择配置的“阻止所有IP远程访问”,点击下一步,如图
点击添加--选择阻止
选择确定,得到下图“新筛选操作”,代表的是阻止点击完成
然后选中“新筛选操作”,点击下一步--完成,如图所示,至此我们添加好了阻止特定IP访问的筛选器
3)添加允许特定IP访问的筛选器(跟添加阻止特定IP访问的筛选器步骤一样)
继续点击添加--点击添加--进入安全规则向导--一直保持默认设置点击下一步--遇到警告点击“是”,如下图所示:
结果如下:
继续选择添加,出现警告弹窗,选择是
击下一步--源地址选择“一个特定的IP地址(SEEDUbuntu:192.168.200.2)
下一步--目标地址选择“我的IP地址”
选择协议类型“TCP”
下一步--设置IP协议端口“从任意端口”“到此端口(输入23)”,接着完成
完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。
配置IP筛选器允许的动作:在点确定后--选择配置的“允许所有IP远程访问”,点击下一步
点击添加--选择允许--确定,得到下图“新筛选操作(1)”,代表的是允许。
然后选中“新筛选操作(1)”,点击下一步--完成,如图所示,至此我们添加好了允许特定IP访问的筛选器。
4)应用我们刚刚配置的两个IP安全规则(允许特定IP远程访问和阻止特定IP远程访问)
指派此安全规则:右键“限制固定IP远程访问”——选择“指派”,至此所有工作配置完成,如下图。
现在Kali不能telnet WinXP,Seed可以telnet WinXP,至此,说明我们设置的规则有效,如下图
为验证我们规则的正确性,我们将指派关掉之后,发现Kali和Seed都不能telnet WinXP ,说明我们设置的策略正确有效。
(二)动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机
或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
首先,在 Kali 中对老师提供的 pcap 包进行入侵检测分析:
使用snort -c /etc/snort/snort.conf -r /listen.pcap -K ascii命令,从离线的pcap文件读取网络日志数据源:
但是会发现出错了,应该是权限不够,加上sudo试试看,
还是不太行呐,把listen.pacp放到桌面上再次尝试,可以得到以下结果
可以看到检测到的数据包信息,有TCP,ARP,主要是TCP。
运行命令vim /var/log/snort/snort.alert.fast打开文件,可以发现这个攻击是nmap发起的
也看到本次攻击是用nmap发起的,其中攻击机IP地址是 172.31.4.178,靶机IP地址是 172.31.4.188 。
(三)分析配置规则Snort
查看防火墙配置的命令 vim /etc/init.d/rc.firewall
发现不太行,sudo提权后,如下图
代码比较长,查阅资料,先找一下start函数(vim下可以使用/start进行查找定位),在start函数中
首先是create_chains函数,定义了下述程序中使用的规则。BlackList、WhiteList、FenceList和xxxHandler。它们分别用来存储源地址和目的地址黑名单,源地址和目的地址的白名单,源地址和目的地址的防护名单,以及供下述policy使用的各种协议对应的Handler链。
接下来通过default_policy、localhost_policy和management_policy创建了不同情况下的三种代理转发模式。
接下来进入start程序的正文,通过读取预定义的白名单HwFWWHITE、黑名单HwFWBLACK和防护名单HwFWFENCE,添加相关的规则。
最后通过读取类似HwHPOT_PRIV_IP_FOR_NAT和HwHPOT_PUBLIC_IP等文件来导入其他的定义参数。如下图:
create_chains()函数如下:
default_policy()、localhost_policy()和management_policy()如下:
2)获取IPTables的实际规则列表、snort和snort_line的实际执行参数
输入iptables -L来查看规则列表,如下图:
3)通过 vim /etc/init.d/snortd 打开Snort脚本文件,查看相关的运行参数,可以分别看到一些参数的选项,
包括实际运行时候的参数。学习一些snort的指令后进行分析,譬如在指定网卡接口后,如果没有其他的参数,
将按照默认参数运行。如默认不开启-A模式,使用默认目录的config文件,默认使用eth0、使用二进制模式保存log文件等,如下图:
4)vim /etc/init.d/hw-snort_inline可以看到Snort_inline运行时参数,-D表示Daemon模式,
-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置,如下图:
5)防火墙、NIDS、NIPS是如何启动
使用chkconfig --list|grep snort命令来对linux上运行的服务进行查询,可以发现NIDS的0~6都是off,说明是需要手动启动的,
而防火墙和NIPS不全是off,是跟随系统启动的。
6)snort规则的升级方式
我们使用命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,则表示不自动更新,如下图:
3.学习中遇到的问题及解决
问题:在做实践(二)时,输入相关指令后,一直说找不到你文件,如下图所示
解决:本来是以为没有提权,加上sudo后还是不行,最后将listen.pcap文件放到桌面上便可以出现想要的结果了。
4.学习感想和体会
通过完成本次实验,我学会了如何配置Linux防火墙iptables以及Windows防火墙,动手实践了Snort的使用。
在windows下配置防火墙步骤很繁琐,但只要一步步做下来并不难。