安全运维之:Linux系统账户和登录安全

一、合理使用Shell历史命令记录功能

在Linux下可通过history命令查看用户所有的历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash_history文件中,通过这个文件可以查询shell命令的执行历史,有助于运维人员进行系统审计和问题排查,同时,在服务器遭受黑客攻击后,也可以通过这个命令或文件查询黑客登录服务器所执行的历史命令操作,但是有时候黑客在入侵服务器后为了毁灭痕迹,可能会删除.bash_history文件,这就需要合理的保护或备份.bash_history文件。下面介绍下history日志文件的安全配置方法。

默认的history命令只能查看用户历史操作记录,并不能区分每个用户操作命令的时间,这点对于排查问题十分不便,不过可以通过下面的方法(加入四行内容)让history命令自动记录所有shell命令的执行时间,编辑/etc/bashrc文件:

HISTFILESIZE=4000HISTSIZE=4000HISTTIMEFORMAT=’%F%T’exportHISTTIMEFORMAT

其中,HISTFILESIZE定义了在.bash_history文件中保存命令的记录总数,默认值是1000,这里设置为4000;HISTSIZE定义了history命令输出的记录总数;HISTTIMEFORMAT定义时间显示格式,这里的格式与date命令后的“+”%F %T””是一致的;HISTTIMEFORMAT作为history的时间变量将值传递给history命令。

通过这样的设置后,执行history命令,就会显示每个历史命令的详细执行时间,例如:

[root@server~]#history2472013-10-0517:16:28vi/etc/bashrc2482013-10-0517:16:28top2492013-10-0517:04:18vmstat2502013-10-0517:04:24ps-ef2512013-10-0517:16:29ls-al2522013-10-0517:16:32lsattr2532013-10-0517:17:16vi/etc/profile2542013-10-0517:19:32date+”%F%T”2552013-10-0517:21:06lsof2562013-10-0517:21:21history

为了确保服务器的安全,保留shell命令的执行历史是非常有用的一条技巧。shell虽然有历史功能,但是这个功能并非针对审计目的而设计,因此很容易被黑客篡改或是丢失。下面再介绍一种方法,可以实现详细记录登录过系统的用户、IP地址、shell命令以及详细操作时间等,并将这些信息以文件的形式保存在一个安全的地方,以供系统审计和故障排查。

将下面这段代码添加到/etc/profile文件中,即可实现上述功能。

#historyUSER_IP=`who-uami2>/dev/null|awk'{print$NF}’|sed-e’s/[()]//g’`HISTDIR=/usr/share/.historyif[-z$USER_IP]thenUSER_IP=`hostname`fiif[!-d$HISTDIR]thenmkdir-p$HISTDIRchmod777$HISTDIRfiif[!-d$HISTDIR/${LOGNAME}]thenmkdir-p$HISTDIR/${LOGNAME}chmod300$HISTDIR/${LOGNAME}fiexportHISTSIZE=4000DT=`date+%Y%m%d_%H%M%S`exportHISTFILE=”$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT”exportHISTTIMEFORMAT=”[%Y.%m.%d%H:%M:%S]”chmod600$HISTDIR/${LOGNAME}/*.history*2>/dev/null

这段代码将每个用户的shell命令执行历史以文件的形式保存在/usr/share/.history目录中,每个用户一个文件夹,并且文件夹下的每个文件以IP地址加shell命令操作时间的格式命名。下面是user01用户执行shell命令的历史记录文件,基本效果如下:

[root@serveruser01]#pwd/usr/share/.history/user01[root@serveruser01]#ls-al-rw——-1user01wheel56Jul617:07192.168.12.12.history.20130706_164512-rw——-1user01wheel43Jul617:42192.168.12.12.history.20130706_172800-rw——-1user01wheel22Jul712:05192.168.12.19.history.20130707_111123-rw——-1user01wheel22Jul813:41192.168.12.20.history.20130708_120053-rw——-1user01wheel22Jul115:28192.168.12.186.history.20130701_150941-rw——-1user01wheel22Jul219:47192.168.12.163.history.20130702_193645-rw——-1user01wheel22Jul312:38192.168.12.19.history.20130703_120948-rw——-1user01wheel22Jul319:14192.168.12.134.history.20130703_183150

保存历史命令的文件夹目录要尽量隐蔽,避免被黑客发现后删除。

二、合理使用su、sudo命令

su命令是一个切换用户的工具,经常用于将普通用户切换到超级用户下,当然也可以从超级用户切换到普通用户。为了保证服务器的安全,几乎所有服务器都禁止了超级用户直接登录系统,而是通过普通用户登录系统,然后再通过su命令切换到超级用户下,执行一些需要超级权限的工作。通过su命令能够给系统管理带来一定的方便,但是也存在不安全的因素,例如系统有10个普通用户,每个用户都需要执行一些有超级权限的操作,就必须把超级用户的密码交给这10个普通用户,如果这10个用户都有超级权限,通过超级权限可以做任何事,那么会在一定程度上对系统的安全造成了威协。因此su命令在很多人都需要参与的系统管理中,并不是最好的选择,超级用户密码应该掌握在少数人手中,此时sudo命令就派上用场了。

sudo命令允许系统管理员分配给普通用户一些合理的“权利”,并且不需要普通用户知道超级用户密码,就能让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如系统服务重启、编辑系统配置文件等,通过这种方式不但能减少超级用户登录次数和管理时间,也提高了系统安全性。因此,sudo命令相对于权限无限制性的su来说,还是比较安全的,所以sudo也被称为受限制的su,另外sudo也是需要事先进行授权认证的,所以也被称为授权认证的su。

生活中若没有朋友,就像生活中没有阳光一样

安全运维之:Linux系统账户和登录安全

相关文章:

你感兴趣的文章:

标签云: