• 20199108 2019-2020-2 《网络攻防实践》第6周作业


    1.实践内容

    1.1安全模型:

    PDR模型 是一个基于时间的动态安全模型
    PPDR模型 PDR进一步发展得到ppdr模型 安全策略是模型的核心

    1.2防火墙

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

    不足:
    对于网络内部的安全威胁,则无法进行监视和控制
    通过非法外联的网络攻击
    计算机病毒传播

    防火墙技术和产品
    包过滤技术:将不符合的安全策略数据包阻挡住网络的外部。
    基于状态检测的包过滤技术: 需要跟踪数据包的网络连接状态
    代理技术:允许客户端通过它与另一个网络进行非直接的连接。包括:应用层代理技术、电路代理技术、nat代理技术。

    产品:windows个人防火墙、netfilter/iptables
    netfilter/iptables工作原理:
    netfilter是Linux内核中实现的防火墙功能模板
    iptables则是应用态的防火墙管理工具

    netfilter/iptables中包含三个最基本的规则表:

            - 包过滤处理的filter表
            - 网络地址转换处理的nat表
            - 数据包修改的mangle表
    

    iptables的命令语法为
     iptables [-t table] command [match] [target]
     -t 指定配置规则所在的表
     command 是iptables命令的最重要部分, 告诉iptables命令要做什么  
      match为规划匹配条件
     target对于那些规则匹配的数据包执行的处理操作
    

    1.3网络检测技术与系统

    入侵检测:顾名思义就是对入侵的行为检测与发现

    评估指标:
    检测率:系统捕获的攻击行为数目和全部攻击数目之比
    误报率:入侵系统对正常行为的的误报数与入侵检测系统所输出的全部报警数目之比
    
    检测技术:
    误用检测:也称特征检测,假设所有的入侵行为都有可以被检测的特征。通过收集已知入侵行为的特征,形成指纹库,对每个行为进行比对来判定是不是入侵
    异常检测:入侵者的行为与正常的用户行为具有差异性,是建立在正常的轮廓下,若差异超过指定的阈值,则进行入侵报警
    

    开源系统sonrt
    snort的特性与基本架构
    基本构架:
    1、数据包嗅探/解码器:进行数据包的监听和捕获
    2、预处理器/插件:该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎
    3、检测引擎/插件:该模块是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块
    4、输出模块/插件:经检测引擎检查后的Snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket、WindowsPopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库

    snort规则分为规则头和规则选项两部分

    规则头:
    pass—动作选项pass将忽略当前的包,后继捕获的包将被继续分析
    log—动作选项log将按照自己配置的格式记录包
    alert—动作选项alert将按照自己配置的格式记录包,然后进行报警。它的功能强大,但是必须恰当的用,因为如果报警记录过多,从中攫取有效信息的工作量增大,反而会使安全护工作变效
    dynamic—动作选项dynamic是比较独特的一种,它保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包
    activate—动作选项activate功能强大,当被规则触发时生成报警,并启动相关的dynamic类型规则
    规则体:
    规则体的作用是在规则头信息的基础上进一步分析,有了它才能确认复杂的攻击

    2.实践过程

    #1
    配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
    (1)过滤ICMP数据包,使得主机不接收Ping包;
    (2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问。
    
    主机 ip地址
    kali 192.168.92.2
    Linux MetaSploitable 192.168.92.5
    SEED Ubuntu 192.168.92.4

    (1) 首先使用 seed ping接kali ,此时可以ping通

    在kali中输入:

    iptables -A INPUT -p icmp -j DROP #使得主机不接受icmp的数据包
    

    此时再尝试ping接,失败

    输入iptables -L查看规则,看到不接受icmp的数据包的规则

    配置成功
    最后输入iptables -F删除自定义规则,此时又可ping通

    (2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问。
    使用kali与seed进行telnet连接,此时可以连接

    在seed中输入:(要先提权)sudo su
    iptables -P INPUT DROP #拒绝一切的数据包流入
    iptables -A INPUT -p tcp -s 192.168.92.2 -j ACCEPT #接受来自kali的数据包


    此时,kali与seed可以telnet连接,meta无法与seed进行telnet连接

    设置成功
    最后执行 iptables -F和iptables -P INPUT ACCEPT两条指令恢复之前的状态。

    #2
    使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明
    

    将之前实验使用过的listen.pcap文件拖拽入kali桌面,输入命令:

    snort -r listen.pacp -c /etc/snort/snort.conf -K ascii #对listen.pacp进行入侵检测
    

    看到检测出的数据包大多为Tcp数据包

    在/var/log/snort/目录下打开alert文件,得到很多其他信息
    或者用此命令行:vim /var/log/snort/alert

    #3分析蜜网网关的防火墙和IDS/IPS配置规则。
    分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明蜜网网头是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。具体分析配贺规则与启动项文件包括:
    (1)防火墙(netfilter+IPTables) : /etc/init.d/rc.firewall;
    (2)入侵检测系统(Snort) : /etc/init.cl/hflow-snort与/etc/snort/snort.conf;
    (3)入侵防御系统(Snort_inline) : /etc/init.cl/hflow-snort_inline与/etc/snort_inline/snort_ inline.conf。
    分析内容如下:
    (1)上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
    (2)获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
    (3)蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
    (4)Bonus: 蜜网网关中的Snort规则是如何自动升级的?
    
    

    实操
    根据作业要求选择在蜜网中进行下列操作。
    针对(1),有:
    数据控制一般包括防火墙对数据的控制和IPS对异常数据的限制(snort_inline),首先使用su -进行提权,然后使用vim /etc/init.d/rc.firewall查看三链:黑名单、白名单和防护名单(FenceList)。


    在上述功能上,增加了:

    防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
    对于属于白名单的主机,接受且不记录。
    对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。

    针对(2),有:
    (I) IPTables的实际规则列表:数据捕获主要包括防火墙日志记录和snort网络流记录。通过iptables -t filter -L来查看规则列表。不难发现,默认的规则入OUTPUT、INPUT、FORWARD都已经被关闭了,取而代之的是一些自定义的规则(包括之前配置Roo的一些参数也反映在规则表上)。

    (II)Snort实际执行参数:通过vim /etc/init.d/snortd打开Snort脚本文件,观察第一张图可以看到一开始是一些参数的选项,第二张图对应实际运行时候的参数。在指定网卡接口后,如果没有其他参数,将按照默认参数运行。比如默认不开启-A模式,默认使用/etc/snort/snort.conf(默认目录config文件)、eth0、二进制模式保存log文件等。


    (III) Snort_inline实际执行参数:通过vim /etc/init.d/hw-snort_inline打开Snort_inline脚本文件,可以观察到实际运行的参数,以及在最前面定义的参数。
    (III) Snort_inline实际执行参数:通过vim /etc/init.d/hw-snort_inline打开Snort_inline脚本文件,可以观察到实际运行的参数,以及在最前面定义的参数。

    针对(3),有:
    通过指令chkconfig --list | grep [服务]来查询当前服务是不是开启的。chkconfig命令主要用于检查设置系统的各种服务。我们发现防火墙和NIPS(snort_inline)是跟随系统启动的,并且开机自动配置刚才的脚本文件。NIDS是需要手动启动的。

    针对(4),有:
    使用vim /etc/honeywall.conf打开honeywall配置文件,这个里面可以看到很多东西:之前安装roo时配置的IP地址、白名单黑名单的位置、snort规则更新的地方等。我们可以看到Oinkmaster字样,通过查询,这个果然是个自动更新的软件。通过观察,我们发现自动更新是默认关闭的

    然后我们在当前目录下打开oinkmaster.conf文件,可以看到文件有较为详尽的注释。

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

    • 问题1:在蜜罐进行指令操作时,发现无法上翻页面。这个问题在上次作业Metasploitable2中也出现过。
      问题解1决方案:经过百度检索,发现翻页指令为shift+pgup/pgdn。
      问题2:好多次tcp还有telnet都不能进行。
      问题2解决方案:没有提权 sudo - ;

    4.实践总结

    本次实践以分析内容偏多,做起来有些吃力,借鉴了一些同学的博客之后才有所进展。

    参考资料

  • 相关阅读:
    OpenResty 实现限流
    Java+Selenium——处理Alert弹窗
    openresty+lua做接口调用权限限制
    Nginx反爬虫: 禁止某些User Agent抓取网站
    pycharm Python error: PermissionError: [Errno 13] Permission denied:
    could not build theproxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512or proxy_headers_hash_bucket_size: 64 解决 OpenResty
    js数组中去除重复值的几种方法
    20Jan2022 20:08:58.201 信息 [catalinaexec40] org.apache.coyote.AbstractProcessor.parseHost [${ip}:${port}] 是无效主机
    检测Selenium的js代码例子:
    Nginx教程配置文件详解
  • 原文地址:https://www.cnblogs.com/tqlzpg/p/12621125.html
Copyright © 2020-2023  润新知