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

1.实践内容

本次实践从网络安全模型出发(后面的技术紧紧围绕模型展开),主要介绍了防火墙技术(防御技术)和网络入侵检测技术(检测技术)。分为以下几个部分开展原理内容的梳理。
·安全模型
·网络安全防范技术与系统
·网络检测技术与系统

安全模型

静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
P2DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。

网络安全防范技术与系统

1.防火墙技术及产品

定义:防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。

功能

检查控制进出网络的流量。
防止脆弱或不安全的协议和服务。
防止内部网络信息的外泄。
对网络存取和访问进行监控审计。
强化网络安全策略并集成其他安全防御机制。
不足

先天:无法防范包括来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播的传播。
技术瓶颈:无法防范包括针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击和隐蔽通道进行通信的特洛伊木马或僵尸网络。
技术

包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包(简单、安全功能有限)。
基于状态检测的包过滤技术:也称动态包过滤。除了使用静态规则进行安全进行安全策略匹配,还进行数据包的网络连接的上下文关系探测,来确定是否允许通信。这种技术相比较传统的包过滤技术安全性更高,数据合法性得到了更有效的保障(对网络性能有一定的影响)。
代理技术:允许客户端通过代理与网络服务进行非直接的连接,也称“网络代理”。主要是客户端与代理服务器连接,代理服务器再与目标服务器连接。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
部署方法

包过滤路由器:带有包过滤防火墙功能的路由器。
双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
屏蔽主机:堡垒主机和包过滤的结合。
屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。

2.Linux开源防火墙netfilter/iptables介绍

简介:iptables是运行在用户空间的防火墙配置工具,通过控制运行在Linux内核空间的netfilter模块,来管理网络数据包的处理和转发(最新已经有ip6tables用于ipv6)。

规则:规则是用户预定义的,也是我们常说的防火墙规则,配置防火墙的主要工作就是添加、修改和删除这些规则。由一个目标和很多匹配组成。匹配如interface(e.g. eth0)、协议类型、源IP/端口、目的IP/端口等。目标是用户自定义的链、一个内置的特定目标或者是一个目标扩展,如ACCEPT、DROP、REJECT、SNAT、DNAT等。

:链是顺序执行规则的编排方式,在复杂的网络环境中,管理员需求这种可控的、有序执行的规则应用方式。iptables 提供了5条链:INPUT链、OUTPUT链、FORWARD链、路由前链(Pre-Routing)、路由后链(Post-Routing)。

:表的本质就是规则集的组织形式。iptables提供了以下5种表:filter表(过滤)、nat表(地址转换)、mangle表(包修改)、raw表、security表(强制访问)。


下面介绍下iptables的指令

说明 指令
制定iptables表 iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或转发] 思路:选表->选链->选条件->选动作
规则启动 systemctl enable iptables.service systemctl start iptables.service
保存和加载规则 iptables-save > /etc/sysconfig/iptables systemctl reload iptables
查看规则 iptables -nvL [--line-numbers] [-t 表名] [链名]
添加规则 iptables -A INPUT -s 192.168.1.5 -j DROP
修改规则 iptables -R INPUT 2 -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT

网络检测技术与系统

1.入侵检测技术

评估指标:检测率(系统捕获到的攻击行为与全部攻击行为比值)和误报率(对正常行为的误报数与全部报警数的比值)。
技术类型:特征检测(匹配特征库)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
入侵防御系统:也叫内嵌式入侵检测,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。

2.snort基本介绍

简介:Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。
四大模块:数据包嗅探模块、预处理模块(用相应的插件来检查原始数据包)、检测模块(检测引擎依据预先设置的规则检查数据包)、报警/日志模块(经检测引擎检查后的Snort数据输出)。
三种工作模式嗅探模式(从网络上读取数据包,常用命令snort -dev)、数据包记录模式(把数据包记录到硬盘上,常用命令snort -b)、网络入侵检测模式(载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)。

2.实践过程

防火墙配置

任务:配置Linux平台上的iptables,完成如下功能并测试
(1)过滤ICMP数据包,使主机不接受ping包。
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Ubuntu攻击机192. 168.200.2)无法访问
首先我们以SEED Ubuntu作为服务器,利用Kali访问SEED Ubuntu,Kali作为信任主机,Linux MetaSploitable作为不可信任主机。IP地址如下。

机器 IP地址
Kali 192.168.200.3
MetaSploitable 192.168.200.2
SEED Ubuntu 192.168.200.6
WinXPattack 192.168.200.5

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

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

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


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

(2)只允许Kali访问SEED Ubuntu的telnet服务

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

    然后再使用MetaSploitable Telnet 192.168.200.3
  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查看规则。
    可以看见只允许kali的ip主机访问
  4. 此时我们使用Kali主机,发现是可以正常访问telnet服务的

    但是MetaSploitable却是无法访问的。
  5. 最后记得对seedUbuntu使用iptables -F和iptables -P INPUT ACCEPT两条指令恢复之前的状态。

    任务:配置Windows平台上的个人防火墙,完成如下功能并测试
    (1)过滤ICMP数据包,使主机不接受ping包。
    (2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Ubuntu攻击机192. 168.200.2)无法访问
    首先我们以WinXPattack作为服务器,利用Kali访问SEED Ubuntu,Kali作为信任主机,Linux MetaSploitable作为不可信任主机。
    (1)1.先使用kali去ping WinXPattack,测试可以ping通

    2.在WinXP,按以下路径:开始--->控制面板--->Windows防火墙--->高级--->还原为默认值

    此时还原为默认值后ICMP的设置里允许传入回显请求会被自动取消勾选

    3.再次使用kali去ping WinXPattack,发现不能ping通

    4.记得将ICMP设置改回去,kali即可ping通

    (2)1.先使用kali去Telnet WinXPattack,发现无法访问

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

    3.重复上面的方法,打开WinXPattack Windows防火墙--->高级--->网络连接设置--->勾选Telnet服务器

    4.此时kali可以访问WinXPattack

    同样的,此时MetaSploitable 也可以访问WinXPattack

    5.WinXPattackp打开控制面板-->-管理工具--->本地安全策略--->IP安全策略右键--->创建IP安全策略
    进入设置向导,设置IP安全策略名称为“运行kali访问,拒绝Ubuntu访问”,可以创建一个IP筛选器


    6.添加阻止特定IP访问的筛选器
    源地址选择“一个特定的IP地址( MetaSploitable:192.168.200.2)”--->目标地址选择“我的IP地址”--->选择协议类型“TCP”--->设置IP协议端口“从任意端口”“到此端口(输入23)”--->完成。
    完成后,会在IP筛选列表看到添加的信息



    7.配置IP筛选器允许的动作,类似上述操作
    源地址选择“一个特定的IP地址(Kali:192.168.200.3)”--->目标地址选择“我的IP地址”--->选择协议类型“TCP”--->设置IP协议端口“从任意端口”“到此端口(输入23)”--->完成。
    完成后,会在IP筛选列表看到添加的信息




    8.配置完如图所示,右键指派


    9.再次使用kali Telnet WinXPattack ,发现可以访问

    而使用MetaSploitable 访问WinXPattack,发现被拒绝访问

Snort

使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。
在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
1.利用指令使用snort命令snort -c /etc/snort/snort.conf -r listen.pcap -K ascii -A full,即可用ascii码输出日志文件alert,对listen.pacp进行入侵检测,其他的指令第四周都已经详细介绍了,-K ascii主要是为了指定输出log文件的编码为ASCII(默认为binary)。

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


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

4.日志记录报警数据包有10条

5.数据流展示

6.此时可以读取snort生成的报警日志,输入指令cd /var/log/snort进入报警日志目录, 查看日志文件mousepad snort.alert.fast,可以看到日志中存有报警数据10条的入侵检测信息,
通过分析可以得出本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178 ,网络扫描的目标IP地址是172.31.4.188,分析相关文件可知攻击机使用了nmap扫描工具,并使用了DDOS攻击

分析配置规则

分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
1.先打开蜜网虚拟机,使用指令su -提权

2.然后输入vim /etc/init.d/rc.firewall去查看文件,可以看到create_chains函数定义了3个链,分别是白名单、黑名单和防护名单,
白名单是设置能通过的用户,白名单以外的用户都不能通过,黑名单是设置不能通过的用户,防护名单是部分包能通过

3.输入:q退出后输入指令iptables -L来获取IPTables的实际规则列表、snort和snort_line的实际执行参数

4.使用指令snort --h来获取Snort实际执行参数

5.使用指令vim /etc/rc.d/init.d/snortd来查询snort文件
看眼看到使用的是默认目录下的snort.conf规则,默认监听网卡为eth0

默认存储路径

6.输入:q退出后使用指令vim /etc/init.d/hw-snort_inline打开snort_inline的脚本文件,获取Snort_inline实际执行参数
D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置

7.输入:q退出后使用指令chkconfig --list来对linux上运行的服务进行查询蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的。

根据指令chkconfig --list | grep snort可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,
3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。
从下图可以发现NIPS(snort)的0-6都是off,说明是需要手动启动的,而防火墙(iptables)和NIPS(snort_inline)不全是off,是随系统开机而开启的

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

同样也能发现honey防火墙的网段eth2,ip以及子网掩码

3.实践中遇到的问题及解决

问题一:VMware nat一打开虚拟机不工作

解决方案:打开主机下的win+r后输入services.msc,在服务中找到VMware nat服务手动开启

问题二:能ping通但是Telnet指令不工作

解决方案:从CSDN上寻求解决方法,参考了这篇https://blog.csdn.net/KgdYsg/article/details/90757967

4.学习感想和体会

这次实验整体内容不难,分析内容太多,出现ping不通,Telnet连不通的问题,导致花费了大量的时间。
文中的有些分析不够清晰明了,一方面是自己对于iptables和防火墙知识不过关、另一方面是花费了大量时间在无用功上白费精力。

参考资料

IPtables指令详解
Windows防火墙配置与应用
网络攻防技术与实践

posted @ 2022-04-16 23:38  两面包+芝士  阅读(349)  评论(0编辑  收藏  举报