98%的运维人员会中招的运维安全陋习,你中了几个?

article/2025/10/14 11:04:35

随着IT技术和业务的发展及各式各样安全漏洞的涌现,运维与安全这两个专业日渐交融,人们对运维安全的重视程度越来越高,于是逐渐出现了一个新的交叉领域叫“运维安全”。

黑客、白帽子忙于挖掘运维安全漏洞,企业忙于构建运维安全体系,一时间无数漏洞纷至沓来,座座堡垒拔地而起。

本文将按照提出问题到回应答案的思路,先抛出作者对运维安全的理解,并解释重视运维安全的原因;接着根据在运维安全一线发现的工作陋习及企业面临的常见问题,整理出通用运维安全问题分类;之后的下篇还将对症下药,提出一个好的运维安全形态:不仅在于工程师们的安全意识,更在于一套相对完整的运维安全体系,从流程到技术,点线面多位一体共同缔造。

一、什么是运维安全?

我们先看一张维恩图,现实中的业务、运维、安全的关系是互相关联、彼此依赖的:

从这张图中,衍生出三个不同与安全相关的子专业:“运维+安全”、“安全+运维”、“业务+运维+安全”。在互联网公司招聘岗位里,我们经常看到的是运维安全工程师、安全运维工程师,这两个岗位比较好对号入座。而“业务+运维+安全”,通常被包含在安全工程师的岗位中,近年出现的应用运维安全工程师,相比之下更符合“业务+运维+安全”的定位。

1、运维安全 = 运维 + 安全

运维安全研究的是与运维相关的安全问题的发现、分析与阻断,比如操作系统或应用版本漏洞、访问控制漏洞、DDoS攻击等。显然,运维安全立足于运维,从企业架构上讲通常属于运维部门或基础架构部门,运维安全工程师的专业序列一般属于运维工程师。

2、安全运维 = 安全 + 运维

安全运维研究的是安全系统或设备的运维,比如防火墙、漏洞扫描器维护、漏洞挖掘与应急响应等。这个也很明显,安全运维属于安全部门旗下,安全运维工程师的专业序列也属于安全工程师。

3、应用运维安全 = 业务 + 运维 + 安全

应用运维安全研究的是业务上的运维与安全,主要包括安全风险评估与安全方案规划设计及其落地。组织架构上该岗位有属于安全部门的,也有属于业务部门的,对应的专业序列有属于安全工程师的,也有属于开发工程师。

通过对比“运维+安全”、“安全+运维”、“业务+运维+安全”三个子专业的不同,我们明确了运维安全的研究领域和岗位职责。看到这里,可能大家会有疑问,是什么导致运维安全现在这么“风光”?

二、为什么我们重视运维安全?

可以说,2013-2014年是运维安全发展的一个分水岭。这两年特别之处在于作为互联网基础设施的几大应用相继被爆漏洞或被攻击,例如Struts2远程代码执行漏洞、Openssl心脏滴血、Bash破壳漏洞,以及当时“史上规模最大的DDoS攻击”导致大量.cn和.com.cn域名无法解析。在这之后,企业对运维安全投入迅速加大,各种运维安全问题也引起广泛关注。直到今天,运维安全已经成为企业安全建设的重中之重。

1、漏洞百出的软件供应链

  • struts2远程代码执行漏洞

当年S2漏洞一出,整个互联网一片哀嚎。下面是受影响的企业,大家应该几乎没有不认识的吧?

  • openssl心脏滴血

跟S2漏洞一样,杀伤力极强。

  • xcode开发的ios app感染木马

研究者发现AppStore上的TOP5000应用有76款被感染。后来发现罪魁祸首是开发人员从非苹果官方渠道下载xcode开发环境。

2、 运维安全漏洞占比明显

自从某云离去以后,不得不说国内互联网安全态势的共享逐步走向了封闭,不过借此机缘,也涌现了很多商业公司。

即便是现在留下的某天某法某眼,能查询到的统计分析数据其实也很有限。即便是某旦,其用户体验也不够好,统计分析功能无法差强人意。剩下的,各种研究报告也从来没有把运维安全问题列入单独的统计范畴,所以这里借用2016年CNVD的统计,可以发现明显属于运维安全问题的网络设备漏洞和操作系统漏洞,占比已超过20%,加上应用程序漏洞中包括的各种应用版本漏洞,相信归属于运维安全领域的漏洞比例将极其可观。

3运维安全漏洞利用性价比高

针对运维安全漏洞的攻击属于典型的“一两拨千金”,其ROI非常高:投入小、容易发现与利用、造成危害特别大。

根据微软的DREAD模型来衡量运维安全漏洞风险如下:

三、常见运维安全陋习

运维安全事件频发,一方面固然是因为运维或安全规范空白或者没有落地,另一方面也在于运维人员缺乏强烈的运维安全意识,在日常工作中存在这样那样的安全陋习导致。

下面列出了14种坑,大家可以试试对号入座,仔细想想曾几何时自己是否也踩过同样的坑?

1、修改iptables后没有还原配置,甚至清空关闭iptables

出于测试需要临时清空iptables可以理解,但是很多人会忘记还原,也没有设置自动还原机制。

iptables -F

2、脚本没有检查“*”、空格、变量

如果我们认可“不光用户的输入是不可信的,自己的输入也是不可信”,这样的坑就会少踩。

rm -rf / v a r 1 / var1/ var1/var2

3、服务启动默认监听全部地址

绝大部分应用默认配置便是如此,在没有有效访问控制的清空下开启监听所有地址,离危险也就不远了。

bind-address 0.0.0.0

4、给文件开放过大的权限时,任何人都能读写

这个跟phpinfo有点像,能给入侵者推一把。

chmod 777 $dir || chmod 666 $script

5、用root启动服务

对于大多数运维人员而言,一上机器就切到root,后面用root启动服务仿佛一气呵成。

#nohup ./server &

6、嫌麻烦不配认证,也不配访问控制

这个跟监听任意地址比较像,通常也是默认配置使然,使用者也没有意识去加固。

#requirepass test

7、单机安装docker之后忽略检查iptables,导致docker修改iptables开放外网

docker技术给我们带来的便利自不必言,但是docker带来的安全风险却一点也不少。而且,docker daemon默认是能控制宿主iptables的,如果docker daemon使用tcp socket或者启动的容器可被外部访问,则连宿主一同沦陷也不在话下。

8、sudo授权过大,导致自定义脚本提权

如果攻击者可修改脚本内容则提权易如反掌。

sudo script.sh

参考链接:

script.sh:http://script.sh

9、给开发或者QA授权root权限,他搞事你背锅?

一直以来我们强调RBAC,但是运维太忙,开发测试人员需求太多时,很多运维人员会直接授权他们root权限,而他们对系统级访问控制不甚了了,因此造成的漏洞非常“可观”。

dev@pro-app-01:/home/dev$su

root@pro-app-01:/home/dev#whoami

root

10、key/token/ssh私钥保存在txt文件里,也有把个人ssh私钥放在服务器的

op@pro-app-01:/home/op$ls ~/.ssh

id_rsa id_rsa.pub

11、把工作上的代码对外发布

连着遇到实习生把项目代码提交github了,回复的理由是git配错了。虽然不知真假,但我认为,至少他们是安全意识不足。

git remote add origin https://github.com/secondwatchCH/EFS.gitgit push origin master

12、个人home目录那么敏感,也有人拿来直接托管服务,至少.bash_history泄露是跑不了

dev@pro-app-01:/home/dev$python -m HTTPSimpleServer

13、应用选型时没有考虑安全风险

Apache Struts Version:Struts 2.5 - Struts 2.5.12 #线上业务使用受S2-052影响的S2版本

14、对软件供应链安全没有概念

从xcode事件到pip官方发现恶意ssh库,都在向我们昭示一个道理:软件供应链安全风险极大。目前比较运维人员中比较常见问题有:

  • ssh客户端或者开发IDE从百度网盘下载

  • 两眼一闭,把github/pypi/dockerhub等网站下载的应用/库/镜像直接用到生产环境

  • 未清理默认口令或者默认配置

四、常见运维安全问题

前面我们谈到了运维操作上、思路上的一些陋习,或者安全意识不足的问题,下面结合漏洞分析和响应过的情况来看,常见的运维安全问题主要可分为下面几种:

1、敏感端口对外开放

db或者cache属于敏感应用,通常部署在内网,但是如果部署的机器有内外网ip,且默认监听地址为0.0.0.0的话,则敏感端口会对外开放。如 MySQL / MongoDB / Redis / rsync / docker daemon api 等端口对外开放。

2、敏感应用无认证、空口令或者弱口令

同上,如果敏感应用使用默认配置,则不会开启认证,MySQL / MongoDB / Redis / rsync / supervisord rpc / Memcache 等应用无认证。有时贪图测试方便,配置了弱口令或空口令,则认证形同虚设。

3、敏感信息泄露,如代码备份、版本跟踪信息、认证信息泄露

web.tar.gz/backup.bak / .svn/.git / config.inc.php / test.sql 等信息泄露随处可见,人人知道危险,但是始终时不时会有人会踩坑。

4、应用默认配置未清除

jenkins script / apache server-status等默认功能未清理,例如下图可直接执行命令:

5、应用系统打开debug模式

Django debug模式开启暴露uri路径,phpinfo()暴露服务器信息甚至webroot等,之后攻击者便可借此进一步渗透,很多白帽子应当有此同感,发现了sql注入但是写不了webshell,如果能遇上个phpinfo()那是再好不过的事情了。

6、应用漏洞未及时升级

越是通用的应用,就越经常爆出漏洞。有句话说的好:不是因为黑客这个世界才不安全,而是因为不安全才会有了黑客,黑客去揭开那层假象,我们才发现有那么多不安全。于是Struts2、OpenSSL、Apache、Nginx、Flash等等CVE接踵而来。

7、权限管理松散

不遵循最小权限原则,给开发提供root权限或者给业务账号授权admin权限。

8、DDoS攻击

DDoS攻击对于运维人员而言,是再熟悉不过的安全问题了。我们都知道通过占满带宽、耗尽资源等方式可让服务器无法响应正常请求,说到底是资源对抗的一种攻击方式。如果仅依赖服务器资源去抗,去过滤,如下图,在大流量、高并发之下,只会引来雪崩:

加上DDoS攻击平台大量存在,而且价格低廉,这就让DDoS攻击成为打压竞争对手、报复、勒索等阴谋诡计者首选方式了。

9、流量劫持

还记得2015年小米、腾讯、微博、今日头条等六家共公司联合发表声明呼吁电信运营商打击流量劫持的报告吗?即便如此,现如今的互联网江湖仍是暗流滚滚。下面介绍三种常见的流量劫持方式,这也是困扰运维安全人员多年的痼疾:

  • arp劫持:ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,假冒目标IP进行ARP响应,从而实现中间人攻击。

  • 域名劫持:通过劫持掉域名的DNS解析结果,将HTTP请求劫持到特定IP上,使得客户端和攻击者的服务器建立TCP连接,而非和目标服务器直接连接。

  • HTTP劫持/直接流量修改:在数据通路上对页面进行固定的内容插入,比如广告弹窗等。

10、案例

前面我们讨论了很多运维安全陋习和问题分类,下面要讲的,则是大家再熟悉不过的几个案例,且看运维安全漏洞如何“性价比”极高:

svn

  • 部署web代码时误将.svn目录上传;

  • 使用rsync上传代码时没有exclude掉 .svn目录,svn仓库也没有使用svn propedit svn:ignore <目录或文件>的方式ignore掉不应当上传的文件或目录;

  • 攻击者利用svn信息泄露利用工具Svn-Tool或者svn-extractor还原代码。

rsync

  • rsync使用root用户启动,模块没有配置认证,还对外开放默认端口873;

  • 攻击者利用rsync写crontab任务成功反弹Shell,并种上了挖矿木马。

Redis

  • Redis使用root用户启动,没有配置认证,还对外开放默认端口6379;

  • 攻击者利用Redis写ssh公钥到root用户的.ssh目录成功登上机器;

  • 一般部署Redis的机器都有内网IP,攻击者可借此进行内网漫游了。

Kubernetes

  • K8S的API对外开放,同时未开启认证;

  • 攻击者调用API创建容器,将容器文件系统根目录挂载在宿主根目录, 攻击者利用写crontab任务成功反弹Shell,并在宿主种上了挖矿木马;

  • 有时候容器里跑着未编译的代码或者在沦陷的机器上可以拉到私有Docker镜像仓库的任意镜像,后果将难以想象,如下面K8S的API,调用起来则非常简单。

那么,现在就该思考一个问题了:如何做好运维安全?中医有句话叫对症下药。我们花大篇幅去剖析问题所在,也是想从问题入手,通过纠正或者培养良好的运维安全习惯,结合完整的运维安全技术体系。

学习资源分享

img

img

img
img

点这里【领取】或扫描下方二维码可免费领取

img


http://chatgpt.dhexx.cn/article/6Os1agBc.shtml

相关文章

阿里云——运维安全中心(堡垒机)

运维安全中心&#xff08;堡垒机&#xff09; 构建云上统一、高效、安全运维通道&#xff0c;保障云端运维、办公权限可管控、操作行为可审计 高效&安全运维 运维安全中心&#xff08;堡垒机&#xff09;用于集中管理资产权限&#xff0c;全程监控操作行为&#xff0c;实…

浪潮 服务器数据安全管理系统,浪潮SSC运维安全管控系统

浪潮SSC运维安全管控系统提供精细管控、运维无忧的数据中心安全解决方案。 统一账号 数据中心内所有各种服务器、数据库、网络设备、中间件、业务系统的账号作为从账号。浪潮SSC的账号作为主账号。进入数据中心的每个运维人员对应一个主账号&#xff0c;主账号用来做强身份认证…

安全运维管理

指标总览 指标详情 环境管理 指标内容如图&#xff1a; 指标理解&#xff1a; a&#xff09;明确责任人或责任部门&#xff0c;相关制度文件中明确指定具体部门或人员负责机房安全&#xff0c;对进出机房管理&#xff0c;定期对机房设施维护管理。 b&#xff09;有相关制度…

信息系统运维安全管理规定(可作为范文参考)

信息系统运维安全管理规定 第一章 总则 第一条 为加强XXXXX信息系统运维的安全管理&#xff0c;保障信息系统的网络安全与信息安全&#xff0c;依据国家有关法律、法规和XXXXX有关规章制度&#xff0c;特制定本规定。 第二条 XXXXX信息系统运维安全管理范围包括网络安全管理、操…

运维安全隐患

由于运维人员的水平参差不齐&#xff0c;还有就是是人就有犯错的时候&#xff0c;所以经常会出现不必要的失误导致的安全隐患&#xff0c;所以这里就未大家盘点一下经常出现的由于运维人员是失误造成的安全隐患。 目录浏览 由于发布网站时&#xff0c;服务器配置问题&#xf…

2022-2028全球运维安全管理行业调研及趋势分析报告

【报告篇幅】&#xff1a;146 【报告图表数】&#xff1a;191 【报告出版时间】&#xff1a;2022年1月 内容摘要 据恒州诚思调研统计&#xff0c;2021年全球运维安全管理市场规模约 亿元&#xff0c;2017-2021年年复合增长率CAGR约为 %&#xff0c;预计未来将持续保持平稳增长…

天玥运维安全网关(启明星辰堡垒机)无法登录资源主机的问题

天玥运维安全网关&#xff08;启明星辰堡垒机&#xff09;无法登录资源主机的问题 问题描述解决方案结束 问题描述 用户可正常登录天玥运维安全网关平台&#xff0c;在登录资源主机的时候有报错 解决方案 调出运行&#xff0c;输入gpedit.msc调出组策略&#xff1b;依次点击…

运维需要懂的那些安全技能

前言 以前的认知 以前刚接触IT行业&#xff0c;而我身为运维&#xff0c;我以为我所需要做的安全就是修改服务器密码为复杂的&#xff0c;ssh端口改为非22&#xff0c;还有就是不让人登录服务器就可以保证我维护的东西安全。 现在的认知 工作也好几年了&#xff0c;在这摸爬…

运维一定要懂的100个网络安全小知识

如果有初始密码&#xff0c;应尽快修改&#xff1b; 密码长度不少于8个字符&#xff1b; 不要使用单一的字符类型&#xff0c;例如只用小写字母或只用数字&#xff1b; 用户名与密码不要使用相同字符&#xff1b; 常见的弱口令尽量避免设置为密码&#xff1b; 自己、家人、…

运维安全概述

运维安全概述 iv4n 2015/09/02 19:31 0x00 前言 运维安全是企业安全保障的基石&#xff0c;不同于Web安全、移动安全或者业务安全&#xff0c;运维安全环节出现问题往往会比较严重。 一方面&#xff0c;运维出现的安全漏洞自身危害比较严重。运维服务位于底层&#xff0c;涉及…

Java-注解(Annotation)的使用(详解)

注解(Annotation&#xff09; 前言一、 注解(Annotation)概述二、 常见的Annotation示例1、示例一&#xff1a;生成文档相关的注解2、示例二&#xff1a;在编译时进行格式检查2.1 JDK内置的三个基本注解2.2 代码演示 3、示例三&#xff1a;跟踪代码依赖性&#xff0c;实现替代配…

关于Annotation的那些事儿

文章目录 注解的基础方法元注解与复合注解Repeatable annotation 可重复注解Spring中解析Annotation的工具类 ###### 注解的定义说明 对于一个注解一般包括以下几个部分&#xff1a; 1. Target&#xff1a;适用目标 有一个注解如下所示&#xff1a; java Target(ElementType.TY…

Matlab中annotation函数的使用

目录 语法 说明 示例 创建文本箭头注释 创建文本框注释 创建包含多行文本的文本框注释 创建矩形注释 创建椭圆注释 组合使用两种类型的注释 创建后修改注释 annotation函数是给绘制的图形创建注释。 语法 annotation(lineType,x,y)annotation(lineType)annotation(…

java中Annotation详解

Java 注解&#xff08;Annotation&#xff09;又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。主要作用&#xff1a;Annotation其实是代码里的特殊标记&#xff0c;这些标记可以在编译、类加载、运行时被读取&#xff0c;并执行相应的处理。通过使用Annotation&…

深入理解Java注解类型(@Annotation)

【版权申明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; http://blog.csdn.net/javazejian/article/details/71860633 出自【zejian的博客】 关联文章&#xff1a; 深入理解Java类型信息(Class对象)与反射…

【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知Advice注解(已附源码)

文章目录 前言AOP与Spring AOPAspect简单案例快速入门 一、Pointcutannotation 二、五种通知Advice1. Before前置通知2. After后置通知3. AfterRunning返回通知4. AfterThrowing异常通知5. Around环绕通知 总结 前言 在微服务流行的当下&#xff0c;在使用SpringCloud/Springb…

Annotation理解及运用

什么是Annotation 我们在平时的开发过程中看到很多如@Override,@SuppressWarnings,@Test等样式的代码就是注解,注解是放到类、构造器、方法、属性、参数前的标记。 Annotation概念 Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的…

Annotation介绍

Annotation思维导图

AnnotationProcessor 处理器不工作怎么定位?

什么是 Annotation Processor 构建问题 写过自定义注解处理器的老司机们乍一看这个问题觉得挺简单&#xff0c;是的&#xff0c;因为网上基本通篇都在教你怎么打日志&#xff0c;但是你有没有想过如果连日志都打印不出来的时候你怎么定位呢&#xff1f;譬如如下代码&#xff1…

annotation-driven 配置详解

一、前沿 在 Spring MVC 的项目中&#xff0c;我们经常使用 <mvc:annotation-driven> 这个配置&#xff0c;那么这个配置到底是做什么的呢&#xff1f;下面来分析一下&#xff0c;首先找到 mvc 的命名空间的定义&#xff0c;如下图&#xff1a; 从上述图中可知&#xff…