下面给出了通过多种 MAC 模块, 并正确地配置策略来实现安全环境的例子。 这只是一个测试, 因此不应被看作四海一家的解决之道。 仅仅实现一个策略, 而忽略它不能解决任何问题, 并可能在生产环境中产生灾难性的后果。
在开始这些操作之前, 必须在每一个文件系统上设置
multilabel
选项,
这些操作在这一章开始的部分进行了介绍。 不完成这些操作,
将导致错误的结果。 首先, 请确认已经安装了
net-mngt/nagios-plugins
、
net-mngt/nagios
, 和
www/apache13
这些 ports,
并对其进行了配置, 且运转正常。
首先是在 /etc/login.conf
文件中加入一个新的用户 class:
并在 default 用户 class 中加入:
一旦完成上述操作, 就需要运行下面的命令来重建数据库:
#
cap_mkdb /etc/login.conf
现在暂时还不要重新启动, 我们还需要在
/boot/loader.conf
中增加下面几行,
以便让模块随系统初始化一同加载:
使用下面的命令将 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
接下来需要创建一个上下文文件; 您可以把下面的实例放到
/etc/policy.contexts
中。
这个策略通过在信息流上设置限制来强化安全。
在这个配置中, 包括 root
和其他用户在内的用户,
都不允许访问 Nagios。 作为
Nagios 一部分的配置文件和进程,
都是完全独立的, 也称为 jailed。
接下来可以用下面的命令将其读入系统:
#
setfsmac -ef /etc/policy.contexts /
#
setfsmac -ef /etc/policy.contexts /
随环境不同前述的文件系统布局可能会有所不同; 不过无论如何, 都只能在一个文件系统上运行它。
在 /etc/mac.conf
文件中的 main
小节需要进行下面的修改:
在
/boot/loader.conf
中增加下列内容:
将下述内容加入 rc.conf
中的网络接口配置。
如果主 Internet 配置是通过 DHCP 完成的,
则需要在每次系统启动之后手工执行类似的配置:
首先要确认 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)
。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.