20232831 2023-2024-2 《网络攻防实践》第5次作业


目录

  • 20232831 2023-2024-2 《网络攻防实践》第5次作业
    • 1.实验内容
      • (1)防火墙配置(具体IP配置参考自己的IP设置)
      • (2)动手实践:Snort
      • (3)分析配置规则
    • 2.实验过程
    • 3.学习中遇到的问题及解决
    • 4.学习感悟、思考等
    • 参考资料


20232831 2023-2024-2 《网络攻防实践》第5次作业

1.实验内容

(1)防火墙配置(具体IP配置参考自己的IP设置)

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

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

(2)动手实践:Snort

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

(3)分析配置规则

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

2.实验过程

(1)防火墙配置(具体IP配置参考自己的IP设置)
①过滤ICMP数据包,使得主机不接收Ping包

虚拟机名称IP地址
Kali-Linux攻击机(Vmnet8网段192.168.200.4
Metasploitable-Linux靶机 (Vmnet1网段192.168.200.123

首先,打开Kali和Metasploitable-Linux,并使用以下代码在Kali虚拟机上进行iptables的安装

sudo apt-get install iptables

在这里插入图片描述

安装完毕后,使用以下命令进行打开iptables,可以先查看到已经存在的默认规则

sudo iptables -L

在这里插入图片描述
完成工具的安装后,先测试攻击机与靶机之间的连通性,发现二者是能够互ping的,这样才能进一步进行实验,即过滤Icmp,从而阻止二者互ping。
在这里插入图片描述
在这里插入图片描述

使用以下命令,使得Kali主机过滤掉所有的ICMP包,这样就无法建立ping连接,即无法互ping。

sudo iptables -A INPUT -p icmp -j DROP

在这里插入图片描述
再次互ping,可以发现icmp包全部不见,因为已经被过滤掉了,所以无法接受icmp,导致互ping失败
在这里插入图片描述
在这里插入图片描述
在Kali中打开wireshark可以发现,icmp包均被防火墙拦截,因此无法从kali攻击机发出
在这里插入图片描述
②只允许特定IP地址

虚拟机名称IP地址
Kali-Linux攻击机(Vmnet8网段192.168.200.4
Metasploitable-Linux靶机 (Vmnet1网段192.168.200.123
WinXPattacker靶机 (Vmnet8网段192.168.200.2

首先,为了进行该部分的测试,得在Kali上安装两个工具,分别是FTP(21号端口)和Telnet(23号端口)两个工具
使用以下命令进行FTP和Telnet的安装与端口的打开

sudo apt-get install xinetd telnetd #安装telnet
sudo apt-get install vsftpd #安装ftp/etc/init.d/xinetd start #开启telnet
/etc/init.d/xinetd status/etc/init.d/vsftpd start #开启ftp
/etc/init.d/vsftpd status

在这里插入图片描述
在这里插入图片描述
在Metasploitable-Linux和WinXPattacker上使用ftp进行Kali的连接,均可连接上

ftp 192.168.200.4

在这里插入图片描述
在这里插入图片描述
再分别使用以下命令进行telnet远程连接,结果发现二者均被拒绝,猜测是仅仅打开telnet服务是无法使用的

telnet 192.168.200.4

在这里插入图片描述
在这里插入图片描述
进过查询资料以及chatgpt得知,仅仅打开telnet服务是不够的,还需要检查Kali虚拟机的防火墙状态,只有关闭防火墙才能使用telnet服务:

sudo apt-get install ufw #安装ufw命令
sudo ufw status #查看防火墙状态

在这里插入图片描述
然而,防火墙是关着的,因此还得查找原因

查找得知,原因也许还可能是

/etc/inetd.conf文件没有telnet相关内容

因此,打开以下文件,查看是否存在telnet的配置信息,如果没有则需要手动配置(一定得用sudo,否则权限不够,无法 修改文件)
修改 /etc/inetd.conf

sudo vim /etc/inetd.conf

添加以下内容:

telnet    stream     tcp    nowait    telnetd    /usr/sbin/tcpd    /usr/sbin/in.telnetd

在这里插入图片描述

在这里插入图片描述

修改/etc/xinetd.conf

sudo  vim  /etc/xinetd.conf

将全文内容修改替换为以下内容:

# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d

在这里插入图片描述

此外,还需要添加默认的telnet配置
修改/etc/xinetd.d/telnet

sudo  vim  /etc/xinetd.d/telnet

添加以下内容:

# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{    
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}

在这里插入图片描述
此后,重启telnet服务

/etc/init.d/xinetd restart   

在这里插入图片描述
配置完成telnet后,重新进行telnet远程连接的测试
二者均成功连接:
在这里插入图片描述
在这里插入图片描述

因此,完成所有配置后,重新进行实验
输入以下代码,使得只有Metasploitable靶机才能进行访问Kali主机的21号端口,而WinXPattacker则不行,即首先,使用sudo iptables -P INPUT DROP扔掉所有与INPUT链中任何规则都不匹配的数据包,然后设置只接受来自IP地址为192.168.200.123的21号端口请求。

sudo iptables -P INPUT DROP
sudo iptables -A INPUT -p tcp -s 192.168.200.123 --dport 21 -j ACCEPT

在这里插入图片描述
此后,再在两台虚拟机上进行Kali主机的连接,首先是Metasploitable,能够发现它能够连接kali的21号端口,但是无法连接23号端口

在这里插入图片描述
再在WinXPattacker上进行测试,能够发现二者均不可实现

在这里插入图片描述
在这里插入图片描述
若重新添加以下代码,添加21号端口后,则WinXPattacker上又可以连接21号端口了

sudo iptables -A INPUT -p tcp -s 192.168.200.2 --dport 21 -j ACCEPT

在这里插入图片描述

(2)动手实践:Snort

Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)

由于Kali里面安装snort总是失败,尝试多次无法进行,因此根据群内同学的建议,在SeedUbuntu中进行snort的安装并进行分析

通过以下代码,分析之前实验提供的listen.pcap文件(-c 表示选择snort配置文件,-r 表示从pcap格式的文件中读取数据包,-K ascii 用于指定输出日志文件为ASCII编码)

sudo snort -c /etc/snort/snort.conf -r listen.pcap -K ascii

在这里插入图片描述

通过以下命令可以查看日志

cd /var/log/snort
vim alert.1

在这里插入图片描述

在这里插入图片描述
可以看到,该文件中的攻击是使用nmap命令进行的,攻击机IP地址是 172.31.4.178,靶机IP地址是 172.31.4.188 ,可以看到端口号、IP地址等等信息,分析结果与之前的实验相同。

(3)分析配置规则
这部分的实验需要在蜜网网关上进行,首先进行防火墙的查看,分析防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
首先,使用以下命令进行查看

vim /etc/init.d/rc.firewall

在这里插入图片描述
首先,可以看到creat_chains函数,该函数有三块内容:BlackList、WhiteList和FenceList,它们存储了源地址和目的地址的黑名单、白名单、防护名单等等信息,并定义了相关规则。
在这里插入图片描述
下面在start()函数中进行查看(creat_chains函数在上面已经解释,下面省略)
在这里插入图片描述
load_modules():这个函数用于加载所需的内核模块,以支持防火墙所需的功能。它可能会加载类似iptable_filter、iptable_nat等模块,这些模块提供了防火墙规则和网络地址转换(NAT)等功能所需的支持。

flush():这个函数用于清除并创建防火墙中的链(chains)。链是防火墙规则的容器,用于对网络流量进行分类和处理。这个函数通常会清除现有的防火墙链,并创建所需的链,如输入链(INPUT)、输出链(OUTPUT)和转发链(FORWARD)等。

default_policy():这个函数用于设置防火墙的默认策略。默认策略定义了当没有匹配的防火墙规则时如何处理网络流量。例如,它可以指定默认允许或默认拒绝所有流量。这个函数通常会设置默认策略,如允许输入链(INPUT)和输出链(OUTPUT)的默认行为。

local_host_policy():这个函数用于设置本地主机(即蜜网网关自身)的策略。它可能包含一些针对本地主机的特定防火墙规则和策略设置,以确保本地主机的安全性。

management_policy():这个函数用于设置管理策略,通常是指允许或限制对蜜网网关的管理访问的策略。这可能包括允许特定IP地址或网络对蜜网网关进行管理操作(如SSH登录、Web管理界面等),以及限制其他来源的管理访问。
使用以下命令进行iptables规则表的查看

iptables -L

在这里插入图片描述
使用以下命令进行相关snort规则的查看,可以看到eth0这一网络接口的配置情况,即虚拟网卡端口eth0的规则

vim /etc/init.d/snortd

在这里插入图片描述
使用以下命令可以看到Snort_inline运行时的一些相关参数,例如Snort Inline 的路径信息、配置和相关的脚本等等信息,涉及启动、停止、重启 Snort Inline 服务的逻辑,以及其他与配置和管理 Snort Inline 相关的功能。

vim /etc/init.d/hw-snort_inline

在这里插入图片描述
通过以下命令,可以查看一些服务情况,例如以下命令查看iptables和snort的情况,下面如果是on,则该服务是开机自动启动的,如果是off,则是需要手动打开的。

chkconfig --list | grep iptables
chkconfig --list | grep snort

在这里插入图片描述

总结:

蜜网网关通过配置防火墙和入侵检测系统/入侵防御系统(IDS/IPS)的规则,实现了攻击数据的捕获和控制需求。防火墙规则用于过滤和控制网络流量,它可以限制对蜜网网关的访问,并允许只有特定的攻击流量进入。而IDS/IPS规则则用于检测和防御具体的攻击行为,当攻击流量被检测到时,IDS/IPS会触发警报或采取相应的防御措施,如阻止攻击流量或发送通知。通过这样的配置,蜜网网关能够诱使攻击者将其注意力集中在虚拟网络上,同时捕获攻击数据并对其进行分析和响应,以进一步加强网络的安全性。

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

  • 问题1:telnet服务无法使用
  • 问题1解决方案:检查发现问题,从是否是防火墙的问题到是否配置了telnet,一路排错,最终解决
  • 问题2:snort无法在Kali上实现使用
  • 问题2解决方案:与之前的实验一样,仍然在SeedUbuntu上进行snort工具的使用和分析

4.学习感悟、思考等

在这次实践中,通过防火墙设置,实现了过滤ICMP数据包,禁止了Ping请求,并限制了特定IP地址访问主机的特定网络服务。此外,还使用Snort对给定的pcap文件进行入侵检测,并成功获得了报警日志。最后,通过在蜜网网关上进行分析配置规则,进一步深入了解了防火墙、蜜网网关等相关知识。通过这些配置和工具的应用,提高了我对蜜网网关的安全性和防御能力的理解,使得更深入地理解了防火墙和入侵检测技术在攻防环境中的重要作用。

参考资料

  • Ubuntu无法telnet
  • ubuntu 配置telnet服务,内含遇到的问题+转载如何配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于小程序实现的校园失物招领系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

第十二天--二维数组的彻底解刨--地址

1.二维数组我们用父子的地址来称呼二维数组的地址 比如arr[3][4] 这里的arr是二维数组的首地址,也是父数组的首地址,也是子数组的首地址 arr1父数组的地址偏移1,实际上是偏移了4*416个字节 arr[0]是子数组的首地址,arr[0]1是子数…

langchain txt 文档加载,分割

stuff 策略 加载 arXiv 论文,让模型总结前 2000 字 这里采用的是 stuff 策略,也就是将一大段文本。按字数分割成 N 个文本块,又合并成一个大的文本块。 对超大规模不友好,没有区分文档重要性,适合文档量较少场景 i…

安卓刷机fastboot分段传输

win10 fastboot 无法识别,驱动下载地址GitHub - xushuan/google_latest_usb_driver_windows 把inf文件更新到设备管理器驱动更新即可 问题 archive does not contain super_empty.img Sending vbmeta_a (4 KB) OKAY [ 0.117s] Writing …

Springboot项目的测试类书写(速通)

目录 前言1. 单元测试的测试类2. 框架测试的测试类 前言 在实际开发中,如果只是做一个简单的单元测试(不涉及端到端、数据库交互、API调用、消息队列处理等),我为了方便一般都是找块儿地方写一个main方法来跑一下就行了&#xff…

Redis中的集群(六)

集群 ASK错误 在进行重新分片期间,源节点向目标节点迁移一个槽的过程中,可能会出现这样一种情况:属于被迁移槽的一部分键值对保存在源节点里面,而另一部分键值对则保存在目标节点里面。当客户端向源节点发送一个与数据库有关的命令&#xf…

C中自定义类型——结构体

一.前言 在C语言中,不仅有int、char、short、long等内置类型,C语言还有一种特殊的类型——自定义类型。该类型可以由使用者自己定义,可以解决一些复杂的个体。 二.结构体 2.1结构体的声明 我们在利用结构体的时候一般是用于描述一些有多种…

javaweb配置JSTL

首先配置好javaweb项目。 在网上下载好jakarta-taglibs-standard并解压。 在web/WEB-INF目录下创建lib目录。 在jakarta-taglibs-standard目录下lib目录内的两个.jar文件复制到javaweb项目lib目录下。 将这两个.jar包导入库。 在idea菜单栏找到“文件”并打开,点…

nvm更新node版本

1、nvm安装和管理多个 Node.js 版本:NVM 允许用户在计算机上同时安装多个不同版本的 Node.js。这使得开发人员可以轻松地在不同的项目中使用不同的 Node.js 版本,而无需手动安装或卸载。 2、nvm切换 Node.js 版本:通过 NVM,用户可…

好菜每回味道不同--建造者模式

1.1 炒菜没放盐 中餐,老板需要每次炒菜,每次炒出来的味道都有可能不同。麦当劳、肯德基这些不过百年的洋快餐却能在有千年饮食文化的中国发展的那么好呢?是因为你不管何时何地在哪里吃味道都一样,而鱼香肉丝在我们中餐却可以吃出上…

Langchain-Chatchat 从入门到精通(基于本地知识库的问答系统)(更新中)

目录 前言一、Langchain-Chatchat介绍1-1、Langchain-Chatchat介绍1-2、LangChainChatGLM 工作流1-3、文档角度的工作流 二、快速上手2-0、硬件要求2-1、环境配置2-2、模型下载2-3、初始化知识库和配置文件2-4、一键启动 三、配置文件详解(config目录下)…

MybatisPlus实现数据权限隔离

引言 Mybatis Plus对Mybatis做了无侵入的增强,非常的好用,今天就给大家介绍它的其中一个实用功能:数据权限插件。 数据权限插件的应用场景和多租户的动态拦截拼接SQL一样。建议点赞收藏关注,方便以后复习查阅。 依赖 首先导入M…

【Java集合】面试题汇总

Java 集合Java 集合概览1. List, Set, Queue, Map 四者的区别?2. ArrayList 和 Array(数组)的区别?3. ArrayList 和 Vector 的区别?4. Vector 和 Stack 的区别?(了解即可)5. ArrayList 可以添加 null 值吗…

【端云一体化开发】云函数本地运行/调试启动失败的两种解决方案

最近本地调试云函数一直出现这个错误:Before launch task execute failed! details:java.lang.lllegalStateException: npm installfailed 这个问题的原因似乎是运行云函数的时候会重新下载 npm 及相关依赖文件,但是 DevEco 的 npm 模块出错导致这个步骤…

智慧园区平台再升级!智慧迭代,服务升级

伴随物联网、人工智能等技术的迅速发展和智能化水平的提高,智慧园区成为了现代区域经济高质量发展的重要组成部分,上承智慧城市的建设,下接智慧运营和管理。智慧园区是一种基于信息技术的智能化管理模式,通过物联网、大数据、人工…

java中常见的几种排序

常见的几种排序整理 冒泡排序选择排序插入排序希尔排序快速排序归并排序堆排序 冒泡排序 思想:对比当前值的下一个值,如果大就交换位置 代码: /*** 冒泡排序*/ public class bubbleSort {public static void main(String[] args) {int[] ar…

【域适应】深度域适应常用的距离度量函数实现

关于 深度域适应中,有一类方法是实现目标域和源域的特征对齐,特征对齐的衡量函数主要包括MMD,MK-MMD,A-distance,CORAL loss, Wasserstein distance等等。本文总结了常用的特征变换对齐的函数定义。 工具 …

初始C++之缺省参数 函数重载 引用

初始C之缺省参数 函数重载 引用& 文章目录 初始C之缺省参数 函数重载 引用&一、缺省参数1.1 缺省参数的定义1.2 缺省参数的分类1.3 注意事项 二、 函数重载2.1 函数重载的定义2.2 参数个数不同2.3 参数类型不同2.4 类型顺序不同2.5 为什么C语言不支持函数重载 三、引用…

OpenHarmony南向开发案例:【智能保险柜】

样例简介 智能保险柜实时监测保险柜中振动传感器,当有振动产生时及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程接收智能保险柜的报警信息。后续可扩展摄像头等设备,实现对危险及时报警,及时处理&a…

探究 ChatGPT 的心脏--Transformer(基础知识第一篇)

Transformer 是 ChatGPT 的核心部分,如果将 AI 看做一辆高速运转的汽车,那么 Transformer 就是最重要的引擎。它是谷歌于 2017 年发表的《Attention is All You Need》中提出的 Sequence-to-sequence 的模型,诞生之后便一统江湖,在…