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

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

1.知识点梳理与总结

1.1 实验内容

一、防火墙配置
任务要求:配置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配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

1.2 实验原理:

1. 安全模型

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

2. 防火墙技术及产品

  • 定义:防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。
  • 功能:
    检查控制进出网络的流量。
    防止脆弱或不安全的协议和服务。
    防止内部网络信息的外泄。
    对网络存取和访问进行监控审计。
    强化网络安全策略并集成其他安全防御机制。
  • 技术:
    包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包(简单、安全功能有限)。
    基于状态检测的包过滤技术:也称动态包过滤。除了使用静态规则进行安全进行安全策略匹配,还进行数据包的网络连接的上下文关系探测,来确定是否允许通信。这种技术相比较传统的包过滤技术安全性更高,数据合法性得到了更有效的保障(对网络性能有一定的影响)。
    代理技术:允许客户端通过代理与网络服务进行非直接的连接,也称“网络代理”。主要是客户端与代理服务器连接,代理服务器再与目标服务器连接。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
  • 部署方法:
    包过滤路由器:带有包过滤防火墙功能的路由器。
    双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
    屏蔽主机:堡垒主机和包过滤的结合。
    屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。

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

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

4. 网络检测技术与系统

入侵检测技术:对入侵行为进行检测与发现,它是防火墙之后的第二道安全屏障。分为误用检测和异常检测。入侵检测系统可分为基于主机的入侵检测系统(HIDS)和基于网络的入侵检测系统(NIDS),这两者可以互相补充成为分布式入侵检测系统(DIDS)。
评估指标:检测率(系统捕获到的攻击行为与全部攻击行为比值)和误报率(对正常行为的误报数与全部报警数的比值)。
技术类型:特征检测(匹配特征库)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
入侵防御系统:也叫内嵌式入侵检测,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。

5. 开源网络入侵检测系统Snort

Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。

四个主要部件

数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。

预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。

检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。

输出模块:进行各种多样化的报警和日志记录。

主要功能:

嗅探模式(从网络上读取数据包,常用命令snort -dev)

数据包记录模式(把数据包记录到硬盘上,常用命令snort -b)

网络入侵检测模式(载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)

2.实践过程

2.1 防火墙配置

  • 实践任务:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
    (1)过滤ICMP数据包,使得主机不接收Ping包;
    (2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192.168.200.4)无法访问。
    过滤ICMP数据包
  1. 查看下IP地址
    kali 192.168.200.2
    windowsXP Attacker 192.168.200.3
    SEEDUbuntu 192.168.200.4
  2. 在SEED上ping kali,ping 192.168.200.2
  3. 在正常状态下可以ping通,在kali上通过iptables -L查看默认规则
  4. 执行iptables -A INPUT -p icmp -j DROP指令使主机不接受icmp的数据包
    再次通过iptables -L查看规则,发现多了一条icmp针对任何位置不允许访问的规则,即在INPUT链中添加将所以有ping连接产生的icmp数据包丢失的规则

    再次通过SEED ping kali,发现ping不通了
  5. 执行iptables -D INPUT -p icmp -j DROP指令除去刚才的过滤规则,再次尝试ping连接发现恢复


    只允许特定IP访问主机网络服务(只允许Kali访问SEED Ubuntu的telnet服务)
  6. 首先,我们确定两台机器都可以进行telnet登陆。

  7. 接下来使用iptables -P INPUT DROP指令拒绝一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都无法进行访问。
  8. 使用指令iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT开启192.168.200.2对本机的tcp服务。并用iptables -L查看规则
  9. 此时我们发现Kali是可以正常访问telnet服务的,但是winXP却是无法访问的。

  10. 最后别忘了执行iptables -Fiptables -P INPUT ACCEPT两条指令恢复之前的状态。

2.2 Snort

  1. 使用之前实验的listen.pcap,利用指令snort -r /home/lxh/down/listen.pcap -c /etc/snort/snort.conf -K ascii对listen.pacp进行入侵检测
  2. 查看输出里检测出的数据包,可以看到大部分数据流为tcp会话,少部分为ARP包报警数据包有10条,均被日志记录,所有数据包都裁决允许:

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

2.3 分析配置规则

  1. 查看防火墙的文件vim /etc/init.d/rc.firewall
    创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链

  2. 获取IPTables的实际规则列表、Snort 和Snort_ inline的实际执行参数
    通过iptables -t filter -L | less来查看规则列表

    查询snort文件vim /etc/rc.d/init.d/snortd

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

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

    蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的
    chkconfig命令主要用于检查,设置系统的各种服务。使用chkconfig -list命令来对linux上运行的服务进行查询。
    根据chkconfig --list | grep [服务]可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。

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

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

  • 问题1:在Ubuntu里iptables -L命令出现 could not insert 'ip_tables'错误
  • 问题1解决方案:加权限,启动iptables
    modprobe ip_tables

4.实践总结

整体不难,分析内容较难,不够清晰,还是多学习多实践。

posted @ 2022-04-12 19:29  20212808刘家兴  阅读(190)  评论(0编辑  收藏  举报