Tag Archives: FreeBSD

升级至FreeBSD 7.0-BETA3

昨天给2号机cvsup了RELENG_7的最新代码,决定在Current还没有清晰的新目标前,暂且老老实实呆在RELENG_7一阵子吧。
看了一下版本号,没想到已经是beta3了,这应该是Release前最后一个beta了吧,难道传说的这个Release不会跳票真的实现了?? XD
接下来要做的是将一部分陈旧资料(其实主要是电影存档)搬到ZFS去,然后是恐怖的gnome升级至2.20,希望顺利。时间上就凭一个破P4已经没什么奢望了,做好长期开机build的准备。
另外今天make world时发现有一个变量是可以不让make delete-old时老提示是否删除的,记录之
make BATCH_DELETE_OLD_FILES=YES delete-old
亏得以前按到手软…..

区分几种知名散列算法的散列值的方法

取自FreeBSD HandBook第14.4小节,刚才回顾手册时看到的。
 用 MD5 散列加密的密码通常要比用 DES 散列得到的长一些, 并且以 $1$ 字符开始。 以 $2a$ 开始的口令是通过 Blowfish 散列函数加密的。 DES 密码字符没有任何可以用于鉴别的特征, 但他们要比 MD5 短, 并且以不包括 $ 在内的 64 个可显示字符来表示,因此相对比较短的、没有以美元符号开头的字符串很可能是一个 DES 口令。

ZFS under FreeBSD performace

Clement大牛用izone做了一个ZFS的性能测试,他说结果很匪夷所思,看了测试图之后我们能说的也只有:确实很匪夷所思
XXD
测试看这里:
http://blogs.freebsdish.org/clement/2007/10/18/more-on-zfs/

Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计

摘抄编译自 http://blogs.techrepublic.com.com/security/?p=283
对于一个Sysadmin来说,如何加固系统是一个长盛不衰的话题。然而再坚固的系统也有失守的时候,有时就可能因为非常细小的一点疏漏,导致整个系统被攻破。所以对于Sysadmin来说,尽可能地保证系统安全是其一,其二还要会更快速有效地发现系统被入侵或者控制这种行为。因此完善的日志体系是必要的。然而还有很多日志无法记录的入侵和破坏行为,这就要求从其他方面想办法。对于Windows操作系统,从Win2k起就有一个SFC系统,一旦系统核心文件被更改,就会提醒管理员并生成审计日志。这玩艺在Win2003又进一步发展,不过貌似也是非常不好用。MS在即将发布的Windows 2008里面建立了一种名为Trusted Platform的框架,进一步完善了SFC,其原理大体应该也是核心部件的数字签名以及认证机制,只不过做的更完善一些了。我现在的PC就是因为某P2P网络电视修改了tcpip.sys导致不断生成这个模块的error日志,大体说明这玩艺还是堪用的。不过Windows更难于发现的破坏行为大多在注册表而不是文件系统,所以此方面恐怕还要更为复杂一些。
扯远了,对于unix类操作系统来说,这方面就没有那么复杂了,因为一个系统本身设计哲学的原因:一切皆是文件。因此,只要能有效监控文件系统的更改,就可以抓住一切针对系统的不良行为。以前有过不少人写过Linux系统可以对整个根做md5sum来实现,这个对于其他Unix类系统也适用。然而对于FreeBSD来说,有一个更为方便的工具–mtree。
其实mtree这东西本来是用于安装系统或软件时预先创建目录树的,因为其有散列计算以及权限对比等能力,将其作为一个文件系统完整性审计工具也是刚好。另外还有一个很重要的原因是这个工具为基本发行版所附带,属于随手拈来的东西。假使系统被入侵,基础命令集像ps,top被替换地乱七八糟,也很少会有人想到在mtree上动手脚。即使为了万全的可信任概率考虑,也可以使用rescue CD里的这个工具,还有它依赖的运行库也是非常之少,甚至临时从其他系统cp一个来用也完全可以。
说了这么多废话,其实用法非常简单,如下:
mtree -c -K sha256digest -p / > mtree.txt
-c代表输出至stdout,然后用转向定位到文件。
-K代表使用的散列方法,sha256可谓足够安全了吧。
-p代表要做mtree的目录,指定根自然是对整个文件系统做了。如果按照实际使用需求,其实不应该包含入一些被更改频率很高的目录,例如/var/log等。想做得更完善一点就可以写个脚本读取某文件里的目录列表挨个mtree了。
完成后mtree.txt里面就是我们要获取的审计信息了。
根据mtree.txt再来对照文件系统来检查更改情况则用以下命令:
mtree -f /path-to-mtree.txt -K sha256digest -p /
无输出则表示文件系统没更改,如果有输出,应该是以下类型的结果:
. changed

 modification time expected Mon Sep 10 13:40:01 2007 found Mon Sep 10 14:08:21 2007

mtree.txt changed

 size expected 0 found 24407

 modification time expected Mon Sep 10 14:08:09 2007 found Mon Sep 10 14:08:11 2007

 SHA-256 expected e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 found cb61a409d5e71a69ebbaa713e6d752db275a04f1629b86c4e52a835c70c422df

xxx extra

yyy missing
changed代表文件有变动,extra则代表为新建的文件,missing自然是代表文件没了。一目了然。
这样我们所要做的就是定期为文件系统做一个mtree.txt并妥善保管好,并在系统疑似出问题时拿出它来检查了。

A comment abount SD, CFS Schedulers,from ULE’s author

前几天Linus决定用CFS替换掉O(1)的时候就引发了一场flame war,然而除了几个当事人之外,其他人也仅仅能从使用体验上提出一些意见或者benchmark数据。更因为这些schedulers都没有经过长期考验,没有经验性数据,一堆各个领域的用户都七嘴八舌得参与进来,进而这场大讨论又闹到Server VS Desktop,Scientific Computing VS Gaming等等等等。谁让scheduler本身就是一个牵一发而动全身的关键组件呢,动这玩艺就相当于给人换大脑一样。
这次论战现在又有学院派的高人卷进来了,恰逢FreeBSD的ULE调度器3.0发布不久,所以ULE的作者Jeff Roberson (jeffr)也写了一篇文发表了自己的看法,见此:http://jeffr-tech.livejournal.com/12933.html
 jeffr的文章是从设计角度来讨论了这三个调度器实现的不同点,基本上也就是使用的数据结构和算法不同带来的性能影响,有兴趣可以仔细看看,比起LKM那些论战来,不需要懂得那几个大牛之间的前恩宿怨,应该要好看一些。
另外看看用户而不是开发者的comments也是挺好玩的:http://osnews.com/comment.php?news_id=18401
不过毕竟是看过代码才有发言权,普通用户的言论看过就好,没必要较真,真要了解细节还只能看代码。话说回来看完代码估计也不一定就了解。Scheduler设计真是每个变量都要考虑到毫厘,象我这种仅仅是结合几部书讲解调度器的章节过了一遍O(1)和初代ULE的人,还是不理解为什么这样设计或为什么不那样做。所以还是继续看大牛们的热闹吧。

FreeBSD架设ntpd服务手记

如果说有什么是在服务器部署过程中最重要然而却最容易被忽视的地方,恐怕就只有系统时间了。这玩意看来简单,但实际上大多数系统服务都直接或间接依赖于它,一台时钟不准确的服务器给出的任何结果都有可能是不可信的。所以在近几年的操作系统发行版中,都不约而同的加入了网络校时的功能。然而对于大多数sysadmin来说,这方面还是最容易忽略的。因此这里提倡,无论是在多么无关紧要的系统部署项目中,服务器上线后的第一件事情,一定不要忘记设定一个稳定的事件源并保证持续可靠的校时。

FreeBSD操作系统利用powerd服务减轻系统功耗

今天(6月5日)是世界环境日。
本来此类公益节日与吾等草民无甚关系,但是PCI论坛上的一群超频超到死的BT们竟然嚷嚷着要符合世界潮流,今天要禁止超频一天。本人其实并未BT到把24小时开机的机器超频来用(虽然偶尔也超起来make world),但是总也该响应一下潮流吧。想了半天,终于找到一个好主意,今天把机器降频运行一天来为缓解全球气候变暖贡献一份力量-_-
原理是利用powerd服务来实现cpu频率的自动降低和提升,具体作法如下:
修改/boot/loader.conf,加入一行cpufreq_load=”YES”,这个是载入cpufreq的kld,然后修改/etc/rc.conf,加入一行powerd_enable=”YES”。这样下次reboot时就会自动启用powerd。要立即生效的话直接运行/etc/rc.d/powerd start即可。
默认情况下,powerd使用adaptive方式来调节频率,简单来说就是判断cpu空闲率,大于90%则自动降频,低于某一数值则自动回升。具体配置参数可以看manpage powerd(8)。
输入powerd -v可以看到当前频率变化的细节,在我的机器上是这样的:
/home/dawnh>sudo powerd -v
powerd: using APM for AC line status
idle time > 90%, decreasing clock speed from 2149 MHz to 1880 MHz
idle time > 90%, decreasing clock speed from 1880 MHz to 1611 MHz
idle time > 90%, decreasing clock speed from 1611 MHz to 1343 MHz
idle time > 90%, decreasing clock speed […]

FreeBSD的Jail安装手记

以前零零散散的玩过,没有一个系统的理解,正好趁放假研究了一下,主要资料来自handbook。
概念
Jail是chroot机制的一种进化后的机制,可以提高更为高级和灵活的隔离和监管机制,除了文件系统监管外,还实现了设备隔离,用户隔离,系统资源隔离,使其更像是一种虚拟机机制了,与此相似的概念有linux下的openvz,以及Solaris下的Container。在下认为此类的技术会与虚拟化技术逐渐融合并逐渐集成入操作系统本身甚至硬件,最终成为新的操作系统资源分配机制(继多用户,多进程,Virtual Memory架构之后新的隔离机制)。
设计

超低级失误–误删除/etc

今天状态十分差,什么都没做好,还净干傻事。
刚才在调试自己的FreebBSD box来玩ZFS的时候,因为7-Current的一个配置文件路径的变更,/etc/zfs被挪到了/boot/zfs下。我本意是要删除/etc/zfs的,结果不知怎么在敲到rm -rf /etc的时候就按下了回车,当回过神来的时候,就对着那个“#”欲哭无泪…..
还好只是自己玩的系统,不然损失就大了,即使是这样,也要想办法尽可能的挽回。简单想了一下,目前对于这个box上etc下面我并没有作太大的修改,几乎自己改过的配置应该都还记得是哪些文件,所以问题的焦点就在于:怎么把原始的/etc文件弄回来。
其实这本也应该不是什么困难的事情,只需要从安装CD中恢复一份原始copy即可,可我这个box是没光驱的!即使是ISO,我也没有7-Current的!而在现在/etc整个消失的情况下,可以说是几乎所有的网络工具都瘫痪-_-
再仔细想了一下,刚好前两天刚做过make world,而/usr/src下面的东西还没删除,就从这里入手了!第一个想到的就是mergemaster,运行失败,提示找不到root用户-_-…..ah……出歪招了,touch /etc/passwd /etc/master.passwd /etc/group,然后mergemaster -p,提示cvs id更新,一阵窃喜,一路i下去,这样最重要的用户和组结构就恢复了,立刻passwd root改密码,接下来就是mergemaster -U,满屏的create,i按到手软,终于创建完了,哈哈。
剩下的就是清理工作了,该改配置的改配置。