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

这个作业属于哪个课程 :网络攻防实践

这个作业的要求在哪里 : 第六次作业-网络安全防范技术

我在这个课程的目标是 : 学习网络攻防相关技术并进行实践

这个作业在哪个具体方面帮助我实现目标:学习网络安全防范技术及分析

一、实验内容

P2DR 模型


P2DR 模型是在整体的安全策略的控制和指导下,在综合运用防护工具(如防火墙、操作系统身份认证、加密等)的同时,利用检测工具(如漏洞评估、入侵检测等)了解和评估系统的安全状态,通过适当的反应将系统调整到"最安全"和"风险最低"的状态

本章学习的主要内容为网络安全防范技术,对应P2DR模型中“防护”模块,设立在被保护主机与外部网络之间。主要学习了防火墙知识与netfilter/iptables的原理及使用、网络监测技术,Snnort的使用

1、网络安全防范技术与系统


1.1 防火墙

定义

防火墙是一种位于内、外部网络之间的网络安全防护系统,依照特定的规则,允许或是限制传输的数据通过。

功能

防火墙可以在网络协议栈的各个层次上实施网络访问控制机制,控制在计算机网络中不同信任程度网络域之间传送的数据流

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

防火墙技术

包过滤技术、电路级网关技术、应用层代理技术

  • 包过滤技术

 - (静态)包过滤技术工作在网络层,通过对网络层与传输层包头信息的检查(信息包括源地址、目的地址、网络协议号、端口号等),根据用户定义的安全策略规则集,判断是否改转发数据包,以实现数据包的过滤。
 
 优点:实现简单,可在路由器中实现,且无须维护网络连接状态
 
 缺点:仅对单个数据包信息检查,对正确制定规则要求较高,可实现的安全功能有限
 - (动态)包过滤技术仍使用一组静态的规则进行安全策略匹配,但除了检查单个数据包外,还跟踪、维护数据包网络连接状态(属于新连接?是已连接的一部分?非法数据包?),从而实现在网络连接层次上匹配和实施防火墙规则
 
 优点:具有更强大的安全功能,规则设置较简单,且包过滤对用户透明
 
 缺点:实现复杂度高、对网络传输性能影响大,可能受到拒绝服务攻击

  • 代理技术
    网络代理即允许客户端通过它与另一个网络服务进行非直接的连接
技术 工作层 原理 特点
应用层代理技术 应用层 保护应用层网络服务、理解应用层协议数据 不同服务提供不同代理服务器
电路级代理技术 传输层 在中继中检查处理异常数据包、隐藏内部网络信息、身份认证机制 TCP层的中继(客户端与代理建立TCP连接、代理与服务器建立TCP连接)
NAT代理技术 网络层 维护IP-MAC地址映射表,内部网络使用私有网段 内外网络分开

防火墙不足:

作为网络边界防护机制的先天不足:存在来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播的传播

技术瓶颈带来的不足:存在针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击、基于隐蔽通道进行通信的特洛伊木马或僵尸网络

防火墙部署方法:

包过滤路由器:将带有包过滤防火墙功能的路由器作为内、外网的唯一连接

双宿主堡垒主机:应用代理网关作为双宿主堡垒主机,拥有两个网络接口分别连接内、外网

屏蔽主机:包过滤(网络访问控制) + 堡垒主机(应用安全控制)

屏蔽子网:屏蔽主机模式 + 第二个包过滤路由器

1.2 其他网络防御技术

  • VPN(虚拟专用网)
     
    利用大规模网络(如互联网)上的公共网络链路代替企业内部专线构建的安全专用网络,主要采用隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术,通过特殊的加密通信协议,保障连接在互联网上的远程用户和企业分支机构安全通信。
     
     - IPsecVPN:基于互联层安全协议IPsec实现远程接入,工作在网络层
     
     - SSL VPN:使用SSL协议实现远程接入、保障基于Web的通信安全。部署简单,无客户端(不用安装),成本低
     
     - MPLS VPN:采用MPLS技术在骨干的宽带IP网络上构建IP专网

  • 内网安全管理

  • 内容安全管理

  • 统一威胁管理

1.3 Linux开源防火墙:netfilter/iptables的工作原理

netfilter是Linux内核中实现的防火墙功能模块,iptables是应用态的防火墙管理工具。

iptables 工作在 TCP/IP 的网络层,处理的是数据包,存在 “表(tables)”、“链(chain)” 和 “规则(rules)”

  • 指的是不同类型的数据包处理流程
    filter表用于包过滤处理
    nat表用于网络地址转换处理
    mangle表用于特殊目的数据包处理
    raw 表用于关闭 nat 表启动的连接追踪机制
    security 表用于强制访问控制网络规则

  • 每个表中可以存在多个 ,系统按规则将数据包通过某个内建链,例如:将从本机发出的数据通过 OUTPUT 链

  • 链中可以存在若干规则 ,根据规则逐一匹配数据包,实现过滤处理

数据包在协议栈处理时,netfilter会对网络传输的五个hook点(对应5个规则链)进行过滤检查,分别是PREROUTING、FORWOARD、POSTROUTING、INOUT、OUTPUT。不同来源和目的网络的数据包会通过不同的netfilter检查链,并依据iptables在这些规则链上配置的检查、规则对数据包进行操作。

iptables 提供了以下 5 条链:

  • INPUT 链:输入链。发往本机的数据报文通过此链
  • OUTPUT 链:输出链。从本机发出的数据报文通过此链
  • PORWARD 链:转发链。由本机转发的数据报文通过此链
  • PREROUTING 链:路由前链(Pre-Routing),在处理路由规则(Routing)前通过此链,通常用于目的地址转换(DNAT)
  • POSTOUTING 链:路由后链(Post-Routing),完成路由规则后通过此链,通常用于源地址转换(SNAT)
    NOTE:用户也可以加入自己定义的链,从而使规则集更有效并且易于修改

每个hook函数都可以返回以下五种处理结果之一:

  • ACCEPT – 允许经过网络协议栈,继续正常传输数据报
  • DROP – 丢弃该数据报,不通知发送方
  • STOLEN – 保持数据包直到特定条件后处理(这个数据包以及它独自的sk_buff数据结构仍然有效,只是回调函数从netfilter获取了该数据包的所有权)
  • QUEUE – 通过nf_queue机制将数据包传送至应用层供上层应用处理
  • REPEAT – 使得数据包再次进入hook检查点

2. 网络检测技术与系统


检测:通过不断地检测和监控网络系统,来发现新的威胁和弱点,通过循环反馈来及时做出有效的响应。当攻击者穿透防护系统时,检测功能就发挥作用,与防护系统形成互补

2.1 入侵检测技术评估指标

检测率:入侵检测系统捕获到的攻击数目与所有攻击数目之比

误报率:入侵检测系统对正常行为的误报数目与全部报警数目之比

2.2 入侵检测技术

可靠完备地收集关键信息(以操作系统日志记录为主),再进行信息分析,从识别出攻击行为

误用检测: 也称特征检测,基于所有入侵行为都有可能被检测到的特征,通过收集已知入侵行为的特征并进行描述,构成攻击特征库,然后对收集信息进行特征模式匹配,所有符合特征描述的行为均被视为入侵

异常检测: 假设入侵者的行为和正常用户的行为具有差异,利用这些差异可以检测出入侵行为。此技术由于误报率较高通常无法单独承担入侵检测任务,而是与无用检测技术结合使用,以提高入侵检测系统的整体检测性能

2.3 入侵检测系统分类与部署

基于主机的入侵检测系统(HIDS): 监视主机信息,其数据源通常包括操作系统审计记录、系统调用序列应用程序审计信息等

基于网络的入侵检测系统(NIDS): 以监听到的网络数据包作为分析数据源

2.4 Snort入侵检测系统

Snort IDS是一个强大的网络入侵检测系统,它具有强大的功能:数据包嗅探、实时数据流量分析和记录IP数据包,能够进行协议分析,对网络数据包内容进行搜索/匹配等;它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,Snort采用了标准的捕获数据包函数库libpcap,具有很好的扩展性和可移植性

Snort四大基本组成:

  1. 数据包嗅探——负责监听网络数据包,对网络进行协议分析

  2. 预处理——用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等

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

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

Snort拥有三大基本工作模式:

  1. 嗅探器模式仅从网络上读取数据包并作为连续不断的流显示在终端上,常用命令snort -dev

  2. 数据包记录器模式是把数据包记录到硬盘上,常用命令snort -b

  3. 网络入侵检测模式是最复杂的,而且是可配置的。我们可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作

入侵模式需要载入规则库才能工作。在入侵模式下,Snort并不记录所有捕获的包,而是将包与规则对比,当包与某个规则匹配的时候,才会记录日志或产生报警;如果包并不与任何一个规则匹配,那么就丢弃包,不做任何记录

Snort规则 =规则头(规则行为、协议、源信息、目的信息) + 规则体

(书中有具体实例,不再此总结了)

3. 网络安全事件响应技术

网络安全事件响应是P2DR模型中“响应”环节的关键技术手段,具体关键技术包括计算机取证、攻击追溯与归因、备份恢复与灾难恢复等

二、实践过程


作业一:(1)过滤ICMP数据包,使得主机不接收Ping包

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

iptables为用户提供了配置netfilter规则的命令行接口,命令语法为 iptables [-t table] command [match] [target]

table制定配置规则所在表,command为对规则进行的操作,match为规则匹配条件,target指满足匹配条件后的操作。具体的iptables命令使用方法书中给出了一部分,也可以参考Linux iptables常用命令

实验中常用command总结:

-P:定义默认规则
-L:查看规则列表
-A:在规则列表的最后增加一条规则
-I:在指定的位置插入一条规则
-D:在规则列表中删除一条规则
-R:替换规则列表中的某条规则
-F:删除表中所有规则

实验配置

主机 IP地址
主机SEED_Ubuntu 192.168.1.105
攻击机kali 192.168.1.106
Metasploitable2_Linux 192.168.1.108
  • 先用kali机ping主机 SEED_Ubuntu,发现可以连通

  • 在SEED_Ubuntu主机中可使用 whereis iptables 命令查看系统是否安装防火墙

  • 使用 iptables -A INPUT -p icmp -j DROP 命令将规则附加到INPUT链末尾,规则意思是丢弃ICMP协议的数据包,这是最关键的一步

  • 在SEED_Ubuntu主机中使用 iptables –L 查看所有规则(也可以使用iptables –L INPUT查看INPUT链的规则),可以在INPUT链中看到刚刚添加的ICMP包的规则

  • 用kali机在ping一次,Ping不通了,一直卡在这里,说明ICMP协议数据包都被过滤了

  • 实验结束,别忘了使用 iptables –D INPUT 1 命令删除INPUT链中第一条规则(即刚才设置的ICMP规则),还原设置

第二个实验:只允许kali访问SEED主机的某一网络服务,而其他的IP地址无法访问

  • 首先分别在kali和Metasploitable2_Linux上使用telnet访问SEED_Ubuntu

  • 使用 iptables -A INPUT -p tcp -s 192.168.1.106 -j ACCEPT 命令,在INPUT链中添加规则,仅允许kali以telnet协议访问SEED主机(上一章学习过,telnet访问的本质是tcp连接),这里 -A 表示append,-p 表示协议,-s 表示源地址,-j ACCEPT表示遇到符合规则设置数据包就接受

  • 使用 iptables -P INPUT DROP 命令,丢弃与INPUT链中所有规则都不匹配的数据包,实现其他IP地址无法访问

  • 在kali中使用telnet访问SEED主机,可以访问

  • 在Metasploitable2_Linux中使用telnet访问SEED主机,一直卡在这里,说明不可以访问

  • 实验结束,别忘了使用iptables –F 命令删除所有自定义的规则,还原配置

作业二:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明

Snort运行命令提示:

从离线的pcap文件读取网络日志数据源

在snort.conf配置明文输出报警日志文件

指定报警日志log目录

  • 使用 snort -r listen.pacp -c /etc/snort/snort.conf -K ascii 命令对listen.pcap文件进行入侵检测,-r 表示读入文件,-c 表示配置文件 –K指定输出编码格式
  • 可以看到一共捕捉到135580个数据包,通过eth网络接口嗅探,大部分包使用TCP/IP4协议,还有少量的UDP\ARP协议包

  • 在Action stats部分可以看到少量alerts(警告)、logged状态

  • 在/var/log/snort/目录下可以查找到alert文件,这个文件即输出的日志文件

  • 在alert报警日志中,可以看到有snmp (简单网络管理协议)请求 tcp、nmap发起的攻击,附加一些数据包流向、端口、时间戳等信息


任务三:分析蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙喝入侵检测技术完成其攻击数据捕获和控制需求

- 上述脚本是如何实现蜜网的数据捕获和数据控制?

- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。

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

- Snort规则是如何自动升级的?

  • 我的理解是rc.firewall文件的配置实现了数据控制,snort.conf等文件的配置实现了数据捕获,具体分析如下

  • 根据书中实验提示,使用 vim /etc/init.d/rc.firewall 命令,在蜜罐网关中以root身份打开iptables rc.firewall文件,看到了很多规则,我的大概理解就是文件里有很多if条件,根据不同的情况,使用iptables命令加以处理,从而实现数据控制

  • 比如flush函数里有 iptables –F 删除某个链中的规则、 iptables –X 删除自定义的表相关信息

  • creat_chains()函数里,定义了许多创建链的规则,如黑名单、白名单、tcp处理、udp处理等,满足了if条件,就执行iptables命令

  • 使用 iptables –L 命令获取iptables的实际规则列表,这个上面实验用过

  • 使用 vim /etc/snort/snort.conf 命令查看snort.conf规则集文件
    可以看到了很多协议规则的导入,还有许多变量的定义

  • 使用 vim /etc/init.d/snortd 命令,查看snort的脚本文件,蓝色的字实在看不清

  • 使用 vim /etc/init.d/hw-snort_inline 命令,查看snort_inline的脚本文件可以看到文件开头有一些变量的定义,如安装位置、配置文件位置、路径、PID文件位置(将在实验最后总结PID)等

  • 再往后列出了一些snort_inline的参数说明,和snort的类似
    -D daemon 表示snort守护模式
    -l 表示日志目录
    -Q 仅在snort_inline为Queue模式时使用

  • 最后一部分是启动蜜网的snort

  • 使用 chkconfig --list | grep [服务] 命令查询当前服务是不是开启的

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息,可在服务名后面指定了on,off或者reset,on和off分别指服务被启动和停止,reset指重置服务的启动信息,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效

  • 可以在/etc/inittab文件中查看到0—6的含义

1表示:单用户模式
2表示:无网络连接的多用户命令行模式
3表示:有网络连接的多用户命令行模式
4表示:不可用
5表示:带图形界面的多用户模式
6表示:重新启动

Snort规则是如何自动升级的?

除了自己可以手动定期从Snort官网上下载最新的规则集,书上写的是Snort也提供了Onikmaster机制允许用户配置自动的规则集更新脚本,但在网上搜索时,都是Oinkmaster(拼写有差别),最后找到了Oinkmaster的下载网站,应该是书上印错了(ˉ▽ˉ;)...,它是一个基于Perl语言的脚本

使用 vim /etc/honeywall.conf 命令,打开honeywall配置文件,可以看到snort规则更新设置的地方,还有IDS\IPS规则的更新设置,可以看到默认设置均为no

 

两个小知识点的总结:

Tips:什么是守护进程?在snort配置文件中出现了Daemon模式

Daemon(守护进程)是运行在后台的一种特殊进程,它独立于控制终端,并且周期性地执行某种任务或等待处理某些发生的事件。守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行

Tips:什么是PID?
守护程序在log目录会产生一个PID文件,PID文件为文本文件,内容只有一行, 记录了该进程的ID;
pid文件的作用是防止进程启动多个副本。只有获得了PID文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动,并把自身的PID写入该文件中,其它同一个程序的多余进程则自动退出。

这里理解的不是很深刻,但是都在分析的配置文件里出现多次

网上搜到的资料有限,欢迎了解这块知识的同学多多指教!

三、 学习中遇到的问题及解决


问题1: 最后的分析实验,书中给出的配置文件中信息并不全面(或许是我没找到?)只看到了一些参数定义、设置以及规则的引入

解决方法: 通过和同学的交流又学习了一些其他文件,希望老师上课能简单讲一讲

四、学习感想和体会


总结:防火墙技术提供了一套网络边界的基本访问控制机制,Linux系统中提供了开源的netfilter/iptables,有助于快速实施防火墙边界保护;入侵检测技术支持在网络与系统上对攻击行为进行发现与预警,可使用Snort实现入侵检测;为了有效应对网络攻击,管理员还需建立一套有效的安全事件响应机制。

 

参考资料:

  1. netfilter/iptables 原理

  2. netfilter/iptables防火墙

  3. Linux iptables常用命令

  4. Snort入侵检测系统简介

  5. Snort使用手册——第2部分 配置

  6. iptables rc.firewall脚本代码

猜你喜欢

转载自www.cnblogs.com/flwstudy/p/12655292.html