20212906 2021-2022-2 《网络攻防实践》第七周作业
1.实践内容
1.1网络安全防范技术与系统
1.1.1 防火墙技术概述
-
从技术范畴上说,防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破坏的安全目标。
-
防火墙安全功能:
(1)检查控制进出网络的网络流量
(2)防止脆弱或不安全的协议和服务
(3)防止内部网络信息的外泄
(4)对网络存取和访问进行监控审计
(5)防火墙可以强化网络安全策略并集成其他安全防御机制 -
防火墙作为网络边界防护机制而先天无法防范的安全威胁:
(1)来自网络内部的安全威胁
(2)通过非法外联的网络攻击
(3)计算机病毒传播 -
防火墙由于技术瓶颈问题目前还无法有效防范的安全威胁:
(1)针对开放服务安全漏洞的渗透攻击
(2)针对网络客户端程序的渗透攻击
(3)基于隐蔽通道进行通信的特洛伊木马或僵尸网络
1.1.2 防火墙技术和产品
-
包过滤技术:通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
-
基于状态监测的包过滤技术:其维护所以通过防火墙的网络连接记录,并依此确定数据包是否属于一个新建的连接,或是已建连接的一部分,或是一个非法数据包。
-
代理技术:客户端首先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源的连接请求,代理服务器通过与目标服务器连接或从缓存中取得请求的资源,并返回给客户端。
(1)应用层代理技术:其工作在网络协议栈的应用层,针对某一种具体的应用层网络服务器提供细致而安全的网络保护,能够理解应用层协议的数据内容,并进行深入全面的安全检查,从而为网络访问提供更好的安全保障。
(2)电路级代理技术:其工作在传输层,原理与应用层代理基本相似。
(3)NAT代理技术:NAT技术工作在网络层,由内部网络发往外部网络的IP数据包,使用了私有IP地址段作为其源地址,在到达NAT代理后,将会把源IP地址和源端口部分替换成代理服务器的IP地址和另一指定的源端口,同时NAT代理将维护地址转换映射列表,将转换之前的私有网段源地址和原先端口号及转换之后的源端口号之间的映射关系记录在这个列表中,以供NAT代理在接收到该网络连接的响应包时,将其目的地址和目标端口转换为私有网段地址和源端口号,并发送给私有网段中的客户端主机。
-
防火墙产品:集成包过滤功能的路由器、基于通用操作系统的防火墙软件产品、基于安全操作系统的防火墙、硬件防火墙设备
- 个人防火墙产品:Windows个人防火墙、天网防火墙、360安全卫士、瑞星等
-
防火墙部署方法
(1)包过滤路由器:将带有包过滤防火墙功能的路由器作为内部网络和外部网络之间唯一的连接点,路由器在完成其数据包路由转发基本功能的同时,将依据网络管理员配置的访问控制列表,对数据包进行过滤。
(2)双宿主堡垒主机:与包过滤路由器部署不同的是使用应用代理网关作为双宿主堡垒主机,代替包过滤路由器
(3)屏蔽主机:实际是包过滤与双宿主的集成部署
(4)屏蔽子网:改进屏蔽主机的防火墙部署模式
1.1.3 Linux开源防火墙:netfilter/iptables
-
工作原理:在nefilter/iptables防火墙系统中,netfilter 组件位于Linux的内核空间中,实现了静态包过滤和状态报文检查(即动态包过滤)基本防火墙功能,此外也支持一个灵活可扩展的框架,支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展,nefilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理,以及构建QoS或策略路由器等安全功能。Iptables 则是工作在Linux用户空间中的防火墙配置工具,通过命令行方式允许用户为netfilter配置各种防火墙过滤和管理规则。nefilter/iptables 中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于
网络地址转换处理的nat表,以及用于特殊目的数据包修改的mangle表。 -
IPtables用法:
- 命令语法:
-
$ iptables [-t table] cpmmand [match] [target]
-
其中-t指定配置规则所在的表,缺省表包括filter、nat、mangle、raw等。
-
command 部分是 iptables 命令的最重要部分,他告诉iptables命令要做什么,例如,插入规则、讲规则添加到链的末尾或删除规则。
-
netfilter/iptables的NAT机制
- IP伪装:iptables -t nat -A POSTROUTING -i eth1 -o eth0 -j MASQUERADE使内部网络主机发出的数据包进行源IP地址伪装,使用防火墙外网IP地址。
- SNAT机制:使用-j SNAT描述,用--to source描述要转换的IP地址。
- DNAT机制:使用-j DNAT描述,用--to destination描述IP地址、范围或端口。
-
- 命令语法:
1.1.4 其他网络防御技术
- VPN
- 内网安全管理
- 内容安全管理SCM
- 统一威胁管理
1.2 网络检测技术与系统
1.2.1 入侵检测技术概述
入侵检测技术评估指标:检测率和误报率
- 检测率是指入侵检测系统捕获到的攻击行为数目和全部攻击数目之比
- 误报率是指入侵检测系统对正常行为的误报数目与入侵检测系统所输出的全部报警数目之比。
入侵检测技术
- 误用检测:其通过收集已知入侵行为的特征并进行描述,构成攻击特征库,然后对收集信息进行特征模式匹配,所有符合特征描述的行为均被视为入侵。
- 异常检测:假设入侵者行为与正常用户行为具有差异性,利用差异可以检测出入侵行为。
入侵检测系统的分类与部署
- 基于主机的入侵检测系统( Host-based IDS, HIDS ):HIDS一般用来监视主机信息,其数据源通常包括操作系统审计记录、系统调用序列、应用程序审计信息等
- 基于网络的入侵检测系练(Network-based IDS, NIDS):NIDS以其监听到的网络数据包作为分析数据源。
入侵防御系统IPS
与入侵检测系统普遍采用旁路监听方式只对入侵行为进行检测与报警不同,入侵防御系统采用直接在网络边界位置内联连接的方式,并在检测到入侵行为后,直接对所关联的攻击网络连接进行阻断处理。
1.2.2 Snort
snort特性与基本架构
- Snort被设计成一个跨平台、轻量级的网络入侵检测系统,用C语言编写,并采用了标准的捕获数据包函数库libpcap,具有非常好的可移植性。目前Snort 可以在包括x86、SPARC、PowerPC、Alpha等指令集平台架构.上的Linux、Windows、MAC OS,以及各种UNIX操作系统上运行。Snort具有强大的功能:数据包嗅探、数据包记录和分析,以及各种入侵检测功能。Snort在设计时采用了注重高性能、简单和灵活的原则,并采用一套源码级插件机制,作为系统扩展的手段。Snort 软件的基本架构主要由四个基本部分组成:
(1)数据包嗅探/解码器( sniffer);
(2)预处理器/插件(preprocessor);
(3)检测引擎/插件(detection engine);,
(4)输出模块/插件(output modules).
snort的实现机理
- Snort中四个主要部件以及处理过程描述如下。
①数据包嗅探/解码器。首先,利用libpcap从网卡或离线记录中捕获数据包,然后数据包经过解码器填入到链路层协议的包结构体中,以便对高层次的协议进行解码,如TCP/UDP层。
②预处理器/插件。接着数据包被送到各种各样的预处理插件中,在检测引擎之前对数据包进行检查和操作。每个预处理插件检查数据包是否应该注意、报警或者修改某些东西。
③检测引擎/插件。随后,包被送至检测引擎,检测引擎首先通过各种规则文件中定义的匹配字符电特征来对每个包的信息进行快速的模式匹配检测,然后由各种检测插件对包提供额外的检测功能。规则中每个关键字选项对应于检测引擎插件,能够提供不同的检测功能。
④输出模块/插件。对之前各个部件产生的报警/日志信息,根据用户配置,调用相应的输出插件进行发送和记录。
1.3 网络安全事件响应技术
网络安全事件响应是P2DR模型中响应环节的关键技术手段。所谓网络安全事件,指的是那些影响计算机系统和网络安全的不当行为,这些行为包括传统意义上对CIA基本属性(即机密性、完整性和可用性)的破坏行为,以及侦察性攻击、抵赖、骚扰性攻击、敲诈、传播色情或非法内容、通过电子方式组织的犯罪活动、在线欺诈和愚弄等其他类型事件。事件响应是指针对这些事件发生后,所采取的措施和行动,旨在阻止和减小事件所带来的影响。
- 网络安全事件响应组织与机构
- 计算机安全事件响应小组(Computer Security Incident Response Team, CSIRT)
- 计算机事件响应协调中心(CERT/CC)
- 美国国家计算机紧急响应小组(US-CERT)
- 中国教育和科研计算机网紧急响应组CCERT
- 中国国家级计算机网络应急技术处理协调中心(CNCERT/CC)
2.实践过程
2.1 手动实践:防火墙配置
2.1.1 Linux操作系统防火墙
实践任务:配置Linux操作系统子台上的iptables, 或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Kali攻击机192. 168.6.2),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192.168.6.4)无法访问。
本实验使用Kali上的iptables,我们先用主机XP ping一下主机A192.168.6.2,如下图:
运行正常,然后Kali执行iptables命令iptables -A INPUT -p icmp -j DROP,如下
再用主机XP ping一下主机Kali,得到结果
由于使用DROP,主机丢弃ICMP包并不会返回信息,所以图中显示请求过时。
进行第二步,只需要使用命令iptables -A INPUT ! -s 192.168.6.3 -p icmp -j REJECT ,如下
表示除192.168.6.4外拒绝ICMP报文
结果如下
因为此时使用了REJECT,所以XP主机显示目标端口不可达
当然,此时查看iptables规则表可以看到如下
使用iptables -F可以删除规则表中内容,回归默认ACCEPT设置
2.1.2 Windows操作系统防火墙
(1)练习分析 Windows 防火墙的安全策略:
在 Windows 防火墙首页的有关防火墙默认配置策略的文字内容如下:
对于该段文字所要表达的含义,你的理解如下:
当处于启用状态时,允许例外时,防火墙会禁止任何服务除非被明确允许(例外内添加的程序和端口),当不允许例外时防火墙禁止任何服务。
(2)Windows 防火墙的防护性能测试及验证
仅能Ping通其它主机,但不允许其它主机Ping探测的基本安全策略,配置要点记录如下:
在ICMP设置中将所有响应关闭
Xp中当策略启用时,如图,133主机可以ping通153主机,而153主机无法ping到133。
仅允许使用 TFTPD32 服务提供文件传输的基本安全策略,配置要点记录如下:
在例外中配置防火墙,添加程序TFTPD32和端口69允许UDP
当程序和端口禁用时,客户端无法连接到服务端
当防火墙允许时便可以获取和发送
可以通过wireshark捕获到数据包
(3)了解、掌握天网防火墙的功能与配置方式,特别是安全策略规则的设置
仅需进行上网浏览的主机的基本安全策略,并将配置要点记录如下:
配置阻止TCP以下的所有协议(主要是ICMP)数据,只开放80和443端口,满足HTTP/HTTPS,阻止其余一切数据。
在正常浏览网页的同时能阻断自己的ping命令和他人的ping请求
仅需提供 TFTP 服务主机的基本安全策略,配置要点记录如下:
配置只开放UDP 69端口,阻止其余一切数据。
结果仅可上传文件。
允许提供 BT 操作的策略,配置要点记录如下:
BT常用端口为6881-6889,需要开放TCP 6881-6889的端口,允许接受。
最有意义的配置是:
- 保留上网浏览
进行配置的目标是: - ICMP协议和TCP端口
配置的实现方式是: - 首先知晓ICMP探测使用的ICMP协议类型和上网浏览所需的TCP端口,仅允许HTTP/HTTPS所使用的80和443端口通过。
2.2 手动实践:Snort
任务:使用Snort对给定pcap文件(第4章中的解码网络扫描任-一个peap文件)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下。
●从离线的pcap文件读取网络日志数据源。
●在snort.conf中配置明文输出报警日志文件。
●指定报警日志log目录(或缺省log目录=var/log/snort) 。
使用snort命令snort -c /etc/snort/snort.conf -r listen.pcap -K ascii -A full,即可用ascii码输出日志文件alert,如下图
查看输出里检测出的数据包,可以看到大部分数据流为tcp会话,少部分为ARP包
报警数据包有10条,均被日志记录,所有数据包都裁决允许:
数据流统计:
此时snort会在默认目录生成一个日志文件,进入报警日志目录cd /var/log/snort, 查看日志文件vim snort.alert.fast,记录了报警数据10条的入侵检测信息,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178 ,网络扫描的目标IP地址是172.31.4.188
vim snort.alert.fast
vim snort.alert
可以看到攻击机使用了nmap扫描工具并使用了DDOS攻击
2.3 分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。具体分析配置规则与启动项文件包括:
●防火墙(nefilter+IlPTables) : /etc/init.d/rc.firewall;:
●入侵检测系统(Snort) : /etc/init.d/hflow_snort 与/etc/snort/snort.conf;
●入侵防御系统(Snort_ inline) : /etc/init./hflow-snort. inline 与/etc/snot. _inline/snort_inline.conf。
分析内容如下。
●上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
●获取IPTables的实际规则列表、Snort 和Snort_inline 的实际执行参数。
●蜜网网关开机之后,防火墙、NIDS、NIPS 是如何启动的?
●Bonus: 蜜网网关中的Snort规则是如何自动升级的?
镜像类型 | 镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 |
---|---|---|---|---|---|
密网网关 | roo | roo | honey | honey | 192.168.6.8 |
snort进行数据捕获,firewall进行数据控制,打开rc.firewall,可以看到create_chains中新建了许多规则链,包括黑名单链、白名单链、防护链等
查看防火墙的文件
su -
vim /etc/init.d/rc.firewall
可以看到创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链
create_chains() {
if [ -n "${HwFWBLACK}" ] && [ -e ${HwFWBLACK} ] &&
[ "${HwBWLIST_ENABLE}" == "yes" ]; then
# 黑名单
iptables -N BlackList
fi
if [ -n "${HwFWWHITE}" ] && [ -e ${HwFWWHITE} ] &&
[ "${HwBWLIST_ENABLE}" == "yes" ]; then
# 白名单
iptables -N WhiteList
fi
if [ -n "${HwFWFENCE}" ] && [ -e ${HwFWFENCE} ] &&
[ "${HwFENCELIST_ENABLE}" == "yes" ]; then
# 防护名单
iptables -N FenceList
# 防护日志删除
iptables -N FenceLogDrop
fi
if [ -n $HwTCPRATE ] && [ $HwTCPRATE -gt 0 ]; then
# 创建TCP处理链
iptables -N tcpHandler
fi
if [ -n $HwUDPRATE ] && [ $HwUDPRATE -gt 0 ]; then
# 创建UDP处理链
iptables -N udpHandler
fi
if [ -n $HwICMPRATE ] && [ $HwICMPRATE -gt 0 ]; then
# 创建ICMP处理链
iptables -N icmpHandler
fi
if [ -n $HwOTHERRATE ] && [ $HwOTHERRATE -gt 0 ]; then
# 创建其他协议处理链
iptables -N otherHandler
fi
}
snort主要通过对整个网络数据包进行预警提示,多侧重于数据捕获,当然查询防火墙和snort_inline日志也可以获得一定的数据捕获信息。
iptables中有用 modprobe ipt_LOG,iptables -N FenceLogDrop等存储数据捕获的日志,snort_inlin可以用snort -c [snort.conf绝对路径} -l [log路径] -K ascii来实现输出log文件。
iptables防火墙主要负责对数据accept,reject,drop等规则的制定和执行,多用于数据控制。
分析相关脚本的关键代码,防火墙文件rc.firewall中create_chains()用于创建链,该函数分别创建了黑名单和白名单,防护名单以及防护日志删除,-N的意思表示根据用户指定的名字创建新链,其中黑名单就是阻止某些网络地址和用户进入主机,白名单就是用户设置的认为可以添加信任的网络用户以及网络地址,防护名单是IPS的文件列表,防护日志删除是一个表,用于记录/删除从围栏反弹的数据包。
获取IPTables的实际规则列表、Snort 和Snort_ inline的实际执行参数
获取IPTables的实际规则列表
通过iptables -t filter -L | less来查看规则列表,可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了
获取Snort实际执行参数
使用命令snort --h
也可以查询snort文件vim /etc/rc.d/init.d/snortd
可以看到些参数的选项:默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,默认存储日志路径为/var/log/snort
获取Snort_inline实际执行参数
执行命令vim /etc/init.d/hw-snort_inline打开snort_inline的脚本文件,可以看到到实际执行的参数
-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置
蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的
chkconfig命令主要用于检查,设置系统的各种服务。使用chkconfig -list命令来对linux上运行的服务进行查询。
根据chkconfig --list | grep [服务]可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。
可以发现NIPS(snort)的0-6都是off,说明是需要手动启动的,而防火墙(iptables)和NIPS(snort_inline)不全是off,是随系统开机而开启的
密网网关中的Snort规则是如何自动升级的
可以从vim /etc/honeywall.conf打开honeywall配置文件,来看snort的rule是否自动更新(在文件270+行),默认为不更新
Snort社区中的实际规则更新工具是免费的Oinkmaster
使用vim /etc/oinkmaster.conf打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级
3 实验体会
本次实验针对网络中的防火墙配置进行实践。在实践过程中发现,防火墙的常用配置是针对协议类型和端口号进行配置,同时可以利用防火墙发现自己主机内被错误或被攻击的端口,阻断主机内私自使用端口的危险程序。在实践中发现,win自带防火墙仅可针对自身端口,同时信任程序会通过程序的所有操作,无法确保审核外部来源合法性和程序的隐性操作。