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

学习总结及实践内容

防火墙概述

防火墙指的是置于不同的网络安全域之间, 对网络流量或访问行为实施访问控制的安全组件或设备。

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

防火墙功能

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

防火墙技术

  • 包过滤技术:基于协议特定的标准,路由器在其端口能够区分包和限制包的能力叫包过滤 (Packet Filtering)。其技术原理在于加入 IP 过滤功能的路由器逐一审查包头信息,并根据匹配和规则决定包的前行或被舍弃,以达到拒绝发送可疑的包的目的;
  • 代理技术:代理 (Proxy) 技术是一种重要的计算机安全防护功能,允许客户端通过它与另一个网络服务进行非直按的连接,也称“网络代理”。

防火墙产品

  • 集成包过滤功能的路由器;
  • 基于通用操作系统的防火墙软件产品;
  • 基于安全操作系统的防火墙;
  • 硬件防火墙设备。

Linux 开源防火墙:netfilter/iptables

netfilter/iptables 组合是目前 Linux 开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter 是 Linux 内核中实现的防火墙功能模块,iptables 则是应用态的防火墙管理工具。

netfilter 是一个由 Linux 内核提供的框架,可以进行多种网络相关的自定义操作。

例如:

  • 无状态的报过滤(IPv4 and IPv6)
  • 有状态的报过滤(IPv4 and IPv6)
  • 网络地址转换(NAT/NAPT)

netfilter 在 Linux 内核中表现为一系列的 hook, 并允许 Linux 内核模块注册为回调函数,Linux 内核模块通过回调函数操作网络报文。

动手实践:防火墙配置

实践任务:配置 Linux 操作系统平台上的 iptables,或者 Windows 操作系统平台上的个人防火墙,完成如下功能,并进行测试:

  1. 过滤 ICMP 数据包,使得主机不接收 Ping 包;
  2. 只允许特定 IP 地址(如局域网中的 Linux 攻击机 192.168.200.3)访问主机的某一网络服务(如 FTP、HTTP、SMB),而其他的 IP 地址(如 Windows 攻击机 192.168.200.4)无法访问。

实验环境:

名称 IP
Klai 192.168.1.7
Linux 192.168.1.8
SEED 192.168.1.9

实践一

首先在 SEED 上查看默认规则:

sudo iptables -L

执行:

sudo iptables -A INPUT -p icmp -j DROP

使得主机不接受 icmp 的数据包。

这时,Kali 则无法 ping 通 SEED:

在 SEED 中可以看到新添加的规则:

最后,可以删除上述新添加的自定义规则:

sudo iptables -F

删除后可以看到只剩下默认规则了:

实践二

首先确认 Kali 和 Linux 都可以连接至 SEED 的 telnet 服务:

接下来,在 SEED 上执行以下命令,拒绝一切数据包流入:

sudo iptables -P INPUT DROP

则 Kali 和 Linux 无法连接至 SEED:

使用指令

sudo iptables -A INPUT -p tcp -s 192.168.1.7 -j ACCEPT

开启 192.168.1.7 (Kali) 对 SEED 的 tcp 服务,并查看规则:

Kali 就可以连接至 SEED 了:

Linux 测试连通性:

实验结束,执行以下命令恢复规则至默认:

sudo iptables -F
sudo iptables -P INPUT ACCEPT

其他网络防御技术

  • VPN;
  • 内网安全管理;
  • 内容安全管理 SCM;
  • 统一威胁管理。

入侵检测系统

入侵检测是指“通过对行为、安全日志或审计数据或其它网络上可以获得的信息进行操作,检测到对系统的闯入或闯入的企图”。入侵检测是检测和响应计算机误用的学科,其作用包括威慑、检测、响应、损失情况评估、攻击预测和起诉支持。

入侵检测系统(IDS)可以被定义为对计算机和网络资源的恶意使用行为进行识别和相应处理的系统。包括系统外部的入侵和内部用户的非授权行为,是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术。

入侵检测技术是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术。进行入侵检测的软件与硬件的组合便是入侵检测系统(IntrusionDetectionSystem,简称 IDS)。

开源网络入侵检测系统:Snort

在 1998 年,Martin Roesch 用 C 语言开发了开放源代码 (Open Source) 的入侵检测系统 Snort。直至今天,Snort 已发展成为一个具有多平台 (Multi-Platform)、实时 (Real-Time) 流量分析、网络 IP 数据包 (Pocket) 记录等特性的强大的网络入侵检测/防御系统 (Network Intrusion Detection/Prevention System),即 NIDS/NIPS。Snort 符合通用公共许可 (GPL——GNU General Pubic License),在网上可以通过免费下载获得 Snort,并且只需要几分钟就可以安装并开始使用。

动手实践:Snort

任务:使用 Snort 对给定 pcap 文件(第 4 章中的解码网络扫描任一个 pcap 文件)进行入侵检测,并对检测出的攻击进行说明。
在 BT Linux 攻击机或 WindowsAttacker 攻击机上使用 Snort,对给定的 pcap 文件进行入侵检测,获得报警日志。
Snort 运行命令提示如下。

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

在 Kali 中对老师提供的 pcap 包进行入侵检测分析:

sudo snort -r listen.pcap -c /etc/snort/snort.conf -K ascii

从检测结果中可以看到大量的 tcp 包:

在 /var/log/snort/ 目录下可以查找到 alert 文件,即输出的日志文件。使用 vim 打开后可以看到这是 nmap 攻击:

网络安全事件响应组织与机构

计算机安全事件响应小组 (Computer Security Incident Response Team, CSIRT) 是进行网络安全事件应急响应和处理的专业团队。CSIRT 组织一般的职能包括:对计算机系统和网络安全事件的处理提供技术支待和指导,安全漏洞或隐患信息的通告、分析,事件统计分析报告,以及安全事件处理相关的培训等。

网络安全事件响应方法和技术概述

安全事件响应不仅仅是一个技术问题,它还涉及政策、组织结构、资源、流程、人际沟通与交流、技术基础等等多方面的因素,成功的事件响应需要大量的组织和计划,从估息安全政策中的有关政策开始,一直到实现这个政策,除此之外,计划和组织还包括其他一些必需的组成部分,如设计合理的事件响应结构,规划好所需的资源,计划好使用的技术,编制事件响应流程,与其他小组和组织建立合作关系,设计合适的衡量指标等。

实践作业

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

  • 防火墙 (netfilter + IPTables) : /etc/init.d/rc.firewall;
  • 入侵检测系统 (Snort) : /etc/init.cl/hflow-snort 与/etc/snort/snort.conf;
  • 入侵防御系统 (Snort_inline) : /etc/init.cl/hflow-snort_inline 与/etc/snort_inline/snort_ inline.conf。
    分析内容如下:
  • 上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
  • 获取 IPTables 的实际规则列表、Snort 和 Snort_inline 的实际执行参数。
  • 网网关开机之后,防火墙、NIDS、NIPS 是如何启动的?
  • Bonus: 蜜网网关中的 Snort 规则是如何自动升级的?

打开 HoneyWall,查看防火墙配置规则:

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

通常数据控制一般包括两个方面,一是防火墙对数据的控制,二是 IPS 对异常数据的限制(snort_inline)。

下面的代码,分别是黑名单、白名单、防护名单(FenceList)。实现了:

  • 防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
  • 对于属于白名单的主机,接受且不记录。
  • 对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。

数据捕获主要包括:

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

通过下面的指令来查看规则列表:

iptables -t filter -L

不难发现,默认的规则入 OUTPUT、INPUT、FORWARD 都已经被关闭了,取而代之的是一些自定义的规则(包括之前配置 Roo 的一些参数也反映在规则表上)。

打开 Snort 脚本文件:

vim /etc/init.d/snortd

一些运行参数的执行过程如下:

通过指令:

chkconfig --list | grep [服务]

来查询当前服务是否开启。

如下图,防火墙和 NIPS(snort_inline)是跟随系统启动的,并且开机自动配置刚才的脚本文件。NIDS 是需要手动启动的。

执行:

vim /etc/honeywall.conf

打开 Honeywall 的配置文件。

在命令模式下输入 /update,搜索匹配的字符串。

可以发现自动更新是默认关闭的。

学习中遇到的问题及解决

Q:查看 snort 日志文件时提示没有权限
A:提升权限:sudo su

Q:不会用 Vim 编辑器
A:查资料,动手实践。

总结

本次实践主要是偏分析配置文件的内容更多一些,不得不说这些工具实在太强大了,给开发者跪了。也感谢为 IT 事业贡献智慧的程序员们。

参考资料

原文地址:https://www.cnblogs.com/kidling/p/12619610.html