本人运维安全课程:
本人课程链接:https://edu.51cto.com/course/27043.html 作者:张岩峰,转载请注明出处
常见的运维安全陋习
运维安全事件频发,一方面固然是因为运维或安全规范空白或者没有落地,另一方面也在于运维人员缺乏强烈的运维安全意识,在日常工作中存在这样那样的安全陋习导致。可以对号入座,仔细想想曾几何时自己是否也踩过同样的坑?
1、iptables
修改iptables后没有还原配置,甚至清空关闭iptables
出于测试需要临时清空iptables可以理解,但是很多人会忘记还原,也没有设置自动还原机制。
[root@localhost ~]# iptables -F
2、脚本
脚本没有检查“*”、空格、变量。
如果我们认为“不光用户的输入是不可信的,自己的输入也是不可信”,这样的坑就会少踩。
[root@localhost ~]# rm -rf /var1/var2
3、服务启动
服务启动默认监听全部地址
绝大部分应用默认配置便是如此,在没有有效访问控制的清空下开启监听所有地址,离危险也不远了。
bind-address 0.0.0.0
4、文件权限
给文件开放过大的权限时,任何人都能读写
[root@localhost ~]# chmod 777 dir
[root@localhost ~]# chmod 666 script
5、用root启动服务
对于大多数运维而言,一上机器就切到root,后面用root启动服务仿佛一气呵成。
[root@localhost ~]# nohup ./server &
6、认证和访问控制
嫌麻烦不配认证,也不配访问控制
这个跟监控任意地址比较像,通常是默认配置使然,使用者也没有意思去加固。
7、sudo授权
sudo授权过大,导致自定义脚本提权
如果***者可修改脚本内容则提权易如反掌。
[root@localhost ~]# sudo script.sh
8、root权限对象
给开发或者QA授权root权限,他搞事你背锅?
一直以来我们强调RBAC,但是运维太忙,开发测试人员需求太多时,很多运维人员会直接授权他们root权限,而他们对系统级访问控制不甚了了,因此造成的漏洞非常可观。
[root@localhost ~]$ su
[root@localhost ~]# whoami
root
9、ssh私钥
key/token/ssh私钥保存在txt文件里,也有把个人ssh私钥放在服务器的
[root@localhost ~]# ls ~/.ssh
id_rsa id_rsa.pub
10、代码存放意识
把工作上的代码对外发布
遇到实习生把项目代码提交github了,回复的理由是git配错了。虽然不知真假,但我认为,至少他们是安全意识不足。
[root@localhost ~]# git remote add origin
https://github.com/secondwatchCH/EFS.git
[root@localhost ~]# git push origin master
11、home目录
个人home目录那么敏感,也有人拿来直接托管服务,至少.bash_history泄露是跑不了
[root@localhost ~]# python -m HTTPSimpleServer
12、应用选型
应用选型时没有考虑安全风险
Apache Struts Version:Struts 2.5 - Struts 2.5.12
线上业务使用受s2-052影响的s2版本
13、软件供应链
对软件供应链安全没有概念
从xcode事件到pip官方发现恶意ssh库,都在向我们昭示一个道理:软件供应链安全风险极大。目前运维人员中比常见问题有:
● ssh客户端或者开发IDE从百度网盘下载
● 两眼一闭,把github/pypi/dockerhub等网站下载的应用/库/镜像直接用到生产环境
● 未清理默认口令或者默认配置