平时在对 Linux 服务器维护中,经常会有这样的情形:

远端服务器有多台机器,只有一台机器是映射外网端口的,我们没办法直接访问另外的服务器的服务。

local-remote-top.png

如图所示,服务器侧有A、B两台机器,只有 A 服务器开放了外网访问。客户端侧就没办法直接访问 B 服务器

客户端想要访问 B,常见的方法有:

  1. 在 A 上做防火墙规则做端口转发,如将 88 端口转发到 B 的 80 端口。

​ 但是这样有一个前提,开放了外网访问的服务器要有空闲的端口才行。

  1. 用 Xshell 的转移规则来实现

- 阅读剩余部分 -

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 的 3 种转发模式

  • DR 模式
  • NAT 模式
  • TUN 模式

我们来回顾一下这几种模型的劣势

  • DR 模式

    • LVS - RS 间必须在同一个 VLAN/网段 内
    • RS 绑定 VIP,风险大
    • RS 都要公网 IP
  • NAT 模式

    • RS 的 默认网关必须要指向 LVS
    • LVS - RS 间必须在同一个 VLAN/网段 内
  • TUN 模式

    • 配置隧道模块 (IPIP 等),配置复杂
    • RS 绑定 VIP,风险大

当集群规模较小时,使用 NAT、DR 模式都是没有问题的,当集群内有几十台以上时,那么这些服务器通常都不在同一个 VLAN/网段 内了。这时,必须再研发出一种能支持跨 VLAN/网段 通信的模式,FULLNAT 模式就是为了解决这个问题而生的。

- 阅读剩余部分 -