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

理论知识 网络安全防范技术与系统

防火墙技术

  • 定义:防火墙是目前最为成熟的网络防御技术之一。指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。
    检查的对象是网络流量或访问行为。
    技术的关键特性:
    只能对流经他的网络数据进行检查和控制,必须将防火墙部署在不同网络安全域之间的唯一通道上;
    不具备主动检测区分网络攻击数据与合法数据的能力,因此要根据安全需求合理地设计安全策略规则;
    无法保护来自网络内部的攻击。
  • 功能:在网络协议的各个层次上实施网络访问控制机制,对网络流量和访问进行检查和控制。最基本的功能是控制在计算机网络中不同信任程度网络域之间传送的数据流。
    为网络管理员提供的安全功能:
    检查控制进出网络的流量
    防止脆弱或不安全的协议和服务
    防止内部网络信息的外泄
    对网络存取和访问进行监控审计
    可以强化网络安全策略并集成其他安全防御机制
  • 不足:
    先天无法防范的安全威胁包括:来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播传播。
    由于技术瓶颈问题目前还无法防范的安全威胁包括:针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击、隐蔽通道进行通信的特洛伊木马或僵尸网络。
  • 技术:
    包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
    基于状态检测的包过滤技术:也称动态包过滤,仍然使用一组静态规则进行安全策略匹配,除了检查每个独立的数据包之外,还会试图跟踪数据包在网络连接的上下文关系,以确定是否允许通信。相比较传统的静态包过滤具有更加强大的安全功能,规则设施更加简单,同时保留了包过滤对用户的透明性,数据的合法性得到了有效的保障。
    代理技术:允许客户端通过代理与另一个网络服务进行非直接的连接,也称“网络代理”。具体过程:客户端先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源连接请求,代理服务器与目标服务器连接或从缓存中取得请求的资源,返回给客户端。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
  • 部署方法:
    包过滤路由器:带有包过滤防火墙功能的路由器。
    双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
    屏蔽主机:堡垒主机和包过滤的结合。
    屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。
    Linux开源防火墙netfilter/iptables
  • 概念:netfilter/iptables 组合是目前Linux开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter 是Linux内核中实现的防火墙功能模块, iptables 是应用态的防火墙管理工具。
  • netfilter/iptables包含三个最基本的规则表:用于包过滤处理的filter表、用于网络地址转换处理的nat表、用于特殊目的数据包修改的mangle表。
  • iptables的命令的语法为 iptables [-t table] command [match] [target] 。 -t 指定配置规则所在的表,缺省表包括gilter、nat、mangle、raw等。 cammand 就是告诉iptables命令要做什么,比如 -A 就是在链表之后插入规则, -D 就是指定匹配的规则从链中删除该规则。 match 部分为规则匹配条件,满足规则的数据包才会被采取措施。 target 是满足规则之后要做什么,比如放行数据包ACCEPT
  • netfilter/iptables的NAT机制:包括IP伪装、透明代理、端口转发和其他形式的网络地址转换技术。
    IP伪装:在内部网络使用私有IP,如通过防火墙可以绑定一个外网IP,对数据包进行源IP伪装。
    SNAT机制:SNAT记住可以按照用户制定的规则,将源IP灵活的变成各种IP,IP伪装是一种SNAT机制。值得注意,SNAT机制需要在POSTOUTING链中完成,这样才能让路由、包过滤在源IP改变之前做完。
    DNAT机制:DNAT在PREROUTING链中完成,需要用到-i选项。

网络检测技术与系统

  • 入侵检测技术:最核心的任务是信息分析,从中识别出攻击行为。
  • 技术类型:误用检测(又叫特征检测)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
  • 入侵检测系统的分类;
    基于主机的入侵检测系统(HIDS):监视主机信息;
    基于网络的入侵检测系统(NIDS):以监听到的网络数据包作为分析数据源。
  • 入侵防御系统IPS:也叫内嵌式IPS,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。
  • 开源网络入侵检测系统:Snort:
    Snort除了是一款跨平台、轻量级的网络入侵检测软件之外,还具备数据包嗅探、数据包分析与记录等多种功能,还支持内联模式,可作为网络入侵防御系统使用。
    snort功能:数据包嗅探、数据包记录和分析以及各种入侵检测功能。
    snort的四个主要部件
    数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
    预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
    检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。
    输出模块:进行各种多样化的报警和日志记录。

动手实践:防火墙配置

实践任务:配置Linux操作系统平台上的iptables,完成如下功能,并进行测试:

主机 IP地址
seed 192.168.200.5
xpattacker 192.168.200.3
kali 192.168.200.2
1.过滤ICMP数据包,使得主机不接受Ping包;
先在SEED上 ping 主机kali,发现在正常状态下可以 ping 通
在主机kali上通过 iptables -L 查看规则,发现都是默认规则。
执行 iptables -A INPUT -p icmp -j DROP 指令使得主机不接受icmp的数据包。其中 -A 是追加新规则于指定链的尾部, INPUT 表示数据包入口(规则), -p 用于匹配协议, -j 用于指定如何处理(ACTION)。再次查看规则,发现多了一条icmp针对任何位置不允许访问的规则。
再次通过SEED ping 主机kali,发现 ping 不通了
  1. 只允许特定IP地址(如局域网中的Linux攻击机192.168.200.6)访问主机的某一网络服务,而其他的IP地址(如Windows攻击机192.168.200.2)无法访问。
    打开主机kali上的telnet服务
    使用kali和xpattacker登录seedubuntu


    接下来使用 iptables -P INPUT DROP 指令拒绝一切的数据包流入(修改的是默认规则 -P ),此时发现两台机器都无法进行telnet访问。


    使用指令 iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT 开启 192.168.200.2 对主机seedubuntu的tcp服务。并用 iptables -L 查看规则。


最后执行 iptables -F 删除自定义规则, iptables -P INPUT ACCEPT 把没有规定的数据包都接收,恢复之前的状态。

2.2Snort

将之前实验使用过的listen.pcap文件拖拽入kali桌面,输入命令:snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii进行入侵检测
看到检测出的数据包大多为Tcp数据包

此时snort会在默认目录生成一个日志文件,进入报警日志目录 cd /var/log/snort , 查看日志文件 vim alert,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是 172.31.4.178 ,网络扫描的目标IP地址是 172.31.4.188 。

实践作业

分析虚拟网络攻防环境中密网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明密网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
分析内容如下:
上述脚本是如何实现密网网关的数据捕获和数据控制机制?
数据捕获机制:iptables可以通过记录日志的形式来捕获网络连接信息,包括源地址,目的地址,使用的端口和进行连接的协议、长度等等;Snort对符合入侵检测特征的攻击数据包发出响应的报警信息,从而标识网络流中存在的攻击事件。
查看防火墙的文件 vim /etc/init.d/rc.firewall

获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
获取IPTables的实际规则列表:通过 iptables -t filter -L 来查看规则列表。可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了。

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

获取Snort_inline实际执行参数:执行命令 vim /etc/init.d/hw-snort_inline 打开snort_inline的脚本文件,可以看到到实际执行的参数。

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

密网网关中的Snort规则是如何自动升级的?
使用 vim /etc/oinkmaster.conf 打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级。

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

问题1:执行 vim /etc/init.d/rc.firewall 后发没有内容,很奇怪,以为没有安装相关软件
问题1解决方案: su - 提权之后才能查看 rc.firewall 文件。(没权限不给看就行了,为什么要给人看一个空的?)

问题2:蜜罐如何进行翻页
问题2解决方案:shift+page up/down无效,可以grep进行筛选

posted @ 2020-04-08 16:14  20199303吕建文  阅读(260)  评论(0编辑  收藏  举报