前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从一次攻防平台搭建浅谈企业网络安全建设

从一次攻防平台搭建浅谈企业网络安全建设

作者头像
FB客服
发布于 2018-04-17 09:27:33
发布于 2018-04-17 09:27:33
2.4K0
举报
文章被收录于专栏:FreeBufFreeBuf

本篇文章涉及到的知识点包括:IDS/IPS/防火墙的区别与部署位置;镜像端口、堡垒机的位置和注意细节;ACL访问控制列表和端口安全、VLAN安全,以及靶场以及日志采集的实施细节。

背景介绍

自己所在高校的实验室要有一个类似用机器学习方法来检测网络用户异常的相关项目,需要搭建一个攻防平台来采集日志数据,大名鼎鼎的数据集UNSW-NB15就是用类似方法取得的。本篇文章要把攻防平台搭建全过程以及日志搜集方法分享给大家。

值得注意的是,攻防平台的搭建其实是企业里网络安全建设的缩影,许多企业可能还在网络安全建设方面无从下手,不用慌张,本片文章将会对基本的防御设备的诉求、功能、和部署用法开始讲起,如果广大企业用户和安全运维从业人员能从本篇文章有所收获,那我非常开心啦,嘿嘿(●ˇ∀ˇ●)

话不多说,直接上拓扑

哈哈,这里将攻击区当作互联网,防火墙右侧模拟网络内部网络,可能会和实际部署有偏差,不要着急,下面会对每个过程以及设备具体讲解。

1. IDS入侵检测系统

用途:用来检查网络中有无攻击存在,基于流量型的,由于实验室与绿盟有合作,本次采用绿盟的NIDS设备,检测范围最大可以从数据链路层到应用层,如果发生攻击,会通知管理员,并记录日志,然后就没有然后了,对头,就是告诉你一声“你网络被攻击了哈”

2. IPS入侵防御系统

用途:应用级别的防火墙,规则实时更新,可以检测网络里面的发生的攻击,从网络层到应用层发生的攻击都可以识别,并实施阻断丢弃攻击报文。还可以进行一些应用管理、比如限制企业用户没事干打英雄联盟之类的功能也可以实现(lll¬ω¬)。

部署:注意区分场景,有时候会被当作防火墙来部署,可以选择是否自带NAP\NAPT,可以选择DMZ区域等资产管理。0.0.0.0代表IP全部关心。部署在网络级别防火墙之后,一进一出。相当于对比较鸡肋的网络级防火墙的一个强大的功能扩充,这样就阻断了互联网和内网之间的攻击。本次没有采用该设备NIPS,但是还是给大家了解一下

3. NRSAS远程网络评估系统

用途:啥东西,名字这么长,其实说白了就是漏洞扫描设备,可以远程检查并扫描网络里的服务器、电脑、手机、笔记本、甚至路由器、交换机上面存在的漏洞。比较良心的是,它还给出了修复方案和设备安全配置规范指南

4. 防火墙

用途:在互联网与网络边界之间,实时监测不同网络间的攻击,并经行阻断,比较特别的是,实验采用绿盟的NF,可以检测到应用层的攻击,并阻断,听起来和IPS很像对不对?后面我介绍他们之间的区别

部署:网络与网络边界部署,一进一出,0.0.0.0代表全关心。值得注意的是,流量清洗设备在防火墙前面,IPS在防火墙后面,也可以选择在DMZ部署(前面提到过DMZ,DMZ可以理解为一个不同于外网或内网的特殊网络区域。DMZ内通常放置一些不含机密信息的公用服务器,比如Web、 Mail、FTP等。这样来自外网的访问者可以访问DMZ中 的服务,但不可能接触到存放在内网中的公司机密或私人信息等。即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。)

DMZ部署哲学:  

1.内网可以访问外网,内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。 2.内网可以访问DMZ,此策略是为了方便内网用户使用和管理DMZ中的服务器。  3.外网不能访问内网,很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。4.外网可以访问DMZ,DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。 5.DMZ不能访问内网 很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。有经验的一下就想起来SSRF泄露内部信息,对不对?

5. 堡垒机

用途:包含访问控制,通常是运维人员用token以及动态密码来访问,用于检查公司内部管理员、操作员的恶意操作或者误操作,操作记录全程备份,进行严格的权限分配,避免不正当的操作,通常日志会被发送到异地服务器,作为取证和追责。其实这种设备挺有用的,大多数公司应该备一个,对于公司敏感信息管理、代码管理都有好处,防止什么“删库跑路”之类的事情发生。能力强的可以把它改造成git代码托管平台两用,

部署:典型部署为在开发服务器、服务器集群与运维人员之间。分配正常IP,运维人员只能通过堡垒机来操作网络设备。

值得注意的事情和区别:

1.其实堡垒机可以不用买的,除非你财大气粗非要买,其实,只要一般电脑配置可以,可以装一个开源的堡垒机系统jumpserver,这种开源软件一大把舒服的很,很多甲方了解的信息不对称,花这些冤枉钱。

2.我不是要说防火墙和IDS、IPS之间的区别么?我这里说一下,其实现在很多乙方的安全硬件设备本质都!是!一!样!的!。

一个遵循冯诺依曼的设备,刷一个自家的unix based 、linux based这种操作系统。里面有从网络层到应用层攻击的检测、攻击阻断功能,实时更新的规则是它们的灵魂,只不过是IDS故意阉割阻断功能、IPS和防火墙网络功能、部署位置之间有一丝差异,其余都差不多,但为什么还要分这么多产品呢?因为赚钱啊 ——康康你秋裤穿反啦

好了,希望硬件安全产品厂商不要对号入座,赶紧跑。

6. 有关网络拓扑实现相关的部署

这一片内容其实是网络设备集成、路由交换里面的东西,一般是网络工程师做组网设计时用的。巧了,鄙人就是网络工程的同学。

网络VLAN划分示例:

这里说重点,其他的一笔带过。

拓扑设计要求是192.168.6.0是用户区域有g/0-g/3,分别是靶机服务器、一个镜像接口和另一台安全设备,其他用户都在剩下的接口中,划分为vlan6

192.168.7.0是黑客攻击区域,划分为vlan7,黑客可以访问用户和服务器,用户不能访问黑客,问在交换机中如何配置ACL访问控制列表实现这一功能?

我摸索了两天,才终于准确满足了这一需求:

好了,如果你是行业内的,看一看,如果这超出了你研究的领域,可以跳过。

7. 端口安全和VLAN安全

这是默认的锐捷的端口保护,有效缓解ARP欺骗和网络过载,ARP欺骗还可以在DHCP里面设置,有兴趣的朋友自行搜索。有关VLAN安全:

vlan内部间的安全措施有很多种,这里介绍一种临时防止蠕虫散布的方法

建立VACL,使同一个vlan内部的机器不能互访

8. 镜像端口

我们的IDS要通过镜像端口才能部署这样,IDS就可以观察到所有数据了,所有流量数据都会被交换机给IDS另外发一份

1、镜像端口是什么

镜像的意思就是监视的意思,把一个端口的通讯数据用另一个端口给复制出来,常常用于需要对那个端口的通讯进行监视才使用。镜像端口既可以实现一个VLAN中若干个源端口向一个监控端口镜像数据,也可以从若干个VLAN向一个监控端口镜像数据。

端口镜像(port Mirroring)功能通过在交换机或路由器上,将一个或多个源端口的数据流量转发到某一个指定端口来实现对网络的监听,指定端口称之为”镜像端口”或”目的端口”,在不严重影响源端口正常吞吐流量的情况下,可以通过镜像端口对网络的流量进行监控分析。在企业中用镜像功能,可以很好地对企业内部的网络数据进行监控管理,在网络出故障的时候,可以快速地定位故障

2. 部署:

9. 谈一谈白帽子常涉及的层面相关部署

服务器一台:ubuntu12.04 nginx1.4+php5.3.4+mysql5

里面放上我们近年来常见的包含漏洞的旧版本CMS ,比如dedeCMS、FineCMS之类,系统版本低一点我们可以玩,Metasploit 数据库用root账户连接,平时可以玩UDF、MOF提权,剩下还有什么注入啊、文件包含啊。。不多说了

用户主机两台:分别是ubuntu12.04和windows7未打补丁版

两台设备均开放SMB协议,什么永恒之蓝啊你懂的。。不多说了。

测试:

我们可以测试分别把IDS 打开,防火墙打开或关掉的攻击效果,攻击手段 不限于web安全以及系统组建提权,从而判断安全设备的作用。答案当然是防火墙对于内网之间的攻击当然没用啊,但是IDS会记录日志。

10.日志搜集

流量搜集:

别忘了我们搭建攻防平台的初衷是为了搜集日志的

在服务器靶机和用户的电脑上安装fiddler和wireshark,事后将日志丢给数据清洗、打标那帮人处理,其实数据的清洗和打标也是十分劳神的~~~

用户行为搜集:

这里要祭出大名鼎鼎的神器sysmon啦!

Sysmon是微软推出的一款工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻,可用来监视和记录系统活动,并写入windows事件日志,监控的对象包括进程的创建、网络连接和文件创建和更改。

特征

备注

USB设备操作

设备类型 设备插、拔行为 设备读、写行为

sysmon

文件访问

文件类型 新建、拷贝、删除、打开、关闭、读与写权限等操作

Sysmon

CD/DVD介质访问

介质类型,介质读、写操作

Sysmon

网络流量

协议类型 源IP 目的IP 源端口 目的端口 路径 持续时间

wireshark

邮件操作(留下)

账户名 登入、登出 新建、删除、读操作 收件人地址(太敏感)

邮件服务器

计算机登录

账户名 登录、登出操作

os

CPU

CPU**的占用率**

Powershell

进程

进程类型 进程创建 进程生命周期

Sysmon

打印机操作

文件类型 文件名

打印机日志

用户命令

时间序列上的用户命令

Linux bash日志 Windows sysmon

注册表

读、写、添加、删除操作

Sysmon

随后贴心的 sysmon 可以把日志导出为xml格式。

11. 感想和企业安全建设

一次攻防平台搭建介绍完了,这里折射出来很多企业里面需要做的事情,你看到了麽?

企业内部网络安全建设是从路由交换开始的,权限核查、漏洞扫描、攻击阻断甚至对外资产防DDoS,不管是买设备还是自己动手搭建,总之一样都不能少。企业如果资金充裕的话,且对外有互联网产品,办一个安全应急响应中心(SRC)也是一个不错的选择,招点人就把内部网络安全也捎带办了。如果企业比较小,可以选择靠谱的乙方公司或者是云服务提供商做一个资产的安全托管,都是一个不错的选择。

(注:若对本文有任何想法,都可以私信与作者联系。)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
深入理解Java中的位运算符
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
喵手
2023/11/21
7070
深入理解Java中的位运算符
面试题006:什么是C语言中的位运算符?请解释一下&、|和^运算符。
当面试官问到C语言中的位运算符时,可以这样回答:位运算符是用于在二进制位级别上进行操作的运算符,它们直接操作变量的各个位,而不考虑它们的整体值。C语言中的常见位运算符包括按位与(&)、按位或(|)和按位异或(^)。
C语言中文社区
2023/09/01
2170
面试题006:什么是C语言中的位运算符?请解释一下&、|和^运算符。
Java语言位运算符详解
很多编程语言都有位运算符,Java语言也不例外。在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符。在讲解这些运算符的使用之前,必须了解一个常识,那就是:位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。下面就来详细讲解这7种位运算符的使用方法。
科技新语
2025/03/07
1340
Java语言位运算符详解
C++位运算符
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
老九学堂-小师弟
2019/10/09
1.2K0
MySQL位运算符
位运算是将给定的操作数转化为二进制后,对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果。MySQL5.0支持6种位运算符。
秋白
2019/02/21
1.8K0
MySQL位运算符
深入理解JavaScript位运算符
说起位运算符,各位一定是知道和二进制有关。但是我觉得,还是有大部分朋友对于位运算符还是比较陌生的,因为在实际的需求开发中这玩意几乎都没怎么用过,所以也就没有去过多的了解这东西。
吴佳
2022/09/26
3020
Java中的位运算符,你真的掌握了吗?
咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~
bug菌
2023/11/17
3760
Java中的位运算符,你真的掌握了吗?
被忽略的位运算符总结
曾经的我还是太年轻了, 基础不扎实还自以为是, 看到位运算符一节就以为是逻辑运算, 结果跳过没看了, 漏了很多知识. 果然 LeetCode 没白刷呀, 接下来是总结.
Ewdager
2020/07/14
7120
【重学 MySQL】十九、位运算符的使用
在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。
用户11332765
2024/10/28
1500
【重学 MySQL】十九、位运算符的使用
c语言中位运算符_位运算符的用法
C语言的运算符是一个很有意思的东西,运用起来可以解决很多麻烦的事,但是想要灵活应用也有一定的难度,总结一下c语言运算符的用法和一些常用技巧.
全栈程序员站长
2022/11/09
9360
位运算符
--位运算是把数字看做二进制数来进行计算的,先将要进行运算的数据转换为二进制,然后才能进行运算
uniQue_cjh
2023/04/09
3220
Java位运算符:实现高效算法的利器
咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~
bug菌
2024/09/09
1510
Java位运算符:实现高效算法的利器
C++移位运算符
The behavior is undefined if the right operand is negative, orgreater than or equal to the length in bits of the promoted left operand.
全栈程序员站长
2022/07/15
7300
C语言位运算符
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
老九学堂-小师弟
2019/09/19
3.3K0
c语言中位运算符的用法_c语言中位运算符的优先级
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。运位算包括位逻辑运算和移位运算,位逻辑运算能够方便地设置或屏蔽内存中某个字节的一位或几位,也可以对两个数按位相加等;移位运算可以对内存中某个二进制数左移或右移几位等。
全栈程序员站长
2022/11/10
8390
【mysql】位运算符
1. 位运算符 位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。 MySQL支持的位运算符如下: [请添加图片描述] 1.1 按位与运算符 按位与(&)运算符将给定值对应的二进制数逐位进行逻辑与运算。当给定值对应的二进制位的数值都为1时,则该位返回1,否则返回0。 mysql> SELECT 1 & 10, 20 & 30; +--------+---------+ | 1 & 10 | 20 & 30 | +--------+-
兮动人
2022/03/03
1.2K0
深入理解C#位运算:掌握位运算符的妙用
C#位运算是一种强大的工具,可以在处理二进制数据和位操作时发挥重要作用。通过使用位运算符,我们可以对整数进行位级别的操作,如位与、位或、位异或和位取反等。位运算可以用于优化性能、压缩数据、实现位掩码和位标志等。了解和掌握C#位运算的基本原理和常见应用场景,将使我们能够更高效地处理二进制数据,并在某些情况下提高代码的性能和可读性。通过深入理解C#位运算,我们可以在编程中发挥更大的创造力和灵活性。
沙漠尽头的狼
2023/11/07
8730
深入理解C#位运算:掌握位运算符的妙用
【修正】深入理解C#位运算:掌握位运算符的妙用
C#位运算是一种强大的工具,可以在处理二进制数据和位操作时发挥重要作用。通过使用位运算符,我们可以对整数进行位级别的操作,如位与、位或、位异或和位取反等。位运算可以用于优化性能、压缩数据、实现位掩码和位标志等。了解和掌握C#位运算的基本原理和常见应用场景,将使我们能够更高效地处理二进制数据,并在某些情况下提高代码的性能和可读性。通过深入理解C#位运算,我们可以在编程中发挥更大的创造力和灵活性。
沙漠尽头的狼
2023/11/13
4600
【修正】深入理解C#位运算:掌握位运算符的妙用
位运算符与(&)、或(|)、异或(^)、非(~)、左移(<<)、右移(>>)、右移补零(>>>)如何选择?
上一篇:消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 如何选择?
良月柒
2019/11/08
2.4K0
位运算符与(&)、或(|)、异或(^)、非(~)、左移(<<)、右移(>>)、右移补零(>>>)如何选择?
深入解析Java中的位运算符:>和>>>
当谈到位运算符时,Java中的<<、>>和>>>运算符在源码中无疑是经常出现的。这些运算符在处理整数类型的数据时发挥着重要作用。它们主要用于对二进制位进行操作,是一种高效处理位级信息的方式。让我们深入探讨一下这些运算符的工作原理以及它们在Java中的应用。
修己xj
2023/09/03
3.4K0
深入解析Java中的位运算符:>和>>>
相关推荐
深入理解Java中的位运算符
更多 >
LV.10
腾云先锋腾云先锋(TDP)成员
目录
  • 背景介绍
  • 1. IDS入侵检测系统
  • 2. IPS入侵防御系统
  • 3. NRSAS远程网络评估系统
  • 4. 防火墙
    • DMZ部署哲学:  
  • 5. 堡垒机
  • 6. 有关网络拓扑实现相关的部署
  • 7. 端口安全和VLAN安全
  • 8. 镜像端口
    • 1、镜像端口是什么
    • 2. 部署:
  • 9. 谈一谈白帽子常涉及的层面相关部署
  • 10.日志搜集
  • 11. 感想和企业安全建设
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档