98%的运维人员会中招的运维安全陋习,你中了几个?_计算机运维工程师有哪些无效行为

三、常见运维安全陋习

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

下面列出了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,调用起来则非常简单。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值