|
原文章放在http://linuxfire.com/home/wrx/doc/secure_cn.GB.TXT
系统安全初探之一
by Werix
大家都知道OBSD安全是最有名的,我们这里不讲FW/NAT,先学学OBSD系统管理上的
一些小技巧。
首先找一台不是PRODUCTION的机器,
1. 看看现在系统安全级别:
$sysctl kern.securelevel
如果您是DEFAULT安装的话,回值应该是1
2. 为了实验,我们系统安全级别降到最低,改写/etc/rc.securelevel文件,将securelevel设
为负1,重起系统。
$vi /etc/rc.securelevel
securelevel=-1
$reboot
3. 建立一个暂时目录,同时建立两个文件
$cd /tmp
$mkdir /tmp/test
$touch /tmp/test/coucou
$touch /tmp/test/dodo
4.看看文件属性,注意命令写法
$ls -lo /tmp/test/*
-rw-r--r-- 1 root wheel - 0 Nov 7 19:21 /tmp/test/coucou
-rw-r--r-- 1 root wheel - 0 Nov 7 19:21 /tmp/test/dodo
5.改变文件属性
$ chflags schg /tmp/test/coucou
$ chflags sappnd /tmp/test/coucou
$ ls -lo /tmp/test/*
-rw-r--r-- 1 root wheel schg 0 Nov 7 19:21 /tmp/test/coucou
-rw-r--r-- 1 root wheel sappnd 0 Nov 7 19:21 /tmp/test/dodo
$ id
uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem), 3(sys), 4(tty), 5(operator)
, 20(staff), 31(guest)
$ rm -rf /tmp/test/coucou
rm: /tmp/test/coucou: Operation not permitted
$ rm -rf /tmp/test/dodo
rm: /tmp/test/dodo: Operation not permitted
大家会发现我是root,但是我却不能删除这两个文件了。
下面再让我们做个实验
$ date >> test/coucou
test/coucou: Operation not permitted
$ date >> test/dodo
$
我们可以往 test/dodo里加内容,但是不能动test/coucou!man chflags 告诉我们
sappnd set the system append-only flag (superuser only)
schg set the system immutable flag (superuser only)
也就是说我们加了个象schg 这样的file flag之后,文件具备了新的特性。
6。再做个小实验
$ touch /tmp/test/foo
$ chflags schg /tmp/test/foo
$ chflags noschg /tmp/test/foo
$ rm /tmp/test/foo
用第三行指令,我们把file flag擦掉(noXXX) ,没了schg,文件就可以随时删掉了。
7。现在然我们把系统安全级别调回
$ sysctl -w kern.securelevel=1
kern.securelevel: 0 -> 1
现在文件状态是
$ ls -lo /tmp/test/*
-rw-r--r-- 1 root wheel schg 0 Nov 7 19:21 /tmp/test/coucou
-rw-r--r-- 1 root wheel sappnd 29 Nov 7 19:21 /tmp/test/dodo
$ chflags nosappnd /tmp/test/dodo
chflags:/tmp/test/dodo: Operation not permitted
$ chflags noschg /tmp/test/coucou
chflags: /tmp/test/coucou: Operation not permitted
我们会发现系统安全级别是1的时候,就是root也不能改变文件所具备的新特性。
$ sysctl -w kern.securelevel=2
kern.securelevel: 1 -> 2
$ sysctl -w kern.securelevel=1
sysctl: kern.securelevel: Operation not permitted
总结:OBSD缺省安装后,它的系统安全级别是1,我们可以利用OBSD特有的命令chflags
改变一些文件的特性,以防止一旦系统被侵略之后,hacker安装/改变您原有的文件
和设置的可能性。值得注意的是最后两个命令,系统运行之中,系统安全级别只能
上,不能下,也就是说即使系统被侵略了,hacker也不能改变/删除您的文件,正如
我们看到的,系统安全级别是1的情况下,即使hacker那到了root的一些权力。这一
点,建议大家看看man securelevel
1 Secure mode
- default mode when system is multi-user
- securelevel may no longer be lowered except by init
- /dev/mem and /dev/kmem may not be written to
- raw disk devices of mounted file systems are read-only
- system immutable and append-only file flags may not be removed
实战应用:
/sbin, /usr/sbin, /usr/bin, /usr/libexec /bsd 都可以用chflags -R schg 进
行保护,特别是做网关的服务器,因为这些目录下的文件变化非常小。 还可以报护
/etc/pf.conf,为啥我不说您也知道。一些记录文件(log) 可以用 chflags sappnd
进行保护 (只可加内容,不可删),hacker进入您的系统之后没有办法把他进出的记
录擦掉,除非是他做在您的电脑前,启动single user mode,改变系统安全级别,再
chflags, 哈哈。。。
与linux下的chattr区别:
大家都非常熟悉linux下的chattr,lsattr,我们可以用chattr +i filename 去保
护文件,但是这只能防止您root下乱用rm, hacker 一旦取得root,他可以轻松的chattr
-i,但是在OBSD下,他只有哭的份。
缺点:
在日常管理上非常麻烦,假设您保护了/usr/bin,要加装新程序在里面,就非改/etc/rc.
securelevel 的值,reboot, chflags , 安装新文件,改回/etc/rc.securelevel 的
值,chflags,reboot!!!
建议:
好好看看man securelevel, 对OBSD的securelevel有透彻的理解。正常情况下1就够
了。
man chflags 对file flag 有好的理解,schg, sappnd 是常用的,其它很少用。
/etc/rc.securelevel |
|