20211919 《网络攻防实践》第五次作业

一、实践内容
1、防火墙主要分类、功能和不足

2、linux平台的防火墙:netfilter/iptables

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

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地址、范围或端口。

3、Snort

  • snort基本介绍

Snort被设计成一个跨平台、轻量级的网络入侵检测系统,用C语言编写,并采用了标准的捕获数据包函数库libpcap,具有非常好的可移植性。目前Snort可以在包括x86、SPARC、PowerPC、Alpha等指令集平台架构上的Linux、Windows、MAC OS,以及各种UNIX操作系统上运行。
Snort具有强大的功能:数据包嗅探、数据包记录和分析,以及各种入侵检测功能。Snort在设计时采用了注重高性能、简单和灵活的原则,并采用一套源码级插件机制,作为系统扩展的手段。Snort 软件的基本架构主要由四个基本部分组成:
(1)数据包嗅探/解码器( sniffer);
(2)预处理器/插件(preprocessor);
(3)检测引擎/插件(detection engine);,
(4)输出模块/插件(output modules).

  • snort的实现机理

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

4、安全策略

5、本节实践内容

一、防火墙配置
任务要求:配置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文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

二、实践过程
本次实验使用以下虚拟机:

主机 IP MAC
kali (A) 192.168.200.7 00:0c:29:7b:91:5c
攻击机ubuntu (B) 192.168.200.2 00:0c:29:f3:ba:c5
honey (C) 192.168.200.8 -
WinXP(D) 192.168.200.3 -

1、防火墙配置

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

先进行linux下的实验
(1)过滤ICMP数据包,使得主机不接收Ping包
首先在主机B上,首先使用命令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)。

在主机A上,使用命令ping 192.168.200.2,发现不通。

在主机B上,使用命令iptables -F删除自定义规则,在主机A上,再次使用命令ping 192.168.200.2,发现ping通了。

(2)接着实践只允许特定IP访问主机网络服务的问题:
netstat -a是一个dos环境下的命令,在Internet RFC标准中,用来显示所有连接和侦听端口。
netstat -a | grep telnet查看主机A上的telnet服务是否已经打开。

分别测试主机B和主机D是否可以进行telnet登录主机A
telnet 192.168.200.7(其中用户名:kali,密码:kali)

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


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

这时发现主机B是可以正常访问telnet服务的,但是主机C是无法访问的。

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

再进行window下的实验

先打开防火墙,设置ICMP:打开操作面板→windows防火墙→高级→ICMP的设置,把允许传入回显请求对号去掉,kali就ping不通了。
注意:直接勾选时无法显示时,选择还原为默认值后,就可以进行勾选了。


接着实践只允许特定IP访问主机网络服务的问题:
首先确保现在主机A telnet 主机D是通的。

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

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

再次在主机A上连接主机D,发现可以了。

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

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

点击下一步--源地址选择“一个特定的IP地址(Kali:192.168.200.7)”--下一步--目标地址选择“我的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远程访问”——选择“指派”,至此所有工作配置完成,如图。

最后在主机A,主机B上进行验证。发现主机A不可以连接主机D,主机B可以连接主机D。

2、Snort

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

利用指令snort -r /home/kali/Downloads/listen.pcap -c /etc/snort/snort.conf -K ascii对listen.pacp进行入侵检测, 其中-c表示选择snort配置文件,-r表示从pcap格式的文件中读取数据包,-K ascii是用来指定输出日志文件的为ASCII编码。


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

数据流统计:

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

3、分析配置规则

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

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。
具体实践如下:
3.1.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的文件列表,防护日志删除是一个表,用于记录/删除从围栏反弹的数据包。
3.1.2 分析IlPTables
通过iptables -t filter -L | less来查看规则列表,可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了

3.1.3获取Snort实际执行参数
使用命令snort --h查看Snort实际执行参数

或者使用vim /etc/rc.d/init.d/snortd查看文件

可以看到默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,默认存储日志路径为/var/log/snort。

3.1.4获取Snort_inline实际执行参数
执行命令vim /etc/init.d/hw-snort_inline打开snort_inline的脚本文件,可以看到到实际执行的参数

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

3.2 说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的
使用chkconfig --list | grep [服务] 来查看服务开启,0~6分别表示关机、单用户模式、无网络连接的多用户命令行模式、有网络连接的多用户命令行模式、不可用、带图形界面的多用户模式、重新启动。

可以看出iptables和hw-snort_inline在无网络连接的多用户命令行模式下开始启动,而snortd不会自启动。
其次使用vim /etc/honeywall.conf打开honeywall配置文件,来看snort的rule是否自动更新(在文件270+行),默认为不更新。

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

三、学习中遇到的问题及解决
1、在使用netstat -a | grep telnet查看主机A上的telnet服务是否已经打开,没有显示,参考别的同学的报告以后,使用sudo apt-get install openbsd-inetd
sudo apt-get install telnetd安装telnet服务器端的应用程序,从而解决了问题。
2、在利用指令snort -r /home/kali/Downloads/listen.pcap -c /etc/snort/snort.conf -K ascii对listen.pacp进行入侵检测时,由于没有获得root权限而导致失败。
3、蜜罐访问ip时使用ifconfig,显示-bash: ifconfig: command not found,查找资料以后,可以访问,具体方案参考:https://blog.csdn.net/qq_36940806/article/details/100119327
四、学习感想和体会
在进行window平台的防火墙设置时,一开始总是频频出错,但是自己配置一次后,了解了其中的逻辑就觉得其实很简单。此外还学会了snort的使用。

posted @ 2022-04-14 22:31  NingNa  阅读(105)  评论(0编辑  收藏  举报