2021-02-24 分類: 網(wǎng)站建設
張某某,Linux資深技術專家,憑借多年的自動化操作和管理經(jīng)驗,他擅長于Linux、集群應用、Mysql、甲骨文等方面的系統(tǒng)管理、性能調優(yōu)、規(guī)劃和設計,并擁有豐富的實踐經(jīng)驗?,F(xiàn)階段關心于Hadoop數(shù)據(jù)平臺及其和Hadoop有關的食物網(wǎng)的網(wǎng)絡維護、監(jiān)視器、布署、提升等工藝。
線上Linux服務器運維安全策略經(jīng)驗分享
大家好,我是社長,今天跟大家分享的主題是:線上Linux服務器運維安全策略經(jīng)驗。
安全是IT行業(yè)一個老生常談的話題了,從之前的“棱鏡門”事件中折射出了很多安全問題,處理好信息安全問題已變得刻不容緩。因此做為運維人員,就必須了解一些安全運維準則,同時,要保護自己所負責的業(yè)務,首先要站在攻擊者的角度思考問題,修補任何潛在的威脅和漏洞。
今天,我為大家講的,主要分五部分展開:
賬戶和登錄安全
賬戶安全是系統(tǒng)安全的第一道屏障,也是系統(tǒng)安全的核心,保障登錄賬戶的安全,在一定程度上可以提高服務器的安全級別,下面重點介紹下Linux系統(tǒng)登錄賬戶的安全設置方法。
1、刪除特殊的賬戶和賬戶組
Linux提供了各種不同角色的系統(tǒng)賬號,在系統(tǒng)安裝完成后,默認會安裝很多不必要的用戶和用戶組,如果不需要某些用戶或者組,就要立即刪除它,因為賬戶越多,系統(tǒng)就越不安全,很可能被黑客利用,進而威脅到服務器的安全。
Linux系統(tǒng)中可以刪除的默認用戶和組大致有如下這些:
可刪除的用戶,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。
可刪除的組,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等。
2、關閉系統(tǒng)不需要的服務
Linux在安裝完成后,綁定了很多沒用的服務,這些服務默認都是自動啟動的。對于服務器來說,運行的服務越多,系統(tǒng)就越不安全,越少服務在運行,安全性就越好,因此關閉一些不需要的服務,對系統(tǒng)安全有很大的幫助。
具體哪些服務可以關閉,要根據(jù)服務器的用途而定,一般情況下,只要系統(tǒng)本身用不到的服務都認為是不必要的服務。
例如:某臺Linux服務器用于www應用,那么除了httpd服務和系統(tǒng)運行是必須的服務外,其他服務都可以關閉。下面這些服務一般情況下是不需要的,可以選擇關閉: anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv
3、密碼安全策略
在Linux下,遠程登錄系統(tǒng)有兩種認證方式:密碼認證和密鑰認證。
密碼認證方式是傳統(tǒng)的安全策略,對于密碼的設置,比較普遍的說法是:至少6個字符以上,密碼要包含數(shù)字、字母、下劃線、特殊符號等。設置一個相對復雜的密碼,對系統(tǒng)安全能起到一定的防護作用,但是也面臨一些其他問題,例如密碼暴力破解、密碼泄露、密碼丟失等,同時過于復雜的密碼對運維工作也會造成一定的負擔。
密鑰認證是一種新型的認證方式,公用密鑰存儲在遠程服務器上,專用密鑰保存在本地,當需要登錄系統(tǒng)時,通過本地專用密鑰和遠程服務器的公用密鑰進行配對認證,如果認證成功,就成功登錄系統(tǒng)。這種認證方式避免了被暴力破解的危險,同時只要保存在本地的專用密鑰不被黑客盜用,攻擊者一般無法通過密鑰認證的方式進入系統(tǒng)。因此,在Linux下推薦用密鑰認證方式登錄系統(tǒng),這樣就可以拋棄密碼認證登錄系統(tǒng)的弊端。
Linux服務器一般通過SecureCRT、putty、Xshell之類的工具進行遠程維護和管理,密鑰認證方式的實現(xiàn)就是借助于SecureCRT軟件和Linux系統(tǒng)中的SSH服務實現(xiàn)的。
4、合理使用su、sudo命令
su命令:是一個切換用戶的工具,經(jīng)常用于將普通用戶切換到超級用戶下,當然也可以從超級用戶切換到普通用戶。為了保證服務器的安全,幾乎所有服務器都禁止了超級用戶直接登錄系統(tǒng),而是通過普通用戶登錄系統(tǒng),然后再通過su命令切換到超級用戶下,執(zhí)行一些需要超級權限的工作。通過su命令能夠給系統(tǒng)管理帶來一定的方便,但是也存在不安全的因素,
例如:系統(tǒng)有10個普通用戶,每個用戶都需要執(zhí)行一些有超級權限的操作,就必須把超級用戶的密碼交給這10個普通用戶,如果這10個用戶都有超級權限,通過超級權限可以做任何事,那么會在一定程度上對系統(tǒng)的安全造成了威協(xié)。
因此su命令在很多人都需要參與的系統(tǒng)管理中,并不是最好的選擇,超級用戶密碼應該掌握在少數(shù)人手中,此時sudo命令就派上用場了。
sudo命令:允許系統(tǒng)管理員分配給普通用戶一些合理的“權利”,并且不需要普通用戶知道超級用戶密碼,就能讓他們執(zhí)行一些只有超級用戶或其他特許用戶才能完成的任務。
比如:系統(tǒng)服務重啟、編輯系統(tǒng)配置文件等,通過這種方式不但能減少超級用戶登錄次數(shù)和管理時間,也提高了系統(tǒng)安全性。
因此,sudo命令相對于權限無限制性的su來說,還是比較安全的,所以sudo也被稱為受限制的su,另外sudo也是需要事先進行授權認證的,所以也被稱為授權認證的su。
sudo執(zhí)行命令的流程是:
將當前用戶切換到超級用戶下,或切換到指定的用戶下,然后以超級用戶或其指定切換到的用戶身份執(zhí)行命令,執(zhí)行完成后,直接退回到當前用戶,而這一切的完成要通過sudo的配置文件/etc/sudoers來進行授權。
sudo設計的宗旨是:
賦予用戶盡可能少的權限但仍允許它們完成自己的工作,這種設計兼顧了安全性和易用性,因此,強烈推薦通過sudo來管理系統(tǒng)賬號的安全,只允許普通用戶登錄系統(tǒng),如果這些用戶需要特殊的權限,就通過配置/etc/sudoers來完成,這也是多用戶系統(tǒng)下賬號安全管理的基本方式。
5、刪減系統(tǒng)登錄歡迎信息
系統(tǒng)的一些歡迎信息或版本信息,雖然能給系統(tǒng)管理者帶來一定的方便,但是這些信息有時候可能被黑客利用,成為攻擊服務器的幫兇,為了保證系統(tǒng)的安全,可以修改或刪除某些系統(tǒng)文件,需要修改或刪除的文件有4個,分別是:
/etc/issue、/etc/issue.net、/etc/redhat-release和/etc/motd。
/etc/issue和/etc/issue.net文件都記錄了操作系統(tǒng)的名稱和版本號,當用戶通過本地終端或本地虛擬控制臺等登錄系統(tǒng)時,/etc/issue的文件內容就會顯示,當用戶通過ssh或telnet等遠程登錄系統(tǒng)時,/etc/issue.net文件內容就會在登錄后顯示。在默認情況下/etc/issue.net文件的內容是不會在ssh登錄后顯示的,要顯示這個信息可以修改/etc/ssh/sshd_config文件,在此文件中添加如下內容即可:
Banner /etc/issue.net
其實這些登錄提示很明顯泄漏了系統(tǒng)信息,為了安全起見,建議將此文件中的內容刪除或修改。
/etc/redhat-release文件也記錄了操作系統(tǒng)的名稱和版本號,為了安全起見,可以將此文件中的內容刪除。
/etc/motd文件是系統(tǒng)的公告信息。每次用戶登錄后,/etc/motd文件的內容就會顯示在用戶的終端。通過這個文件系統(tǒng)管理員可以發(fā)布一些軟件或硬件的升級、系統(tǒng)維護等通告信息,但是此文件的大作用就、是可以發(fā)布一些警告信息,當黑客登錄系統(tǒng)后,會發(fā)現(xiàn)這些警告信息,進而產(chǎn)生一些震懾作用??催^國外的一個報道,黑客入侵了一個服務器,而這個服務器卻給出了歡迎登錄的信息,因此法院不做任何裁決。
遠程訪問和認證安全
1、遠程登錄取消telnet而采用SSH方式
telnet是一種古老的遠程登錄認證服務,它在網(wǎng)絡上用明文傳送口令和數(shù)據(jù),因此別有用心的人就會非常容易截獲這些口令和數(shù)據(jù)。而且,telnet服務程序的安全驗證方式也極其脆弱,攻擊者可以輕松將虛假信息傳送給服務器?,F(xiàn)在遠程登錄基本拋棄了telnet這種方式,而取而代之的是通過SSH服務遠程登錄服務器。
2、合理使用Shell歷史命令記錄功能
在Linux下可通過history命令查看用戶所有的歷史操作記錄,同時shell命令操作記錄默認保存在用戶目錄下的.bash_history文件中,通過這個文件可以查詢shell命令的執(zhí)行歷史,有助于運維人員進行系統(tǒng)審計和問題排查,同時,在服務器遭受黑客攻擊后,也可以通過這個命令或文件查詢黑客登錄服務器所執(zhí)行的歷史命令操作,但是有時候黑客在入侵服務器后為了毀滅痕跡,可能會刪除.bash_history文件,這就需要合理的保護或備份.bash_history文件。
3、啟用tcp_wrappers防火墻
Tcp_Wrappers是一個用來分析TCP/IP封包的軟件,類似的IP封包軟件還有iptables。Linux默認都安裝了Tcp_Wrappers。作為一個安全的系統(tǒng),Linux本身有兩層安全防火墻,通過IP過濾機制的iptables實現(xiàn)第一層防護。iptables防火墻通過直觀地監(jiān)視系統(tǒng)的運行狀況,阻擋網(wǎng)絡中的一些惡意攻擊,保護整個系統(tǒng)正常運行,免遭攻擊和破壞。如果通過了第一層防護,那么下一層防護就是tcp_wrappers了。通過Tcp_Wrappers可以實現(xiàn)對系統(tǒng)中提供的某些服務的開放與關閉、允許和禁止,從而更有效地保證系統(tǒng)安全運行。
文件系統(tǒng)安全
1、鎖定系統(tǒng)重要文件
系統(tǒng)運維人員有時候可能會遇到通過root用戶都不能修改或者刪除某個文件的情況,產(chǎn)生這種情況的大部分原因可能是這個文件被鎖定了。在Linux下鎖定文件的命令是chattr,通過這個命令可以修改ext2、ext3、ext4文件系統(tǒng)下文件屬性,但是這個命令必須有超級用戶root來執(zhí)行。和這個命令對應的命令是lsattr,這個命令用來查詢文件屬性。
對重要的文件進行加鎖,雖然能夠提高服務器的安全性,但是也會帶來一些不便。
例如:在軟件的安裝、升級時可能需要去掉有關目錄和文件的immutable屬性和append-only屬性,同時,對日志文件設置了append-only屬性,可能會使日志輪換(logrotate)無法進行。因此,在使用chattr命令前,需要結合服務器的應用環(huán)境來權衡是否需要設置immutable屬性和append-only屬性。
另外,雖然通過chattr命令修改文件屬性能夠提高文件系統(tǒng)的安全性,但是它并不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var等目錄。
根目錄不能有不可修改屬性,因為如果根目錄具有不可修改屬性,那么系統(tǒng)根本無法工作:
/dev在啟動時,syslog需要刪除并重新建立/dev/log套接字設備,如果設置了不可修改屬性,那么可能出問題;
/tmp目錄會有很多應用程序和系統(tǒng)程序需要在這個目錄下建立臨時文件,也不能設置不可修改屬性;
/var是系統(tǒng)和程序的日志目錄,如果設置為不可修改屬性,那么系統(tǒng)寫日志將無法進行,所以也不能通過chattr命令保護。
2、文件權限檢查和修改
不正確的權限設置直接威脅著系統(tǒng)的安全,因此運維人員應該能及時發(fā)現(xiàn)這些不正確的權限設置,并立刻修正,防患于未然。下面列舉幾種查找系統(tǒng)不安全權限的方法。
(1)查找系統(tǒng)中任何用戶都有寫權限的文件或目錄
查找文件:find / -type f -perm -2 -o -perm -20 |xargs ls -al
查找目錄:find / -type d -perm -2 -o -perm -20 |xargs ls –ld
(2)查找系統(tǒng)中所有含“s”位的程序
find / -type f -perm -4000 -o -perm -2000 -print | xargs ls –al
含有“s”位權限的程序對系統(tǒng)安全威脅很大,通過查找系統(tǒng)中所有具有“s”位權限的程序,可以把某些不必要的“s”位程序去掉,這樣可以防止用戶濫用權限或提升權限的可能性。
(3)檢查系統(tǒng)中所有suid及sgid文件
find / -user root -perm -2000 -print -exec md5sum {} ;
find / -user root -perm -4000 -print -exec md5sum {} ;
將檢查的結果保存到文件中,可在以后的系統(tǒng)檢查中作為參考。
(4)檢查系統(tǒng)中沒有屬主的文件
find / -nouser -o –nogroup
沒有屬主的孤兒文件比較危險,往往成為黑客利用的工具,因此找到這些文件后,要么刪除掉,要么修改文件的屬主,使其處于安全狀態(tài)。
3、/tmp、/var/tmp、/dev/shm安全設定
在Linux系統(tǒng)中,主要有兩個目錄或分區(qū)用來存放臨時文件,分別是/tmp和/var/tmp。
存儲臨時文件的目錄或分區(qū)有個共同點就是所有用戶可讀寫、可執(zhí)行,這就為系統(tǒng)留下了安全隱患。攻擊者可以將病毒或者木馬腳本放到臨時文件的目錄下進行信息收集或偽裝,嚴重影響服務器的安全,此時,如果修改臨時目錄的讀寫執(zhí)行權限,還有可能影響系統(tǒng)上應用程序的正常運行,因此,如果要兼顧兩者,就需要對這兩個目錄或分區(qū)就行特殊的設置。
/dev/shm是Linux下的一個共享內存設備,在Linux啟動的時候系統(tǒng)默認會加載/dev/shm,被加載的/dev/shm使用的是tmpfs文件系統(tǒng),而tmpfs是一個內存文件系統(tǒng),存儲到tmpfs文件系統(tǒng)的數(shù)據(jù)會完全駐留在RAM中,這樣通過/dev/shm就可以直接操控系統(tǒng)內存,這將非常危險,因此如何保證/dev/shm安全也至關重要。
對于/tmp的安全設置,需要看/tmp是一個獨立磁盤分區(qū),還是一個根分區(qū)下的文件夾,如果/tmp是一個獨立的磁盤分區(qū),那么設置非常簡單,修改/etc/fstab文件中/tmp分區(qū)對應的掛載屬性,加上nosuid、noexec、nodev三個選項即可,修改后的/tmp分區(qū)掛載屬性類似如下:
LABEL=/tmp /tmp ext3 rw,nosuid,noexec,nodev 0 0
其中,nosuid、noexec、nodev選項,表示不允許任何suid程序,并且在這個分區(qū)不能執(zhí)行任何腳本等程序,并且不存在設備文件。
在掛載屬性設置完成后,重新掛載/tmp分區(qū),保證設置生效。
對于/var/tmp,如果是獨立分區(qū),安裝/tmp的設置方法是修改/etc/fstab文件即可;如果是/var分區(qū)下的一個目錄,那么可以將/var/tmp目錄下所有數(shù)據(jù)移動到/tmp分區(qū)下,然后在/var下做一個指向/tmp的軟連接即可。也就是執(zhí)行如下操作:
[root@server ~]# mv /var/tmp/* /tmp
[root@server ~]# ln -s /tmp /var/tmp
如果/tmp是根目錄下的一個目錄,那么設置稍微復雜,可以通過創(chuàng)建一個loopback文件系統(tǒng)來利用Linux內核的loopback特性將文件系統(tǒng)掛載到/tmp下,然后在掛載時指定限制加載選項即可。一個簡單的操作示例如下:
[root@server ~]# dd if=/dev/zero of=/dev/tmpfs bs=1M count=10000
[root@server ~]# mke2fs -j /dev/tmpfs
[root@server ~]# cp -av /tmp /tmp.old
[root@server ~]# mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp
[root@server ~]# chmod 1777 /tmp
[root@server ~]# mv -f /tmp.old/* /tmp/
[root@server ~]# rm -rf /tmp.old
最后,編輯/etc/fstab,添加如下內容,以便系統(tǒng)在啟動時自動加載loopback文件系統(tǒng):
/dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0
Linux后門入侵檢測工具
rootkit是Linux平臺下最常見的一種木馬后門工具,它主要通過替換系統(tǒng)文件來達到入侵和和隱蔽的目的,這種木馬比普通木馬后門更加危險和隱蔽,普通的檢測工具和檢查手段很難發(fā)現(xiàn)這種木馬。rootkit攻擊能力極強,對系統(tǒng)的危害很大,它通過一套工具來建立后門和隱藏行跡,從而讓攻擊者保住權限,以使它在任何時候都可以使用root權限登錄到系統(tǒng)。
rootkit主要有兩種類型:文件級別和內核級別,下面分別進行簡單介紹。
文件級別的rootkit一般是通過程序漏洞或者系統(tǒng)漏洞進入系統(tǒng)后,通過修改系統(tǒng)的重要文件來達到隱藏自己的目的。在系統(tǒng)遭受rootkit攻擊后,合法的文件被木馬程序替代,變成了外殼程序,而其內部是隱藏著的后門程序。
通常容易被rootkit替換的系統(tǒng)程序有l(wèi)ogin、ls、ps、ifconfig、du、find、netstat等,其中l(wèi)ogin程序是最經(jīng)常被替換的,因為當訪問Linux時,無論是通過本地登錄還是遠程登錄,/bin/login程序都會運行,系統(tǒng)將通過/bin/login來收集并核對用戶的賬號和密碼,而rootkit就是利用這個程序的特點,使用一個帶有根權限后門密碼的/bin/login來替換系統(tǒng)的/bin/login,這樣攻擊者通過輸入設定好的密碼就能輕松進入系統(tǒng)。此時,即使系統(tǒng)管理員修改root密碼或者清除root密碼,攻擊者還是一樣能通過root用戶登錄系統(tǒng)。攻擊者通常在進入Linux系統(tǒng)后,會進行一系列的攻擊動作,最常見的是安裝嗅探器收集本機或者網(wǎng)絡中其他服務器的重要數(shù)據(jù)。在默認情況下,Linux中也有一些系統(tǒng)文件會監(jiān)控這些工具動作,例如ifconfig命令,所以,攻擊者為了避免被發(fā)現(xiàn),會想方設法替換其他系統(tǒng)文件,常見的就是ls、ps、ifconfig、du、find、netstat等。如果這些文件都被替換,那么在系統(tǒng)層面就很難發(fā)現(xiàn)rootkit已經(jīng)在系統(tǒng)中運行了。
這就是文件級別的rootkit,對系統(tǒng)維護很大,目前最有效的防御方法是定期對系統(tǒng)重要文件的完整性進行檢查,如果發(fā)現(xiàn)文件被修改或者被替換,那么很可能系統(tǒng)已經(jīng)遭受了rootkit入侵。檢查件完整性的工具很多,常見的有Tripwire、 aide等,可以通過這些工具定期檢查文件系統(tǒng)的完整性,以檢測系統(tǒng)是否被rootkit入侵。
內核級rootkit是比文件級rootkit更高級的一種入侵方式,它可以使攻擊者獲得對系統(tǒng)底層的完全控制權,此時攻擊者可以修改系統(tǒng)內核,進而截獲運行程序向內核提交的命令,并將其重定向到入侵者所選擇的程序并運行此程序,也就是說,當用戶要運行程序A時,被入侵者修改過的內核會假裝執(zhí)行A程序,而實際上卻執(zhí)行了程序B。
內核級rootkit主要依附在內核上,它并不對系統(tǒng)文件做任何修改,因此一般的檢測工具很難檢測到它的存在,這樣一旦系統(tǒng)內核被植入rootkit,攻擊者就可以對系統(tǒng)為所欲為而不被發(fā)現(xiàn)。目前對于內核級的rootkit還沒有很好的防御工具,因此,做好系統(tǒng)安全防范就非常重要,將系統(tǒng)維持在最小權限內工作,只要攻擊者不能獲取root權限,就無法在內核中植入rootkit。
1、rootkit后門檢測工具chkrootkit
chkrootkit是一個Linux系統(tǒng)下查找并檢測rootkit后門的工具,它的官方址: http://www.chkrootkit.org/。
chkrootkit沒有包含在官方的CentOS源中,因此要采取手動編譯的方法來安裝,不過這種安裝方法也更加安全。
chkrootkit的使用比較簡單,直接執(zhí)行chkrootkit命令即可自動開始檢測系統(tǒng)。下面是某個系統(tǒng)的檢測結果:
[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit
Checking `ifconfig'... INFECTED
Checking `ls'... INFECTED
Checking `login'... INFECTED
Checking `netstat'... INFECTED
Checking `ps'... INFECTED
Checking `top'... INFECTED
Checking `sshd'... not infected
Checking `syslogd'... not tested
從輸出可以看出,此系統(tǒng)的ifconfig、ls、login、netstat、ps和top命令已經(jīng)被感染。針對被感染rootkit的系統(tǒng),最安全而有效的方法就是備份數(shù)據(jù)重新安裝系統(tǒng)。
chkrootkit在檢查rootkit的過程中使用了部分系統(tǒng)命令,因此,如果服務器被黑客入侵,那么依賴的系統(tǒng)命令可能也已經(jīng)被入侵者替換,此時chkrootkit的檢測結果將變得完全不可信。為了避免chkrootkit的這個問題,可以在服務器對外開放前,事先將chkrootkit使用的系統(tǒng)命令進行備份,在需要的時候使用備份的原始系統(tǒng)命令讓chkrootkit對rootkit進行檢測。
2、rootkit后門檢測工具RKHunter
RKHunter是一款專業(yè)的檢測系統(tǒng)是否感染rootkit的工具,它通過執(zhí)行一系列的腳本來確認服務器是否已經(jīng)感染rootkit。在官方的資料中,RKHunter可以作的事情有:
MD5校驗測試,檢測文件是否有改動
檢測rootkit使用的二進制和系統(tǒng)工具文件
檢測特洛伊木馬程序的特征碼
檢測常用程序的文件屬性是否異常
檢測系統(tǒng)相關的測試
檢測隱藏文件
檢測可疑的核心模塊LKM
檢測系統(tǒng)已啟動的監(jiān)聽端口
在Linux終端使用rkhunter來檢測,大的好處在于每項的檢測結果都有不同的顏色顯示,如果是綠色的表示沒有問題,如果是紅色的,那就要引起關注了。另外,在執(zhí)行檢測的過程中,在每個部分檢測完成后,需要以Enter鍵來繼續(xù)。如果要讓程序自動運行,可以執(zhí)行如下命令:
[root@server ~]# /usr/local/bin/rkhunter --check --skip-keypress
同時,如果想讓檢測程序每天定時運行,那么可以在/etc/crontab中加入如下內容:
30 09 * * * root /usr/local/bin/rkhunter --check --cronjob
這樣,rkhunter檢測程序就會在每天的9:30分運行一次。
服務器遭受攻擊后的處理過程
安全總是相對的,再安全的服務器也有可能遭受到攻擊。作為一個安全運維人員,要把握的原則是:盡量做好系統(tǒng)安全防護,修復所有已知的危險行為,同時,在系統(tǒng)遭受攻擊后能夠迅速有效地處理攻擊行為,大限度地降低攻擊對系統(tǒng)產(chǎn)生的影響。
1、處理服務器遭受攻擊的一般思路
系統(tǒng)遭受攻擊并不可怕,可怕的是面對攻擊束手無策,下面就詳細介紹下在服務器遭受攻擊后的一般處理思路。
(1)切斷網(wǎng)絡
所有的攻擊都來自于網(wǎng)絡,因此,在得知系統(tǒng)正遭受黑客的攻擊后,首先要做的就是斷開服務器的網(wǎng)絡連接,這樣除了能切斷攻擊源之外,也能保護服務器所在網(wǎng)絡的其他主機。
(2)查找攻擊源
可以通過分析系統(tǒng)日志或登錄日志文件,查看可疑信息,同時也要查看系統(tǒng)都打開了哪些端口,運行哪些進程,并通過這些進程分析哪些是可疑的程序。這個過程要根據(jù)經(jīng)驗和綜合判斷能力進行追查和分析。下面會詳細介紹這個過程的處理思路。
(3)分析入侵原因和途徑
既然系統(tǒng)遭到入侵,那么原因是多方面的,可能是系統(tǒng)漏洞,也可能是程序漏洞,一定要查清楚是哪個原因導致的,并且還要查清楚遭到攻擊的途徑,找到攻擊源,因為只有知道了遭受攻擊的原因和途徑,才能刪除攻擊源同時進行漏洞的修復。
(4)備份用戶數(shù)據(jù)
在服務器遭受攻擊后,需要立刻備份服務器上的用戶數(shù)據(jù),同時也要查看這些數(shù)據(jù)中是否隱藏著攻擊源。如果攻擊源在用戶數(shù)據(jù)中,一定要徹底刪除,然后將用戶數(shù)據(jù)備份到一個安全的地方。
(5)重新安裝系統(tǒng)
永遠不要認為自己能徹底清除攻擊源,因為沒有人能比黑客更了解攻擊程序,在服務器遭到攻擊后,最安全也最簡單的方法就是重新安裝系統(tǒng),因為大部分攻擊程序都會依附在系統(tǒng)文件或者內核中,所以重新安裝系統(tǒng)才能徹底清除攻擊源。
(6)修復程序或系統(tǒng)漏洞
在發(fā)現(xiàn)系統(tǒng)漏洞或者應用程序漏洞后,首先要做的就是修復系統(tǒng)漏洞或者更改程序bug,因為只有將程序的漏洞修復完畢才能正式在服務器上運行。
(7)恢復數(shù)據(jù)和連接網(wǎng)絡
將備份的數(shù)據(jù)重新復制到新安裝的服務器上,然后開啟服務,最后將服務器開啟網(wǎng)絡連接,對外提供服務。
2、檢查并鎖定可疑用戶
當發(fā)現(xiàn)服務器遭受攻擊后,首先要切斷網(wǎng)絡連接,但是在有些情況下,比如無法馬上切斷網(wǎng)絡連接時,就必須登錄系統(tǒng)查看是否有可疑用戶,如果有可疑用戶登錄了系統(tǒng),那么需要馬上將這個用戶鎖定,然后中斷此用戶的遠程連接。
3、查看系統(tǒng)日志
查看系統(tǒng)日志是查找攻擊源最好的方法,可查的系統(tǒng)日志有/var/log/messages、/var/log/secure等,這兩個日志文件可以記錄軟件的運行狀態(tài)以及遠程用戶的登錄狀態(tài),還可以查看每個用戶目錄下的.bash_history文件,特別是/root目錄下的.bash_history文件,這個文件中記錄著用戶執(zhí)行的所有歷史命令。
4、檢查并關閉系統(tǒng)可疑進程
檢查可疑進程的命令很多,例如ps、top等,但是有時候只知道進程的名稱無法得知路徑,此時可以通過如下命令查看:
首先通過pidof命令可以查找正在運行的進程PID,例如要查找sshd進程的PID,執(zhí)行如下命令:
[root@server ~]# pidof sshd
13276 12942 4284
然后進入內存目錄,查看對應PID目錄下exe文件的信息:
[root@server ~]# ls -al /proc/13276/exe
lrwxrwxrwx 1 root root 0 Oct 4 22:09 /proc/13276/exe -> /usr/sbin/sshd
這樣就找到了進程對應的完整執(zhí)行路徑。如果還有查看文件的句柄,可以查看如下目錄:
[root@server ~]# ls -al /proc/13276/fd
通過這種方式基本可以找到任何進程的完整執(zhí)行信息.
5、檢查文件系統(tǒng)的完好性
檢查文件屬性是否發(fā)生變化是驗證文件系統(tǒng)完好性最簡單、最直接的方法,例如可以檢查被入侵服務器上/bin/ls文件的大小是否與正常系統(tǒng)上此文件的大小相同,以驗證文件是否被替換,但是這種方法比較低級。此時可以借助于Linux下rpm這個工具來完成驗證,操作如下:
[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
6、重新安裝系統(tǒng)恢復數(shù)據(jù)
很多情況下,被攻擊過的系統(tǒng)已經(jīng)不再可信任,因此,最好的方法是將服務器上面數(shù)據(jù)進行備份,然后重新安裝系統(tǒng),最后再恢復數(shù)據(jù)即可。
數(shù)據(jù)恢復完成,馬上對系統(tǒng)做上面介紹的安全加固策略,保證系統(tǒng)安全。
互動篩選
Q1:社長,關于linux用戶密碼強度的事情,是否有配置手段強制要求?
A1:有啊,通過pam進行限制。但是監(jiān)控遠程登錄通過密鑰方式,拋棄密碼登錄
Q2:請問有什么好的辦法將用戶的history實時發(fā)送到日志中心?
A2:兩種方法:1、通過rsyslog方式配置實現(xiàn);2、通過flume日志傳送流方式實時傳到日志中心,兩種方式,第一種實現(xiàn)簡單,第二種實現(xiàn)更專業(yè)
Q3:但history記錄命令并不是實時的 去過通過讀取history文件讀取并發(fā)送日志的話 得到的肯定不是實時的日志?
A3:通過tail等類似方式,實時監(jiān)控history的輸出即可,不用導入到文件中在看,這里有個問題,就是不同終端的命令無法實時獲取,所以實時也是相對的
Q4:請問大神這些內容有沒有那本書系統(tǒng)的介紹?
A4:這些內容目前我還沒發(fā)現(xiàn)有專門的書籍介紹,因為今天的內容偏向系統(tǒng)安全運維,我的高性能linux服務器構建實戰(zhàn)前面幾章倒是有介紹!可以看看。
新聞標題:Linux運維中常見安全常識分享
網(wǎng)頁地址:http://muchs.cn/news38/102638.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、品牌網(wǎng)站制作、網(wǎng)站改版、全網(wǎng)營銷推廣、軟件開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容