陈奇网络工作室

Linux之不同运维人员共用根账户权限审计

建站服务器

一、为什么?

在中小型企业,公司不同运维人员基本都是以根账户进行服务器的登陆管理,缺少了账户权限审计制度。不出问题还好,出了问题,就很难找出源头。

这里介绍下,如何利用编译尝试使不同的客户端在使用根登陆服务器使,记录各自的操作,并且可以在结合麋鹿日志分析系统,来收集登陆操作日志

二、环境

服务器:centos 6.5,开发工具、使用密钥认证,SElinux关闭。

客户端:生成密钥对,用于登录服务器(2台)

三、搭建部署(服务器操作192.168.30.72)

3.1 下载编译尝试

[root @ open 1 ~]# wget http://FTP。GNU。org/GNU/bash/bash-4.1。焦油。gz[root @ open 1 ~]# tarxvfbash-4.1。焦油。地面零点

[root@open1~]#cdbash-4.1

3.2先修改下config-top.c文件,大概94行、104行,由于c语言中注释是/**/,所以不要删除错了。修改如下:

[root @ open 1 bash-4.1]# vim config-top。c # define shh _ SOURCE _ BASHRC # define syslog _ HISTORY

3.3 修改下巴希斯特c文件,让终端上的命令记录到系统信息中,并且以指定的格式。并传入获得的变量。修改后的内容如下:

[root @ open 1 bash-4.1]# vimbashhist。c

#.省略部分段落

空的

bash_syslog_history(行)

constchar *行

{ chart runc[SYSLOG _ MAXLEN];

const char * p;

p=getenv(NAME _ OF _ KEY);if(strlen(line)SYSLOG_MAXLEN)

SYSLOG(SYSLOG _ FACILITY | SYSLOG _ LEVEL,HISTORY:PID=% dPPID=% dSID=% dUser=% sUSER=% sCMD=% s,getpid(),getppid(),getsid(getpid()),current_user.user_name,p,line);其他

{

strncpy(trunc,line,SYSLOG _ MAXLEN);

trunc[SYSLOG _ MAXLEN-1]=\ \ \ ' \ \ \ '

SYSLOG(SYSLOG _ FACILITY | SYSLOG _ LEVEL,HISTORY(TRUNCATED):PID=% dPPID=% dSID=% dUser=% sUSER=% sCMD=% s,getpid(),getppid(),getsid(getpid()),current_user.user_name,p,trunc);

}

}

3.4 配置安装路径,编译安装,编译到/usr/local/目录下。

[root@open1bash-4.1]# ./配置-前缀=/usr/local/bash_new

[root @ open 1 bash-4.1]# makemakeinstall.if test bash=gettext-tools;然后\\\\

/bin/sh/root/bash-4.1/./support/mkinstalldirs/usr/local/bash _ new/share/gettext/po;\ \ \ \ for fileinmakefile。英寸in remove-potcdate。罪quot。sed bold quot。seden @ quot。header en @ bold quot。标题插入-标题。罪恶法则-报价。模板;做\\\\

/usr/bin/install-c-m644 ./$file\\\\

/usr/local/bash _ new/share/gettext/po/$ file;\ \ \ \完成;\ \ \ \ for fileinmakevarsdo \ \ \ \ RM-f/usr/local/bash _ new/share/gettext/po/$ file;\ \ \ \完成;\\\\else\\\\

:\\\\fimake[1]:离开目录`/root/bash-4.1/po\\\ '

编译完成后,将新的尝试追加到/etc/shell中,并修改根用户的登陆壳环境为新编译的贝壳。如下

[root @ open 1 bash-4.1]# echo/usr/local/bash _ new/bin/bash/etc/shell

[root @ open 1 bash-4.1]# cat/etc/shell

/bin/sh/bin/bash

/sbin/nologin

/bin/dash

/usr/local/bash_new/bin/bash

[root @ open 1 bash-4.1]# vim/etc/passwd root:x:0:0:root:/root:/usr/local/bash _ new/bin/bash

注销当前根用户,重新登陆后,查看/var/日志/消息,如下就可以看到记录了操作命令

四、SSH客户端生成密钥部分

4.1 在客户端一上(192.168.30.99)操作,用户张三

查看代码

相当于表示“有…的”加密算法

-丙注释(加上这个也是为了最后进行对服务器访问人员进行辨别的一个关键点)

将公钥上传到服务器上的宋承宪/授权密钥文件中ssh-copy-id命令会自动在服务器上创建宋承宪/授权密钥文件,即使该目录不存在,并自动赋予600权限。

[root @ r syslog ~]# ssh-copy-id-I/root/.ssh/id _ RSA。pub root @ 192。168 .30 .72根@ 192。168 .30 .72 \ \ \ ' spasword:nowtrylogging到机器,用sh \ \ \ ' root @ 192。168 .30 .72 \ \ \ '并检查:ssh/授权密钥

tomakesurewehaven \ \ \ ' taddexterkeys你没有预料到。

4.3客户端2(192.168.30.71)上同样的操作,用户利西

查看代码

上传公钥到服务器上

[root @ swift 3 ~]# ssh-copy-id-I/root/。ssh/id _ RSA . pub root @ 192 . 168 . 30 . 72 theauthenticity of host \ \ \ ' 192 . 168 . 30 . 72(192 . 168 . 30 . 72)\ \ ' can \ \ \ ' t已建立。rsakeyfingerprintis 8f:a7:1b:8d:E4:92:ad:AE:ea:1b:FB:67:0b:0b:7c:AC。

您是否希望继续连接(是/否)?是

警告:已将\\\'192.168.30.72\\\'(RSA)永久添加到已知主机列表。

root @ 192 . 168 . 30 . 72 \ \ \ ' spasword:nowtrylogginging into the machine,with sh \ \ \ ' root @ 192 . 168 . 30 . 72 \ \ \ '并检查:ssh/授权密钥

tomakesurewehaven \ \ \ ' taddedexterkeys you weren \ \ \ ' t expecting。

4.4现在去服务器验证文件。

查看代码

现在上面两个客户端都可以不用钥匙登录了。现在转到服务器来配置和创建脚本。

动词(verb的缩写)配置服务器

5.1在log目录下创建一个keys文件,用来存放登录时的公钥,然后取出来进行判断。

[root @ open 1 ~]# touch/var/log/keys

创建包含以下内容的检测脚本:

查看代码

5.2配置概要文件,并在文件末尾添加一行,如下所示:

[root @ open 1 ~]# echo test-f/etc/check user . sh ./etc/check user . sh/etc/profile

在/etc/bashrc末尾添加以下内容:

[root @ open 1 ~]# tail-1f/etc/bashrc

test-z $ BASH _ EXECUTION _ STRING | | { test-f/etc/check user . sh ./etc/check user . sh;logger-t-BASH-sHISTORY $ SSH _ client user=$ NAME _ OF _ key cmd=$ BASH _ EXECUTION _ STRING/dev/null 21;}

5.3修改sshd配置文件,启动调试模式,并重新启动sshd服务。

[root @ open 1 ~]# sed-I \ \ \ ' s/# log level info/loglevel debug/g \ \ \ '/etc/ssh/sshd _ config

[root @ open 1 ~]# servicessdrestart

停止shd:[好]

开始shd:[好]

第六,核查

6.1登录client1,删除文件尝试(张三)。

6.2登录client2,删除文件,并执行一个命令来重新启动服务(lisi)。

6.3去服务器查看消息日志,内容如下

从上图可以看出,用户的客户端不可能通过公钥登录来区分谁在什么时候操作了什么。

(注意:上面第4段中的swift1是该服务器的主机名。因为我只运行了hostname命令来修改主机名,而没有修改网络,所以我在内核中的名字是swift1。)

七、结束

这样就极大地解决了root多根用户登录操作无法被审计的问题。并且可以结合日志转发将系统日志转发到其他服务器,即使主机被黑,也可以具体查看登录时间,做过哪些操作。

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3