服務(wù)器怎么防攻擊
當(dāng)服務(wù)器遇到攻擊時(shí)一個(gè)安全運(yùn)維人員 應(yīng)當(dāng)迅速有效地處理攻擊行為,最大限度地降低攻擊對(duì)系統(tǒng)產(chǎn)生的影響,下面學(xué)習(xí)啦小編就教你一些有處理服務(wù)器遇到攻擊時(shí)的相關(guān)資料吧。
一、處理服務(wù)器遭受攻擊的一般思路
系統(tǒng)遭受攻擊并不可怕,可怕的是面對(duì)攻擊束手無(wú)策,下面就詳細(xì)介紹下在服務(wù)器遭受攻擊后的一般處理思路。
1.切斷網(wǎng)絡(luò)
所有的攻擊都來(lái)自于網(wǎng)絡(luò),因此,在得知系統(tǒng)正遭受黑客的攻擊后,首先要做的就是斷開(kāi)服務(wù)器的網(wǎng)絡(luò)連接,這樣除了能切斷攻擊源之外,也能保護(hù)服務(wù)器所在網(wǎng)絡(luò)的其他主機(jī)。
2.查找攻擊源
可以通過(guò)分析系統(tǒng)日志或登錄日志文件,查看可疑信息,同時(shí)也要查看系統(tǒng)都打開(kāi)了哪些端口,運(yùn)行哪些進(jìn)程,并通過(guò)這些進(jìn)程分析哪些是可疑的程序。這個(gè)過(guò)程要根據(jù)經(jīng)驗(yàn)和綜合判斷能力進(jìn)行追查和分析。下面的章節(jié)會(huì)詳細(xì)介紹這個(gè)過(guò)程的處理思路。
3.分析入侵原因和途徑
既然系統(tǒng)遭到入侵,那么原因是多方面的,可能是系統(tǒng)漏洞,也可能是程序漏洞,一定要查清楚是哪個(gè)原因?qū)е碌?,并且還要查清楚遭到攻擊的途徑,找到攻擊源,因?yàn)橹挥兄懒嗽馐芄舻脑蚝屯緩?,才能刪除攻擊源同時(shí)進(jìn)行漏洞的修復(fù)。
4.備份用戶數(shù)據(jù)
在服務(wù)器遭受攻擊后,需要立刻備份服務(wù)器上的用戶數(shù)據(jù),同時(shí)也要查看這些數(shù)據(jù)中是否隱藏著攻擊源。如果攻擊源在用戶數(shù)據(jù)中,一定要徹底刪除,然后將用戶數(shù)據(jù)備份到一個(gè)安全的地方。
5.重新安裝系統(tǒng)
永遠(yuǎn)不要認(rèn)為自己能徹底清除攻擊源,因?yàn)闆](méi)有人能比黑客更了解攻擊程序,在服務(wù)器遭到攻擊后,最安全也最簡(jiǎn)單的方法就是重新安裝系統(tǒng),因?yàn)榇蟛糠止舫绦蚨紩?huì)依附在系統(tǒng)文件或者內(nèi)核中,所以重新安裝系統(tǒng)才能徹底清除攻擊源。
6.修復(fù)程序或系統(tǒng)漏洞
在發(fā)現(xiàn)系統(tǒng)漏洞或者應(yīng)用程序漏洞后,首先要做的就是修復(fù)系統(tǒng)漏洞或者更改程序bug,因?yàn)橹挥袑⒊绦虻穆┒葱迯?fù)完畢才能正式在服務(wù)器上運(yùn)行。
7.恢復(fù)數(shù)據(jù)和連接網(wǎng)絡(luò)
將備份的數(shù)據(jù)重新復(fù)制到新安裝的服務(wù)器上,然后開(kāi)啟服務(wù),最后將服務(wù)器開(kāi)啟網(wǎng)絡(luò)連接,對(duì)外提供服務(wù)。
二、檢查并鎖定可疑用戶
當(dāng)發(fā)現(xiàn)服務(wù)器遭受攻擊后,首先要切斷網(wǎng)絡(luò)連接,但是在有些情況下,比如無(wú)法馬上切斷網(wǎng)絡(luò)連接時(shí),就必須登錄系統(tǒng)查看是否有可疑用戶,如果有可疑用戶登錄了系統(tǒng),那么需要馬上將這個(gè)用戶鎖定,然后中斷此用戶的遠(yuǎn)程連接。
1.登錄系統(tǒng)查看可疑用戶
通過(guò)root用戶登錄,然后執(zhí)行“w”命令即可列出所有登錄過(guò)系統(tǒng)的用戶,如下圖所示。
通過(guò)這個(gè)輸出可以檢查是否有可疑或者不熟悉的用戶登錄,同時(shí)還可以根據(jù)用戶名以及用戶登錄的源地址和它們正在運(yùn)行的進(jìn)程來(lái)判斷他們是否為非法用戶。
2.鎖定可疑用戶
一旦發(fā)現(xiàn)可疑用戶,就要馬上將其鎖定,例如上面執(zhí)行“w”命令后發(fā)現(xiàn)nobody用戶應(yīng)該是個(gè)可疑用戶(因?yàn)閚obody默認(rèn)情況下是沒(méi)有登錄權(quán)限的),于是首先鎖定此用戶,執(zhí)行如下操作:
[root@server ~]# passwd -l nobody
鎖定之后,有可能此用戶還處于登錄狀態(tài),于是還要將此用戶踢下線,根據(jù)上面“w”命令的輸出,即可獲得此用戶登錄進(jìn)行的pid值,操作如下:
[root@server ~]# ps -ef"grep @pts/3
531 6051 6049 0 19:23 ? 00:00:00 sshd: nobody@pts/3
[root@server ~]# kill -9 6051
這樣就將可疑用戶nobody從線上踢下去了。如果此用戶再次試圖登錄它已經(jīng)無(wú)法登錄了。
3.通過(guò)last命令查看用戶登錄事件
last命令記錄著所有用戶登錄系統(tǒng)的日志,可以用來(lái)查找非授權(quán)用戶的登錄事件,而last命令的輸出結(jié)果來(lái)源于/var/log/wtmp文件,稍有經(jīng)驗(yàn)的入侵者都會(huì)刪掉/var/log/wtmp以清除自己行蹤,但是還是會(huì)露出蛛絲馬跡在此文件中的。
三、查看系統(tǒng)日志
查看系統(tǒng)日志是查找攻擊源最好的方法,可查的系統(tǒng)日志有/var/log/messages、/var/log/secure等,這兩個(gè)日志文件可以記錄軟件的運(yùn)行狀態(tài)以及遠(yuǎn)程用戶的登錄狀態(tài),還可以查看每個(gè)用戶目錄下的.bash_history文件,特別是/root目錄下的.bash_history文件,這個(gè)文件中記錄著用戶執(zhí)行的所有歷史命令。
四、檢查并關(guān)閉系統(tǒng)可疑進(jìn)程
檢查可疑進(jìn)程的命令很多,例如ps、top等,但是有時(shí)候只知道進(jìn)程的名稱無(wú)法得知路徑,此時(shí)可以通過(guò)如下命令查看:
首先通過(guò)pidof命令可以查找正在運(yùn)行的進(jìn)程PID,例如要查找sshd進(jìn)程的PID,執(zhí)行如下命令:
1 2 [root@server ~]# pidof sshd 13276 12942 4284
然后進(jìn)入內(nèi)存目錄,查看對(duì)應(yīng)PID目錄下exe文件的信息:
1 2 [root@server ~]# ls -al /proc/13276/exe lrwxrwxrwx 1 root root 0 Oct 4 22:09 /proc/13276/exe -> /usr/sbin/sshd
這樣就找到了進(jìn)程對(duì)應(yīng)的完整執(zhí)行路徑。如果還有查看文件的句柄,可以查看如下目錄:
[root@server ~]# ls -al /proc/13276/fd
通過(guò)這種方式基本可以找到任何進(jìn)程的完整執(zhí)行信息,此外還有很多類似的命令可以幫助系統(tǒng)運(yùn)維人員查找可疑進(jìn)程。例如,可以通過(guò)指定端口或者tcp、udp協(xié)議找到進(jìn)程PID,進(jìn)而找到相關(guān)進(jìn)程:
1 2 3 4 5 6 7 8 9 [root@server ~]# fuser -n tcp 111 111/tcp: 1579 [root@server ~]# fuser -n tcp 25 25/tcp: 2037 [root@server ~]# ps -ef|grep 2037 root 2037 1 0 Sep23 ? 00:00:05 /usr/libexec/postfix/master postfix 2046 2037 0 Sep23 ? 00:00:01 qmgr -l -t fifo -u postfix 9612 2037 0 20:34 ? 00:00:00 pickup -l -t fifo -u root 14927 12944 0 21:11 pts/1 00:00:00 grep 2037
在有些時(shí)候,攻擊者的程序隱藏很深,例如rootkits后門程序,在這種情況下ps、top、netstat等命令也可能已經(jīng)被替換,如果再通過(guò)系統(tǒng)自身的命令去檢查可疑進(jìn)程就變得毫不可信,此時(shí),就需要借助于第三方工具來(lái)檢查系統(tǒng)可疑程序,例如前面介紹過(guò)的chkrootkit、RKHunter等工具,通過(guò)這些工具可以很方便的發(fā)現(xiàn)系統(tǒng)被替換或篡改的程序。
五、檢查文件系統(tǒng)的完好性
檢查文件屬性是否發(fā)生變化是驗(yàn)證文件系統(tǒng)完好性最簡(jiǎn)單、最直接的方法,例如可以檢查被入侵服務(wù)器上/bin/ls文件的大小是否與正常系統(tǒng)上此文件的大小相同,以驗(yàn)證文件是否被替換,但是這種方法比較低級(jí)。此時(shí)可以借助于Linux下rpm這個(gè)工具來(lái)完成驗(yàn)證,操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@server ~]# rpm -Va ....L... c /etc/pam.d/system-auth S.5..... c /etc/security/limits.conf S.5....T c /etc/sysctl.conf S.5....T /etc/sgml/docbook-simple.cat S.5....T c /etc/login.defs S.5..... c /etc/openldap/ldap.conf S.5....T c /etc/sudoers ..5....T c /usr/lib64/security/classpath.security ....L... c /etc/pam.d/system-auth S.5..... c /etc/security/limits.conf S.5..... c /etc/ldap.conf S.5....T c /etc/ssh/sshd_config
對(duì)于輸出中每個(gè)標(biāo)記的含義介紹如下:
S 表示文件長(zhǎng)度發(fā)生了變化
M 表示文件的訪問(wèn)權(quán)限或文件類型發(fā)生了變化
5 表示MD5校驗(yàn)和發(fā)生了變化
D 表示設(shè)備節(jié)點(diǎn)的屬性發(fā)生了變化
L 表示文件的符號(hào)鏈接發(fā)生了變化
U 表示文件/子目錄/設(shè)備節(jié)點(diǎn)的owner發(fā)生了變化
G 表示文件/子目錄/設(shè)備節(jié)點(diǎn)的group發(fā)生了變化
T 表示文件最后一次的修改時(shí)間發(fā)生了變化
如果在輸出結(jié)果中有“M”標(biāo)記出現(xiàn),那么對(duì)應(yīng)的文件可能已經(jīng)遭到篡改或替換,此時(shí)可以通過(guò)卸載這個(gè)rpm包重新安裝來(lái)清除受攻擊的文件。
不過(guò)這個(gè)命令有個(gè)局限性,那就是只能檢查通過(guò)rpm包方式安裝的所有文件,對(duì)于通過(guò)非rpm包方式安裝的文件就無(wú)能為力了。同時(shí),如果rpm工具也遭到替換,就不能通過(guò)這個(gè)方法了,此時(shí)可以從正常的系統(tǒng)上復(fù)制一個(gè)rpm工具進(jìn)行檢測(cè)。