配置高安全等级的linux系统 Root on NFS

有这样一台 linux 服务器,因为某开源软件的 bug,因为绝对里路径多了一个空格,把 /usr/sbin 给删了…你执行过 rm –rf / foo 吗?

系统简介

设想这样一台 linux 服务器: 根分区是只读的,非常安全,即使 root 账户也无可奈何,因为根分区是只读的。这个只读的根分区(或者称为定制的一个操作系统),实际上是独立的客户端服务器通过网络从一个中控节点挂载的一份操作系统镜像,这样可以集中控制操作系统,并且任何修改都是实时生效的,当然也允许客户端服务器有特性的文件存在,例如 etc 下的某些配置文件,这个系统是用我们耳熟的 bootp,tftp,nfs,dhcp 这些服务搭建起来的。

核心单点

中控节点是一个单点,保存了一个或者多个定制的操作系统,提供如上所述的各种服务,如果有单点故障,会导致整个集群都瘫痪。所以需要有备机实时同步数据,并且使用虚 IP 来提供服务,这里采用了开源的 linux-ha 下的 heartbeat 和 drbd 服务来避免单点故障,主备机自动切换启动服务,实现秒级的自动迁移,数据是 DRBD 实时同步的。

特性优点

  1. 集中,只维护一个操作系统
  2. 实时,任何修改都是实时生效的
  3. 安全,root 账户都无可奈何啦
  4. 例外,允许特性文件存在

适用场景

  1. MMORPG 类似的服务

    服务器端只提供计算和数据库服务

  2. 安全等级很高

    root 用户登录机器也不能干坏事了,非常安全。

  3. 其他场合

    这么一个古灵精怪的系统总有其他用武之地吧!

搭建步骤

RootOnNFS-1

  1. drbd 和 heartbeat 的部署
  2. 重新编译内核
  3. 定做操作系统
  4. tftp 服务
  5. dhcp 服务
  6. nfs 服务
  7. pxe 网卡

step by step…

详细步骤省略,这几种服务的官网可以查到相关的详情。

【重点提示】

I. 编译内核:

module 参数编译的只能在内核启动之后才会工作, 所以我们需要选择 y.

把 nfs 编译到内核里,支持 Root file system on NFS 等

如何让 var tmp 正常,不然很多系统自带的服务启动失败。

Ramdisk: 把 var tmp 目录放到内存里

II. 启动系统:

  1. 带上 mac 地址出发吧!

    开机,网卡引导; 自动寻找 DHCP 服务;

RootOnNFS-2

2. 下载我们编译的内核文件。

通过 dhcp 和 tftp 来下载定制的内核文件。

RootOnNFS-3

3. 定位自己的 IP,启动操作系统。

RootOnNFS-4

4. 把 var,tmp 放到内存里。

RootOnNFS-5

5. 登录操作系统

顺利启动完毕,可以登录进去了!

RootOnNFS-6

6. 看看 Root on NFS 是怎么个挂载法。

RootOnNFS-7

7. 试试 rm –rf / 吧!

RootOnNFS-8

来源:http://op.baidu.com/2014/07/root-on-nfs/

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>