发信人: zhcharles(小传)
整理人: zhcharles(2002-01-30 15:45:54), 站内信件
|
用户资源限制问题
---------------
从 4.3 BSD Net/2开始,BSD Unix引入了登录类别这种分类机制来管理用户使用的资源、记账和环境设置。FreeBSD系统使用/etc/login.conf中描述的数据来将用户按照登录环境、强制性的资源限制以及记账管理等分为不同的登录类别,每个用户的登录类别记录在/etc/master.passwd中的该用户的设置中。以下是一个缺省安装的/etc/login.conf的部份内容。
bash-2.03# cat login.conf
---------------------snip----------------------
default:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
:path=~/bin /bin /usr/bin /usr/local/bin /usr/X11R6/bin:\
:nologin=/var/run/nologin:\
:cputime=unlimited:\
:datasize=unlimited:\
:stacksize=unlimited:\
:memorylocked=unlimited:\
:memoryuse=unlimited:\
:filesize=unlimited:\
:coredumpsize=unlimited:\
:openfiles=unlimited:\
:maxproc=unlimited:\
:priority=0:\
:ignoretime@:\
:umask=022:
#
# A collection of common class names - forward them all to 'default'
# (login would normally do this anyway, but having a class name
# here suppresses the diagnostic)
#
standard:\
:tc=default:
xuser:\
:tc=default:
staff:\
:tc=default:
daemon:\
:tc=default:
news:\
:tc=default:
dialer:\
:tc=default:
#
# Root can always login
#
# N.B. login_getpwclass(3) will use this entry for the root account,
# in preference to 'default'.
root:\
:ignorenologin:\
:tc=default:
---------------------snip----------------------
利用login.conf可以方便地对用户的登录环境和资源许可进行设置,缺省的设置对用户所能使用的资源几乎没有限制,可以把login.conf改为如下内容:
---------------------snip----------------------
default:\
:cputime=infinity:\
:datasize-cur=64M:\
:stacksize-cur=64M:\
:memorylocked-cur=10M:\
:memoryuse-cur=100M:\
:filesize=infinity:\
:coredumpsize=infinity:\
:maxproc-cur=64:\
:openfiles-cur=64:\
:priority=0:\
:requirehome@:\
:umask=022:\
:tc=auth-defaults:
---------------------snip----------------------
上面设置了default登录类别中的几个参数,如果没有在master.passwd文件中明确指定用户的登录类别,就使用这个缺省类别来作为用户的登录类别。
cputime设置了用户的每个进程可以使用的CPU时间,缺省是无限制(infinity)。如果加以限制,有些需要大量CPU时间进行运算的进程就不能正常执行到结束。
datasize-cur设置了用户使用的数据段最大为64M,但-cur设置不是强制的,用户实际使用的数据有可能超过这个值,但最大不能超过datasize-max设置的值(缺省没有设置)。如果没有-cur和-max 后缀,仅仅定义datasize,则表示datasize-cur和datasize-max同样都为datasize 设置的值。同样stacksize定义了对栈的限制。
memorylocked-cur设置了用户每进程可以锁定的最大内存。
memoryuse-cur设置了每进程使用的最大内存。
filesize-cur设置了用户产生的文件大小。
coredumpsize设置了在应用程序发生问题时产生的core dump文件的大小。
maxproc-cur设置了用户可以同时执行的最大进程数。
openfiles-cur设置了每进程最多打开的文件数。
priority设置用户进程的优先级。
requirehome设置用户登录时是否需要主目录,@符号表示不需要主目录。
umask项设置缺省的umask,用于用户创建文件的属性。
tc设置系统认证策略为使用缺省的认证策略。
如果要创建新类别,并不需要对每个值都重新设置,系统缺省先应用default类别的设置,然后再应用具体类别的设置,因此只需要设置与default类别不同的项就可以了。
---------------------snip----------------------
users:\
:manpath=/usr/share/man /usr/X11R6/man /usr/local/man:\
:cputime=4h:\
:openfiles=32:\
:maxproc=48:\
:tc=default:
---------------------snip----------------------
上面是设置了一个新类users,可以看出它为用户设置了环境变量MANPATH,并重置了cputtime 、openfile、maxproc和tc的值。每次更改login.conf之后,都要进行更新登录类别数据库的操作。
bash-2.03# cap_mkdb /etc/login.conf
由于登录类别保存在master.passwd文件中,通常在使用adduser添加用户的时候设置用户的登录类别。如果要进行更改,必须使用vipw来修改/etc/master.passwd文件的第5个域。下面为master.passwd 中的一行,该行指定这个用户的登录类别为user:
缺省为:
bash-2.03# cat master.passwd
# $FreeBSD: src/etc/master.passwd,v 1.25 1999/09/13 17:09:07 peter Exp $
inburst:TioxhDpCtDaRE:1004:0::0:0:stardust:/home/stardust:/usr/local/bin/bash
改为:
inburst:TioxhDpCtDaRE:1004:0:users:0:0:stardust:/home/stardust:/usr/local/bin/bash
设定系统中用户的可用空间也是系统免受本地拒绝服务攻击重要的一方面,在未设定 quota 的系统上的用户可以随意的灌爆硬盘。要把 quota这项功能打开,可以修改 /etc/rc.conf 中的这项设定:
check_quotas="NO" # Check quotas (or NO).
改成
check_quotas="YES" # Check quotas (or NO).
请先看看以下的 man page,这些文件说明如何使用 quota 的各项设定,并且有一些设定的范例: quotaon, edquota, repquota, quota,要确定在 /etc/fstab 中有加入 "userquota" , 详见 man 5 fstab。--感谢QUACK
=========================================================================
一些管理员日常操作
------------------
i)经常查看http://www.freebsd.org/security/index.html的安全公告
ii)订阅security bugtraq和FreeBSD官方安全邮件列表了解安全动态。
iii)每天检查系统日志,关于检查系统日志,你可以通过其他工具增加多信息的捕获,
如snort可以比较完全的记录信息。
iv)如果你硬盘够大,信息处理够快,定时使用netstat -an >> /.../.../netstat.log来
记录信息,当然你也可以建立更详细的脚本,因为netstat能记录连接信息,所以如有些
后门日志不能记录,但netstat却在一定时间里总有连接记录。
v)如果你对你的文件系统有原始的记录,你可以定时使用一些系统完整性检查工具进行
检验。
vi)如果你有防火墙,那更好,经常查看防火墙信息。
===============================================================================
FreeBSD近来比较严重的一些安全漏洞
-------------------------------------
远程漏洞
--------
i)目前出现的最严重的漏洞,telnetd守护程序存在远程溢出漏洞,可以让攻击者远程
获得Root shell,目前已经有telnetd exploit code推出,包括windows。详细资料
请查看:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:49.telnetd.v1.1.asc
ii)FreeBSD的ftp也存在远程溢出,可以让攻击者最终获得Root shell.详细资料请看:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:33.ftpd-glob.v1.1.asc
iii)FreeBSD如果使用BIND服务(操作系统附带),如果BIND服务版本小于8.2.3-RELEASE,
在处理TSIG问题上存在单字节溢出问题,可以获得远程的ROOT SHELL。详细资料请查看:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:18.bind.asc
另外关于应用程序的还有wu-ftp,qmail中的vcheckpasswd也存在远程缓冲溢出,还有其他
其他的。不在详举。
本地漏洞
--------
i)FreeBSD的内核对信号处理不正确,可以导致本地用户获得ROOT SHELL。详细信息请看:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:42.signal.asc
ii)FreeBSD的procfs文件系统存在漏洞,可以导致本地用户获得超级管理
员权限。具体信息可以查看:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-00:77.procfs.v1.1.asc
iii)因为好多FreeBSD安装了Mysql数据库,而低于3.23.22版本的mysql都有
一个漏洞可以写信息到敏感文件,如写信息到/etc/passwd或者/etc/shadow中,
也可以说是一个比较严重的漏洞
上面几个本人认为必须重视的几个漏洞,然后你需要打上补丁,或者使用最新的
程序,然后相关的应用程序看你是否安装,你可以在如下地址找到相应漏洞信息:
http://www.freebsd.org/security/index.html
---- ★ FreeBSD 版版斧 ★
█████████
█┌─────┐█
█│zhcharles │█
█│FreeBSD 版│█
█│ 版 ★ 斧 │█
█│ 专 用 章 │█
█└─────┘█
█████████
答之意,乃解问者之困也!
我无意将答案写得如何如何动听,只求能真正地解决您的问题!
小传 ( Charles Feng ) [email protected] OICQ:17866295
|
|