一. 系統狀態備份
主要是網絡、服務、端口、進程等狀態信息的備份工作
系統服務備份: chkconfig --list > services.log 進程備份: ps -ef > ps.log 監聽端口備份: netstat -utnpl > port-listen.log 系統所有端口情況: netstat -ano > port-all.log
二. 斷開和限制對外連接
iptables -A OUTPUT -o lo -j ACCEPT 允許本機訪問本機 iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT 允許主動訪問本服務器的請求 iptables -A OUTPUT –p tcp –d <Your IP> -jACCEPT 允許服務器主動訪問的IP白名單 iptables -A DROP 拒絕對外訪問
三. 進程查看
定位導致高流量的進程, 然后通過它的行為, 分析是否是黑客掛的馬
iftop -nP 查看流量情況
如先用iptraf-ng查下,如果UDP包發的很多,基本都被人裝了后門
1.web后門查殺
2.top (ps -ef) 查看進程
lsof –c 可疑進程名 (查看關聯文件,發現對外的 tcp 連接)
查看文件路徑。並查看文件創建時間
whereis 可疑進程名
ls -al 可疑進程名
# ps -aux(注意UID是0的)
# lsof -p pid(察看該進程所打開端口和文件)
# cat /etc/inetd.conf | grep -v “^#”(檢查守護進程)
檢查隱藏進程
# ps -ef|awk ‘{print }’|sort -n|uniq >1
# ls /porc |sort -n|uniq >2
# diff 1 2
kill 終止進程
查端口對應的進程:lsof -i:PID
如: lsof -i:9001
一些常用的方法: kill -STOP [pid] 發送SIGSTOP (17,19,23)停止一個進程,而並不消滅這個進程。 kill -CONT [pid] 發送SIGCONT (19,18,25)重新開始一個停止的進程。 kill -KILL [pid] 發送SIGKILL (9)強迫進程立即停止,並且不實施清理操作。 kill -9 -1 終止你擁有的全部進程。 SIGKILL 和 SIGSTOP 信號不能被捕捉、封鎖或者忽略,但是,其它的信號可以。
常用命令
lsof filename 顯示打開指定文件的所有進程
lsof -a 表示兩個參數都必須滿足時才顯示結果 lsof -c string 顯示COMMAND列中包含指定字符的進程所有打開的文件 lsof -u username 顯示所屬user進程打開的文件 lsof -g gid 顯示歸屬gid的進程情況 lsof +d /DIR/ 顯示目錄下被進程打開的文件 lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長 lsof -d FD 顯示指定文件描述符的進程 lsof -n 不將IP轉換為hostname,缺省是不加上-n參數 lsof -i 用以顯示符合條件的進程情況
lsof -Pnl +M -i4
-P :約束着網絡文件的端口號到端口名稱的轉換,在端口名稱的查找不能奏效時很有用的 -n : 約束着網絡文件的端口號到主機名稱的轉換,在主機名稱的查找不能奏效很有用 -l :約束着用戶ID號到登錄名的轉換。在登錄名的查找不正確或很慢時很有用。 +M :此選項支持本地TCP和UDP端口映射程序的注冊報告。 -i4 :僅列示IPv4協議下的端口。 -i6 :僅列示IPv6協議下的端口。
批量中止進程
kill -9 $(ps -ef | grep 進程名 | grep -v grep | awk '{print $2}')
網絡行為分析
抓取數據包進行分析,如wireshark,tcpdump等,例
|
1
|
tcpdump -i eth1 dst xxx.xxx.xxx.xxx
|
四.后門掃描
后門賬戶查找
1. 檢查帳戶
# cat /etc/passwd
# grep :0: /etc/passwd 檢查是否產生了新用戶,和UID、GID是0的用戶
# ls -l /etc/passwd 查看文件修改日期
# awk -F: ‘$3= =0 {print $1}’ /etc/passwd 查看是否存在特權用戶
# awk -F: ‘length($2)= =0 {print $1}’ /etc/shadow 查看是否存在空口令帳戶
檢查后門
cat /etc/crontab ls /var/spool/cron/ cat /etc/rc.d/rc.local ls /etc/rc.d ls /etc/rc3.d find / -type f -perm 4000
rookit檢測
Rootkit Hunter:rkhunter --check chkrootkit:chkrootkit | grep INFECTED
查找指定的tty進程:ps aux | grep pts/0
rkhunter
rkhunter --check 檢測。出現紅色的警告信息,請仔細檢測是否已經中招了。
查看產生的日志:cat /var/log/rkhunter.log | grep Warning
# ss -l 列出所有打開的網絡連接端口
# ss -pl 查看進程使用的socket
自動發送報告
每天5點檢測並發送通知郵件
crontab -e
* 5 * * * /usr/local/rkhunter/bin/rkhunter --cronjob -l --nomow --rwo | mail -s "[rkhunter] report `hostname` `date`" root@localhost
找出與 crypto 與 bash 這兩個服務有關的 PID 號碼
ps aux | egrep '(cron|syslog)'

檢查計划任務
注意root和UID是0的schedule # crontab –u root –l # cat /etc/crontab # ls /etc/cron.*
# crontabs:crontab -l,rm ... 清理計划認為
五. 查看系統、文件異常
主要針對文件的更改時間、屬組屬主信息問題,新增用戶,文件最后修改時間等問題:
# find -type f -mtime -5 #查找最近5天內更改的文件
# find / -uid 0 –perm -4000 –print
# find / -size +10000k –print
# find / -name "..." –print
# find / -name ".." –print
# find / -name "." –print
# find / -name " " –print 注意SUID文件,可疑大於10M和空格文件
# find / -name core -exec ls -l {} ; (檢查系統中的core文件)
檢查系統文件完整性
# md5sum –b 文件名
# md5sum –t 文件名
檢查網絡
# ip link | grep PROMISC(正常網卡不該在promisc模式,可能存在sniffer) # lsof –i # netstat –nap(察看不正常打開的TCP/UDP端口) # arp –a
檢查內核模塊
# lsmod
檢查系統服務
# chkconfig
# rpcinfo -p(查看RPC服務)
六. 查看關鍵日志
/var/log/faillog --登陸失敗日志
/var/log/auth.log --驗證日志
例:grep 'sshd' /var/log/auth.log
還有/var/log/messages、/var/log/secure
secure日志可以查看Accept關鍵字;last可以查看登錄信息;bash_history可以查看命令執行信息等,
例:查看登錄情況
cat secure-20150317 | grep 'Failed password' | cut -d " " -f 9,10,11 | sort | uniq
# last(查看正常情況下登錄到本機的所有用戶的歷史記錄)
注意”entered promiscuous mode”
注意錯誤信息如:
Remote Procedure Call (rpc) programs with a log entry that includes a large number (> 20) strange characters(-^PM-^PM-^PM-^PM-^PM-^PM-^PM-^PM)
補充:
通過syslog協議通過udp進行傳輸日志,以下是兩種方式:
1) Logger方式:cat localhost_access_log.2016-11-22.txt | logger -t graylog2 -n 127.0.0.1 -P 端口
2)nc方式:cat localhost_access_log.2016-11-22.txt | nc -w 1 -u 127.0.0.1 端口
輔助
用Shell Script編寫一段腳本,通過這個腳本讓chkrootkit的監測自動化。如有rootkit被發現的時候,發送郵件通知root用戶,並且將運行結果保存在/var/log/messages文件中。
[root@localhost ~]# vi mychkrootkit ← 建立chkrootkit自動運行腳本
#!/bin/bash PATH=/usr/bin:/bin TMPLOG=`mktemp` # Run the chkrootkit /usr/local/chkrootkit/chkrootkit > $TMPLOG # Output the log cat $TMPLOG | logger -t chkrootkit # bindshe of SMTPSllHow to do some wrongs if [ ! -z "$(grep 465 $TMPLOG)" ] && \ [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then sed -i '/465/d' $TMPLOG fi # If the rootkit have been found,mail root [ ! -z "$(grep INFECTED $TMPLOG)" ] && \ grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root rm -f $TMPLOG
一些小工具:
IPTraf-實時局域網IP監控
Htop – Linux進程監控
VnStat PHP – 網絡流量監控
Suricata – 網絡安全監控
iotop – 簡單的類似top的I/O監控器
Vnstat
#初始化,綁定要監測的網卡的名稱,比如eth0 vnstat -u -i eth0 vnstat
相關鏈接
監控 Linux 性能的 18 個命令行工具: http://os.51cto.com/art/201402/429890.htm
Linux下10個使用lsof命令的例子: http://www.tecmint.com/10-lsof-command-examples-in-linux/
Linux 性能監控之命令行工具: http://m.2cto.com/os/201606/517821.html
用Linux肉雞滲透一個小型內網的思路: http://www.91ri.org/12362.html
高手對決 -- 博客服務器被黑的故事: http://ruby-china.org/topics/23848
