<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          黑客入侵你Linux服務(wù)器的一萬(wàn)種玩法...

          共 11684字,需瀏覽 24分鐘

           ·

          2020-02-24 23:25

          作者:高俊峰

          編輯:陶家龍、孫淑娟

          出處:https://www.cnblogs.com/MYSQLZOUQI/p/5317916.html

          安全是 IT 行業(yè)一個(gè)老生常談的話題了,從之前的“棱鏡門”事件中折射出了很多安全問(wèn)題,處理好信息安全問(wèn)題已變得刻不容緩。


          因此做為運(yùn)維人員,就必須了解一些安全運(yùn)維準(zhǔn)則,同時(shí),要保護(hù)自己所負(fù)責(zé)的業(yè)務(wù),首先要站在攻擊者的角度思考問(wèn)題,修補(bǔ)任何潛在的威脅和漏洞。


          本文主要分為如下五部分展開(kāi):

          • 賬戶和登錄安全

          • 遠(yuǎn)程訪問(wèn)和認(rèn)證安全

          • 文件系統(tǒng)安全

          • Linux 后門入侵檢測(cè)工具

          • 服務(wù)器遭受攻擊后的處理過(guò)程


          賬戶和登錄安全


          賬戶安全是系統(tǒng)安全的第一道屏障,也是系統(tǒng)安全的核心,保障登錄賬戶的安全,在一定程度上可以提高服務(wù)器的安全級(jí)別,下面重點(diǎn)介紹下 Linux 系統(tǒng)登錄賬戶的安全設(shè)置方法。


          ①刪除特殊的賬戶和賬戶組


          Linux 提供了各種不同角色的系統(tǒng)賬號(hào),在系統(tǒng)安裝完成后,默認(rèn)會(huì)安裝很多不必要的用戶和用戶組。


          如果不需要某些用戶或者組,就要立即刪除它,因?yàn)橘~戶越多,系統(tǒng)就越不安全,很可能被黑客利用,進(jìn)而威脅到服務(wù)器的安全。


          Linux系統(tǒng)中可以刪除的默認(rèn)用戶和組大致有如下這些:

          可刪除的用戶,如 adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher 等。


          可刪除的組,如 adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers 等。


          ②關(guān)閉系統(tǒng)不需要的服務(wù)


          Linux 在安裝完成后,綁定了很多沒(méi)用的服務(wù),這些服務(wù)默認(rèn)都是自動(dòng)啟動(dòng)的。


          對(duì)于服務(wù)器來(lái)說(shuō),運(yùn)行的服務(wù)越多,系統(tǒng)就越不安全,越少服務(wù)在運(yùn)行,安全性就越好,因此關(guān)閉一些不需要的服務(wù),對(duì)系統(tǒng)安全有很大的幫助。


          具體哪些服務(wù)可以關(guān)閉,要根據(jù)服務(wù)器的用途而定,一般情況下,只要系統(tǒng)本身用不到的服務(wù)都認(rèn)為是不必要的服務(wù)。


          例如:某臺(tái) Linux 服務(wù)器用于 www 應(yīng)用,那么除了 httpd 服務(wù)和系統(tǒng)運(yùn)行是必須的服務(wù)外,其他服務(wù)都可以關(guān)閉。


          下面這些服務(wù)一般情況下是不需要的,可以選擇關(guān)閉:

          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


          ③密碼安全策略


          在 Linux 下,遠(yuǎn)程登錄系統(tǒng)有兩種認(rèn)證方式:

          • 密碼認(rèn)證

          • 密鑰認(rèn)證


          密碼認(rèn)證方式是傳統(tǒng)的安全策略,對(duì)于密碼的設(shè)置,比較普遍的說(shuō)法是:至少 6 個(gè)字符以上,密碼要包含數(shù)字、字母、下劃線、特殊符號(hào)等。


          設(shè)置一個(gè)相對(duì)復(fù)雜的密碼,對(duì)系統(tǒng)安全能起到一定的防護(hù)作用,但是也面臨一些其他問(wèn)題,例如密碼暴力破解、密碼泄露、密碼丟失等,同時(shí)過(guò)于復(fù)雜的密碼對(duì)運(yùn)維工作也會(huì)造成一定的負(fù)擔(dān)。


          密鑰認(rèn)證是一種新型的認(rèn)證方式,公用密鑰存儲(chǔ)在遠(yuǎn)程服務(wù)器上,專用密鑰保存在本地,當(dāng)需要登錄系統(tǒng)時(shí),通過(guò)本地專用密鑰和遠(yuǎn)程服務(wù)器的公用密鑰進(jìn)行配對(duì)認(rèn)證,如果認(rèn)證成功,就成功登錄系統(tǒng)。


          這種認(rèn)證方式避免了被暴力破解的危險(xiǎn),同時(shí)只要保存在本地的專用密鑰不被黑客盜用,攻擊者一般無(wú)法通過(guò)密鑰認(rèn)證的方式進(jìn)入系統(tǒng)。


          因此,在 Linux 下推薦用密鑰認(rèn)證方式登錄系統(tǒng),這樣就可以拋棄密碼認(rèn)證登錄系統(tǒng)的弊端。


          Linux 服務(wù)器一般通過(guò) SecureCRT、Putty、Xshell 之類的工具進(jìn)行遠(yuǎn)程維護(hù)和管理,密鑰認(rèn)證方式的實(shí)現(xiàn)就是借助于 SecureCRT 軟件和 Linux 系統(tǒng)中的 SSH 服務(wù)實(shí)現(xiàn)的。


          ④合理使用?su、sudo 命令


          su 命令:是一個(gè)切換用戶的工具,經(jīng)常用于將普通用戶切換到超級(jí)用戶下,當(dāng)然也可以從超級(jí)用戶切換到普通用戶。


          為了保證服務(wù)器的安全,幾乎所有服務(wù)器都禁止了超級(jí)用戶直接登錄系統(tǒng),而是通過(guò)普通用戶登錄系統(tǒng),然后再通過(guò) su 命令切換到超級(jí)用戶下,執(zhí)行一些需要超級(jí)權(quán)限的工作。


          通過(guò) su 命令能夠給系統(tǒng)管理帶來(lái)一定的方便,但是也存在不安全的因素,例如:系統(tǒng)有 10 個(gè)普通用戶,每個(gè)用戶都需要執(zhí)行一些有超級(jí)權(quán)限的操作,就必須把超級(jí)用戶的密碼交給這 10 個(gè)普通用戶。


          如果這 10 個(gè)用戶都有超級(jí)權(quán)限,通過(guò)超級(jí)權(quán)限可以做任何事,那么會(huì)在一定程度上對(duì)系統(tǒng)的安全造成了威協(xié)。


          因此 su 命令在很多人都需要參與的系統(tǒng)管理中,并不是最好的選擇,超級(jí)用戶密碼應(yīng)該掌握在少數(shù)人手中,此時(shí) sudo 命令就派上用場(chǎng)了。


          sudo 命令:允許系統(tǒng)管理員分配給普通用戶一些合理的“權(quán)利”,并且不需要普通用戶知道超級(jí)用戶密碼,就能讓他們執(zhí)行一些只有超級(jí)用戶或其他特許用戶才能完成的任務(wù)。


          比如:系統(tǒng)服務(wù)重啟、編輯系統(tǒng)配置文件等,通過(guò)這種方式不但能減少超級(jí)用戶登錄次數(shù)和管理時(shí)間,也提高了系統(tǒng)安全性。


          因此,sudo 命令相對(duì)于權(quán)限無(wú)限制性的 su 來(lái)說(shuō),還是比較安全的,所以 sudo 也被稱為受限制的 su,另外 sudo 也是需要事先進(jìn)行授權(quán)認(rèn)證的,所以也被稱為授權(quán)認(rèn)證的 su。


          sudo 執(zhí)行命令的流程是:將當(dāng)前用戶切換到超級(jí)用戶下,或切換到指定的用戶下,然后以超級(jí)用戶或其指定切換到的用戶身份執(zhí)行命令。


          執(zhí)行完成后,直接退回到當(dāng)前用戶,而這一切的完成要通過(guò) sudo 的配置文件?/etc/sudoers 來(lái)進(jìn)行授權(quán)。


          sudo 設(shè)計(jì)的宗旨是:賦予用戶盡可能少的權(quán)限但仍允許它們完成自己的工作,這種設(shè)計(jì)兼顧了安全性和易用性。


          因此,強(qiáng)烈推薦通過(guò) sudo 來(lái)管理系統(tǒng)賬號(hào)的安全,只允許普通用戶登錄系統(tǒng),如果這些用戶需要特殊的權(quán)限,就通過(guò)配置 /etc/sudoers 來(lái)完成,這也是多用戶系統(tǒng)下賬號(hào)安全管理的基本方式。


          ⑤刪減系統(tǒng)登錄歡迎信息


          系統(tǒng)的一些歡迎信息或版本信息,雖然能給系統(tǒng)管理者帶來(lái)一定的方便,但是這些信息有時(shí)候可能被黑客利用,成為攻擊服務(wù)器的幫兇。


          為了保證系統(tǒng)的安全,可以修改或刪除某些系統(tǒng)文件,需要修改或刪除的文件有四個(gè),分別是:

          • /etc/issue

          • /etc/issue.net

          • /etc/redhat-release

          • /etc/motd


          /etc/issue 和?/etc/issue.net 文件都記錄了操作系統(tǒng)的名稱和版本號(hào),當(dāng)用戶通過(guò)本地終端或本地虛擬控制臺(tái)等登錄系統(tǒng)時(shí),/etc/issue 的文件內(nèi)容就會(huì)顯示。


          當(dāng)用戶通過(guò) ssh 或 telnet 等遠(yuǎn)程登錄系統(tǒng)時(shí),/etc/issue.net 文件內(nèi)容就會(huì)在登錄后顯示。


          在默認(rèn)情況下 /etc/issue.net 文件的內(nèi)容是不會(huì)在 ssh 登錄后顯示的,要顯示這個(gè)信息可以修改 /etc/ssh/sshd_config 文件,在此文件中添加如下內(nèi)容即可:Banner /etc/issue.net。


          其實(shí)這些登錄提示很明顯泄漏了系統(tǒng)信息,為了安全起見(jiàn),建議將此文件中的內(nèi)容刪除或修改。


          /etc/redhat-release 文件也記錄了操作系統(tǒng)的名稱和版本號(hào),為了安全起見(jiàn),可以將此文件中的內(nèi)容刪除。


          /etc/motd 文件是系統(tǒng)的公告信息。每次用戶登錄后,/etc/motd 文件的內(nèi)容就會(huì)顯示在用戶的終端。


          通過(guò)這個(gè)文件系統(tǒng),管理員可以發(fā)布一些軟件或硬件的升級(jí)、系統(tǒng)維護(hù)等通告信息,但是此文件的最大作用就是可以發(fā)布一些警告信息,當(dāng)黑客登錄系統(tǒng)后,會(huì)發(fā)現(xiàn)這些警告信息,進(jìn)而產(chǎn)生一些震懾作用。


          看過(guò)國(guó)外的一個(gè)報(bào)道,黑客入侵了一個(gè)服務(wù)器,而這個(gè)服務(wù)器卻給出了歡迎登錄的信息,因此法院不做任何裁決。


          遠(yuǎn)程訪問(wèn)和認(rèn)證安全


          ①遠(yuǎn)程登錄取消?telnet 而采用 SSH?方式


          telnet 是一種古老的遠(yuǎn)程登錄認(rèn)證服務(wù),它在網(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),因此別有用心的人就會(huì)非常容易截獲這些口令和數(shù)據(jù)。


          而且,telnet 服務(wù)程序的安全驗(yàn)證方式也極其脆弱,攻擊者可以輕松將虛假信息傳送給服務(wù)器。


          現(xiàn)在遠(yuǎn)程登錄基本拋棄了 telnet 這種方式,而取而代之的是通過(guò) SSH 服務(wù)遠(yuǎn)程登錄服務(wù)器。


          ②合理使用?Shell 歷史命令記錄功能


          在 Linux 下可通過(guò) history 命令查看用戶所有的歷史操作記錄,同時(shí) shell 命令操作記錄默認(rèn)保存在用戶目錄下的 .bash_history 文件中。


          通過(guò)這個(gè)文件可以查詢 shell 命令的執(zhí)行歷史,有助于運(yùn)維人員進(jìn)行系統(tǒng)審計(jì)和問(wèn)題排查。


          同時(shí),在服務(wù)器遭受黑客攻擊后,也可以通過(guò)這個(gè)命令或文件查詢黑客登錄服務(wù)器所執(zhí)行的歷史命令操作。


          但是有時(shí)候黑客在入侵服務(wù)器后為了毀滅痕跡,可能會(huì)刪除 .bash_history 文件,這就需要合理的保護(hù)或備份 .bash_history 文件。


          ③啟用?Tcp_Wrappers 防火墻


          Tcp_Wrappers 是一個(gè)用來(lái)分析 TCP/IP 封包的軟件,類似的 IP 封包軟件還有 iptables。


          Linux 默認(rèn)都安裝了 Tcp_Wrappers。作為一個(gè)安全的系統(tǒng),Linux 本身有兩層安全防火墻,通過(guò) IP 過(guò)濾機(jī)制的 iptables 實(shí)現(xiàn)第一層防護(hù)。


          iptables 防火墻通過(guò)直觀地監(jiān)視系統(tǒng)的運(yùn)行狀況,阻擋網(wǎng)絡(luò)中的一些惡意攻擊,保護(hù)整個(gè)系統(tǒng)正常運(yùn)行,免遭攻擊和破壞。


          如果通過(guò)了第一層防護(hù),那么下一層防護(hù)就是 Tcp_Wrappers 了。通過(guò) Tcp_Wrappers 可以實(shí)現(xiàn)對(duì)系統(tǒng)中提供的某些服務(wù)的開(kāi)放與關(guān)閉、允許和禁止,從而更有效地保證系統(tǒng)安全運(yùn)行。


          文件系統(tǒng)安全


          ①鎖定系統(tǒng)重要文件


          系統(tǒng)運(yùn)維人員有時(shí)候可能會(huì)遇到通過(guò) Root 用戶都不能修改或者刪除某個(gè)文件的情況,產(chǎn)生這種情況的大部分原因可能是這個(gè)文件被鎖定了。


          在 Linux 下鎖定文件的命令是 Chattr,通過(guò)這個(gè)命令可以修改 ext2、ext3、ext4 文件系統(tǒng)下文件屬性,但是這個(gè)命令必須有超級(jí)用戶 Root 來(lái)執(zhí)行。和這個(gè)命令對(duì)應(yīng)的命令是 lsattr,這個(gè)命令用來(lái)查詢文件屬性。


          對(duì)重要的文件進(jìn)行加鎖,雖然能夠提高服務(wù)器的安全性,但是也會(huì)帶來(lái)一些不便。


          例如:在軟件的安裝、升級(jí)時(shí)可能需要去掉有關(guān)目錄和文件的 immutable 屬性和 append-only 屬性,同時(shí),對(duì)日志文件設(shè)置了 append-only 屬性,可能會(huì)使日志輪換(logrotate無(wú)法進(jìn)行。


          因此,在使用 Chattr 命令前,需要結(jié)合服務(wù)器的應(yīng)用環(huán)境來(lái)權(quán)衡是否需要設(shè)置 immutable 屬性和 append-only 屬性。


          另外,雖然通過(guò) Chattr 命令修改文件屬性能夠提高文件系統(tǒng)的安全性,但是它并不適合所有的目錄。Chattr 命令不能保護(hù)?/、/dev、/tmp、/var 等目錄。


          根目錄不能有不可修改屬性,因?yàn)槿绻夸浘哂胁豢尚薷膶傩?,那么系統(tǒng)根本無(wú)法工作:

          • /dev 在啟動(dòng)時(shí),syslog 需要?jiǎng)h除并重新建立?/dev/log 套接字設(shè)備,如果設(shè)置了不可修改屬性,那么可能出問(wèn)題。

          • /tmp 目錄會(huì)有很多應(yīng)用程序和系統(tǒng)程序需要在這個(gè)目錄下建立臨時(shí)文件,也不能設(shè)置不可修改屬性。

          • /var 是系統(tǒng)和程序的日志目錄,如果設(shè)置為不可修改屬性,那么系統(tǒng)寫日志將無(wú)法進(jìn)行,所以也不能通過(guò) Chattr 命令保護(hù)。


          ②文件權(quán)限檢查和修改


          不正確的權(quán)限設(shè)置直接威脅著系統(tǒng)的安全,因此運(yùn)維人員應(yīng)該能及時(shí)發(fā)現(xiàn)這些不正確的權(quán)限設(shè)置,并立刻修正,防患于未然。下面列舉幾種查找系統(tǒng)不安全權(quán)限的方法。


          查找系統(tǒng)中任何用戶都有寫權(quán)限的文件或目錄:
          查找文件:find?/?-type?f?-perm?-2?-o?-perm?-20?|xargs?ls?-al
          查找目錄:find?/?-type?d?-perm?-2?-o?-perm?-20?|xargs?ls?–ld

          查找系統(tǒng)中所有含“s”位的程序:

          find?/?-type?f?-perm?-4000?-o?-perm?-2000?-print?|?xargs?ls?–al

          含有“s”位權(quán)限的程序?qū)ο到y(tǒng)安全威脅很大,通過(guò)查找系統(tǒng)中所有具有“s”位權(quán)限的程序,可以把某些不必要的“s”位程序去掉,這樣可以防止用戶濫用權(quán)限或提升權(quán)限的可能性。


          檢查系統(tǒng)中所有 suid 及 sgid 文件:
          find?/?-user?root?-perm?-2000?-print?-exec?md5sum?{}?;
          find?/?-user?root?-perm?-4000?-print?-exec?md5sum?{}?;

          將檢查的結(jié)果保存到文件中,可在以后的系統(tǒng)檢查中作為參考。


          檢查系統(tǒng)中沒(méi)有屬主的文件:
          find?/?-nouser?-o?–nogroup

          沒(méi)有屬主的孤兒文件比較危險(xiǎn),往往成為黑客利用的工具,因此找到這些文件后,要么刪除掉,要么修改文件的屬主,使其處于安全狀態(tài)。


          ③/tmp、/var/tmp、/dev/shm 安全設(shè)定


          在 Linux 系統(tǒng)中,主要有兩個(gè)目錄或分區(qū)用來(lái)存放臨時(shí)文件,分別是?/tmp 和?/var/tmp。


          存儲(chǔ)臨時(shí)文件的目錄或分區(qū)有個(gè)共同點(diǎn)就是所有用戶可讀寫、可執(zhí)行,這就為系統(tǒng)留下了安全隱患。


          攻擊者可以將病毒或者木馬腳本放到臨時(shí)文件的目錄下進(jìn)行信息收集或偽裝,嚴(yán)重影響服務(wù)器的安全。


          此時(shí),如果修改臨時(shí)目錄的讀寫執(zhí)行權(quán)限,還有可能影響系統(tǒng)上應(yīng)用程序的正常運(yùn)行,因此,如果要兼顧兩者,就需要對(duì)這兩個(gè)目錄或分區(qū)進(jìn)行特殊的設(shè)置。


          /dev/shm 是 Linux 下的一個(gè)共享內(nèi)存設(shè)備,在 Linux 啟動(dòng)的時(shí)候系統(tǒng)默認(rèn)會(huì)加載?/dev/shm,被加載的 /dev/shm 使用的是 tmpfs 文件系統(tǒng),而 tmpfs 是一個(gè)內(nèi)存文件系統(tǒng),存儲(chǔ)到 tmpfs 文件系統(tǒng)的數(shù)據(jù)會(huì)完全駐留在 RAM 中。


          這樣通過(guò) /dev/shm 就可以直接操控系統(tǒng)內(nèi)存,這將非常危險(xiǎn),因此如何保證 /dev/shm 安全也至關(guān)重要。


          對(duì)于 /tmp 的安全設(shè)置,需要看?/tmp 是一個(gè)獨(dú)立磁盤分區(qū),還是一個(gè)根分區(qū)下的文件夾。


          如果 /tmp 是一個(gè)獨(dú)立的磁盤分區(qū),那么設(shè)置非常簡(jiǎn)單,修改 /etc/fstab 文件中?/tmp 分區(qū)對(duì)應(yīng)的掛載屬性,加上 nosuid、noexec、nodev 三個(gè)選項(xiàng)即可。


          修改后的 /tmp 分區(qū)掛載屬性類似如下:
          LABEL=/tmp??/tmp?ext3?rw,nosuid,noexec,nodev?0?0

          其中,nosuid、noexec、nodev 選項(xiàng),表示不允許任何 suid 程序,并且在這個(gè)分區(qū)不能執(zhí)行任何腳本等程序,并且不存在設(shè)備文件。


          在掛載屬性設(shè)置完成后,重新掛載 /tmp 分區(qū),保證設(shè)置生效。


          對(duì)于 /var/tmp,如果是獨(dú)立分區(qū),安裝?/tmp 的設(shè)置方法是修改 /etc/fstab 文件即可。


          如果是 /var 分區(qū)下的一個(gè)目錄,那么可以將?/var/tmp 目錄下所有數(shù)據(jù)移動(dòng)到 /tmp 分區(qū)下,然后在?/var 下做一個(gè)指向?/tmp 的軟連接即可。


          也就是執(zhí)行如下操作:

          [root@server?~]#?mv?/var/tmp/*?/tmp
          [root@server?~]#?ln?-s??/tmp?/var/tmp

          如果 /tmp 是根目錄下的一個(gè)目錄,那么設(shè)置稍微復(fù)雜,可以通過(guò)創(chuàng)建一個(gè) loopback 文件系統(tǒng)來(lái)利用 Linux 內(nèi)核的 loopback 特性將文件系統(tǒng)掛載到 /tmp 下,然后在掛載時(shí)指定限制加載選項(xiàng)即可。


          一個(gè)簡(jiǎn)單的操作示例如下:
          [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,添加如下內(nèi)容,以便系統(tǒng)在啟動(dòng)時(shí)自動(dòng)加載 loopback 文件系統(tǒng):
          /dev/tmpfs?/tmp?ext3?loop,nosuid,noexec,rw?0?0

          Linux 后門入侵檢測(cè)工具


          Rootkit 是 Linux 平臺(tái)下最常見(jiàn)的一種木馬后門工具,它主要通過(guò)替換系統(tǒng)文件來(lái)達(dá)到入侵和和隱蔽的目的,這種木馬比普通木馬后門更加危險(xiǎn)和隱蔽,普通的檢測(cè)工具和檢查手段很難發(fā)現(xiàn)這種木馬。


          Rootkit 攻擊能力極強(qiáng),對(duì)系統(tǒng)的危害很大,它通過(guò)一套工具來(lái)建立后門和隱藏行跡,從而讓攻擊者保住權(quán)限,以使它在任何時(shí)候都可以使用 Root 權(quán)限登錄到系統(tǒng)。


          Rootkit 主要有兩種類型:文件級(jí)別和內(nèi)核級(jí)別,下面分別進(jìn)行簡(jiǎn)單介紹。


          文件級(jí)別的 Rootkit 一般是通過(guò)程序漏洞或者系統(tǒng)漏洞進(jìn)入系統(tǒng)后,通過(guò)修改系統(tǒng)的重要文件來(lái)達(dá)到隱藏自己的目的。


          在系統(tǒng)遭受 Rootkit 攻擊后,合法的文件被木馬程序替代,變成了外殼程序,而其內(nèi)部是隱藏著的后門程序。


          通常容易被 Rootkit 替換的系統(tǒng)程序有 login、ls、ps、ifconfig、du、find、netstat 等,其中 login 程序是最經(jīng)常被替換的。


          因?yàn)楫?dāng)訪問(wèn) Linux 時(shí),無(wú)論是通過(guò)本地登錄還是遠(yuǎn)程登錄,/bin/login 程序都會(huì)運(yùn)行,系統(tǒng)將通過(guò) /bin/login 來(lái)收集并核對(duì)用戶的賬號(hào)和密碼。


          而 Rootkit 就是利用這個(gè)程序的特點(diǎn),使用一個(gè)帶有根權(quán)限后門密碼的 /bin/login 來(lái)替換系統(tǒng)的?/bin/login,這樣攻擊者通過(guò)輸入設(shè)定好的密碼就能輕松進(jìn)入系統(tǒng)。


          此時(shí),即使系統(tǒng)管理員修改 Root 密碼或者清除 Root 密碼,攻擊者還是一樣能通過(guò) Root 用戶登錄系統(tǒng)。


          攻擊者通常在進(jìn)入 Linux 系統(tǒng)后,會(huì)進(jìn)行一系列的攻擊動(dòng)作,最常見(jiàn)的是安裝嗅探器收集本機(jī)或者網(wǎng)絡(luò)中其他服務(wù)器的重要數(shù)據(jù)。


          在默認(rèn)情況下,Linux 中也有一些系統(tǒng)文件會(huì)監(jiān)控這些工具動(dòng)作,例如 ifconfig 命令。


          所以,攻擊者為了避免被發(fā)現(xiàn),會(huì)想方設(shè)法替換其他系統(tǒng)文件,常見(jiàn)的就是 ls、ps、ifconfig、du、find、netstat 等。


          如果這些文件都被替換,那么在系統(tǒng)層面就很難發(fā)現(xiàn) Rootkit 已經(jīng)在系統(tǒng)中運(yùn)行了。


          這就是文件級(jí)別的 Rootkit,對(duì)系統(tǒng)維護(hù)很大,目前最有效的防御方法是定期對(duì)系統(tǒng)重要文件的完整性進(jìn)行檢查。


          如果發(fā)現(xiàn)文件被修改或者被替換,那么很可能系統(tǒng)已經(jīng)遭受了 Rootkit 入侵。


          檢查文件完整性的工具很多,常見(jiàn)的有 Tripwire、 aide 等,可以通過(guò)這些工具定期檢查文件系統(tǒng)的完整性,以檢測(cè)系統(tǒng)是否被 Rootkit 入侵。


          內(nèi)核級(jí) Rootkit 是比文件級(jí) Rootkit 更高級(jí)的一種入侵方式,它可以使攻擊者獲得對(duì)系統(tǒng)底層的完全控制權(quán)。


          此時(shí)攻擊者可以修改系統(tǒng)內(nèi)核,進(jìn)而截獲運(yùn)行程序向內(nèi)核提交的命令,并將其重定向到入侵者所選擇的程序并運(yùn)行此程序。


          也就是說(shuō),當(dāng)用戶要運(yùn)行程序 A 時(shí),被入侵者修改過(guò)的內(nèi)核會(huì)假裝執(zhí)行 A 程序,而實(shí)際上卻執(zhí)行了程序 B。


          內(nèi)核級(jí) Rootkit 主要依附在內(nèi)核上,它并不對(duì)系統(tǒng)文件做任何修改,因此一般的檢測(cè)工具很難檢測(cè)到它的存在,這樣一旦系統(tǒng)內(nèi)核被植入 Rootkit,攻擊者就可以對(duì)系統(tǒng)為所欲為而不被發(fā)現(xiàn)。


          目前對(duì)于內(nèi)核級(jí)的 Rootkit 還沒(méi)有很好的防御工具,因此,做好系統(tǒng)安全防范就非常重要,將系統(tǒng)維持在最小權(quán)限內(nèi)工作,只要攻擊者不能獲取 Root 權(quán)限,就無(wú)法在內(nèi)核中植入 Rootkit。


          ①Rootkit?后門檢測(cè)工具 Chkrootkit


          Chkrootkit 是一個(gè) Linux 系統(tǒng)下查找并檢測(cè) Rootkit 后門的工具,它的官方地址:
          http://www.chkrootkit.org/

          Chkrootkit 沒(méi)有包含在官方的 CentOS 源中,因此要采取手動(dòng)編譯的方法來(lái)安裝,不過(guò)這種安裝方法也更加安全。


          Chkrootkit 的使用比較簡(jiǎn)單,直接執(zhí)行 Chkrootkit 命令即可自動(dòng)開(kāi)始檢測(cè)系統(tǒng)。


          下面是某個(gè)系統(tǒng)的檢測(cè)結(jié)果:

          [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)被感染。


          針對(duì)被感染 Rootkit 的系統(tǒng),最安全而有效的方法就是備份數(shù)據(jù)重新安裝系統(tǒng)。


          Chkrootkit 在檢查 Rootkit 的過(guò)程中使用了部分系統(tǒng)命令,因此,如果服務(wù)器被黑客入侵,那么依賴的系統(tǒng)命令可能也已經(jīng)被入侵者替換,此時(shí) Chkrootkit 的檢測(cè)結(jié)果將變得完全不可信。


          為了避免 Chkrootkit 的這個(gè)問(wèn)題,可以在服務(wù)器對(duì)外開(kāi)放前,事先將 Chkrootkit 使用的系統(tǒng)命令進(jìn)行備份,在需要的時(shí)候使用備份的原始系統(tǒng)命令讓 Chkrootkit 對(duì) Rootkit 進(jìn)行檢測(cè)。


          ②Rootkit 后門檢測(cè)工具?RKHunter


          RKHunter 是一款專業(yè)的檢測(cè)系統(tǒng)是否感染 Rootkit 的工具,它通過(guò)執(zhí)行一系列的腳本來(lái)確認(rèn)服務(wù)器是否已經(jīng)感染 Rootkit。


          在官方的資料中,RKHunter 可以做的事情有:

          MD5校驗(yàn)測(cè)試,檢測(cè)文件是否有改動(dòng),比較系統(tǒng)命令的md5,從而判斷系統(tǒng)命令是否被篡改
          檢測(cè)rootkit使用的二進(jìn)制和系統(tǒng)工具文件
          檢測(cè)特洛伊木馬程序的特征碼
          檢測(cè)常用程序的文件屬性是否異常
          檢測(cè)系統(tǒng)相關(guān)的測(cè)試
          檢測(cè)隱藏文件
          檢測(cè)可疑的核心模塊LKM
          檢測(cè)系統(tǒng)已啟動(dòng)的監(jiān)聽(tīng)端口


          在 Linux 終端使用 RKHunter 來(lái)檢測(cè),最大的好處在于每項(xiàng)的檢測(cè)結(jié)果都有不同的顏色顯示,如果是綠色的表示沒(méi)有問(wèn)題,如果是紅色的,那就要引起關(guān)注了。


          另外,在執(zhí)行檢測(cè)的過(guò)程中,在每個(gè)部分檢測(cè)完成后,需要以 Enter 鍵來(lái)繼續(xù)。


          如果要讓程序自動(dòng)運(yùn)行,可以執(zhí)行如下命令:

          [root@server?~]#?/usr/local/bin/rkhunter?--check?--skip-keypress

          同時(shí),如果想讓檢測(cè)程序每天定時(shí)運(yùn)行,那么可以在 /etc/crontab 中加入如下內(nèi)容:
          30?09?*?*?*?root?/usr/local/bin/rkhunter?--check?--cronjob?

          這樣,RKHunter 檢測(cè)程序就會(huì)在每天的 9:30 分運(yùn)行一次。


          服務(wù)器遭受攻擊后的處理過(guò)程


          安全總是相對(duì)的,再安全的服務(wù)器也有可能遭受到攻擊。


          作為一個(gè)安全運(yùn)維人員,要把握的原則是:盡量做好系統(tǒng)安全防護(hù),修復(fù)所有已知的危險(xiǎn)行為,同時(shí),在系統(tǒng)遭受攻擊后能夠迅速有效地處理攻擊行為,最大限度地降低攻擊對(duì)系統(tǒng)產(chǎn)生的影響。


          ①處理服務(wù)器遭受攻擊的一般思路


          系統(tǒng)遭受攻擊并不可怕,可怕的是面對(duì)攻擊束手無(wú)策,下面就詳細(xì)介紹下在服務(wù)器遭受攻擊后的一般處理思路。


          切斷網(wǎng)絡(luò):所有的攻擊都來(lái)自于網(wǎng)絡(luò),因此,在得知系統(tǒng)正遭受黑客的攻擊后,首先要做的就是斷開(kāi)服務(wù)器的網(wǎng)絡(luò)連接,這樣除了能切斷攻擊源之外,也能保護(hù)服務(wù)器所在網(wǎng)絡(luò)的其他主機(jī)。


          查找攻擊源:可以通過(guò)分析系統(tǒng)日志或登錄日志文件,查看可疑信息,同時(shí)也要查看系統(tǒng)都打開(kāi)了哪些端口,運(yùn)行哪些進(jìn)程,并通過(guò)這些進(jìn)程分析哪些是可疑的程序。


          這個(gè)過(guò)程要根據(jù)經(jīng)驗(yàn)和綜合判斷能力進(jìn)行追查和分析。下面會(huì)詳細(xì)介紹這個(gè)過(guò)程的處理思路。


          分析入侵原因和途徑:既然系統(tǒng)遭到入侵,那么原因是多方面的,可能是系統(tǒng)漏洞,也可能是程序漏洞。


          一定要查清楚是哪個(gè)原因?qū)е碌模⑶疫€要查清楚遭到攻擊的途徑,找到攻擊源,因?yàn)橹挥兄懒嗽馐芄舻脑蚝屯緩?,才能刪除攻擊源同時(shí)進(jìn)行漏洞的修復(fù)。


          備份用戶數(shù)據(jù):在服務(wù)器遭受攻擊后,需要立刻備份服務(wù)器上的用戶數(shù)據(jù),同時(shí)也要查看這些數(shù)據(jù)中是否隱藏著攻擊源。


          如果攻擊源在用戶數(shù)據(jù)中,一定要徹底刪除,然后將用戶數(shù)據(jù)備份到一個(gè)安全的地方。


          重新安裝系統(tǒng):永遠(yuǎn)不要認(rèn)為自己能徹底清除攻擊源,因?yàn)闆](méi)有人能比黑客更了解攻擊程序。


          在服務(wù)器遭到攻擊后,最安全也最簡(jiǎn)單的方法就是重新安裝系統(tǒng),因?yàn)榇蟛糠止舫绦蚨紩?huì)依附在系統(tǒng)文件或者內(nèi)核中,所以重新安裝系統(tǒng)才能徹底清除攻擊源。


          修復(fù)程序或系統(tǒng)漏洞:在發(fā)現(xiàn)系統(tǒng)漏洞或者應(yīng)用程序漏洞后,首先要做的就是修復(fù)系統(tǒng)漏洞或者更改程序 Bug,因?yàn)橹挥袑⒊绦虻穆┒葱迯?fù)完畢才能正式在服務(wù)器上運(yùn)行。


          恢復(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)程連接。


          ③查看系統(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í)行如下命令:
          [root@server?~]#?pidof?sshd
          13276?12942?4284

          然后進(jìn)入內(nèi)存目錄,查看對(duì)應(yīng) PID 目錄下 exe 文件的信息:
          [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)的完好性


          檢查文件屬性是否發(fā)生變化是驗(yàn)證文件系統(tǒng)完好性最簡(jiǎn)單、最直接的方法,例如可以檢查被入侵服務(wù)器上 /bin/ls 文件的大小是否與正常系統(tǒng)上此文件的大小相同,以驗(yàn)證文件是否被替換,但是這種方法比較低級(jí)。


          此時(shí)可以借助于 Linux 下 rpm 這個(gè)工具來(lái)完成驗(yàn)證,操作如下:
          [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

          ⑥重新安裝系統(tǒng)恢復(fù)數(shù)據(jù)


          很多情況下,被攻擊過(guò)的系統(tǒng)已經(jīng)不再可信任,因此,最好的方法是將服務(wù)器上面數(shù)據(jù)進(jìn)行備份,然后重新安裝系統(tǒng),最后再恢復(fù)數(shù)據(jù)即可。


          數(shù)據(jù)恢復(fù)完成,馬上對(duì)系統(tǒng)做上面介紹的安全加固策略,保證系統(tǒng)安全。


          有道無(wú)術(shù),術(shù)可成;有術(shù)無(wú)道,止于術(shù)

          歡迎大家關(guān)注Java之道公眾號(hào)


          好文章,我在看??

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线视频国内自拍 | 国产成人摸屄操屄熟 | 日韩口爆 | 免费在线视频一区 | 日韩欧美动作影片 |