1、賬號安全
基本使用:
1 )用 戶 信 息 文 件 /etc/passwd root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用戶名:密碼:用戶ID:組ID:用戶說明:家目錄:登陸之后shell 注:無密碼只允許本機登陸,遠程不允許登陸
2)影子文件/etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之
后的寬限天數:賬號失效時間:保留
who//查看當前登錄用戶(tty本地登陸pts遠程登錄)
w //查看系統信息,想知道某一時刻用戶的行為
uptime //查看登陸多久、多少用戶,負載
入侵排查:
1)查詢特權用戶特權用戶(uid 為0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
2)查詢可以遠程登錄的帳號信息
[root@localhost ~]# awk '/$1|$6/{print $1}' /etc/shadow
3)除root帳號外,其他帳號是否存在sudo權限。如非管理需要,普通帳號應刪除sudo權限[root@localhost ~]# more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)" 4、禁用或刪除多余及可疑的帳號
usermod -L user禁用帳號,帳號無法登錄,/etc/shadow第二欄為!開頭
userdel user刪除user用戶
userdel -r user將刪除user用戶,并且將/home目錄下的user目錄一并刪除
2、文件排查
1)敏感目錄的文件分析[類/tmp 目錄,命令目錄/usr/bin /usr/sbin 等]
ls用來顯示目標列表
2)查看 tmp 目錄下的文件:ls –alt /tmp/
3)查看開機啟動項內容:ls -alt /etc/init.d/,/etc/init.d 是 /etc/rc.d/init.d的軟鏈接
基本使用:
系統運行級別示意圖:
入侵排查:
啟動項文件: more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d
4)按時間排序查看指定目錄下文件:ls -alt | head -n 10
針對可疑文件可以使用 stat 進行創建修改時間、訪問時間的詳細查看,若修改時間距離事件日期接近,有線性關聯,說明可能被篡改或者其他。
(1) Access Time:簡寫為 atime,表示文件的訪問時間。當文件內容被訪問時,更新這個時間。
(2) Modify Time:簡寫為 mtime,表示文件內容的修改時間,當文件的數據內容被修改時,更新這個時間。
(3) Change Time:簡寫為 ctime,表示文件的狀態時間,當文件的狀態被修改時,更新這個時間,例如文件的鏈接數,大小,權限,Blocks 數。
5)查看歷史命令記錄文件~/.bash_history
查找~/.bash_history 命令執行記錄,主要分析是否有賬戶執行過惡意操作系統;命令在 linux 系統里,只要執行過命令的用戶,那么在這個用戶的 HOME 目錄下,都會有一個.bash_history 的文件記錄著這個用戶都執行過什么命令;
那么當安全事件發生的時候,我們就可以通過查看每個用戶所執行過的命令,來分析一下這個用戶是否有執行惡意命令,如果發現哪個用戶執行過惡意命令, 那么我們就可以鎖定這個線索,去做下一步的排查。
基本使用:
通過.bash_history查看帳號執行過的系統命令
①root的歷史命令
histroy
②打開/home各帳號目錄下的.bash_history,查看普通帳號的歷史命令
為歷史的命令增加登錄的IP地址、執行命令時間等信息:
a)保存1萬條命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
b)在/etc/profile的文件尾部添加如下行數配置信息:
######jiagu history xianshi#########
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histAppend
export PROMPT_COMMAND="history -a"
######### jiagu history xianshi ##########
c)source /etc/profile讓配置生效
生成效果: 12018-07-10 19:45:39 192.168.204.1 root source /etc/profile
③歷史操作命令的清除:history -c
注:此命令并不會清除保存在文件中的記錄,因此需要手動刪除.bash_profile文件中的記錄。
入侵排查:
進入用戶目錄下
cat .bash_history >> history.txt
6)查看操作系統用戶信息文件/etc/passwd
查找/etc/passwd 文件, /etc/passwd 這個文件是保存著這個 linux 系統所有用戶的信息,通過查看這個文件,我們就可以嘗試查找有沒有攻擊者所創建的用戶,或者存在異常的用戶。我們主要關注的是第 3、4 列的用戶標識號和組標識號,和倒數一二列的用戶主目錄和命令解析程序。一般來說最后一列命令解析程序如果是設置為 nologin 的話,那么表示這個用戶是不能登錄的,所以可以結合我們上面所說的 bash_history 文件的排查方法。首先在/etc/passwd 中查找命令解釋程序不是 nologin 的用戶, 然后再到這些用戶的用戶主目錄里, 找到bash_history,去查看這個用戶有沒執行過惡意命令。
/etc/passwd 中一行記錄對應著一個用戶,每行記錄又被冒號(:)分隔為 7 個字段, 其格式和具體含義如下:
用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄 Shell
7)查看新增文件
find:在指定目錄下查找文件
例:find ./ -mtime 0 -name "*.php"(查找 24 小時內被修改的 php 文件)
find / -ctime 2(查找 72 小時內新增的文件)
8)特殊權限的文件查看
查找 777 的權限的文件:find / *.jsp -perm 4777
9)隱藏的文件(以 "."開頭的具有隱藏屬性的文件)
注:在文件分析過程中,手工排查頻率較高的命令是 find grep ls 核心目的是為了關聯推理出可疑文件;
3、端口、進程排查
1)使用netstat 網絡連接命令,分析可疑端口、IP、PID
netstat -antlp|more
查看下pid所對應的進程文件路徑:運行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 為對應的pid 號)
netstat 用于顯示與 IP、TCP、UDP 和 ICMP 協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。
選項參數:
-a 顯示所有連線中的 Socket。
-n 直接使用 IP 地址,而不通過域名服務器。
-t 顯示 TCP 傳輸協議的連線狀況。
-u 顯示 UDP 傳輸協議的連線狀況。
-v 顯示指令執行過程。
-p 顯示正在使用 Socket 的程序識別碼和程序名稱。
-s 顯示網絡工作信息統計表。
2)根據 netstat 定位出的 pid,使用 ps 命令,分析進程
-a 代表 all。同時加上 x 參數會顯示沒有控制終端的進程
-aux 顯示所有包含其他使用者的行程(ps -aux --sort -pcpu | less 根據 cpt 使用率進行排序)
-C 顯示某的進程的信息
-axjf 以樹形結構顯示進程
ps aux | grep pid | grep –v grep
將 netstat 與 ps 結合:
4、日志排查
1)查看系統用戶登錄信息
a)使用 lastlog 命令,系統中所有用戶最近一次登錄信息。
b)使用 lastb 命令,用于顯示用戶錯誤的登錄列表;
c)使用 last 命令,用于顯示用戶最近登錄信息(數據源為/var/log/wtmp,var/log/btmp);
utmp 文件中保存的是當前正在本系統中的用戶的信息。
wtmp 文件中保存的是登錄過本系統的用戶的信息。
/var/log/wtmp 文 件 結 構 和 /var/run/utmp 文 件 結 構 一 樣 , 都 是 引 用
/usr/include/bits/utmp.h 中 的 struct utmp;