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

网络防范技术:防火墙和IDS/IPS


0.整体结构


本次做业属于哪一个课程 网络攻防实践
这个做业要求在哪里 网络安全防范技术
我在这个课程的目标是 学习网络攻防相关技术和原理
这个做业在哪一个具体方面帮助我实现目标 了解网络安全防范技术,学习防火墙和入侵检测技术

1.实践内容


首先梳理第六章网络安全防范技术的原理内容,本章从网络安全模型出发(后面的技术牢牢围绕模型展开),主要介绍了防火墙技术(防护技术)和网络入侵检测技术(检测技术)。分为如下几个部分开展原理内容的梳理。html

  • 安全模型
  • 网络安全防范技术与系统
  • 网络检测技术与系统

安全模型


  • 静态安全模型:对网络进行风险分析,制定相应的安全策略,而后采起安全技术做为防御措施,主要针对固定、静态的威胁和环境弱点。
  • PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
  • P2DR安全模型:基于PDR安全模型提出,增长了Policy分析制定安全策略,并以此为核心,全部的防御、检测、响应都是依据安全策略实施的。

网络安全防范技术与系统


1.防火墙技术及产品


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

  • 功能shell

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

    • 先天:没法防范包括来自网络内部的安全威胁、经过非法外联的网络攻击和计算机病毒传播的传播。
    • 技术瓶颈:没法防范包括针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击和隐蔽通道进行通讯的特洛伊木马或僵尸网络。
  • 技术vim

    • 包过滤技术:在路由功能基础上进行扩展,经过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,肯定是否应该转发该数据包(简单、安全功能有限)。
    • 基于状态检测的包过滤技术:也称动态包过滤。除了使用静态规则进行安全进行安全策略匹配,还进行数据包的网络链接的上下文关系探测,来肯定是否容许通讯。这种技术相比较传统的包过滤技术安全性更高,数据合法性获得了更有效的保障(对网络性能有必定的影响)。
    • 代理技术:容许客户端经过代理与网络服务进行非直接的链接,也称“网络代理”。主要是客户端与代理服务器链接,代理服务器再与目标服务器链接。代理技术包括应用层代理(工做在应用层)、电路级代理(工做在传输层)和NAT代理(工做在网络层)等。
  • 部署方法安全

    • 包过滤路由器:带有包过滤防火墙功能的路由器。
    • 双宿主堡垒主机:应用代理网关做为双宿主堡垒主机。
    • 屏蔽主机:堡垒主机和包过滤的结合。
    • 屏蔽子网:在屏蔽主机的基础上增长第二道包过滤路由器。

    firewall


2.Linux开源防火墙netfilter/iptables介绍


这部分的内容详细提及来比较复杂,下面只作简要介绍,并推荐两个博客,分别为iptables详解iptables命令详解和举例。一个从理论方面的介绍,一个是介绍iptables的命令。服务器

  • 简介:iptables是运行在用户空间的防火墙配置工具,经过控制运行在Linux内核空间的netfilter模块,来管理网络数据包的处理和转发(最新已经有ip6tables用于ipv6)。markdown

  • 规则:规则是用户预约义的,也是咱们常说的防火墙规则,配置防火墙的主要工做就是添加、修改和删除这些规则。由一个目标和不少匹配组成。匹配如interface(e.g. eth0)、协议类型源IP/端口目的IP/端口等。目标是用户自定义的链、一个内置的特定目标或者是一个目标扩展,如ACCEPTDROPREJECTSNATDNAT等。网络

  • :链是顺序执行规则的编排方式,在复杂的网络环境中,管理员需求这种可控的、有序执行的规则应用方式。iptables 提供了5条链:INPUT链OUTPUT链FORWARD链路由前链(Pre-Routing)路由后链(Post-Routing)tcp

  • :表的本质就是规则集的组织形式。iptables提供了如下5种表:filter表(过滤)、nat表(地址转换)、mangle表(包修改)、raw表security表(强制访问)。

    tab

下面介绍下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.入侵检测技术


  • 评估指标:检测率(系统捕获到的攻击行为与所有攻击行为比值)和误报率(对正常行为的误报数与所有报警数的比值)。
  • 技术类型:特征检测(匹配特征库)、异常检测(检测与正经常使用户在统计方面的差异)。两者一般结合使用,提升入侵检测系统的总体检测性能。同时,基于这两种技术,也能够对入侵检测系统进行分类。
  • 入侵防护系统:也叫内嵌式入侵检测,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。

2.snort基本介绍


  • 简介:Snort是一个强大的网络入侵检测系统。它具备实时数据流量分析和记录IP网络数据包的能力,可以进行协议分析,对网络数据包内容进行搜索/匹配,能够检测各类不一样的攻击方式,对攻击进行实时报警等。
  • 四大模块数据包嗅探模块预处理模块(用相应的插件来检查原始数据包)、检测模块(检测引擎依据预先设置的规则检查数据包)、报警/日志模块(经检测引擎检查后的Snort数据输出)。
  • 三种工做模式嗅探模式(从网络上读取数据包,经常使用命令snort -dev)、数据包记录模式(把数据包记录到硬盘上,经常使用命令snort -b)、网络入侵检测模式(载入规则库才能工做,Snort并不记录全部捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)。
  • 分析一个规则实例
    • 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”。
    • 此外,还有一个双向操做符<>,它使Snort对这条规则中,两个IP地址/端口之间的数据传输进行记录/分析。

2.实践过程


实践一:防火墙配置

任务:配置Linux平台上的iptables,完成以下功能并测试

  • 过滤ICMP数据包,使主机不接受ping包。
  • 只容许特定IP地址访问主机的某一网络服务,而其余IP地址没法访问。

Solution
首先咱们以SEED Ubuntu做为服务器,利用Kali访问SEED Ubuntu,Kali做为信任主机,Linux MetaSploitable做为不可信任主机。IP地址以下。

机器 IP地址
Kali Linux 192.168.3.19
Linux MetaSploitable 192.168.3.22
SEED Ubuntu 192.168.3.24

1. 首先在SEED Ubuntu上经过iptables -L查看规则,发现都是默认规则。

2. 经过指令iptables -A INPUT -p icmp -j DROP指令使得主机不接受icmp的数据包。指令详解:-A是追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。更多的指令参照上面理论部分给的连接。
icmp2.png

3. 此时经过Kali ping SEED Ubuntu,发现是ping不通的,而且能够查看规则,发现多了一条icmp针对任何位置不容许访问的规则。

icmp1

icmp3

4. 最后别忘了使用iptables -F删除自定义规则。至此过滤ICMP数据包实践完成。

下面开始第二个实践,只容许Kali访问SEED Ubuntu的telnet服务
1. 首先,咱们肯定两台机器均可以进行telnet登录。

telnet1

telnet2

2. 接下来使用iptables -P INPUT DROP指令拒绝一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都没法进行访问。

3. 使用指令iptables -A INPUT -p tcp -s 192.168.3.19 -j ACCEPT开启192.168.3.19对本机的tcp服务。并用iptables -L查看规则。
yelnet3

4. 此时咱们发现Kali是能够正常访问telnet服务的,可是MetaSploitable倒是没法访问的。
telnet5

telnet4

5. 最后别忘了执行iptables -Fiptables -P INPUT ACCEPT两条指令恢复以前的状态。


实践二:Snort

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


Solution
关于Snort的一些实践在第四章已经实践过,这里用的文件仍是第四章的listen.pcap文件。
1. 首先利用指令snort -r listen.pacp -c /etc/snort/snort.conf -K asciilisten.pacp进行入侵检测,其余的指令第四周都已经详细介绍了,-K ascii主要是为了指定输出log文件的编码为ASCII(默认为binary)。
snort1

2. 查看输出,咱们能够看到检测出的数据包大部分为TCP数据包。

snort2

3. 在/var/log/snort/目录下能够查找到alert文件,这个文件即输出的日志文件,经过vim打开能够发现这个攻击是nmap发起的,固然还有不少其余的信息,譬如源地址、目的地址等等。
snort3


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

任务:说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求

  • 上述脚本是如何实现蜜网的数据捕获和数据控制?
  • 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
  • 蜜网网关开机以后,防火墙、NIDS、NIPS是如何启动的?
  • Snort规则是如何自动升级的?

1. 数据控制:一般数据控制通常包括两个方面,一个是防火墙对数据的控制,还有一个是IPS对异常数据的限制(snort_inline)。咱们稍微看一下其防火墙的文件rc.firewall(859行代码,好吧,我也不咋会shell编程,看关键部分)。关键部分是什么,固然是了。咱们能够看下以下的建立了三个链,分别是黑名单、白名单、防御名单(FenceList)。因此,大体在上面的功能之上,增长了:

  • 防火墙对源地址或者目的地址属于黑名单的主机,丢弃全部包。

  • 对于属于白名单的主机,接受且不记录。

  • 对于属于防御名单内的主机,禁止访问某些不但愿被访问到的主机。

    roo1

2. 数据捕获:数据捕获主要包括:

  • 防火墙的日志记录:记录的只是简单的信息如目的地址/端口、源地址/端口、协议、长度等。
  • Snort记录的网络流。

3. IPTables的实际规则列表:经过指令iptables -t filter -L来查看规则列表。不难发现,默认的规则入OUTPUT、INPUT、FORWARD都已经被关闭了,取而代之的是一些自定义的规则(包括以前配置Roo的一些参数也反映在规则表上)。

iptables1

iptables2

4. Snort实际执行参数:经过vim snortd打开Snort脚本文件,观察第一张图能够看到一开始是一些参数的选项。第二张图对应的就是实际运行时候的参数了。简单分析,譬如在指定网卡接口后,若是没有其余的参数,将按照默认参数运行。如默认不开启-A模式,使用默认目录的config文件(/etc/snort/snort.conf),默认使用eth0、使用二进制模式保存log文件等(了解了Snort的指令以后,这个比较好懂)。

snort6

snort7

5. Snort_inline实际执行参数:经过vim hw-snort_inline打开Snort_inline脚本文件,能够观察到实际运行的参数,以及在最前面定义的参数。咱们将前面的变量带入这个运行指令应该为(-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置):
snort-inline -D -c /etc/snort_inline/snort_inline.conf -Q -l [系统时间命名] -t [目录]

snortin

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

7. Snort规则如何自动升级:在/etc目录下使用指令vim honeywall.conf打开honeywall配置文件,这个里面能够看到不少东西,譬如咱们以前安装roo时配置的IP地址、譬如白名单黑名单的位置等。一样咱们能够找到snort规则更新的地方。默认是不自动更新的。咱们能够看到Oinkmaster字样,一查,这个果真是个自动更新的软件。使用方法参考这个简单的博客吧Oinkmaster使用方法。而后咱们在当前目录下打开oinkmaster.conf文件,能够看到url也是注释的,若是你想开启自动更新,按照上面的博客操做就行啦。

olink

olink2


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


  • 问题一:VMware Fusion一打开虚拟机就黑屏卡死
  • 问题一解决方案:从网上下载了新的VMware Fusion解决(破解版仍是很差用啊)。
  • 问题二:电脑截屏失效,换句话说就是其余应用没法访问个人电脑屏幕,截屏出来就是白色的。
  • 问题二解决方案:并无找到关于访问控制的设置,重置了nvram解决的。
  • 问题三:电脑再一次死机。
  • 问题三解决方案:怀疑是以前换的固态不够稳?或者是我装的不够好?电脑经不起折腾了。老了老了。
  • 问题四:实践作到一半就停电,今天下午好难。
  • 问题四解决方案:无尽的等待中。。。。。。。
  • 问题五:发布才发现,博客园的markdown不支持latex公式
  • 问题五解决方案:不用!!!

3.学习感悟、思考

  • 此次实验总体内容不难,分析内容仍是占大多数,本文中的有些分析仍是不够清晰明了,一方面是本身网络方面的知识不够系统总体、一方面是关于蜜网网关的资料仍是太少。
  • 此次实验下午遇到了好多实验以外的事情,着实闹心。

参考资料

相关文章
相关标签/搜索