線上服務(wù)器中招木馬是非常常見的一類安全問題,再遇到問題時,不要慌,先止損再排查,事后也要多總結(jié),下面介紹一個個人具體的排查及防護(hù)方法
故障描述:
如果需要服務(wù)器數(shù)據(jù)進(jìn)行備份,避免因?yàn)楣粲绊憣?dǎo)致備份異常,可以參考阿里云腳本(重啟實(shí)效),終端對外某些端口訪問(或者直接斷外網(wǎng),用VNC操作)
Window2008的批處理文件下載地址:http://oss.aliyuncs.com/aliyunecs/windows2008_drop_port.bat
Linux系統(tǒng)腳本:http://oss.aliyuncs.com/aliyunecs/linux_drop_port.sh
iptables -I OUTPUT 1 -p tcp -m multiport --dport 21,22,23,25,53,80,135,139,443,445 -j DROP
iptables -I OUTPUT 2 -p tcp -m multiport --dport 1433,1314,1521,2222,3306,3433,3389,4899,8080,18186 -j DROP
iptables -I OUTPUT 3 -p udp -j DROP
以下是處理過程:
步驟1:登錄痕跡
1. 查看登錄成功的IP:grep -i accept /var/log/secure* -n | grep -v 116.213.168.211
2. 查看登錄失敗的用戶信息:lastb | awk {'print $1'} | sort -r |uniq -c | sort -rn
3. 查看賬戶登錄信息:lastlog/last
4. 查看免密碼登錄authorized_key:stat /root/.ssh/authorized_keys,看時間創(chuàng)建和修改時間,然后cat看內(nèi)容
步驟2:檢查賬戶,包括:異常賬戶、新用戶、特權(quán)賬戶、空口令賬戶
1. 查看配置文件修改時間:stat /etc/passwd
2. 查看是否有異常的系統(tǒng)用戶:cat /etc/passwd 或 grep 'bash' /etc/passwd --color
3. 查看是否產(chǎn)生了新用戶,UID和GID為0的用戶:grep '0' /etc/passwd
4. 查看passwd的修改時間,判斷是否在不知的情況下添加用戶:ls -l /etc/passwd
1. file file_name
2. stat file_name
3. lsattr file_name
4. ll -a file_name
5. 查看是否存在特權(quán)用戶:awk -F: '$3==0 {print $1}' /etc/passwd
6. 查看是否存在空口令帳戶:awk -F: 'length($2)==0 {print $1}' /etc/shadow
步驟3:檢查進(jìn)程
1. 以進(jìn)程樹方式查看:ps -auxf
2. 查看當(dāng)前用戶的進(jìn)程(檢查是否有偽造進(jìn)程):ps -ef | grep vps
3. 守護(hù)進(jìn)程檢查(inetd)
4. 1. ps -aef | grep inetd
2. 1. 輸出了inetd –s /tmp/.xxx之類的進(jìn)程,多數(shù).xxx為后門進(jìn)程
2. kill –9 pid 開殺死該進(jìn)程
3. find / -name 程序名 -print #如果kill掉自動運(yùn)行,則執(zhí)行查找命令,找到所在目錄
3. cat /etc/inetd.conf | grep -v "^#"
4. 1. 輸出的信息就是這臺機(jī)器所開啟的遠(yuǎn)程服務(wù)。
2. CentOS:xinetd.conf
3. Ubuntu:inetd.conf
4. [http://blog.csdn.net/d_0xff/article/details/51521075](http://blog.csdn.net/d_0xff/article/details/51521075)
5. 查看該進(jìn)程所打開的端口和文件:lsof -p pid
6. 隱藏進(jìn)程
7. 1. ps -ef | awk '{print $2}' | sort -n | uniq > 1
2. ls /proc | sort -n | uniq > 2
3. diff 1 2
步驟4:查看history找操作痕跡
more .bash_history
步驟5:查找后門/異常文件: ls -alt
1. find / -uid 0 -perm -400 -print | less
2. find / -size +1000k -print | less
3. find / -name "..." -print | less
4. find / -name ".." -print | less
5. find / -name "." -print | less
6. find / -name "" -print | less
步驟6:檢查系統(tǒng)守護(hù)進(jìn)程
cat /etc/inetd.conf | grep -v "^#"
步驟7:檢查RPM的完整性
1. rpm -Va
2. rpm –qf /bin/ls
3. rpm -qf /bin/login
4. md5sum –b 文件名
5. md5sum –t 文件名
#注意相關(guān)的/sbin,/bin,/usr/sbin,/usr/bin
步驟8:檢查網(wǎng)絡(luò)
1. ip link | grep PROMISC(正常網(wǎng)卡不該在promisc模式,可能存在sniffer)
2. lsof -i
3. netstat -nap(察看不正常打開的TCP/UDP端口) --> 查找非常規(guī)端口
4. netstat -rn
5. arp -a
步驟9:檢查端口監(jiān)聽
1. 輸入netstat -an,列出本機(jī)所有的連接和監(jiān)聽的端口,查看有沒有非法連接。
2. 輸入netstat –rn,查看本機(jī)的路由、網(wǎng)關(guān)設(shè)置是否正確。
3. 輸入 ifconfig –a,查看網(wǎng)卡設(shè)置。
步驟10:檢查定時任務(wù)
1. cat /etc/crontab
2. crontab -e
步驟11:檢查后門
1. cat /etc/crontab
2. ls /var/spool/cron/
3. cat /etc/rc.d/rc.local
4. ls /etc/rc.d
5. ls /etc/rc3.d
6. find / -type f -perm 4000
步驟12:檢查文件系統(tǒng)中的Core文件
find / -name core -exec ls -l {} \;
步驟13:檢查系統(tǒng)服務(wù)
1. chkconfig --list
2. rpcinfo -p
步驟14:檢查rootkit后門
chkrootkit -q
步驟15:檢查后門文件
1. find / -name ".forward" -print
2. find / -name ".rhost" -print
3. 在某用戶的$HOME下,.rhosts文件中僅包含兩個+號是非常危險的,如果你的系統(tǒng)上開了513端口(rlogin端口,和telnet作用相同),那么任意是誰都可以用這個用戶登錄到你的系統(tǒng)上而不需要任何驗(yàn)證。
步驟16:文件權(quán)限檢查
1. 查找系統(tǒng)中任何用戶都擁有寫入權(quán)限的文件或者目錄,并保存在文件中用于檢查
1. find / -type f -perm -2 -o -perm -20 > /tmp/wmodfiles.txt 2>/dev/null
2. find / -type d -perm -2 -o -perm -20 > /tmp/wmoddir.txt 2>/dev/null
2. 查找系統(tǒng)中沒有屬主的文件,這種無屬主的文件對于系統(tǒng)的安全也能造成一定的威脅,有時候也會成為入侵者的工具,建議發(fā)現(xiàn)之后,要么修改其屬主信息,要么刪除,以免后患。
1. find / -nouser -o -nogroup > /tmp/orphan.txt 2>/dev/null
3. 查找系統(tǒng)中含有 S 位文件,S位權(quán)限的程序?qū)ο到y(tǒng)的威脅很大,可以把某些沒必要使用 S 位權(quán)限的應(yīng)用程序去掉,以防用戶權(quán)限的濫用。
1. find / -type f -perm -4000 -o -perm -2000 > /tmp/smod.txt 2>/dev/null
2. 如果查到一個文件-rwsr-xr-x 1 root root xxx .sh,則表明任何用戶進(jìn)來以后運(yùn)行這個文件都可以獲得一個rootshell,這就是setuid文件
步驟17:殺毒 推薦ClamAV
上面就講完了如何排查木馬。當(dāng)系統(tǒng)被植入木馬后,第一操作就是止損,最好在斷網(wǎng)情況下進(jìn)行排查。一旦系統(tǒng)中了木馬,當(dāng)前系統(tǒng)排查中招方式后,一定要重裝系統(tǒng),然后針對中招方式,進(jìn)行加固,切記,當(dāng)前不可再使用??!
———————————————— 防 護(hù) ————————————————
下面講下規(guī)避方法
系統(tǒng)外層規(guī)避:
1. 安全組是一種虛擬防火墻(云服務(wù)器都有具備),具備狀態(tài)檢測包過濾功能。安全組用于設(shè)置單臺或多臺云服務(wù)器的網(wǎng)絡(luò)訪問控制,它是重要的網(wǎng)絡(luò)安全隔離手段,用于在云端劃分安全域。安全組規(guī)則可以允許或者禁止與安全組相關(guān)聯(lián)的云服務(wù)器 ECS 實(shí)>例的公網(wǎng)和內(nèi)網(wǎng)的入出方向的訪問
2. 云盾可以防護(hù)SYN Flood,UDP Flood,ACK Flood,ICMP Flood,DNS Flood,CC攻擊等3到7層DDoS的攻擊。DDoS基礎(chǔ)防護(hù)免費(fèi)為阿里云用戶提供最高5G的默認(rèn)DDoS防護(hù)能力。
3. Web應(yīng)用防火墻(Web Application Firewall, 簡稱 WAF)基于云安全大數(shù)據(jù)能力實(shí)現(xiàn),通過防御SQL注入、XSS跨站腳本、常見Web服務(wù)器插件漏洞、木馬上傳、非授權(quán)核心資源訪問等OWASP常見攻擊,過濾海量惡意CC攻擊,避免您的網(wǎng)>站資產(chǎn)數(shù)據(jù)泄露,保障網(wǎng)站的安全與可用性
系統(tǒng)內(nèi)層規(guī)避
1. 設(shè)置iptables,添加ACL規(guī)則
2. 使用強(qiáng)密碼
3. 關(guān)閉不需要的端口,并及時安裝應(yīng)用補(bǔ)丁
4. 安全防護(hù)軟件:fail2ban、hostdeny
5. 文件權(quán)限加固:這塊阿里云寫的非常好,可以參見連接[https://help.aliyun.com/knowledge_detail/41217.html?spm=5176.7841174.2.7.iqoxda](https://help.aliyun.com/knowledge_detail/41217.html?spm=5176.7841174.2.7.iqoxda)
系統(tǒng)自身規(guī)避,主要借助于云平臺的快照和鏡像功能,數(shù)據(jù)無價,防患于未然
1. 設(shè)置定時快照(系統(tǒng)快照和數(shù)據(jù)盤快照)
2. 定期做鏡像