LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3724|回复: 9

OpenBSD系统安全初探

[复制链接]
发表于 2003-11-8 02:52:54 | 显示全部楼层 |阅读模式
原文章放在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
 楼主| 发表于 2003-11-8 03:46:44 | 显示全部楼层

OpenBSD系统安全初探之二

原文章放在http://linuxfire.com/home/wrx/doc/secure_mtree.GB.TXT


OpenBSD系统安全初探之二
   by Werix

上一次我们讲了chflags 的用途,这一次我们一起学习mtree的用法:

mtree - map a directory hierarchy

常用linux的人都知道tripwire,其实OpenBSD中的mtree有异曲同工之妙。
mtree其实就是给您的系统拍张像,等到您觉得脸上长痦子了(系统被黑掉了),拿出
照片对对,看看那儿出问题了。用途也非常简单,做个小实验吧:

1。 先拍照,注意Source是我的一个目录,您可以用/home 做实验
mtree -c -Krmd160digest -p Source > /tmp/mybase

rmd160digest是个数法,可以用cksum,sha1digest, md5digest,这里的选项不少,
可以看看man mtree。照片呢,就是 /tmp/mybase 了。

2。对照片比教
bash# mtree -f /tmp/mybase -p Source

3。给自己贴个痦子
bash# touch Source/dodo

4。再比较照片
bash# mtree -f /tmp/mybase -p Source
.:      modification time (Sat Jun 14 01:29:02 2003, Fri Nov  7 20:18:13
2003)
extra: dodo
哇,我张了个大痦子,快看医生去。。。

实战应用:
可以对重要的系统进行拍照,把您的底片另存在其它系统上,时常拿出来进行比较,
看看有没有可疑之处。

缺点:
在日常管理上非常麻烦。不过好的管理员是常看底片的!

建议:
如果您用OpenBSD做firewall或apache,ftp etc...安装完毕之后,拍一张,备份底
片。

例子:
bash# mtree -c -Krmd160digest -p Source > /tmp/mybase
bash# mtree -f /tmp/mybase -p Source
bash# touch Source/dodo
bash# mtree -f /tmp/mybase -p Source
.:      modification time (Sat Jun 14 01:29:02 2003, Fri Nov  7 20:18:13
2003)
extra: dodo
发表于 2003-11-8 09:37:11 | 显示全部楼层
very good!
我装了openbsd一直放到现在还没用过什么!
发表于 2003-11-8 09:38:38 | 显示全部楼层
顶!

以后有空试试!
发表于 2003-11-8 09:48:20 | 显示全部楼层
rianren and rainren 怎么名字这么相近:ask :ask
发表于 2003-11-8 09:50:35 | 显示全部楼层
两个MJ一个人!
发表于 2003-11-8 11:42:08 | 显示全部楼层

好贴,多谢

好贴,多谢
发表于 2005-7-12 20:59:16 | 显示全部楼层
很不错的,顶起来,重新温习一下,嘻嘻
回复 支持 反对

使用道具 举报

发表于 2005-7-16 21:49:35 | 显示全部楼层
很不错的,顶起来,重新温习一下,嘻嘻

靠,厉害!
回复 支持 反对

使用道具 举报

发表于 2005-7-20 18:59:05 | 显示全部楼层
好帖!谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表