溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

發(fā)布時(shí)間:2020-07-10 17:21:03 來源:網(wǎng)絡(luò) 閱讀:430 作者:鄒君安 欄目:建站服務(wù)器

一、為什么?

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

  在中小型企業(yè),公司不同運(yùn)維人員基本都是以root 賬戶進(jìn)行服務(wù)器的登陸管理,缺少了賬戶權(quán)限審計(jì)制度。不出問題還好,出了問題,就很難找出源頭。

  這里介紹下,如何利用編譯bash 使不同的客戶端在使用root 登陸服務(wù)器使,記錄各自的操作,并且可以在結(jié)合ELK 日志分析系統(tǒng),來收集登陸操作日志

二、環(huán)境

  服務(wù)器:centos 6.5、Development tools、使用密鑰認(rèn)證,SElinux 關(guān)閉。

  客戶端:生成密鑰對(duì),用于登錄服務(wù)器 (2臺(tái))

三、搭建部署 (服務(wù)器操作 192.168.30.72)

3.1 下載編譯bash

[root@open1 ~]# wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz[root@open1 ~]# tar xvf bash-4.1.tar.gz
[root@open1 ~]# cd bash-4.1

3.2 先修改下 config-top.c文件,大概94行、104行,由于c 語言中 注釋是/**/ ,所以不要?jiǎng)h除錯(cuò)了。修改如下:

[root@open1 bash-4.1]# vim config-top.c#define SSH_SOURCE_BASHRC#define SYSLOG_HISTORY

3.3 修改下bashhist.c 文件,讓終端上的命令記錄到系統(tǒng)messages 中,并且以指定的格式。并傳入獲得的變量。修改后的內(nèi)容如下:

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

[root@open1 bash-4.1]# vim bashhist.c
#... 省略部分段落
void
bash_syslog_history (line)
    const char *line;
{  char trunc[SYSLOG_MAXLEN];
    const char *p;
    p = getenv("NAME_OF_KEY");  if (strlen(line) < SYSLOG_MAXLEN)
    syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d PPID=%d SID=%d  User=%s USER=%s CMD=%s", getpid(), getppid(), getsid(getpid()),  current_user.user_name, p, line);  else
    {
      strncpy (trunc, line, SYSLOG_MAXLEN);
      trunc[SYSLOG_MAXLEN - 1] = ' ';
      syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d  PPID=%d SID=%d User=%s USER=%s CMD=%s", getpid(), getppid(), getsid(getpid()), current_user.user_name, p, trunc);
    }
}

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

3.4 配置安裝路徑,編譯安裝,編譯到/usr/local/目錄下。

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

[root@open1 bash-4.1]# ./configure --prefix=/usr/local/bash_new
[root@open1 bash-4.1]# make && make install...if test "bash" = "gettext-tools"; then \
          /bin/sh /root/bash-4.1/./support/mkinstalldirs /usr/local/bash_new/share/gettext/po; \          for file in Makefile.in.in remove-potcdate.sin quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot   Makevars.template; do \
            /usr/bin/install -c -m 644 ./$file \
                            /usr/local/bash_new/share/gettext/po/$file; \          done; \          for file in Makevars; do \            rm -f /usr/local/bash_new/share/gettext/po/$file; \          done; \        else \
          : ; \        fimake[1]: Leaving directory `/root/bash-4.1/po'

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

編譯完成后,將新的bash 追加到 /etc/shells 中,并修改root用戶的登陸shell 環(huán)境為新編譯的shell。如下

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

[root@open1 bash-4.1]# echo "/usr/local/bash_new/bin/bash" >> /etc/shells
[root@open1 bash-4.1]# cat /etc/shells
/bin/sh/bin/bash
/sbin/nologin
/bin/dash
/usr/local/bash_new/bin/bash

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

[root@open1 bash-4.1]# vim /etc/passwdroot:x:0:0:root:/root:/usr/local/bash_new/bin/bash

注銷當(dāng)前root用戶,重新登陸后,查看/var/log/messages,如下就可以看到記錄了操作命令

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

 

四、SSH客戶端生成密鑰部分

4.1 在client1上(192.168.30.99)操作,用戶zhangsan

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì) View Code

-t 加密算法
-C 注釋 (加上這個(gè)也是為了最后進(jìn)行對(duì)服務(wù)器訪問人員進(jìn)行辨別的一個(gè)關(guān)鍵點(diǎn))

將公鑰上傳到服務(wù)器上的.ssh/authorized_keys 文件中。ssh-copy-id 命令會(huì)自動(dòng)在服務(wù)器上創(chuàng)建.ssh/authorized_keys文件,即使該目錄不存在,并自動(dòng)賦予600權(quán)限。

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

[root@rsyslog ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.30.72root@192.168.30.72's password:Now try logging into the machine, with "ssh 'root@192.168.30.72'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

4.3 client 2(192.168.30.71) 上同樣的操作,用戶lisi

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì) View Code

上傳公鑰到服務(wù)器上

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

[root@swift3 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.30.72The authenticity of host '192.168.30.72 (192.168.30.72)' can't be established.RSA key fingerprint is 8f:a7:1b:8d:e4:92:ad:ae:ea:1b:fb:67:0b:0b:7c:ac.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.30.72' (RSA) to the list of known hosts.
root@192.168.30.72's password:Now try logging into the machine, with "ssh 'root@192.168.30.72'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

4.4 現(xiàn)在去服務(wù)器上驗(yàn)證下該文件。

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì) View Code

現(xiàn)在上面兩個(gè)客戶端已經(jīng)可以免密鑰登陸了,現(xiàn)在去服務(wù)器上配置,并創(chuàng)建腳本。

五、配置服務(wù)器

5.1 在log目錄下創(chuàng)建一個(gè) keys 文件,用于登陸時(shí)存進(jìn)去公鑰,之后對(duì)其進(jìn)行取出判斷的

[root@open1 ~]# touch /var/log/keys

創(chuàng)建檢測(cè)腳本,內(nèi)容如下:

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì) View Code

5.2 配置 profile,在文件末尾添加一行內(nèi)容,如下:

[root@open1 ~]# echo "test -f /etc/CheckUser.sh && . /etc/CheckUser.sh" >> /etc/profile

在/etc/bashrc 末尾添加下面內(nèi)容:

[root@open1 ~]# tail -1f /etc/bashrc
test -z "$BASH_EXECUTION_STRING" || { test -f /etc/CheckUser.sh && . /etc/CheckUser.sh; logger -t -bash -s "HISTORY $SSH_CLIENT USER=$NAME_OF_KEY CMD=$BASH_EXECUTION_STRING " >/dev/null 2>&1;}

5.3 修改sshd 配置文件,開啟debug 模式,并重啟sshd 服務(wù)

[root@open1 ~]# sed -i 's/#LogLevel INFO/LogLevel DEBUG/g' /etc/ssh/sshd_config
[root@open1 ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

六、驗(yàn)證

6.1 在client1 上進(jìn)行登陸,并刪除個(gè)文件試下(zhangsan)

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

6.2 在client2 上進(jìn)行登陸,也刪除個(gè)文件,并執(zhí)行個(gè)重啟服務(wù)的命令(lisi)

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

6.3 去服務(wù)器上查看下 messages 日志,內(nèi)容如下

Linux 之不同運(yùn)維人員共用root 賬戶權(quán)限審計(jì)

通過上圖,可以看出,不通用戶的客戶端通過公鑰登陸的方式,分辨出了誰操作了什么,什么時(shí)候操作的。

(注:上圖第4段 swift1 是這臺(tái)服務(wù)器的主機(jī)名,由于我只是運(yùn)行了hostname 命令修改主機(jī)名,并沒有修改networks,所以內(nèi)核里還是之前的名字:swift1。)

七、結(jié)束

  通過這種方式,極大的解決了多root 用戶登陸操作,無法審計(jì)的問題。并且可以結(jié)合日志轉(zhuǎn)發(fā),將系統(tǒng)日志轉(zhuǎn)發(fā)到其它服務(wù)器,即使主機(jī)被黑了,也能具體的審查登陸時(shí)間以及做了哪些操作。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI