zoukankan      html  css  js  c++  java
  • 20199111 2019-2020-2 《网络攻防实践》第六周作业

    20199111 2019-2020-2 《网络攻防实践》第六周作业

    1.实践内容

    1.1安全模型

    • 静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。

    • PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。

    • P2DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。

    1.2防火墙技术

    防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标

    Linux系统中提供了开源的netfilter/iptables解决方案,可以帮助网络管理员在自己的网络中快速实施防火墙边界保护。具体提供:

    • 检查控制进出网络的网络流量

    • 防止脆弱或不安全的协议和服务

    • 防止内部网络信息的外泄

    • 对网络存取和访问进行监控审计

    • 防火墙可以强化网络安全策略并集成其他安全防御机制

    netfilter/iptables工作原理:

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

    netfilter/iptables中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于网络地址转换处理的nat表,以及用于特殊目的数据包修改的mangle表

    iptables的命令的语法为:

    iptables -t [table] command [match] [target] 
    
    -t指定配置规则所在的表
    
    command部分是iptables命令的最重要部分,它告诉iptables命令要做什么
    
    Match部分为规则匹配条件,指定数据包与规则匹配所应具有的特征,匹配条件分为两大类:通用匹配和特定协议匹配,通用匹配为可用于采用任何协议的数据包进行的匹配条件
    
    Target部分指定满足匹配条件之后的目标操作,即对与那些规则匹配的数据包执行的处理操作
    

    防火墙也有不足,由于它的先天而无法防范的有:

    • 来自网络内部的安全威胁

    • 通过非法外联的网络攻击

    • 计算机病毒传播

    由于技术瓶颈技术而无法防范的有:

    • 针对开放服务安全漏洞的渗透攻击

    • 针对网络客户端程序的渗透攻击

    • 基于隐蔽通道进行通信的特洛伊木马或僵尸网络

    1.3网络入侵检测

    评估指标:

    • 检测率:系统捕获到的攻击行为与全部攻击行为比值

    • 误报率:对正常行为的误报数与全部报警数的比值

    检测技术:

    • 误用检测:假设所有的入侵行为都有可以被检测的特征。通过收集已知入侵行为的特征,形成指纹库,对每个行为进行比对来判定是不是入侵

    • 异常检测:假设入侵者的行为和正常用户的行为具有差异,利用这些差异可以检测出入侵行为

    Snort 体系结构:

    • 数据包嗅探模块——负责监听网络数据包

    • 预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎

    • 检测模块——该模块是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块

    • 报警/日志模块——经检测引擎检查后的Snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket、WindowsPopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库

    Snort的每条规则都可以分成逻辑上的两个部分:规则头和规则体

    规则头:

    • pass—动作选项pass将忽略当前的包,后继捕获的包将被继续分析

    • log—动作选项log将按照自己配置的格式记录包

    • alert—动作选项alert将按照自己配置的格式记录包,然后进行报警。它的功能强大,但是必须恰当的用,因为如果报警记录过多,从中攫取有效信息的工作量增大,反而会使安全防护工作变得低效

    • dynamic—动作选项dynamic是比较独特的一种,它保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包

    • activate—动作选项activate功能强大,当被规则触发时生成报警,并启动相关的dynamic类型规则

    规则体:

    规则体的作用是在规则头信息的基础上进一步分析,有了它才能确认复杂的攻击

    下面是一个规则实例

    alert tcp !192.168.0.1/24 any ->any 21 (content:"USER";msg: "FTP Login";)
    
    alert表示规则动作为报警
    
    tcp表示协议类型为TCP协议
    
    !192.168.0.1/24表示源IP地址不是192.168.0.1/24
    
    第一个any表示源端口为任意端口
    
    ->表示发送方向操作符
    
    第二个any表示目的IP地址为任意IP地址
    
    21表示目的端口为21
    
    content:"USER"表示匹配的字符串为“USER”
    
    msg:"FTPLogin"表示报警信息为“FTPLogin”
    

    2.实践过程

    2.1防火墙配置

    机器 IP地址
    Kali 192.168.6.3
    MetaSploitable Linux 192.168.6.125
    SEED Ubuntu 192.168.6.5

    2.1.1过滤ICMP数据包,使主机不接受ping包

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

    在kali中输入:

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

    此时再尝试ping接,失败

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

    配置成功

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

    2.1.2只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问

    使用kali与seed进行telnet连接,此时可以连接

    在seed中输入:

    iptables -P INPUT DROP #拒绝一切的数据包流入
    
    iptables -A INPUT -p tcp -s 192.168.6.3 -j ACCEPT #接受来自kali的数据包
    

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

    设置成功

    同上进行自定义规则删除

    2.2Snort

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

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

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

    在/var/log/snort/目录下打开alert文件,得到很多其他信息

    2.3分析蜜网网关的防火墙和IDS/IPS配置规则

    • 数据控制

    打开iptables配置文件,输入:

    vim /etc/init.d/rc.firewall
    


    • 对于属于黑名单的主机,丢弃所有包

    • 对于属于白名单的主机,接受数据包

    • 对于属于防护名单中的,是不允许被外部访问的蜜罐主机

    • 输入iptables -L可以查看实际规则列表,看到默认的规则OUTPUT、INPUT、FORWARD都已经被关闭了

    • 输入vim /etc/init.d/snortd,查看snort的脚本文件,可以看到实际运行时候的参数

    • 输入vim /etc/init.d/hw-snort_inline 打开snort_inline的脚本文件,可以获取Snort_inline实际执行参数

    • 输入chkconfig --list | grep [服务]来查询当前服务是不是开启的,可以看到防火墙和NIPS(snort_inline)是跟随系统启动的,NIDS是需要手动启动的

    • 输入vim /etc/honeywall.conf,打开honeywall配置文件,可以看到snort默认为不自动更新

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

    • 问题1:2.3中部分指令无法执行

    • 问题1解决方案:获取更高权限(仍有无法执行的命令还未解决)

    4.实践总结

    本次实验操作部分偏少,分析内容偏多,做起来有些吃力,借鉴了一些同学的博客之后才有所进展,还需继续加深原理方面的理解。

    参考资料

  • 相关阅读:
    MFC中char*,string和CString之间的转换(待补充)
    Gem/Bundle/Rvm
    Ruby开发入门
    Maven原型骨架及常见问题
    Nginx Upstream模块源码分析(上)
    mysqldump的几个主要选项探究
    探索Antlr(Antlr 3.0更新版)
    Maven2插件开发入门
    说说家乡的互联网-沈阳
    Nginx模块之SessionSticky
  • 原文地址:https://www.cnblogs.com/yumiao9111/p/12643151.html
Copyright © 2011-2022 走看看