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

    《网络攻防实践》第6周作业

    总体结构

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
    这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589
    我在这个课程的目标是 学习网络攻防知识,增强动手实践能力。
    这个作业在哪个具体方面帮助我实现目标 学习网络防御知识。
    作业正文 见下
    参考文献 [1].iptables详解
    [2].网络攻防实践-诸葛建伟

    1.实践内容

    1.1安全模型

    PDR模型:基于时间的动态安全模型,以经典的不等式P>D+R(防御机制抵御入侵的时间超过检测加响应的时间)为本质基础,并提出安全性可量化和可计算的观点。
    P2DR模型:网络安全=根据风险分析制定安全策略(Policy)+执行安全防护策略(Protection)+实时检测(Detection)+实时响应(Response)

    1.2 网络安全防范技术和系统

    1.2.1 防火墙基础知识

    防火墙:功能:过滤不安全的服务和通信(例如禁止对外部ping的响应)、禁止非授权用户访问内部网络(例如不允许来自特殊地址的通信)、控制对内网的访问方式(例如只允许外部访问网内的WWW、Email服务器)、记录相关的访问事件,提供信息统计、预警和审计功能。防火墙是位于两个(或多个)网络间,实施网间访问控制策略的一个或一组系统,理论上讲,它应满足以下条件:内部和外部之间的所有通信数据流必须经过防火墙、只有符合安全策略的数据流才能通过防火墙、防火墙自身应对渗透(peneration)免疫。
    包过滤防火墙:根据策略确定是否转发数据包,将一些不符合安全策略的数据阻挡在网络边界。工作在网络层.包过滤防火墙的优点:通用性强、效率高、价格低。缺点:仅能够执行较简单的安全策略、过滤规则有时配置复杂、安全性低,仅通过端口管理服务与应用的通信不合理。
    基于状态检测的包过滤技术:安全性高,能够检测所有进入防火墙网关的数据包,根据通信和应用程序状态确定是否允许包的通行。性能高,在数据包进入防火墙时就进行识别和判断,伸缩性好,对用户、应用程序透明。工作在网络层及其以上协议。
    代理技术:客户端先与代理服务器创建链接,接着发出一个另外目标服务器的文件或其他资源的链接请求,代理服务器通过与目标服务器链接或从缓存中取得请求资源,分为应用层代理(应用层)、电路级代理(传输层)、NAT代理技术(网络层)。

    1.2.2 Linux开源防火墙netfilter/iptables介绍

    简介:用户空间的 iptables 制定防火墙规则,内核空间的 netfilter 实现防火墙功能,iptables/netfilter组合才是真防火墙。
    规则:规则是用户预定义的,也是我们常说的防火墙规则,配置防火墙的主要工作就是添加、修改和删除这些规则。由一个目标和很多匹配组成。匹配如interface(e.g. eth0)、协议类型、源IP/端口、目的IP/端口等。目标是用户自定义的链、一个内置的特定目标或者是一个目标扩展,如ACCEPT、DROP、REJECT、SNAT、DNAT等。
    链:链是顺序执行规则的编排方式,在复杂的网络环境中,管理员需求这种可控的、有序执行的规则应用方式。
    iptables 提供了5条链:

    链名 作用
    INPUT 链 输入链。发往本机的数据报文通过此链。
    OUTPUT 链 输出链。从本机发出的数据报文通过此链。
    PORWARD 链 转发链。由本机转发的数据报文通过此链。
    PREROUTING 链 路由前链(Pre-Routing),在处理路由规则(Routing)前通过此链,通常用于目的地址转换(DNAT)。
    POSTOUTING 链 路由后链(Post-Routing),完成路由规则后通过此链,通常用于源地址转换(SNAT)。

    表:表的本质就是规则集的组织形式。iptables提供了以下5种表:

    表名 作用
    filter 表 是默认表,提供数据包的过滤功能,用于防火墙规则。
    nat 表 提供网络地址转换(NAT)功能,用于网关路由器。
    mangle 表 提供数据包修改功能,拆解、修改、重新封装数据包。
    raw 表 关闭 net 表启动的连接追踪机制。
    security 表 用于强制访问控制网络规则。

    下面介绍下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

    1.3 网络监测技术与系统

    入侵检测作为网络防护体系中检测环节的关机支撑技术,已经成为防火墙等网络防御技术的必要补充,能够帮助信息系统应对网络攻击和入侵,扩展了系统管理员的安全感知能力,提高了网络安全防护体系架构的完整性。

    1.3.1 入侵检测技术评估指

    指标 说明
    检测率(True Positive) 指入侵检测系统捕获到的攻击行为数目和全部攻击数目之比
    误报率(False Positive) 指入侵检测系统对正常行为的误报数目与入侵检测系统所输出的全部报警数目之比。

    入侵检测技术
    误用检测(Misuse Detection):也称特征检测,基于所有入侵行为都有可能被检测到的特征,通过收集已知入侵行为的特征并进行描述,构成攻击特征库,然后对收集信息进行特征模式匹配,所有符合特征描述的行为均被视为入侵。
    异常检测:假设入侵者的行为和正常用户的行为具有差异,利用这些差异可以检测出入侵行为。此技术由于误报率较高通常无法单独承担入侵检测任务,而是与无用检测技术结合使用,以提高入侵检测系统的整体检测性能。

    1.3.2 入侵检测系统

    从入侵检测系统的检测数据来源,可以将入侵检测系统分为:
    基于主机的入侵检测系统(Host-based IDS,HIDS):一般用来监视主机信息。
    基于网络的入侵检测系统(Network-based IDS,NIDS):以其监听到的网络数据包作为分析数据源。
    开源网络入侵检测系统:Snort
    概述: Snort IDS(入侵检测系统)是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,Snort是开源的入侵检测系统,并具有很好的扩展性和可移植性。
    Snort的结构由4大软件模块组成

    模块 作用
    数据包嗅探/解码器 负责监听网络数据包,对网络进行划分
    预处理器/插件 用相应的插件来检查原始数据包,从中发现原始数据的“行为”,经过预处理后才传到检测引擎
    检测引擎/插件 核心模块。当数据包从预处理器送来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警
    输出模块/插件 经检测引擎检查后的Snort数据需要以某种方式输出

    2.实践过程

    实践一:防火墙配置

    配置Linux平台上的iptables,完成如下功能并测试
    过滤ICMP数据包,使主机不接受ping包。
    只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问。
    
    iptables -A INPUT -p icmp -j DROP
    

    指令详解:-A是追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。
    如图所示,开始可以ping通,执行指令后无法ping通

    两种方法恢复访问

    iptables -F //清除规则
    iptables -A INPUT -p icmp -j ACCEPT//恢复接受
    
    
    iptables -P INPUT DROP
    

    指令拒绝一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都无法进行访问。

    iptables -A INPUT -p icmp-s 192.168.200.9 -j ACCEPT
    

    运行192.168.200.9ping本机。xp(192.168.200.9)机器可以,kali(192.168.200.108)不可以

    实践二:Snort

    任务:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明
    安装snort

    sudo apt-get install snort
    

    给予snort.conf可读可写可执行权限

    sudo chmod 777 /etc/snort/snort.conf
    

    对listen.pcap进行入侵检测

    sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap
    //-A是开启报警模式,-q为不显示状态报告,-r为从pcap格式的文件中读取数据包,-u为初始化后改变snort的UID,
    
    sudo su //由于该文件夹需要su权限
    cd /var/log/snort/ //alert位于此文件夹内
    vim alert
    

    查询结果如下

    发现存在nmap嗅探攻击。也看见了主机存在的一些漏洞。例如隐私泄露拒绝服务攻击等等。

    实践三:分析蜜网网关的防火墙和IDS/IPS配置规则。

    具体分析配置规则与启动项文件包括:防火墙(netfilter+IPTables)入侵检测系统(Snort)、入侵防御系统(Snort_inline)。

    上述脚本是如何实现蜜网网关的数据捕获和数据控制机制。

    用户空间的 iptables 制定防火墙规则,内核空间的 netfilter 实现防火墙功能,iptables/netfilter组合才是真防火墙。
    **数据捕获:

    su -
    vim /etc/init.d/rc.firewall
    

    黑名单、白名单、防护名单

    对于属于黑名单的主机,丢弃所有包
    对于属于白名单的主机,接受数据包
    对于属于防护名单中的,是不允许被外部访问的蜜罐主机
    不同协议的规则

    获取IPTabes的实际规则列表、Snort和Snort——inline的实际执行参数。

    iptables -L
    

    可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了。存在一些自定义的CHAIN。如下图所示。




    vim snortd
    

    下图为snort参数

    vim hw-snort_inline
    

    执行参数如下可以看到 -c -d -D -Q -l 等参数及其说明

    蜜罐开机之后,防火墙、NIDS、NIPS是如何启动的

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

    Snort规则如何自动升级

    在/etc目录下使用指令vim honeywall.conf打开honeywall配置文件

    打开oinkmaster.conf文件,可以看到更新文件

    使用oinkmaster更新snort规则。首先在snort.org注册账号得到oink code。
    使用命令vi /etc/oinkmaster.conf查看oinkmaster配置文件,找到Example for Snort 2.4,删掉注释,修改url =http://www.snort.org/pub-bin/oinkmaster.cgi/你的oink code/snortrules-snapshot-2.4.tar.gz
    使用命令oinkmaster -C /etc/oinkmaster.conf -o /etc/snort/rules即可将规则更新到最新版本

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

    • 问题1:直接访问路径时文件空白
    • 解决:是因为权限不够,但是并不会给提示。需要 su-提权
    • 问题2:无法翻页
    • 解决:鼠标滑轮是不好用的,上下键加shiif也不行,最后发现键盘上还有page up键配合shift就可以翻页了。

    4.实践总结

    配置文件中都有大量的注释。

  • 相关阅读:
    python--脚本传参与shell脚本传参(位置参数)
    python--一起来盖个时间戳!!
    python--多线程的应用
    python-局域网内实现web页面用户端下载文件,easy!
    java初始化顺序
    java List<String>的初始化 的一个小问题
    java.util.Queue用法
    C#中的struct(结构)为值类型,struct类型全接触
    Java 实例
    git还原某个特定的文件到之前的版本
  • 原文地址:https://www.cnblogs.com/banpingcu/p/12626988.html
Copyright © 2011-2022 走看看