20221905 2022-2023-2 《网络攻防实践》 第5周作业

一、实践内容

1.1 防火墙的概念、作用与分类

(1)防火墙的概念

防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使(互联网)与(内联网)之间建立起一个安全网关,从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。

(2)防火墙的作用

防火墙可以监控进出网络的通信量,从而完成看似不可能的任务,仅让安全、核准了的信息进入,同时又抵制对企业构成威胁的数据。
防火墙的作用是防止不希望的、未授权的通信进出被保护的网络,迫使单位强化自己的网络安全政策。防火墙一般都有以下功能:
①防火墙能强化安全策略。防止入侵者接近你的防御设施
②防火墙能有效地记录互联网上的活动,为监视互联网安全提供方便。
③防火墙限制暴露用户地点。防火墙能够用来隔开网络中一个网段与另一个网段。这样,能够防止影响一个网段的问题通过整个网络传播。
④可以限制他人进入内部网络,过滤掉不安全服务和非法用户,防火墙是一个安全策略的检查站。所有进出的信息都必须通过防火墙,防火墙便成为安全问题的检查点,使可疑的访问被拒绝于门外。

(3)防火墙的分类方法

①软、硬件形式分类:软件防火墙、硬件防火墙、芯片级防火墙。
②防火墙技术分类:包过滤型防火墙、应用代理型防火墙 。
③防火墙结构分类:单一主机防火墙、路由器集成式防火墙、分布式防火墙。
④防火墙的应用部署位置分类:边界防火墙、个人防火墙、混合防火墙。
⑤防火墙性能分类:百兆级防火墙、千兆级防火墙。
⑥防火墙使用方法分类:网络层防火墙、物理层防火墙、链路层防火墙。

1.2 linux平台的防火墙:netfilter/iptables

(1)工作原理:在nefilter/iptables防火墙系统中,netfilter 组件位于Linux的内核空间中,实现了静态包过滤和状态报文检查(即动态包过滤)基本防火墙功能,此外也支持一个灵活可扩展的框架,支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展,nefilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理,以及构建QoS或策略路由器等安全功能。Iptables 则是工作在Linux用户空间中的防火墙配置工具,通过命令行方式允许用户为netfilter配置各种防火墙过滤和管理规则。nefilter/iptables 中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于网络地址转换处理的NAT表,以及用于特殊目的数据包修改的mangle表。

(2)IPtables用法:

①命令语法:

$ iptables [-t table] cpmmand [match] [target]

其中-t指定配置规则所在的表,缺省表包括filter、nat、mangle、raw等。
command 部分是 iptables 命令的最重要部分,告诉iptables命令要做什么,例如,插入规则、讲规则添加到链的末尾或删除规则。

②netfilter/iptables的NAT机制

IP伪装:iptables -t nat -A POSTROUTING -i eth1 -o eth0 -j MASQUERADE

使内部网络主机发出的数据包进行源IP地址伪装,使用防火墙外网IP地址。

SNAT机制:使用-j SNAT描述,用--to source描述要转换的IP地址。
DNAT机制:使用-j DNAT描述,用--to destination描述IP地址、范围或端口。

1.3 Snort

(1)Snort基本介绍

Snort被设计成一个跨平台、轻量级的网络入侵检测系统,用C语言编写,并采用了标准的捕获数据包函数库libpcap,具有非常好的可移植性。目前Snort可以在包括x86、SPARC、PowerPC、Alpha等指令集平台架构上的Linux、Windows、MAC OS,以及各种UNIX操作系统上运行。

Snort具有强大的功能:数据包嗅探、数据包记录和分析,以及各种入侵检测功能。Snort在设计时采用了注重高性能、简单和灵活的原则,并采用一套源码级插件机制,作为系统扩展的手段。Snort 软件的基本架构主要由四个基本部分组成:
①数据包嗅探/解码器(sniffer);
②预处理器/插件(preprocessor);
③检测引擎/插件(detection engine);
④输出模块/插件(output modules).

(2)Snort的实现机理

Snort中四个主要部件以及处理过程描述如下:
①数据包嗅探/解码器。首先,利用libpcap从网卡或离线记录中捕获数据包,然后数据包经过解码器填入到链路层协议的包结构体中,以便对高层次的协议进行解码,如TCP/UDP层。
②预处理器/插件。接着数据包被送到各种各样的预处理插件中,在检测引擎之前对数据包进行检查和操作。每个预处理插件检查数据包是否应该注意、报警或者修改某些东西。
③检测引擎/插件。随后,包被送至检测引擎,检测引擎首先通过各种规则文件中定义的匹配字符电特征来对每个包的信息进行快速的模式匹配检测,然后由各种检测插件对包提供额外的检测功能。规则中每个关键字选项对应于检测引擎插件,能够提供不同的检测功能。
④输出模块/插件。对之前各个部件产生的报警/日志信息,根据用户配置,调用相应的输出插件进行发送和记录。

snort的具体命令使用等可以参考:
https://blog.csdn.net/jack237/article/details/6899465

1.4 本节实践内容

一、防火墙配置(IP地址仅供参考,以实际为准)
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192.168.200.4)无法访问
二、动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在学习通中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。

Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

二、实践过程

本次实验使用以下虚拟机:
(1)Kali:192.168.200.6
(2)攻击机Ubuntu:192.168.200.2
(3)蜜网网关:192.168.200.8
(4)WinXP:192.168.200.4

2.1 防火墙配置

任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192.168.200.4)无法访问

2.1.1 Linux操作系统

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

①首先在攻击机Ubuntu上,首先使用命令iptables -V,如果显示出版本号表示已经安装,如果没有,运行apt-get install iptables

在这里插入图片描述

②然后使用命令sudo iptables -L查看当前防火墙配置信息,对iptables的操作都必须有root权限。

可以看到图中均显示policy ACCEPT,即都有root权限。

在这里插入图片描述

③接着使用命令sudo iptables -A INPUT -p icmp -j DROP添加规则,然后使用sudo iptables -L查看当前防火墙配置信息,添加成功。
其中-A是追加新规则于指定链的尾部,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。

在这里插入图片描述

④在Kali上,使用命令ping 192.168.200.2,发现不通。

在这里插入图片描述

⑤在攻击机Ubuntu上,使用命令sudo iptables -F删除自定义规则。

在这里插入图片描述

在Kali上再次使用命令ping 192.168.200.2,发现ping通了。

在这里插入图片描述

(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问(两种方法

第一种:

netstat -a是一个dos环境下的命令,在Internet RFC标准中,用来显示所有连接和侦听端口。
netstat -a | grep telnet查看Kali上的telnet服务是否已经打开。

在这里插入图片描述

②分别测试WinXP和攻击机Ubuntu是否可以进行telnet登录Kali。

telnet 192.168.200.6(其中用户名:kali-qq,密码:wjh)

在这里插入图片描述

在这里插入图片描述

③在Kali使用iptables -P INPUT DROP指令拒绝一切的数据包流入(修改的是默认规则-P),此时发现两台机器都无法进行telnet访问

在这里插入图片描述

在这里插入图片描述

④在主机A上使用指令iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT开启攻击机Ubuntu对Kali的tcp服务。并用iptables -L查看规则。

在这里插入图片描述

这时发现攻击机Ubuntu是可以正常访问telnet服务的,但是WinXP是无法访问的。

在这里插入图片描述

在这里插入图片描述

⑤最后执行iptables -F删除自定义规则,iptables -P INPUT ACCEPT把没有规定的数据包都接收,恢复之前的状态。

在这里插入图片描述

第二种:

①设置前,用Kali和Windows Sever访问主机Metasploitable2的ftp服务,都可成功。

在这里插入图片描述

在这里插入图片描述

②使用命令iptables -P INPUT DROP拒绝一切数据流入。

使用命令iptables -A INPUT -p tcp -s 192.168.200.6 -j ACCEPT只允许Kali(192.168.200.6)访问主机Metasploitable2。

在这里插入图片描述

Windows Sever无法访问主机Metasploitable2。

在这里插入图片描述

③输入iptables -Fiptables -P INPUT ACCEPT恢复之前的状态。

在这里插入图片描述

2.1.2 Windows操作系统

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

①设置之前,Kali可以ping通WinXPattacker(192.168.200.4)

在这里插入图片描述

②打开防火墙,设置ICMP:开始→控制面板→windows防火墙→高级→ICMP的设置,把允许传入回显请求对号去掉,Kali就ping不通了。

注意:直接勾选时无法显示时,选择还原为默认值后,就可以进行勾选了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问

①为使得Kali可以正常telnet主机WinXP,在主机WinXP上进行以下操作:点击开始–运行打开cmd,输入services.msc,跳出服务界面,找到Telnet,发现目前状态是已禁止,我们需要右键–属性,修改启动类型为自动或者手动(也可以直接在控制面板上操作)。然后在cmd输入net start telnet,也显示已启动,表明启动成功。

在这里插入图片描述

②开始–控制面板–Windows防火墙–高级–网络连接设置–勾选Telnet服务器。

在这里插入图片描述

③在Kali上连接WinXP,成功。

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

⑤添加阻止特定IP访问的筛选器。

点击添加–进入安全规则向导–一直保持默认设置点击下一步–遇到警告点击“是”。然后点击添加–自定义IP筛选器名称为“阻止特定IP远程访问”–添加–进入安全规则向导。

在这里插入图片描述

⑥点击下一步–源地址选择“一个特定的IP地址(Kali:192.168.200.6)”–下一步–目标地址选择“我的IP地址”–选择协议类型“TCP”–下一步–设置IP协议端口“从任意端口”“到此端口(输入23)”–下一步–完成。完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。

在这里插入图片描述

在这里插入图片描述

⑦然后在点确定后–选择配置的“阻止所有IP远程访问”,点击下一步。

在这里插入图片描述

在这里插入图片描述

点击添加–选择阻止–确定,得到下图“新筛选操作”,代表的是阻止。

在这里插入图片描述

然后选中“新筛器选操作”,点击下一步–完成,如图所示,至此我们添加好了阻止特定IP访问的筛选器。

在这里插入图片描述

⑧添加允许特定IP访问的筛选器(跟添加阻止特定IP访问的筛选器步骤一样)

继续点击添加–点击添加–进入安全规则向导–一直保持默认设置点击下一步–遇到警告点击“是”。

在这里插入图片描述

点击添加–自定义IP筛选器名称为“允许特定IP远程访问”–添加–进入筛选器向导。点击下一步–源地址选择“一个特定的IP地址(攻击机Ubuntu:192.168.200.2)”–下一步–目标地址选择“我的IP地址”–选择协议类型“TCP”–下一步–设置IP协议端口“从任意端口”“到此端口(输入23)”–下一步–完成。完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。

在这里插入图片描述

在这里插入图片描述

配置IP筛选器允许的动作:在点确定后–选择配置的“允许所有IP远程访问”,点击下一步。点击添加–选择许可–确定,得到下图“新筛选操作(1)”,代表的是允许。然后选中“新筛选操作(1)”,点击下一步–完成,如图所示,至此我们添加好了允许特定IP访问的筛选器。

在这里插入图片描述

最后指派此安全规则:右键“限制固定IP远程访问”——选择“指派”,至此所有工作配置完成,如图。

在这里插入图片描述

⑨最后在Kali和攻击机Ubuntu上进行验证。发现Kali不可以连接主机WinXP,Ubuntu可以连接WinXP。

在这里插入图片描述

在这里插入图片描述

2.2 动手实践:Snort

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

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

(1)执行命令snort -c /etc/snort/snort.conf -r /home/kali-qq/listen.pcap -K ascii
从离线的pcap文件读取网络日志数据源。

① -c:表示选择snort配置文件
② -r:表示从pcap格式的文件中读取数据包
③ -K:ascii是用来指定输出日志文件的为ASCII编码

在这里插入图片描述

(2)查看输出里检测出的数据包,可以看到大部分数据流为tcp会话,少部分为ARP包。报警数据包有10条,均被日志记录,所有数据包都裁决允许。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3)数据流统计

在这里插入图片描述

(4)此时snort会在默认目录生成一个日志文件,进入报警日志目录cd /var/log/snort, 查看日志文件vim alert,记录了报警数据10条的入侵检测信息,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178,网络扫描的目标IP地址是172.31.4.188。

在这里插入图片描述

在这里插入图片描述

2.3 分析配置规则

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

2.3.1 分析防火墙和IDS/IPS配置规则

具体分析配置规则与启动项文件包括:
●防火墙(nefilter+IlPTables) : /etc/init.d/rc.firewall
●入侵检测系统(Snort) : /etc/init.d/hflow_snort 与/etc/snort/snort.conf
●入侵防御系统(Snort_ inline) : /etc/init./hflow-snort. inline/etc/snot._inline/snort_inline.conf

具体实践如下:

(1)分析防火墙

①查看防火墙的文件,先使用:su - 再使用 vim /etc/init.d/rc.firewall。可以看到create_chains创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链。

在这里插入图片描述

在这里插入图片描述

②还有默认规则、本地规则、管理规则

在这里插入图片描述

③防火墙开启后根据先前规则链及定义的规则函数过滤数据包

在这里插入图片描述

snort主要通过对整个网络数据包进行预警提示,多侧重于数据捕获,当然查询防火墙和snort_inline日志也可以获得一定的数据捕获信息。

iptables中有用 modprobe ipt_LOG,iptables -N FenceLogDrop等存储数据捕获的日志,snort_inlin可以用snort -c [snort.conf绝对路径} -l [log路径] -K ascii来实现输出log文件。

iptables防火墙主要负责对数据。
accept,reject,drop等规则的制定和执行,多用于数据控制。

分析相关脚本的关键代码,防火墙文件rc.firewall中create_chains()用于创建链,该函数分别创建了黑名单和白名单,防护名单以及防护日志删除,-N的意思表示根据用户指定的名字创建新链,其中黑名单就是阻止某些网络地址和用户进入主机,白名单就是用户设置的认为可以添加信任的网络用户以及网络地址,防护名单是IPS的文件列表,防护日志删除是一个表,用于记录/删除从围栏反弹的数据包。

2.3.2 分析IlPTables

(1)通过iptables -t filter -L | less来查看规则列表,可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了。

在这里插入图片描述

在这里插入图片描述

2.3.3 获取Snort实际执行参数

(1)输入命令打开Snort脚本文件vim /etc/init.d/snortd

如图可知,它是默认使用默认目录下的snort规则,监听网卡为eth0,默认储存路径为/var/log/snort。

在这里插入图片描述

(2)Snort_inline实际执行参数。执行命令vim /etc/init.d/hw-snort_inline,打开snort_inline的脚本文件查看实际执行参数。

各参数定义为:

-c表示读取config文件
-D表示Daemon模式
-Q表示使用QUEUE模式
-l表示输出log文件的目录
-t表示改变程序执行时所参考的根目录位置

在这里插入图片描述

2.3.4 说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的

(1)使用chkconfig --list | grep [服务] 来查看服务开启,0~6分别表示关机、单用户模式、无网络连接的多用户命令行模式、有网络连接的多用户命令行模式、不可用、带图形界面的多用户模式、重新启动。

在这里插入图片描述

可以看出iptables和hw-snort_inline在无网络连接的多用户命令行模式下开始启动,而snortd不会自启动。

(2)其次使用vim /etc/honeywall.conf打开honeywall配置文件,来看snort的rule是否自动更新(在文件270+行),默认为不更新。

在这里插入图片描述

(3)使用vim /etc/oinkmaster.conf打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级。

在这里插入图片描述

三、学习中遇到的问题及解决

(1)问题:telnet 连接失败,且使用netstat -a | grep telnet指令没有显示。
解决方法:参考https://blog.csdn.net/xcsxchen/article/details/129556541

(2)问题:使用iptables -F失败 解决方法:改成sudo iptables -F

在这里插入图片描述

(3)问题:使用snort指令对listen.pacp进行入侵检测时失败。
解决方法:打错了listen.pcap的文件路径,改对路径后成功。

四、学习感想和体会

本次实验虽然不难,但是在做的过程中遇到了很多问题。尤其是在telnet连接不通时,参考了很多资料,走了很多弯路。在这个过程中还出现了可以使用xinetd但实际没有安装它的问题,最后安装完才使得telnet可以登录。实验主要是完成了防火墙的配置、入侵监测以及分析配置规则。通过本次实验,我对防火墙的使用原因、功能、不足都有了更加深刻的理解,虽然做得比较累,但也有了很多收获,下次要继续努力,不要再犯一些蠢蠢的错误了(T^T)。

五、参考资料

https://www.cnblogs.com/ql5199/p/16130984.html
https://blog.csdn.net/daocaokafei/article/details/115091313
https://www.cnblogs.com/tkx1914/p/16152899.html
https://blog.csdn.net/u011537073/article/details/82685586
https://blog.csdn.net/weixin_45150813/article/details/117719084
https://blog.csdn.net/xcsxchen/article/details/129556541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值