17.15. MAC Jail 中的 Nagios
上一页 | 第 17 章 强制访问控制 | 下一页

## 17.15. MAC Jail 中的 Nagios

下面给出了通过多种 MAC 模块， 并正确地配置策略来实现安全环境的例子。 这只是一个测试， 因此不应被看作四海一家的解决之道。 仅仅实现一个策略， 而忽略它不能解决任何问题， 并可能在生产环境中产生灾难性的后果。

在开始这些操作之前， 必须在每一个文件系统上设置 `multilabel` 选项， 这些操作在这一章开始的部分进行了介绍。 不完成这些操作， 将导致错误的结果。 首先， 请确认已经安装了 `net-mngt/nagios-plugins`、 `net-mngt/nagios`， 和 `www/apache13` 这些 ports， 并对其进行了配置， 且运转正常。

### 17.15.1. 创建一个 insecure (不安全) 用户 Class

首先是在 `/etc/login.conf` 文件中加入一个新的用户 class：

insecure:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\ :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin :manpath=/usr/share/man /usr/local/man:\ :nologin=/usr/sbin/nologin:\ :cputime=1h30m:\ :datasize=8M:\ :vmemoryuse=100M:\ :stacksize=2M:\ :memorylocked=4M:\ :memoryuse=8M:\ :filesize=8M:\ :coredumpsize=8M:\ :openfiles=24:\ :maxproc=32:\ :priority=0:\ :requirehome:\ :passwordtime=91d:\ :umask=022:\ :ignoretime@:\ :label=biba/10(10-10):

并在 default 用户 class 中加入：

:label=biba/high:

一旦完成上述操作， 就需要运行下面的命令来重建数据库：

`#` `cap_mkdb /etc/login.conf`

### 17.15.2. 引导配置

现在暂时还不要重新启动， 我们还需要在 `/boot/loader.conf` 中增加下面几行， 以便让模块随系统初始化一同加载：

mac_biba_load="YES" mac_seeotheruids_load="YES"

### 17.15.3. 配置用户

使用下面的命令将 `root` 设为属于默认的 class：

`#` `pw usermod root -L default`

所有非 `root` 或系统的用户， 现在需要一个登录 class。 登录 class 是必须的， 否则这些用户将被禁止使用类似 vi(1) 这样的命令。 下面的 `sh` 脚本应能完成这个工作：

`#` `for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \` `/etc/passwd`; do pw usermod $x -L default; done;`

将 `nagios` 和 `www` 这两个用户归入不安全 class：

`#` `pw usermod nagios -L insecure`
`#` `pw usermod www -L insecure`

### 17.15.4. 创建上下文文件

接下来需要创建一个上下文文件； 您可以把下面的实例放到 `/etc/policy.contexts` 中。

# This is the default BIBA policy for this system. # System: /var/run biba/equal /var/run/* biba/equal /dev biba/equal /dev/* biba/equal /var biba/equal /var/spool biba/equal /var/spool/* biba/equal /var/log biba/equal /var/log/* biba/equal /tmp biba/equal /tmp/* biba/equal /var/tmp biba/equal /var/tmp/* biba/equal /var/spool/mqueue biba/equal /var/spool/clientmqueue biba/equal # For Nagios: /usr/local/etc/nagios /usr/local/etc/nagios/* biba/10 /var/spool/nagios biba/10 /var/spool/nagios/* biba/10 # For apache /usr/local/etc/apache biba/10 /usr/local/etc/apache/* biba/10

这个策略通过在信息流上设置限制来强化安全。 在这个配置中， 包括 `root` 和其他用户在内的用户， 都不允许访问 Nagios。 作为 Nagios 一部分的配置文件和进程， 都是完全独立的， 也称为 jailed。

接下来可以用下面的命令将其读入系统：

`#` `setfsmac -ef /etc/policy.contexts /` `#` `setfsmac -ef /etc/policy.contexts /`

### 注意:

随环境不同前述的文件系统布局可能会有所不同； 不过无论如何， 都只能在一个文件系统上运行它。

在 `/etc/mac.conf` 文件中的 main 小节需要进行下面的修改：

default_labels file ?biba default_labels ifnet ?biba default_labels process ?biba default_labels socket ?biba

### 17.15.5. 启用网络

在 `/boot/loader.conf` 中增加下列内容：

security.mac.biba.trust_all_interfaces=1

将下述内容加入 `rc.conf` 中的网络接口配置。 如果主 Internet 配置是通过 DHCP 完成的， 则需要在每次系统启动之后手工执行类似的配置：

maclabel biba/equal

### 17.15.6. 测试配置

首先要确认 web 服务以及 Nagios 不会随系统的初始化和重启过程而自动启动。 在此之前， 请在此确认 `root` 用户不能访问 Nagios 配置目录中的任何文件 如果 `root` 能够在 `/var/spool/nagios` 中运行 ls(1)， 则表示配置有误。 如果配置正确的话， 您会收到一条 “permission denied” 错误信息。

如果一切正常， Nagios、 Apache， 以及 Sendmail 就可以按照适应安全策略的方式启动了。 下面的命令将完成此工作：

`#` `cd /etc/mail && make stop && \ setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \ setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart`

再次检查是否一切正常。 如果不是的话， 请检查日志文件和错误信息。 此外， 还可以用 sysctl(8) 来临时禁用 mac_biba(4) 安全策略模块的强制措施， 并象之前那样进行配置和启动服务。

### 注意:

`root` 用户可以放心大胆地修改安全强制措施， 并编辑配置文件。 下面的命令可以对安全策略进行降级， 并启动一个新的 shell：

`#` `setpmac biba/10 csh`

要阻止这种情况发生， 就需要配置 login.conf(5) 中许可的命令范围了。 如果 setpmac(8) 尝试执行超越许可范围的命令， 则会返回一个错误， 而不是执行命令。 在这个例子中， 可以把 root 设为 `biba/high(high-high)`。

上一页 | 上一级 | 下一页
17.14. MAC LOMAC 模块 | 起始页 | 17.16. User Lock Down

本文档和其它文档可从这里下载： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.