对于强大的linux来说,我们一定程度上都会认为是她秀坚强、稳定,同时也很有魅力。更多的如何使用她,而并没有对她的安全篇有很多的涉足,抛砖引玉,简单从常用的日志审计及pam用户验证块做个实例应用。
1、操作日志审计
系统的history再一定程度上可以告诉我们都干了什么,但对于这个多用户的操作系统,从单个终端的操作日志记录方式已经不能满足对 操作命令的一个审计工作。
也许会有人提示如下:
chattr +a ~/.bash_history
这种修改虽然可以避免删除.bash_history或重定向到/dev/null。
(题外:ln -sf /dev/null ~/.bash_history)
但是对于这种情况, 异常登录的用户我不去操作 .bash_history的相关权限,直接执行histroy -c 上面的这些设置也就未果了。
下面借助 PROMPT_COMMAND 来实现操作命令及时记录。
1)、在/etc/profile追加如下:
1
2
<code>export</code> <code>HISTORY_FILE=</code><code>/var/log/history/userhistory</code><code>.log</code>
<code>readonly</code> <code>PROMPT_COMMAND=</code><code>'{ date "+%y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$NF}") #### $(id|awk "{print \$1}") #### $(history 1 | { read x cmd; echo "$cmd";})"; } >>$HISTORY_FILE'</code>
重读 source /etc/profile即可生效.
mkdir -p /var/log/history/
touch /var/log/history/userhistory.log
chmod 002 /var/log/history/userhistory.log
chattr +a /var/log/history/userhistory.log
2)、借助logrotate实现日志切割。
3
4
5
6
7
8
9
10
11
12
<code>#cat /etc/logrotate.d/userhistory</code>
<code>/var/log/history/userhistory</code><code>.log {</code>
<code> </code><code>weekly</code>
<code> </code><code>notifempty</code>
<code> </code><code>prerotate</code>
<code> </code><code>/usr/bin/chattr</code> <code>-a </code><code>/var/log/history/userhistory</code><code>.log</code>
<code> </code><code>endscript</code>
<code> </code><code>postrotate</code>
<code> </code><code>/bin/chmod</code> <code>002 </code><code>/var/log/history/userhistory</code><code>.log</code>
<code> </code><code>/usr/bin/chattr</code> <code>+a </code><code>/var/log/history/userhistory</code><code>.log</code>
<code>}</code>
具体的参数注解及 logrotate如何实现日志切割 参看
2、pam用户验证(pam_tally)
因/etc/pam.d/login及 /etc/pam.d/sshd 都会include system-auth,
故直接配置system-auth, 对从 tty及终端登录均会生效,
版本5
<code>#cat /etc/pam.d/system-auth (注意该条目的位置)</code>
<code>auth requisite pam_tally.so deny=5 even_deny_root_account unlock_time=300</code>
<a href="http://s3.51cto.com/wyfs02/M02/41/07/wKiom1PQgKjRQJrxAAEY6t3DUMw865.jpg" target="_blank"></a>
版本6
<code>#cat /etc/pam.d/system-auth</code>
<code>auth requisite pam_tally2.so deny=5 even_deny_root unlock_time=300</code>
建议:限制用户包括 root, 使用自定义环境测试后再使用。
that's all.
本文转自 刘园 51CTO博客,原文链接:http://blog.51cto.com/colynn/1529574