以下是对目前部分热门的甲方面试/笔试题(偏管理和运营)的总结和思考,希望可以帮助到正在准备甲方面试的你们;
愿我们披荆斩棘,享受前进路上的每一处风景
1. 简述一下目前主流编程语言的相关漏洞
答:
- 这个题的相关思路就是聊一聊目前主流语言的漏洞,你可以从两个方面进行阐述:
-
- Java 、Python、PHP(漏洞大户)的相关漏洞,其实也是那几个;
- 聊聊你知道的框架 - 比如Apache基金会框架、PHPAdmin、Python主流Web架构 - jinjia2、Django等;
- Python的漏洞:
- 注入:Django 2022新的SQL注入漏洞,即使Django采用参数化查询和ORM的防范SQL注入也存在字典注入的方式,2022最新的CVE漏洞利用QuerySet.annotate()、aggregate()和extra()方法进行注入;
- XML: XML的读取会造成DoS攻击;XXE 攻击的利用;
- assert 语句: 不要使用 assert 语句来防止用户访问特定代码段。默认情况下,Python 以 debug 为 true 来执行脚本,但在真实环境中,通常使用优化运行,这将会跳过 assert 语句并直接转到安全代码,而不管用户是否是 is_admin 。
- site-package: 伪造官方库进行代码注入和代码伪造;
- Java漏洞:
- Java最著名的就是反序列化漏洞,反序列化漏洞出现在WebLogic、JBoss等常见Web容器;
- Structs2就是任意代码执行
- Log4j2 也是很火的漏洞
- Shiro 的身份验证绕过、远程代码执行;
- PHP漏洞:一抓一大把
- ThinlkPHP的远程代码执行
- PHP的反序列化
- ThinkPHP文件包含
- PHP不安全函数: chroot、exec、一句话木马、proc_open等
-
2.如何发现目前在运行的相关系统正在遭受DDoS攻击?(10分)
答:
-
问题背景:
- 首先现在大多数企业已经不自己购买抗DoS的相关防御设备了,或者只是简单部署DoS流量防御设备系统,因为如果企业遭受到DoS攻击指望那几台互联网出口的抗D设备已经无法满足需求,如果互联网出入口出现高峰流量就会直接将设备打挂,从而设备流量被绕过,还是无法做到流量清洗和DoS的相关防御;
- 本身这种攻击就没有有效的防御方法,最好的方法是在运营商上就做好流量清洗和流量黑洞,才能更有效的防范,因此最为省事和有效的办法是购买运营商的流量清洗服务;
- CDN其实也是一个很有效的防范DoS攻击的途经,也是成本低廉的解决问题的方式;
-
如何发现系统正在遭受攻击?
-
首先,可以在现网中部署流量监视系统或者流量审计系统,从而对业务流量进行监视,进行业务正常流量和IP地址的追踪和观察,形成自身的业务流量安全相关模型,明确内网服务器或者自身应用系统对于服务流量的上限,设立相关的警戒阈值,超过该阈值需要考虑是否遭受DoS攻击;
- 利用分布式多核硬件技术,基于深度数据包检测技术(DPI)监测、分析网络流量数据,快速识别隐藏在背景流量中的攻击包,以实现精准的流量识别和清洗。恶意流量主要包括 DoS/DDoS 攻击、同步风暴(SYN Flood)、UDP 风暴(UDPFlood)、ICMP 风暴(ICMP Flood)、DNS 查询请求风暴(DNS Query Flood)、HTTP Get 风暴(HTTP Get Flood)、CC 攻击等网络攻击流量。
-
其次,Linux服务器对于CC攻击和DoS攻击有自身的日志记录,dmesg 和 message 日志都会有相关的Flood的日志记录,这个日志的记录是由于:net.ipv4.tcp_max_syn_backlog 参数设置的,Linux也有其他参数来防止DoS攻击,主要思路是控制连接数;
-
net.ipv4.tcp_max_syn_backlog = 4096 ``#表示SYN队列的长度,加大队列长度可以容纳更多等待连接的网络连接数 net.ipv4.tcp_syncookies = 1 ``#表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭,1表示打开; net.ipv4.tcp_synack_retries = 2 ``#下面这两行表示定义SYN重试次数 net.ipv4.tcp_syn_retries = 2
#提高TCP连接能力 net.ipv4.tcp_rmem = 32768 net.ipv4.tcp_wmem = 32768 net.ipv4.tcp_sack = 0 ``#打开tcp_sack功能,1表示"关闭",0表示"打开"
-
DDoS deflate
也是一个控制 netstat 和 iptables 有效的工具,通过 netstat 监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP;
-
-
一些框架,例如Apache的Web框架就记录了:access log 来记录访问;
-
此外,可以检查Linux服务器的相关进程资源使用情况,通过 top命令查看监视系统进程的资源使用情况,对系统的资源使用进行监控,这里涉及到主机的监控的相关技术;或者通过 netstat 查看目前系统正在连接数;
-
netstat -npt | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
-
-
也可以直接抓取网络流量进行分析,使用的相关工具有:tcpdump 和 tshark 可以抓取网络流量进行分析;
-
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
3. 简述TLS的加密过程(10分)
答:
-
首先必须明确,TLS目前的版本已经从1.0到1.3版本,目前比较流行的版本是1.2,TLS的运作的OSI模型在传输层,SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。
- 握手协议;
- 握手协议负责在客户端和服务器端商定密码算法和共享密钥,包括证书认证,是4个协议中最最复杂的部分。
- 密码规格变更协议;
- 密码规格变更协议负责向通信对象传达变更密码方式的信号
- 警告协议;
- 警告协议负责在发生错误的时候将错误传达给对方
- 应用数据协议;
- 应用数据协议负责将TLS承载的应用数据传达给通信对象的协议。
- TLS记录协议;
- 握手协议;
-
TLS加密原理
-
TCP建立了两端的连接;建立在TCP连接的基础上,TLS也是通过几次握手来保证应用层的数据安全传输;
-
要保证数据的安全,就要对两端的传输的报文进行加密,且要防止被中间人攻击所破解。
-
TLS使用非对称加密的方式进行加密,当然这种加密的方式带来的问题就是:非常耗时,加密传输数据会影响效率,这一点非常关键;
-
TLS的秘钥交换规则是:
- 服务端生成非对称秘钥对,私钥自己保存,将公钥明文传输给客户端;
- 客户端自己生成一个对称秘钥,再将对称秘钥通过公钥加密,通过加密后的秘钥传给服务端,服务端通过自己保存的私钥进行解密,获得客户端指定的对称秘钥;
- 当前,这种交换密钥的方式也有一个问题,就是明文传输的公钥可能存在被篡改的问题,这个时候必须引出数字证书和CA的概念;
-
TLS的CA和数字证书(一定要回答这个方面的问题):
- 数字证书是一个包含了某个服务站点名字、公钥的文件,该文件由CA颁发,能够证明服务站点的真实性。
- 服务端自己向CA证书申请数字证书,而CA机构怎么获得相关信任呢?这个时候涉及到根证书机构,世界上的根证书机构只有几个,因此CA机构向根CA机构进行申请,整个CA的信任链也是一个逐级链式认证的过程,在这里不再进行详述。
-
TLS使用的加密协议:
-
最后详细的过程如下图:
-
-
- 第一步: 客户端确定随机数,发送支持的密码算法放进到TLS协议中,供服务端进行选择;服务端存储客户端发送的随机数1;
- 第二步:服务端确定与客户端的加密算法,并确定一个随机数2,以明文的方式发送给客户端,客户端保存随机数2;
- 第三部:服务端发送数字证书(包括:公钥、签名、服务端主体信息)给服务端,此时服务器也确定了对应公钥的解密私钥;客户端收到后验证数字证书是否有效,并确定随机数3;
- 第四步:客户端发送经过公钥加密的随机数3,服务端接收并使用保存的私钥进行解密;
- 第五步:这下服务端和客户端都有了对称密钥生成的三个随机数:随机数1、随机数2、随机数3,使用DH(现在比较流行的是:ECDH算法)秘钥生成算法进行生成对称秘钥,使用对称秘钥进行加密数据进行传输;
4. 如何提升非对称加密的运行效率(10分)
答:
- 可以采用独立的硬件加密模块的方式进行,非对称对称加密使用的算法需要考虑大数乘法、大因数分解、大数模运算,在计算机中简单的是加法和减法,因此乘法本身就是有损耗;其次,算法对于秘钥的存储需要空间和算法的复杂度,也会影响非对称加密的运行效率;
- 使用量子计算和椭圆曲线算法来进行加密的方式,椭圆曲线算法涉及到几何学,因此比大数乘法、大因数分解、大数模运算的复杂度要较低;
5. 请简述什么是企业安全运营 / 在企业内部中如何推行安全运营建设(20分 + 20分)
答:
- 这个问题真的非常刁钻,需要很强的体系知识以及在企业中的实践经历,甚至对于企业的体系和组织架构有一定的了解,因此是一个20分的大题;必须要对目前的知识进行拆分;
- 什么是企业的安全运营,安全运营的概念:
- 安全运营被定义为:以资产为核心、以安全事件管理为关键流程,采用安全域的划分思想,建立一套实时的资产风险模型,协助管理员进行事件分析、风险分析、预警管理和应急响应处理的集中安全管理系统;
- 安全运营以用户网络的最终安全为目的,实现运营过程上的统筹管理;
- 安全风险不仅仅指的是目前的互联网技术、计算机科学技术,而是将企业整个体系的安全囊括在安全运营建设上,包括:合规安全(监管机构、行业规范)、运营风险管理(在实际运营中的风所有险,例如金融行业的风险控制部门,涉及到业务、产品等);
- 安全运营本质上就是一个:以技术、流程和人有机结合的复杂系统过程,包含:
- 产品、服务、运维、研发等,已有安全工具、安全服务产出的数据进行有效分析,持续输出价值,解决安全风险
- 其模式:用“服务模式”开展合作,以“安全能力”进行赋能,以“安全数据”提供决策,以“运营能力”作为交付,以运营模式来发现问题、验证问题、分析问题、响应处理、解决问题并持续优化;
- 企业安全运营存在的问题:
- 底层的安全基础能力不成熟、安全目标不清晰、安全运营工具依赖第三方厂商、没有形成合理的安全体系、安全人才不择;
- 企业安全运营的建设方向和大体内容:
- 合规性建设和企业自身安全制度体系建设:
- 首先对于任何企业,合规、合法是企业生存的生命线,必须要牢记这一点,相关安全规范可以参考GB/T或者ISO的相关概念和规章制度或者是已经公开的电子政务数据、安全标准、指导法规,有非常大的建设参考意义;
- 开展等级保护和风险评估流程、合规检查和评估指导、合规整改内容;
- 明确内部安全管理的要求、安全技术标准以及运营标准;
- 企业组织架构建设方向:
- 明确现状确立组织架构
- 安全运营的服务体系建设方向:
- 开展安全基线评估加固
- 网络设备安全配置基线 - ARP污染等常见攻击方式
- 安全设备安全配置基线
- 操作系统安全配置基线
- 数据库与中间件安全基线
- 安全配置核查系统和检查脚本工具
- 运维管理和安全审计
- 安全运维管理:对身份、访问、权限控制;
- 角色与权限 RBAC模型等
- 安全审计日志的审计和分析:运维操作产生网络访问日志、安全运维日志、操作日志、产品运行日志、网络流量数据;这些日志中隐藏着网络攻击行为或者未发现的相关攻击行为,安全审计通过这些信息进行审计和发掘,发现相关攻击行为特征;
- 服务交付成果审计
- 系统上线检查
- 安全事件分析
- 重点时期的攻防演练;
- 安全事件及态势监测、安全事件应急处理
- 专家应急响应、安全事件检测、安全事件抑制、安全事件根除、安全事件恢复、安全事件总结;
- 互联网资产发现
- 应用失陷资产的检测
- 安全策略优化服务
- 安全产品的运行、保障、运维
- 外部威胁的实时监测
- 漏洞的全生命周期管理
- 重大时期的安全检查
- 重大安全事件的通告
- 开展安全基线评估加固
- 安全管理服务建设:
- 管理组织建设:
- 按照《网络安全法》等法律法规和等保要求,对各个业务系统进行信息安全设计以及安全运营中心建设;
- 组织架构的建设需要通过审查;
- 明确安全职责矩阵;
- 安全制度管理:
- 明确信息安全总方针、安全策略、说明机构安全工作的总体目标、范围、方针、原则;
- 完善安全中的管理制度;
- 建立日常管理操作制度、手册;
- 定期对安全制度进行评审、
- 成立信息安全领导小组和委员会,由信息安全小组统一负责并组织相关人员指定信息安全管理制度;
- 安全流程管理:
- 安全事件处理流程、安全风险内容评估流程、安全事件应急相应流程、安全事件溯源取证流程、安全设备上线叫个流程;
- 变更流程
- 流程发布过程
- 人员安全管理
- 安全建设管理
- 系统定级、安全方案涉及、安全产品采购、自主软件开发、外包软件开发、工程实施、测试验收、系统交付、系统备案、等级测评、安全服务商选择;
- 安全运维管理
- 环境管理 - 设置管理区
- 资产管理
- 介质管理
- 设备管理
- 安全监控
- 系统安全管理
- 恶意代码防范
- 供应链安全管理
- 密码管理
- 变更管理
- 备份及恢复管理
- 安全事件处置
- 应急预案管理
- 安全培训管理
- 安全运营管理
- 《网络安全法》和等保第三极进行分析,安全管理体系逐步建立和完善
- 对角色/权限管理、安全制度管理、风险管理、控制执行、绩效评价、威胁评价、威胁情报、工作流程进行统一管理
- 安全咨询管理
- 管理组织建设:
- 合规性建设和企业自身安全制度体系建设:
网络安全成长路线图
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:
# 网络安全学习方法
上面介绍了技术分类和学习路线,这里来谈一下学习方法:
无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
接下来我将给各位同学划分一张学习计划表!
学习计划
那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:
阶段一:初级网络安全工程师
接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。
综合薪资区间6k~15k
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?
阶段二:中级or高级网络安全工程师(看自己能力)
综合薪资区间15k~30k
7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。
零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;
Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完
用Python编写漏洞的exp,然后写一个简单的网络爬虫
PHP基本语法学习并书写一个简单的博客系统
熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)
了解Bootstrap的布局或者CSS。
阶段三:顶级网络安全工程师
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
学习资料分享
当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。
![](https://i-blog.csdnimg.cn/blog_migrate/08c3b846393bdaea6409358cbf194580.jpeg)