网络安全防范技术
1 实践内容
1.1 安全防范
为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。
1.1.1 PDR模型
信息系统的防御机制能抵抗入侵的时间P,能超过检测机制发现的入侵的时间D和响应机制有效应对入侵的时间R之和。
1.1.2 P^2DR模型
网络安全=根据风险分析制定安全策略(policy)+执行安全防护策略(Procation)+实时监测(Detection)+实时响应(Response)。其中安全策略是核心。
图1.1 P^2DR模型
1.2 防火墙
1.2.1概述
防火墙是目前最成熟的网络防御技术之一,属于一种网络上的访问控制机制,通过在不同网络域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求决定是否允许网络访问通过防火墙,达到特定网络安全域免受非法访问和破坏的目标。
防火墙功能有检查进出网络的流量、防止脆弱或不安全的协议和服务、防止内部网络信息外泄、对网络存取和访问进行监控审计、可强化网络安全策略和集成其他网络安全防御机制。
防火墙对于来自网络安全内部的攻击、通过非法外联的网络攻击和计算机病毒传播防御有限。
1.2.2 防火墙技术和产品
包过滤技术是通过网络层和传输层的包头信息检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络边界处。
基于状态检测的包过滤技术维护所有通过防火墙的网络连接记录,并依此确定数据包是否属于一个新的连接、或是已连接的一部分,或是一个非法数据包。由于根据数据包的上下文进行检查和过滤,数据的合法性得到了更有效的保证,但对网络传输的性能影响较大。
图1.2 基于状态检测的包过滤技术
代理技术为客户端首先与代理服务器建立连接,接着发出一个对外部目标服务器的的文件或请求,代理服务器通过与目标服务器连接或从缓存中取得资源,并返回给客户端。网络用户便不直接与外部服务器通信。具体分为应用层代理技术、电路级代理技术和NAT代理技术。
防火墙产品集成包过滤的路由器、基于通用操作系统的防火墙软件产品、基于安全操作系统的防火墙、硬件防火墙设备。
1.3 入侵检测技术
1.3.1 概述
入侵检测技术定义是对入侵行为的检测与发现。两个重要参数是检测率和误报率。信息收集是入侵检测技术的基础。收到信息后最核心的任务是信息分析,两种基本的分析技术是梧误用检测和异常检测。
入侵检测系统的部署位置如图1.3所示:
图1.3 入侵检测系统的部署位置
1.3.2 入侵检测系统:snort
snort采用标准的捕获数据包的函数库libpcap,具有数据包嗅探、数据包记录和分析、入侵检测功能。软件基本构架如图1.4所示
图1.4 snort软件基本构架
在snort运行时,首先,将捕获的数据包经过解码器填入到链路层协议的包结构体之中,以便对高层协议解码;然后送入各种各样的预处理插件中,对数据进行检查和操作;随后检测引擎对每个包的信息进行快速模式匹配检测;对之前各个部件产生的报警/日志信息,调出相应的输出插件进行发送和记录。检测引擎与插件是snort入侵的主体模块,包含规则库解析、多模式匹配和规则插件检查三部分。
2 实践过程
2.1 防火墙配置
配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试。
2.1.1 过滤ICMP数据包,使得主机不接收Ping包
(1)Linux操作系统平台上的iptables
首先,输入指令"iptables -L"查看所有规则,确认是默认的。
图2.1 所有规则
然后,用攻击机(192.168.200.4)ping靶机(192.168.200.129)。发现可以ping通。
图2.2 ping通
输入指令"iptables -A INPUT -p icmp -j DROP"使得主机不接收ICMP包。
其中各参数的意思是:
-A INPUT:将input规则添加到链尾;
-p icmp:指定icmp协议;
-j DROP:指定对应数据包进行丢弃。
然后再次查看规则:
图2.3 再次查看所有规则
可以看出第一行已经变成"anywhere"。
此时用用攻击机(192.168.200.4)ping靶机(192.168.200.129),发现已经不能ping通。
图2.4 ping失败
使用wireshark抓包,可以看到发出了很多icmp数据包。
图2.5 wireshark抓包
成功后,使用iptables -F清除所有规则。此时,用攻击机(192.168.200.4)ping靶机(192.168.200.129)成功ping通。
图2.6 再次ping通
(2)Windows操作系统平台上的个人防火墙
启动WinXPattacker,密码为"mima1234"。用kali ping WinXPattacker(192.168.200.8),可以ping通。
图2.7 ping成功
打开"控制面板"的"Windows防火墙"。
图2.8 控制面板的防火墙
在"高级"→"ICMP设置"中,把"允许传入回显请求"勾掉。
图2.9 勾掉允许传入回显请求
此时看到kali就ping不通windowsXP了。
图2.10 无法ping通
实验完毕,再调回设置,发现可以重新ping通。
图2.11 再次ping通
2.1.2 只允许特定IP地址访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问。
本节实验的各主机的IP地址如下:
A:192.168.200.4
B:192.168.200.6
C:192.168.200.7
首先给A安装FTP服务,输入指令"apt-get install vsftpd"。再输入"service vsftpd start"开启FTP服务。
图2.12 开启FTP服务
然后用B和C访问A的ftp服务均成功。
图2.13 B成功连接FTP
图2.14 C成功连接FTP
对A进行设置,输入指令"iptables -P INPUT DROP"拒绝一切数据流入。再输入指令"iptables -A INPUT -p tcp -s 192.168.200.6 -j ACCEPT"只允许B(192.168.200.6)访问主机。
设置好后,用B和C访问A,可见只有B可以成功访问。
图2.15 B再次成功连接FTP
图2.16 C连接FTP失败
输入"iptables -F"和"iptables -P INPUT ACCEPT"恢复之前的状态。
2.2 动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
输入指令"snort -c /etc/snort/snort.conf -r /home/kali/Desktop/listen.pcap -K ascii"从离线的pcap文件读取网络日志数据源。
图2.17 读取网络日志数据
通过分析结果可以看出TCP包占绝大多数。
snort会在默认目录"/var/log/snort"生成一个日志文件,输入指令"cd/var/log/snort"查看日志文件。可以看出本次攻击是用nmap发起的。攻击机IP地址是172.31.4.178,靶机IP地址是172.31.4.188,还可以看到端口号等等。
图2.18 相关信息
2.3 分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
具体分析配置规则与启动项文件包括:
防火墙(netfilter+IPTables):/etc/init.d/rc.firewall:
入侵检测系统(Snort):/etc/init.d/hflow-snort 与/etc/snort/snort.conf:
入侵防御系统(Snort_inlinc):/etc/init.d/hflow-snort_inline 与/etc/snort_inline/snort. inline.conf
2.3.1 数据捕获
数据捕获是密网的一个重要目的,包括三个层次,分别是防火墙的日志记录、eth0上的嗅探器记录的网络流多和Seek捕获的系统活动;记录的内容主要包括:数据包通过时间、包协议类型、进出的网络接口、源地址、目的地址、源端口、目的端口、包长度等。
蜜罐网关通过三种方式捕获数据:防火墙日志、网络通讯、系统活动。防火墙能够记录所有的进入和外出本网络的连接。所有进出防火墙的日志信息记录在/var /log /messages 文件中。但防火墙能记录的数据是有限的,主要是报头信息,如攻击的时间、源和目的IP地址以及源和目的端口,对于入侵者的击键行为、数据包的载荷等无能为力。
打开密网网关,输入vim /etc/init.d/rc.firewall查看防火墙的文件。看到create_chains函数中新建了许多规则链,包括黑名单、白名单、防护名单等
图2.19 防火墙文件
2.3.2 控制需求
Roo的数据控制包含两方面,一是防火墙Iptables对连出(Outbound)的连接数的控制,另一个是网络信息防御系统Snort_inline对连出异常数据的限制,还增加了黑名单、白名单、防护名单的功能。防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。对于属于白名单的主机,接受且不记录。对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
在蜜罐中,使用iptables -t filter -L命令来查看规则列表。可以看出,默认的规则例如OUTPUT、INPUT、FORWARD都已经被关闭了
图2.20 蜜罐规则列表
3.学习中遇到的问题及解决
3.1 kali的FTP服务
Kali默认没有安装FTP服务。需要先安装后再使用。
3.2 windows允许传入回显请求关
ICMP设置中允许传入回显请求前面的复选框是灰色的,默认勾选,无法取消勾选。需要关掉例外选项,允许传入回显请求前面的复选框就可以关掉了。
4 感想和体会
通过本次实验,我学习到了各种网络安全防范技术的基本原理和方法。熟悉使用Windows的防火墙和linux的iptables的配置。对ICMP数据包有了进一步的认识。学习了使用Snort对给定pcap文件进行分析,找出各种信息。对蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求也有进一步的认识。
相关文章:

网络安全防范技术
1 实践内容 1.1 安全防范 为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。 1.1.1 PDR模型 信息系统的防御机制能抵抗…...

Java - JSR223规范解读_在JVM上实现多语言支持
文章目录 1. 概述2. 核心目标3. 支持的脚本语言4. 主要接口5. 脚本引擎的使用执行JavaScript脚本执行groovy脚本1. Groovy简介2. Groovy脚本示例3. 如何在Java中集成 Groovy4. 集成注意事项 6. 与Java集成7. 常见应用场景8. 优缺点9. 总结 1. 概述 JSR223(Java Spe…...

win10系统部署RAGFLOW+Ollama教程
本篇主要基于linux服务器部署ragflowollama,其他操作系统稍有差异但是大体一样。 一、先决条件 CPU ≥ 4核; RAM ≥ 16 GB; 磁盘 ≥ 50 GB; Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1。 如果尚未在本地计算机ÿ…...

基于Python制作一个简易UI界面
基于Python制作一个简易UI界面 目录 基于Python制作一个简易UI界面1 原理简介2 编写程序3 程序测试 1 原理简介 这里用到了Python自带的UI库tkinter。 tkinter 是 Python 的标准 GUI(图形用户界面)库,用于创建和管理图形界面。它提供了一个简…...

鲁菜大师程伟华到访金宫川派味业
共工新闻社11月29日电(范琦)上周,中国鲁菜大师、首批中国烹饪大师名厨程伟华到访金宫川派味业总部基地。这位从厨51年、坚持传承鲁菜的行业大师人物,深入了解了金宫川派的品牌文化,参观了金宫自动生产车间,…...

Linux设置jar包开机自启动
本文详细描述了如何在Linux服务器上创建并配置jar包的自启动脚本,包括编辑/etc/init.d/jar_auto.sh以设置环境变量,将jar包添加到rc.local以开机启动,以及提升脚本文件权限确保自动执行。 1、准备工作 Linux中Java的路径 项目jar包绝对路径 2…...

IoTDB 常见问题 QA 第一期
开始!关于 IoTDB 的 Q&A 我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。 Q1:WAL 堆积导致写入失败 问题及现象 集群报错: The write is rejec…...

【linux学习指南】linux捕捉信号
文章目录 📝前言🌠 信号捕捉的流程🌉 sigaction 🌠穿插话题-操作系统是怎么运⾏的🌉 硬件中断🌉时钟中断 🚩总结 📝前言 🌠 信号捕捉的流程 如果信号的处理动作是⽤⼾⾃定…...
git如何快速拉取已经提交的mr进行验证
参考:https://stackoverflow.com/questions/44992512/how-to-checkout-merge-request-locally-and-create-new-local-branch Pull merge request to new branch git fetch origin merge-requests/REQUESTID/head:BRANCHNAME i.e git fetch origin merge-requests/…...

【阿来来gis规划师工具箱说明书】h07四分标注
背景 在做arcmap的四分标注前,已经做好了二行三行的标注,以及在pro中做好了四分标注。这个四分标注做了好些版本,都达不到想要的效果。最终使用了静态标注的形式来做。 制作思路 新建两个承接标注文字的文本字段,考虑一般标注超…...
【大数据学习 | 面经】HDFS的三副本机制和编码机制
1. hdfs的三副本机制 hdfs的三副本机制是其核心特性之一,旨在确保数据的高可用性和容错性。通过将每个文件的数据块复制三个副本,并分散存储在不同的DateNode上,hdfs能够在节点故障的时候提供数据冗余和持续访问的能力。 三副本机制的工作原…...
lua-cjson 例子
apt install -y lua-cjson 安装 编辑 tmp.lua cjson require "cjson" p 666 d "23.42" payload{"d":[{"pres":..(p)..,"temp":"..(d).."}]} print("payload " .. payload) j cjson.decode(payloa…...
java面向对象知识点: 封装,构造,重载
目录 封装 封装知识点 private(私有) public(公共) 二、getter和setter方法 getter方法(访问器方法) setter方法(修改器方法) 三、封装类的设计原则 单一职责原则 高内聚性 一…...
go的math/rand随机数生成器
伪随机数生成器,默认情况下随机数种子是固定的, **注意:**固定的随机数种子每次生成的随机数都是相同的随机数序列 一、基础用法 math/rand 包提供了随机数生成的方法。常用的函数包括: rand.Int():返回一个伪随机…...

JiaJia-CP-1,2,3的WP(2)
一.JiaJia-CP-2 一看题目,聊天软件,用的什么聊天软件直接userassist看运行过什么程序 vol -f JiaJia_Co.raw --profileWin7SP1x64 userassist 发现Telegram.exe(小飞机) 可能性很大啊(真是个摸鱼大神) 除此之外,filescan也能看到࿰…...

3DMAX星空图像生成器插件使用方法详解
3DMAX星空图像生成器插件,一键生成星空或夜空的二维图像。它可用于创建天空盒子或空间场景,或作为2D艺术的天空背景。 【主要特点】 -单击即可创建星空图像或夜空。 -星数、亮度、大小、形状等参数。 -支持任何图像大小(方形)。…...

ROS2 系列学习教程(总目录)
ROS2Learning ROS1 系列学习教程(总目录) 一、ROS2 简介 1.1 ROS2简介及学习资源汇总 二、ROS2 基础 2.1 ROS2安装详细教程(以Humble为例) 2.2 ROS2 构建系统 colcon 介绍、安装与使用 2.3 ROS2 与 ROS1 编码方式对比 ROS2 与 ROS1 编码方式对比&am…...

[GKCTF 2021]签到
[GKCTF 2021]签到 wireshark跟踪http流,基本编解码,倒叙,栅栏密码 找到cat /f14g 把包里返回的字符串先hex解码,再base64解码,看到一个时间是倒叙,不含flag 继续往下面翻,可以看到cat%2Ff14g%7…...

Kubernetes——part11 云原生中间件上云部署 Rocketmqkafkazookeeper
Rocketmq rocketmq角色 RocketMQ由四部分构成:Producer、Consumer、Broker和NameServer 启动顺序:NameServer->Broker 为了消除单点故障,增加可靠性或增大吞吐量,可以在多台机器上部署多个nameserver和broker,并…...
ip租期到了
当IP租约到期后,会发生以下过程: 租约到期通知:在租约到期之前,DHCP客户端通常会尝试续租其IP地址。如果客户端仍然活跃并且希望继续使用相同的IP地址,它会向DHCP服务器发送一个DHCP请求(DHCPREQUEST&#…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...