生产环境权限管理项目方案

1 问题现状

1.1 员工使用root权限操作生产环境

当前我们公司内部服务器实例有上百台,管理客户的服务器也将近有上百个服务器示例。各个服务器上的管理人员很多(开发、运维、项目、工程人员等),在大家登录使用Linux服务器时,不同职能的员工对Linux系统的熟悉程度不同,因此导致操作很不规范,root权限泛滥(几乎所有员工都使用root权限操作),经常导致文件等莫名其妙的丢失,服务器文件、目录权限混乱等问题。这样使得公司内部、客户服务器安全存在很大的不稳定性、及操作安全隐患。据调查企业服务器环境,50%以上的安全问题都来源于内部,而不是外部。为了解决以上问题,单个用户管理权限过大现状,现提出针对Linux服务器用户权限集中管理的解决方案。

1.2 操作记录不可追溯

当前我们公司管理着几大平台和数十个小平台。我们的客服、工程、研发人员都是直接连接SSH的,其中的操作不可过滤、不可审计、不可追溯。如果出现了操作失误,将无法追溯,不知道是谁操作的,不知道什么时候操作的,不知道操作了什么。

1.3 程序使用root权限运行

所有自主程序和部分第三方开源程序(如redis)都使用root权限来运行,使用root权限存在非常大的安全隐患。比如:

1) 程序原本的功能是想删除自身的日志文件,如果程序有BUG,拼接路径时考虑不周全,可能会导致误删了系统文件。严重时可导致系统奔溃,数据丢失。

2) 程序使用了开源框架有远程执行命令的安全漏洞,那么黑客可能会获得系统的root权限,既可为所欲为,公司、客户数据安全则面临着巨大的威胁。

3) redis的弱密码、空密码存在很大的安全隐患,如使用root运行redis,黑客很容易就拿下操作系统的root权限。

图解 LVS

LVS 基础架构拓扑

LVS基础拓扑.png

Redis 提权漏洞原理利用与防范

漏洞利用原理

漏洞利用先决条件
  • root 权限运行 Redis
  • 弱密码/空密码
  • socket 监听 0.0.0.0,或外网做了端口映射
原理

首先介绍一下 Redis 的几个命令,这几个命令配合起来使用,威力无穷。

  • set 命令

    set 是 Redis 中最常用的指令之一,它的功能是将一个值赋予给一个键,如 set name 陈日志 就将我的名字 陈日志 赋值给了 Redis 中的一个键 name 了。

  • config set dir 命令

    config set dir 的功能是设置当前工作目录,和 Linux 中的 cd 命令是类似的功能,如 config set dir /root/.ssh/ 就将工作目录切换到了 /root/.ssh/ 下了。

  • config set dbfilename 命令

    该命令设置数据库的名字,如 config set dbfilename "authorized_keys" 将数据库名称设置为 authorized_keys

  • save 命令

    sava 命令将数据库保存到当前工作目录,保存的文件为 dbfilename 定义的文件名

HAProxy 高级一点儿的玩法

在上一篇文章中,我简单的介绍了 HAProxy 的功能,并且给出了两个配置示例。相信你对 HAProxy 已经有个大概的印象了。在这篇文章中,我会直接给出 HAProxy 高级一点的用法的配置示例,包含以下内容。

  • TLS/SSL 配置
  • 访问控制列表 ACL

    • 流量过滤,如禁止 TRACE 方法
    • ACL 的常见写法
    • 根据访问路径使用指定后端服务器
  • SESSION 绑定
  • 修改 HTTP 请求头
  • 修改 HTTP 响应头
  • URL 重定向
  • URL 重写
  • HTTP 服务器后端状态检查
  • 黑/白名单
  • 错误页面
  • 权重
  • 统计页面

HAProxy 介绍及简单使用

HAProxy 是一款高性能、免费、开源的反向代理软件,其提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理,被广泛应用于各大互联网公司。

HAProxy 运行在现代常见硬件体系架构中,HAProxy 能支撑数以万计的并发连接,同时,HAProxy 的运行模式使得将其整合进当前架构中是一件非常简单且安全的事。通过 HAProxy 的代理,还可以避免后端服务器直接暴露在外部网络所带来的风险。

HAProxy具有以下功能:

  • 第4层(TCP)和第7层(HTTP)负载平衡
  • 支持多种调度算法
  • 会话保持
  • URL重写
  • 限速
  • 过滤
  • 流量整形
  • SSL / TLS 支持
  • Gzip压缩
  • 代理协议支持
  • 健康检查
  • 连接和 HTTP 访问日志记录
  • HTTP/2
  • 多线程
  • 无中断重载

HAProxy 使用模型:

haproxy-pmode.png