如何使用Linux伺服器的巡檢使用者和基礎命令,捕捉使用者登入痕跡?

neverinit發表於2020-06-19

本文使用一個 最普通的巡檢使用者,檢視RedHat 7.4系統日誌,檢查 使用者登入痕跡,說明如何判斷是否存在 違規訪問記錄,如跳板訪問等。


這裡需要關心的日誌列表如下

  • /var/log/lastlog  二進位制檔案,記錄了最近的連線記錄

  • /var/log/wtmp  二進位制檔案,記錄每個使用者的登入和登出資訊

  • /var/log/secure  文字檔案,記錄使用者的登入行為資訊

  • /var/log/btmp  二進位制檔案,記錄失敗的登入嘗試資訊

  • /run/utmp  二進位制檔案,記錄當前登入使用者資訊


01


使用cat命令檢視


如果只有cat等基礎命令,二進位制檔案輸出的內容會以亂碼形式出現

如何使用Linux伺服器的巡檢使用者和基礎命令,捕捉使用者登入痕跡?


不過雖然亂碼很多,但是也可以看到關鍵資訊, 圖中可以看出歷史訪問的IP資訊,以及所用的訪問使用者。 如果發現可疑的IP地址,那就可以深入的行為分析了。


02


使用strings命令檢視


用strings命令可以檢視二進位制檔案資訊,輸出的內容比較接近文字內容。分別檢視檔案內容如下:


執行命令: strings lastlog

  • 關注的要點是檢查是否存在可疑IP地址

[root@test log]# strings lastlog
^pts/2
182.207.162.59
[pts/1
^pts/0
182.207.162.59
^pts/0
^pts/7


執行命令: strings wtmp

  • 因為輸出內容過多,擷取部分展示,關注的要點是使用者和IP地址是否可疑

    ts/0cams
    182.207.177.97
    pts/0
    pts/0
    ts/0root
    182.207.177.122
    pts/0
    pts/0
    ts/0cams
    182.119.114.218
    pts/0
    pts/0
    ts/0cams
    182.207.162.59


    執行命令: strings /run/utmp

    • 關注當前是否還有其他IP地址連上伺服器

      [cams@test log]$ strings /run/utmp 
      reboot
      3.10.0-693.el7.x86_64
      runlevel
      3.10.0-693.el7.x86_64
      pts/0
      ts/0cams
      182.207.162.59
      pts/1
      ts/1
      pts/2
      ts/2root
      182.207.162.59


      03


      其他情況


      但是也可能存在部分系統日誌無許可權訪問的情況

        [cams@test log]$ strings btmp
        strings: btmp: 許可權不夠
        [cams@test log]$ strings secure
        strings: secure: 許可權不夠


        對於 執行cat命令 提示許可權不夠的檔案,如果有sudo cat許可權就能看,如果沒有sudo cat許可權就不能看。一般情況下,生產環境巡檢使用者擁有sudo cat許可權。


        對於btmp檔案,可以結合secure檔案判斷是否存在 嘗試登入行為,重點還是關注日誌中的IP地址是否可疑,訪問行為是否合規等!

        擷取和展示/var/log/secure文字檔案部分內容,可以清晰看到帶時間戳的日誌資訊,失敗的登入資訊是Failed開頭,成功的登入資訊是Accepted開頭,IP地址和使用者等資訊也清晰可見。

          Jun 18 19:13:09 test sshd[24648]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=182.207.162.59  user=root
          Jun 18 19:13:09 test sshd[24648]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
          Jun 18 19:13:11 test sshd[24648]: Failed password for root from 182.207.162.59 port 28680 ssh2
          Jun 18 19:13:16 test sshd[24648]: error: Received disconnect from 182.207.162.59 port 28680:0:  [preauth]
          Jun 18 19:13:16 test sshd[24648]: Disconnected from 182.207.162.59 port 28680 [preauth]
          Jun 18 19:13:59 test sshd[24683]: Accepted password for root from 182.207.162.59 port 28814 ssh2
          Jun 18 19:13:59 test sshd[24683]: pam_unix(sshd:session): session opened for user root by (uid=0)



          如何使用Linux伺服器的巡檢使用者和基礎命令,捕捉使用者登入痕跡?

          可能有的同學會問,為什麼不用grep、awk、sed等命令匹配日誌檔案中的IP地址,或者執行shell指令碼,然後輸出結果呢?


          答:因為一般生產環境有命令白名單,限制了很多命令的使用,最基礎的命令才能適用於絕大多數生產環境。另外,巡檢使用者只有讀許可權,建立和執行shell指令碼等也不會被允許。



          來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31394774/viewspace-2699571/,如需轉載,請註明出處,否則將追究法律責任。

          相關文章