限制用户
如果用户拥有一个(交互式)SHELL帐号,他们就可以做出危害系统的事。一个最简单的例子就是运行占用大量系统内存的程序的多个拷贝进程,最后用光系统内存。或使用"fork bomb"以用光文件描述符。但是也有很多方法可以用来阻止这些事情发生,如限制用户的配额、限制CPU占用率等等。更先进的技术是监视用户的一举一起。
PAM 大多数的LINUX都内建了PAM支持。PAM的一个功能是系统环境设置,例如设置某个用户允许使用的系统内存大小等。在Red Hat和Caldera这两个发行版本的 /etc/security/ 目录下包含了许多可配置文件。最有趣的当属 /etc/security/limits.conf 文件,它允许你定义用户或用户组规则,规则是“软(soft)”或“硬(hard)”,规则的内容(如CPU、内存、最大文件大小等)。例如:
* hard core 0
bob soft nproc 100
bob hard nproc 150
第一行规则禁止所有人产生core文件,第二行规则(软)定义用户bob的最大进程数为100, 第三行规则(硬)定义用户bob的最大进程数为150。可以超出软规则的限制(警告),但不 能超过硬规则的限制。你可以想像得到,这些规则定义到所有用户的登录SHELL和等服务 时是很有帮助的。
Bash
Bash内建了一个限制器"ulimit"。注意任何硬限制都不能设置得太高,因此如果你在/etc/profile或用户的 .bash_profile (用户不能编辑或删除这些文件)中定义了限制规则,你就能对用户的Bash shell实施限制。这对于缺少PAM支持的LINUX旧发行版本是很有用的。你还必须确保用户不能改变他们的登录shell。限制的设置与PAM相似。例如:
ulimit -Sc 0
ulimit -Su 100
ulimit -Hu 150
这三条规则的作用与前面提及的三条PAM规则一样。第一行禁止产生core,第二行设置软限制为100个进程,第三行则设置硬限制为150个进程。更多的信息请参阅 man ulimit 手册页。
Quota
Quota(限额)用于限制系统中用户的磁盘配额。大多数LINUX发行版本都附带此程序,详细信息请参阅 man quota 手册页。
监视用户
在一般系统中最常见的问题是防止用户滥用。相对而言,监视服务器标准资源(如磁盘空间、CPU使用率等)比较简单,但现在更常见的问题是网络带宽的滥用。幸亏也有许多方法监视这些情况。
ttysnoop
如果一切正常当然很好。但如果你确实想监视用户正在做什么,你可以使用这个工具。 ttysnoop 可以让你监视并记录用户的操作。下载网址:
http://uscan.cjb.net/
UserIPAcct
你可以通过UserIPAcct监视每个用户的带宽使用情况。该软件包含了内核的补丁程序,可设置规则(方法与类似)以监视某个用户程序发送或接收的数据流量。然而它并不能统计在PPP连接上的数据量,因为数据发送或接收是PPP守护进程而不是用户管理的。这个工具非常适用于提供shell的服务器。
1