LIDS精通与进阶–七、LIDS在内核中的安全级别

  冰块 一些时候,我们需要改变保护系统的配置。那样我们该怎么做呢?LIDS给我们提供了两种方法。我们可以重新启动系统,,在LILO:里键入security=0. 我们可以在用lidsadm –S中用密码来转换安全级别。 1、在内核中的两个安全级别LIDS在内核中定义了两个安全级别,安全的security和无安全的none_security.默认情况下,是设置成安全的级别。如果你需要改变它。就在启动的时候键入security=0.在内核中有一个全局变量lids_load。它表明是否lids的安全变量security被开启。它默认是1。如果在系统启动的时候在LILO:键入security=0 ,所有的LIDS的保护都会失效,就象那些没有LIDS保护的系统一样。/* variant defined in fs/lids.c */int lids_reload_conf=0; int lids_load=0; /* it is raised to 1 when kernel boot */int lids_local_on=1;int lids_local_pid=0;/* in init/main.c */#ifdef CONFIG_LIDS/** lids_setup , read lids info from the kernel.*/static void __init lids_setup(char *str, int *ints){if (ints[0] > 0 && ints[1] >= 0)====> _lids_load= ints[1];}#endif…./* init the LIDS when the system bootup up */static void __init do_basic_setup(void){……/* Mount the root filesystem.. */mount_root();#ifdef CONFIG_LIDS/* init the ids file system */—> lids_load=_lids_load;lids_local_on=_lids_load;lids_flags=lids_load * (LIDS_FLAGS_LIDS_ON | LIDS_FLAGS_LIDS_LOCAL_ON);===> printk(“Linux Intrusion Detection System %s n”,lids_load==1?”starts”:”stops”);init_vfs_security();#endif……}在系统启动的时候,你可以看到”Linux Intrusion Detection System 0.9 starts”,表明LIDS的保护开启了。当保护停止的时候,你可以看到”Linux Intrusion Detection System 0.9 stops”。这里的0.9是当前的LIDS版本号。2、用lidsadm来改变系统安全级别一些时候,有也可以在线的时候改变你的安全级别,你必须把CONFIG_LIDS_ALLOW_SWITCH功能开启。并且在编译前配置内核的时候提供一个RipeMD-160 encrypted password 。这个密码可以用lidsadm –p 命令来获得用内核鉴定用提供的密码,LIDS可以鉴定用户来区分哪个用户可以转换内核的安全级别。这个功能也要用到lidsadm的-S参数。如。# /sbin/lidsadm -S — -LIDSSWITCHPassword:xxxxxx #在输入密码后,我们就可以转换LIDS的安全关闭。让我们看看内部的编码来了解它是如何工作的,/* in the fs/lids.c lids_proc_locks_sysctl() */int lids_proc_locks_sysctl(ctl_table *table, int write, struct file *filp,void *buffer, size_t *lenp, int conv, int op){lids_locks_t locks;byte hashcode[RMDsize/8];char rmd160sig[170];……. locks.passwd[sizeof(passwd_t)-1]=0; /* We don’t take the risk */rmd160sig[0]=0;#ifdef CONFIG_LIDS_ALLOW_SWITCHif ((!lids_first_time) || (locks.passwd[0])) {RMD((byte *)locks.passwd,hashcode);memset((char *)locks.passwd,”,sizeof(passwd_t));for (i=0; i (!strncmp(rmd160sig,CONFIG_LIDS_RMD160_PASSWD,160)) ) {#elseif ((lids_first_time) && (!locks.passwd[0])) {#endif/* access granted ! */number_failed=0;if (lids_process_flags(locks.flags)) {cap_bset=locks.cap_bset;lids_security_alert(“Changed: cap_bset=0x%x lids_flags=0x%x”,cap_t(cap_bset),lids_flags);}lids_first_time=0;}……..}在密码检查正确后。Lids_process_flag()就会改变当前的lids标记为关闭状态,然后你就可以在不受保护的系统做你想要做的事情了。你可以看看fs/lids.c的lids_process_flag的代码来了解它。转换LIDS和LIDA_GLOBAL如果你把LIDS的保护关闭,你会有两个结果,一,关闭后其它没有被LIDS保护的控制台一样不受保护,二,可以本地的关闭它们,在其它的控制台,所有的系统依然被LIDS保护。它们一样很安全。这些细节是fs/lids的lids_process_flag()来实现。伟人之所以伟大,是因为他与别人共处逆境时,

LIDS精通与进阶–七、LIDS在内核中的安全级别

相关文章:

你感兴趣的文章:

标签云: