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


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
    这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589
    我在这个课程的目标是
    这个作业在哪个具体方面帮助我实现目标 熟悉了解防火墙技术
    作业正文 1.知识点梳理、2.实验内容、3.学习感悟、思考等
    其他参考文献 见正文最后部分

    1 知识点梳理

    1.1 信息安全

    信息安全金三角:机密性、完整性和可用性
    传统的静态安全技术及方法:防火墙,加密、身份认证

    检测机制:是动态响应和加强防护的依据,是强制落实安全策略的工具,通过不断地检测和检测网络和系统,发现新的威胁和弱点,并通过循环反馈来及时做出有效的响应。
    检测技术:入侵检测和漏洞评估
    响应措施主要包括:应急处理,备份恢复,灾难恢复

    2 实验内容

    2.1 防火墙技术

    防火墙:置于不同的网络安全领域之间,对网络流量或访问行为实施访问控制的安全组件或设备,在技术范畴上,防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全免受非法访问和破坏的安全目标。

    根据网络协议栈层次,防火墙技术可以分为包过滤(网络层)电路级网关(传输层)应用层代理技术(应用层)

    基本功能:控制在计算机网络中不同信任程度网络域之间实施网络安全访问控制。

    防火墙提供的安全功能

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

    防火墙的不足

    • 1)来自网络内部的安全威胁;
    • 2)通过非法外联的网络攻击;
    • 3)计算机病毒传播。

    技术瓶颈问题

    • 1)针对开放服务安全漏铜的渗透攻击;
    • 2)针对网络客户端程序的渗透攻击;
    • 3)基于隐蔽通道进行通行的特洛伊木马或僵尸网络。

    2.2 防火墙部署方法:

    包过滤路由器:将带有包过滤防火墙功能的路由器作为内部网络和外部网络之间唯一的连接点,路由器在完成其数据包路由转发基本功能的同时,将依据网络管理员配置的访问控制列表,对数据包进行过滤。

    • 优势:成本低、易于使用等。
    • 缺点:如配置不当的路由器可能受到攻击,而一旦包过滤路由器被渗透攻陷,那么内部网络上所有系统都会完全暴露在攻击者面前、可以针对包过滤路由器允许开放的主机和服务进行攻击等。


    双宿主堡垒主机:与包过滤路由器非常相似,不同的是使用应用代理网关作为双素质堡垒主机,代替包过滤路由器。垒主机具有两个网络接口,一个使用公网IP地址连接外部网络,另一个使用私有IP地址连接内部网络,两个网络接口之间并不具备路由转发功能,而仅仅由应用代理服务器程序为特定的网络应用提供代理。

    • 优势:双宿主堡垒主机模式对外屏蔽了内部网络的信息,并可通过应用代理服务器中实现的访问控制机制提供用户级的身份认证和行为审计,此外还可通过对数据内容的严格检查提供了强大的安全特性。

    • 不足:一方面对内部网络对外的网络访问控制过于严格,只能允许访问应用代理所支持的一些网络应用协议,一般只能用于安全要求很高的企业用户单位:另一方面双宿主堡垒主机通常会运行在一个通用操作系统平台上,其自身安全维护变得相对复杂,一旦这个堡垒主机被攻击者攻破,内部网络也将全面地暴露在攻击者面前。

    屏蔽主机:包过滤防火墙和应用代理技术的集成部署,采用了屏蔽路由和堡垒主机双重安全设施,所有进出内部网络的数据都要经过包过滤防火墙和堡垒主机,由包过滤防火墙进行网络层的访问控制,由堡垒主机进行应用安全控制,保证了网络层和应用层的双重安全。

    • 优势:这是一种很可靠的设计,网络攻击者必须穿透防火墙和堡垒主机才能够到达内部网络。除了为内部网络提供互联网接入之外,如果还想向互联网提供一些外部服务,如Web服务等,也可以在包过滤防火墙之后,在与应用代理服务器同一的网段内放置这些服务器
    • 不足:但如果对外开放的服务器被攻破,内部网络也将暴露给攻击者。

    屏蔽子网:是在屏蔽主机模式的基础上进行改进的防火墙部署模式。它与屏蔽主机模式的区别在于在应用代理及对外服务器所构成网段和内部主.机之间安装了第二个包过滤防火墙,应用代理及对外服务器所处的网段也被称为DMZ(非军事区)。在这种部署模式中,内部的包过滤防火墙能够在应用代理和对外服务器被攻破之后提供对内部网络的进一步安全防护能力。

    2.3 Linux开源防火墙:netfilter/iptables

    netfilter:是Linux内核中实现的防火墙功能模块,实现了静态包过滤和状态报文检查(动态包过滤),也支持灵活可扩展的框架,支持NAT网络地址转换等其他额外功能,此外也支持一个灵活可扩展的框架

    iptables是应用态的防火墙管理工具框架,支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展。

    三个最基本的规则表:包过滤处理的filter表、用于网络地址转换处理的nat表、以及用于特殊目的数据包修改的mangle表

    netfilter/itables的缺省规则表/链

    fileter表
    INPUT发往本地的数据包进行过滤处理
    OUTPUT本地发出的数据包进行过滤处理
    FORWARD经过主机进行路由转发的数据包进行过滤处理
    nat 表
    PREROUTING对未经路由选择的数据包转换其目标IP地址和端口
    POSTROUTING对已经过路由选择的数据包进行源IP地址和端口转换
    OUTPUT规则链针对本地数据包进行目标IP地址和端口转换
    mangle 表

    针对数据包头部信息进行特殊地修改,如设置TOS值,标记数据包,用于策略路由、网络流量整形等一些目的

    五种规则链

    • PREROUTING规则链的规则检查点为NF_ IP PRE
      _ROUTING,能够对所有进入主机的数据包进行检查,通常用于源地址NAT转换处理;
    • INPUT规则链的检查点在NF_ IP_ LOCAL_ IN,
      对发往本地网络协议栈、由本地进程处理的数据包进行检查,通常用于过滤本地网络服务的连接;
    • FORWARD规则链的检查点在NF_ IP_
      FORWARD,对经由本地进行路由转发的数据包进行检查,在本机作为路由器使用时,对通过的网络连接进行过滤,这个Hook点也是实现防火墙包过滤最主要的位置:
    • POSTROUTING规则链的检查点在NF_ IP POST
      _ROUTING,对本地协议栈发出和经由路由转发的数据包进行检查和处理,通常用于目的地址NAT转换;
    • OUTPUT链的检查点在NF_JIP_LOCAL_OUT,特别针对由本地进程通过本地TCP/IP协议栈发出的数据包进行检查。可以配置本地对外访问的限制措施以及目的网络地址转换处理。

    主要语法iptables [-t table] command [match] [target]

    其中-t是配置规则所在的表,缺省表包括filternatmanglerawcommand部分是告诉iptables要做什么。
    command:
    -A --append:命令将一条规则附加到链的末尾

    -D --delete:指定匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则

    -P --polic:设置链的缺省目标操作,所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。
    -N --new-chain:用命令中所指的名称创建一个新链。

    -F --flush:如果指定链,该命令删除链中所有的规则,如果为指定链名,该命令删除所有链中所有的规则,此参数用于快速清除。
    -L --list:列出指定链中所有的规则。
    target

    ACCEPT:当信息包与具有ACCEPT目标操作的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历规则链。该目标操作被指定为-j
    ACCEPT。
    DROP:当信息包与具有DROP目标操作的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。
    该目标操作被指定为-j DROP。
    REJECT:
    该目标操作的工作方式与DROP目标操作类似,但与DROP不同的是,REJECT
    不会在服务器和客户机上留下死套接字。另外,REJECT
    将错误消息发回给数据包的发送方。该目标操作被指定为j REJECT。
    RETURN:在规则中设置的RETURN目标操作让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为-jumpRETURN。

    入侵检测技术

    • 基于主机的入侵检测系统(HIDS):一般用来监视主机信息,其数据源通常包括操作系统审计记录,系统调用序列、应用程序审计信息等。
    • 基于网络的入侵检测系统(NIDS):以其监听到的网络数据包作为分析数据源。
    • 分布式入侵检测系统(DIDS):融合了两者作为其组成部分,并通过集中式、层次分布式或完全分布式的融合分析提高检测系统的覆盖面和有效性。

    3 实践过程

    实践一

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

    上面这个表格是这次用到的虚拟机。KALI和SEED当做攻击机,LINUX META当做靶机。网络环境跟上次实验一样,统统是NAT。以下实验已经确保各机器可以互相ping通。

    第一个小实验是过滤ICMP数据包,使得主机不接收Ping包。

    实验原理:给靶机的iptables添加丢弃所有ICMP包的包过滤规则,使得攻击机无法正常ping通靶机。

    1:在KALI上输入如下命令
    iptables -A INPUT -p ICMP -j DROP //-A代表增加规则,-p代表指定协议,-j代表对该规则执行的操作
    2:执行完上面的命令后,试着让SEEDpingkali,发现已经ping不通了

    第二个小实验是让一个攻击机可以访问靶机的某个服务,另一个却访问不了。这里我选择了telnet服务。

    实验原理:给靶机设置包过滤规则,让KALI有权访问靶机的telnet,SEED无法访问。下面说下具体步骤。

    1:首先确保kali和seed可以正常telnet靶机。


    2:在linux meta上设置不接收任何包的规则。命令如下。此时两个攻击机去telnet靶机发现一直处于trying状态
    iptables -P INPUT DROP //-P代表设置缺省目标操作
    3:在linux meta上设置只接受kali的telnet请求策略。如下图
    iptables -A INPUT -s 192.168.200.2 -p tcp -j ACCEPT //-s指代源地址
    可以看到kali可以正常telnet靶机了

    4:最后,清楚之前设置的规则
    iptables -F //F代表flush,清楚规则
    iptables -P INPUT ACCEPT

    实践二

    任务:使用Snort对给定pcap文件进行入侵检测,并对检测出的攻击进行说明
    在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
    Snort运行命令提示如下:

    • 从离线的pcap文件读取网络日志数据源
    • 在snort.conf中配置明文输出报警日志文件
    • 指定报警日志log目录(或缺省log目录=/var/log/snort).

    1.在kali上用snort对listen.pcap文件进行入侵检测。输入如下命令

    snort -r listen.pcap -c /etc/snort/snort.conf -K ascii //-r代表读取,-c代表指定规则文件 -K代表指定输出log的编码格式为ascii,默认是binary
    snort 安装失败

    实践三

    分析虚拟网络攻防环境中密网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明密网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
    具体分析配置规则与启动项文件包括:

    • 防火墙(netfilter+IPTables):/etc/init.d/rc.firewall;
    • 入侵检测系统(Snort):/etc/init.d/hflow-snort与/etc/snort/snort.conf;
    • 入侵防御系统(Snort_inline):/etc/init.d/hflow-snort_inline与/etc/snort_inline/snort_inline.conf;

    上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
    数据捕获:防火墙的记录日志,Snort的网络流
    数据控制:
    查看rc.firewall文件,跳转到create_chain这一行,可以看到有个方法,这里面定义了一些数据控制的逻辑。创建黑名单,白名单,以及对各种协议的处理等。

    获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数
    输入iptables -t filter -L可以看到实际规则列表,如下图。可以看到有许多规则。

    通过 vim /etc/init.d/snortd 打开Snort脚本文件,可以看到监听网卡和存储配置文件的位置。

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

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

    使用chkconfig -list命令来对linux上运行的服务进行查询,可以发现NIDS的0~6都是off,说明是需要手动启动的,而防火墙和NIPS不全是off,是跟随系统启动的。

    Bonus:蜜网网关中的Snort规则是如何自动升级的?
    snort规则通过Oinkmaster进行升级。它在/etc目录下,可以直接查看。

    在这发现对snort.conf有定义,应该就是通过这个升级的

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

    • 问题1:kali虚拟机上安装不了snort
    • 问题1解决方案:网上方法尝试无果

    4.实践总结

    本次学习对防火墙,特别是Linux防火墙有了一个了解,Linux使用上有太多未知的问题。

    参考资料

  • 相关阅读:
    Linux开机自启配置
    django 无限层级的评论
    nginx通过自定义header属性来转发不同的服务
    Python 读取excel指定的列
    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
    Python 判断字符串是否包含中文
    PMM--简介与部署
    Logrotate滚动openresty日志
    promethus监控mysql
    promethus监控nginx
  • 原文地址:https://www.cnblogs.com/fungi/p/12660300.html
Copyright © 2020-2023  润新知