中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
第十八章 Linux系統(tǒng)安全簡介
【目標(biāo)】
系統(tǒng)管理員不能對安全毫無認(rèn)識。隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展和應(yīng)用的日漸普及,駭客工具不僅變得越來越先進(jìn),而且也越來越容易被一般人獲取和濫用。駭客技術(shù)的提升和工具的泛濫,造成各行各業(yè)大量的企業(yè)、機(jī)構(gòu)的電腦系統(tǒng)遭受程度不同的入侵和攻擊,或面臨隨時被攻擊的危險。本章介紹了Linux系統(tǒng)面臨的各種安全問題及其解決方法,希望大家在學(xué)習(xí)Linux運(yùn)行與管理的同時,扎實(shí)地掌握安全設(shè)置與管理。
【重點(diǎn)內(nèi)容】
安全管理
補(bǔ)丁的重要作用
主機(jī)安全
PAM
用戶設(shè)置
文件權(quán)限
setuid和setgid
緩沖區(qū)溢出
網(wǎng)絡(luò)安全設(shè)置
簡單攻擊檢測
使用安全工具
18.1  安全漏洞
18.1.1      計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展
從20世紀(jì)80年代起,很多公司構(gòu)建了以太網(wǎng)和令牌環(huán)網(wǎng),并把自己的辦公與服務(wù)計(jì)算機(jī)連接到局域網(wǎng)上。那個時候,雖然在今天看來有很多明顯的漏洞,但除了控制用戶賬號之外一般不需要更多的安全措施。因?yàn)檫@些局域網(wǎng)相互獨(dú)立,沒有連接,是信息的孤島,不會受到來自外部的安全威脅。而到了90年代,人們開始認(rèn)識到將自己的局域網(wǎng)和別人的局域網(wǎng)以及商務(wù)伙伴的局域網(wǎng)互連,并最終與Internet互連的好處。
本來公司里的服務(wù)器和工作站是連接到局域網(wǎng)上的,而在沒有認(rèn)真地考慮整個系統(tǒng)安全性的情況下,這些網(wǎng)絡(luò)就連接到廣域網(wǎng)和Internet上。那些本身安全性很差的網(wǎng)絡(luò)此時受攻擊的可能性就大大增加了。在獨(dú)立的局域網(wǎng)紛紛互連和接入Internet的時候,正是網(wǎng)絡(luò)駭客攻擊事件發(fā)生的一個高峰期。
18.1.2      軟件本身的問題
在Internet上運(yùn)行的很多系統(tǒng)和應(yīng)用軟件在最初的時候根本都沒有考慮到要抵擋網(wǎng)絡(luò)駭客的攻擊。為內(nèi)聯(lián)網(wǎng)級別設(shè)計(jì)的客戶機(jī)/服務(wù)器應(yīng)用程序現(xiàn)在也連接到Internet上,也面臨著被攻擊的風(fēng)險。即使這些服務(wù)器是在防火墻和其他手段的保護(hù)之下,這種危險仍然存在。不管一個應(yīng)用程序設(shè)計(jì)得多么仔細(xì),都無法在安全性上做到盡善盡美。程序本身,以及用來開發(fā)和運(yùn)行這個程序的工具也都會有脆弱性。
從軟件開發(fā)來講,在開發(fā)生命周期中,當(dāng)意識到對安全的需求時,往往已經(jīng)太晚了。在開始、開發(fā)、執(zhí)行、維護(hù)、退役/處理五個基本階段中對于安全性的需求通常在執(zhí)行階段才被意識到,而直到維護(hù)階段,一些安全措施才開始被采用。即便如此,對于很多已經(jīng)成型的系統(tǒng)漏洞的處理方法也僅僅是進(jìn)行一些簡單的反思,使用一些補(bǔ)丁或者服務(wù)包修補(bǔ)了事。一個受到良好保護(hù)的系統(tǒng)在開始階段就開始設(shè)計(jì)安全策略了--而不是只到執(zhí)行甚至維護(hù)階段安全性問題才被想起來--因?yàn)槭褂梅?wù)包和補(bǔ)丁可能會帶來其他的安全漏洞,從而進(jìn)入了修補(bǔ)、再修補(bǔ),補(bǔ)丁疊補(bǔ)丁的循環(huán)。
18.1.3      活躍的駭客
首先簡要地介紹一下駭客與黑客的區(qū)別,為黑客正名。
“黑客”(hacker)、“駭客”(cracker),這些詞都來自英文翻譯。我們常說的“黑客”破壞計(jì)算機(jī)安全,實(shí)際上這個詞被用錯了。這一類搞破壞的人在英文中被稱為cracker破解者(加密軟件等),或者intruder入侵者等。真正的hacker黑客是不以攻擊和破壞為目的的,他們是技術(shù)上的行家或熱衷于解決問題,克服限制。在精神上,hacker并不單指(限制于)這種軟件hacker的文化。有人也把hacker的特質(zhì)發(fā)揮在其它領(lǐng)域,例如:電子或者音樂方面。在任何一種科學(xué)或藝術(shù)的最高境界,你都可以發(fā)現(xiàn)hacker的特質(zhì)。軟件hacker們認(rèn)為,那些類似的精神也都可以稱為黑客。
而駭客,一般都懷著不良的企圖,闖入甚至破壞遠(yuǎn)程機(jī)器系統(tǒng)完整性。駭客們利用獲得的非法訪問權(quán),破壞重要數(shù)據(jù),拒絕合法用戶服務(wù)請求,或?yàn)榱俗约旱哪康闹圃炻闊?nbsp;一句話說,攻擊我們網(wǎng)絡(luò)的人,是“駭客”。
18.2  補(bǔ)丁在系統(tǒng)安全中的重要作用
在上面已經(jīng)談到了,計(jì)算機(jī)軟件的開發(fā)不可能完美。我們進(jìn)行操作系統(tǒng)安全加強(qiáng)之前,其實(shí)安裝在計(jì)算機(jī)上的系統(tǒng)已經(jīng)可以說在根本上有很多問題和漏洞的了。而目前所有軟件廠商的開發(fā)模式都是強(qiáng)調(diào)功能和使用性,在安全上還重視不夠。每一年報(bào)告給CERT/CC的漏洞數(shù)量都成倍增長。CERT/CC公布的漏洞數(shù)據(jù)2000年為1090個,2001年為2437個,2002年已經(jīng)增加至4129個,就是說每天都有十幾個新的漏洞被發(fā)現(xiàn)。可以想象,對于管理員來說想要跟上補(bǔ)丁的步伐是很困難的。
而且,入侵者往往能夠在軟件廠商修補(bǔ)這些漏洞之前首先發(fā)現(xiàn)這些漏洞。隨著發(fā)現(xiàn)漏洞的工具的自動化趨勢,留給用戶打補(bǔ)丁的時間越來越短。尤其是緩沖區(qū)溢出類型的漏洞,其危害性非常大而又無處不在,是計(jì)算機(jī)安全的最大的威脅。在CERT和其它國際性網(wǎng)絡(luò)安全機(jī)構(gòu)的調(diào)查中,這種類型的漏洞是對服務(wù)器造成后果最嚴(yán)重的。通過打補(bǔ)丁彌補(bǔ)軟件本身設(shè)計(jì)開發(fā)上的漏洞,已經(jīng)成為安全專家的共識。
18.3  主機(jī)安全
在我們對主機(jī)系統(tǒng)進(jìn)行安全加強(qiáng)之前,首先要記得不要單一地去考慮主機(jī)的安全,這樣很不全面。做安全的時候很忌諱把目光只集中在一處,認(rèn)為只要保護(hù)我最重要的服務(wù)器就可以了。實(shí)際上我們下面要談到的物理安全與網(wǎng)絡(luò)整體安全更應(yīng)引起我們的注意。
18.3.1      物理安全
物理安全是指服務(wù)器做為一個硬件設(shè)備來講,是不是處于一個安全的環(huán)境。物理安全是保護(hù)計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備、設(shè)施以及其它媒體免遭地震、水災(zāi)、火災(zāi)等環(huán)境事故,以及人為操作失誤或錯誤及各種計(jì)算機(jī)犯罪行為導(dǎo)致的破壞過程。無論服務(wù)器的安全設(shè)置有多好,被水泡一泡,它還能為大家提供正常的服務(wù)嗎?安全的三個基本要素“完整性、可用性、保密性”中,“可用性”是絕不可缺少的,而且是其它一切功能的基礎(chǔ)。所以放在首位的安全考慮應(yīng)該是防止“天災(zāi)人禍”,這里的人禍?zhǔn)侵刚嬲娜藶槲锢硗蹈`、破壞。通常物理安全包括三個方面:
環(huán)境安全
對系統(tǒng)所在環(huán)境的安全保護(hù),如區(qū)域保護(hù)和災(zāi)難保護(hù);
設(shè)備安全
主要包括設(shè)備的防盜、防毀、防電磁信息輻射泄漏、防止線路截獲、抗電磁干擾及電源保護(hù)等;
媒體安全
包括媒體數(shù)據(jù)的安全及媒體本身的安全。
在考慮物理安全時,把服務(wù)器都放在條件良好的機(jī)房中,并建立嚴(yán)格的管理制度,是一個簡單而有效的手段。
18.3.2      網(wǎng)絡(luò)環(huán)境的安全
如果把服務(wù)器看作一間屋子,那么服務(wù)器所在的網(wǎng)絡(luò)環(huán)境就可以看作是居民小區(qū),這時我們就不難理解網(wǎng)絡(luò)環(huán)境對服務(wù)器安全的重要性了。一戶人家被盜了,戶主在重修門戶的同時,往往會責(zé)問小區(qū)的保安員工作不力,因?yàn)榇蠹叶加羞@樣的認(rèn)識:要是保安措施有效的話,小偷很難跑到我家的門前窗下為非作歹的。
同樣道理,駭客從網(wǎng)絡(luò)上進(jìn)攻的時候,一般要經(jīng)過路由器、防火墻、交換機(jī),最后到達(dá)目標(biāo)服務(wù)器。一個有很多服務(wù)器的網(wǎng)絡(luò),對每一臺服務(wù)器進(jìn)行安全設(shè)置時有可能會產(chǎn)生個別的失誤,導(dǎo)致整體上存在漏洞。不過如果在網(wǎng)絡(luò)的安全設(shè)置上多下一些工夫,就可以收到事半功倍的效果,因?yàn)轳斂鸵舴?wù)器時必須要經(jīng)過上述設(shè)備,在防火墻、路由器和交換機(jī)上進(jìn)行安全設(shè)置,步步為營,讓駭客每前進(jìn)一步就必須付出較高的代價,就會給后面的服務(wù)器減輕許多壓力。
實(shí)際進(jìn)行設(shè)置時,可以問自己這樣幾個問題:
防火墻的規(guī)則設(shè)置是否合理?
經(jīng)??吹揭慌_幾十萬元的防火墻由于規(guī)則問題,變成沒有任何過濾措施的“路由器”。
路由設(shè)置、VLAN劃分是否合理?
不合理的路由與VLAN設(shè)置不但會造成效率低下,而且會為駭客提供攻擊的條件。
是否采用了防御分布式拒絕服務(wù)攻擊的措施?
在服務(wù)器上確實(shí)可以進(jìn)行防御拒絕服務(wù)攻擊的措施,但一談到分布式拒絕服務(wù)攻擊,就不是服務(wù)器自己可以應(yīng)付的事情了。服務(wù)器上面的設(shè)置最多是減輕攻擊造成的壓力,最大部分的工作還是要在網(wǎng)絡(luò)設(shè)備上做。
網(wǎng)絡(luò)設(shè)備自身的安全性如何?
網(wǎng)絡(luò)設(shè)備本質(zhì)上也是計(jì)算機(jī),也運(yùn)行了自己的操作系統(tǒng)與相應(yīng)軟件,而所有軟件都會有設(shè)計(jì)上的漏洞和bug,這些都可以成為駭客的目標(biāo),這時候做為安全警衛(wèi)的網(wǎng)絡(luò)設(shè)備自身也成為攻擊目標(biāo)了。而一旦它們被攻陷或者是打癱,整個網(wǎng)絡(luò)基本上沒有安全性可言了。
網(wǎng)絡(luò)上是否已經(jīng)采取了防御與檢測監(jiān)聽的措施?
監(jiān)聽只能在局域網(wǎng)進(jìn)行,使用交換設(shè)備和監(jiān)聽器檢測軟件可以使非法監(jiān)聽無用武之地、無所遁形。
網(wǎng)絡(luò)上是否已經(jīng)采取了防御掃描的措施?
在入口的防火墻處是進(jìn)行掃描防御的最佳位置。
最后,綜合來看,網(wǎng)絡(luò)設(shè)備與它們的配置是否已經(jīng)提供了一個安全的基礎(chǔ)環(huán)境?
18.4  PAM
PAM(Pluggable Authentication Modules )是由Sun提出的一種認(rèn)證機(jī)制。它通過提供一些動態(tài)鏈接庫和一套統(tǒng)一的API,將系統(tǒng)提供的服務(wù) 和該服務(wù)的認(rèn)證方式分開,使得系統(tǒng)管理員可以靈活地根據(jù)需要給不同的服務(wù)配置不同的認(rèn)證方式而無需更改服務(wù)程序,同時也便于向系統(tǒng)中添加新的認(rèn)證手段。
PAM最初是集成在Linux中,目前已移植到其它系統(tǒng)中,如Linux、SunOS、HP-UX 9.0等。
18.4.1      PAM的結(jié)構(gòu)
系統(tǒng)管理員通過PAM配置文件來制定認(rèn)證策略,即指定什么服務(wù)該采用什么樣的認(rèn)證方法;應(yīng)用程序開發(fā)者通過在服務(wù)程序中使用PAM API而實(shí)現(xiàn)對認(rèn)證方法的調(diào)用;而PAM服務(wù)模塊(servicemodule)的開發(fā)者則利用PAMSPI(ServiceModule API)來編寫認(rèn)證模塊(主要是引出一些函數(shù)pam_sm_xxxx( )供libpam調(diào)用),將不同的認(rèn)證機(jī)制(比如傳統(tǒng)的UNIX認(rèn)證方法、Kerberos等)加入到系統(tǒng)中;PAM核 心庫(libpam)則讀取配置文件,以此為根據(jù)將服務(wù)程序和相應(yīng)的認(rèn)證方法聯(lián)系起來。
18.4.2      PAM支持的四種管理界面
1、認(rèn)證管理(authentication management)
主要是接受用戶名和密碼,進(jìn)而對該用戶的密碼進(jìn)行認(rèn)證,并負(fù)責(zé)設(shè)置用戶的一些秘密信息。
2、帳戶管理(account management)
主要是檢查帳戶是否被允許登錄系統(tǒng),賬號是否已經(jīng)過期,賬號的登錄是否有時間段的限制等等。
3、密碼管理(password management)
主要是用來修改用戶的密碼。
4、會話管理(session management)
主要是提供對會話的管理和記賬(accounting)
18.4.3      PAM的文件
/usr/lib/libpam.so.*                 PAM核心庫
/etc/pam.conf或者/etc/pam.d/         PAM配置文件
/usr/lib/security/pam_*.so           可動態(tài)加載的PAMservice module
18.4.4      PAM的配置
PAM的配置是通過單個配置文件/etc/pam.conf。
1、使用配置文件/etc/pam.conf
該文件是由如下的行所組成的:
service-name  module-type  control-flag  module-path  arguments
service-name 服務(wù)的名字,比如telnet、login、ftp等,服務(wù)名字“OTHER”代表所有沒有在該文件中明確配置的其它服務(wù)。
module-type  模塊類型有四種:auth、account、session、password,即對應(yīng)PAM所支持的四種管理方式。同一個服務(wù)可以調(diào)用多個 PAM模塊進(jìn)行認(rèn)證,這些模塊構(gòu)成一個stack。
control-flag 用來告訴PAM庫該如何處理與該服務(wù)相關(guān)的PAM模塊的成功或失敗情況。它有四種可能的值:required,requisite,sufficient,optional。
required 表示本模塊必須返回成功才能通過認(rèn)證,但是如果該模塊返回失敗的話,失敗結(jié)果也不會立即通知用戶,而是要等到同一stack 中的所有模塊全部執(zhí)行完畢再將失敗結(jié)果返回給應(yīng)用程序??梢哉J(rèn)為是一個必要條件。
sufficient 表明本模塊返回成功已經(jīng)足以通過身份認(rèn)證的要求,不必再執(zhí)行同一stack內(nèi)的其它模塊,但是如果本模塊返回失敗的話可以 忽略??梢哉J(rèn)為是一個充分條件。
optional表明本模塊是可選的,它的成功與否一般不會對身份認(rèn)證起關(guān)鍵作用,其返回值一般被忽略。對于control-flag,從Linux-PAM-0.63版本起,支持一種新的語法,具體可參看LinuxPAM文檔。
module-path 用來指明本模塊對應(yīng)的程序文件的路徑名,一般采用絕對路徑,如果沒有給出絕對路徑,默認(rèn)該文件在目錄/usr/lib/security下 面。
arguments  是用來傳遞給該模塊的參數(shù)。一般來說每個模塊的參數(shù)都不相同,可以由該模塊的開發(fā)者自己定義,但是也有以下幾個共同的參數(shù):
debug   該模塊應(yīng)當(dāng)用syslog( )將調(diào)試信息寫入到系統(tǒng)日志文件中。
no_warn  表明該模塊不應(yīng)把警告信息發(fā)送給應(yīng)用程序。
use_first_pass  表明該模塊不能提示用戶輸入密碼,而應(yīng)使用前一個模塊從用戶那里得到的密碼。
try_first_pass  表明該模塊首先應(yīng)當(dāng)使用前一個模塊從用戶那里得到的密碼,如果該密碼驗(yàn)證不通過,再提示用戶輸入新的密碼。
use_mapped_pass 該模塊不能提示用戶輸入密碼,而是使用映射過的密碼。
expose_account  允許該模塊顯示用戶的賬號名等信息,一般只能在安全的環(huán)境下使用,因?yàn)樾孤┯脩裘麜Π踩斐梢欢ǔ潭鹊耐{。
18.5  用戶賬號與口令管理
駭客要非法地訪問一臺計(jì)算機(jī),最簡單的辦法是盜取一個合法的賬號,這樣就可以令人不易查覺地使用系統(tǒng)。在Linux系統(tǒng)中默認(rèn)有不少賬號安裝,也會建立新的個人用戶賬號,系統(tǒng)管理員應(yīng)對所有的賬號進(jìn)行安全保護(hù),而不能只防護(hù)那些重要的賬號,如只防護(hù)root賬號。
18.5.1      用戶管理
在Linux環(huán)境下對用戶的管理有多種方式,常用的包括:
使用編輯工具vi對/etc/passwd進(jìn)行操作
直接使用useradd、userdel等用戶管理命令
使用pwconv命令,讓/etc/passwd與/etc/shadow文件保持一致
18.5.1.1  增加用戶
1.在/etc/passwd文件中寫入新用戶。
2.為新登錄用戶建立一個HOME目錄。
3.在/etc/group中增加新用戶。
在/etc/passwd文件中寫入新的入口項(xiàng)時,口令部分可先設(shè)置為NOLOGIN,以免有人做為此新用戶登錄。新用戶一般獨(dú)立為一個新組,GID號與UID號相同(除非他要加入目前已存在的一個新組),UID號必須和其他人不同,HOME目錄一般設(shè)置在/usr或/home目錄下,建立一個以用戶登錄名為名稱的目錄做為其主目錄。
18.5.1.2  刪除用戶
刪除用戶與加用戶的工作正好相反,首先在/etc/passwd和/etc/group文件中刪除用戶的入口項(xiàng),然后刪除用戶的HOME目錄和所有文件。
rm –r /usr/loginname刪除用戶的整個目錄。
/usr/spool/cron/crontabs中有crontab文件,也應(yīng)當(dāng)刪除。
18.5.2      賬號信息
在Linux系統(tǒng)中,賬號的信息是儲存在/etc/passwd和/etc/shadow文件中的。/etc/passwd文件保存著用戶的名稱、ID號、用戶組、用戶注釋、主目錄和登錄shell。/etc/shadow文件存放了用戶名稱和口令的加密串。下面是兩個文件的例子:
18.5.2.1  /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
。
。
各個域依次為:用戶名:原密碼存放位置:用戶ID:組ID:注釋:主目錄:外殼
18.5.2.2  /etc/shadow
root:$1$ojgDMA/K$ydGOqgE96ka/HSpXg8e9O.:12367:0:99999:7:::
bin:*:12328:0:99999:7:::
daemon:*:12328:0:99999:7:::
adm:*:12328:0:99999:7:::
lp:*:12328:0:99999:7:::
sync:*:12328:0:99999:7:::
shutdown:*:12328:0:99999:7:::
halt:*:12328:0:99999:7:::
mail:*:12328:0:99999:7:::
news:*:12328:0:99999:7:::
uucp:*:12328:0:99999:7:::
。
。
各個域依次為:用戶名:加密口令:上次修改日期:最短改變口令時間:最長改變口令時間:口令失效警告時間:不使用時間:失效日期:保留
18.5.3      控制用戶的登錄地點(diǎn)
文件/etc/secruity/access.conf可控制用戶登錄地點(diǎn),為了使用access.conf,必須在文件/etc/pam.d/login中加入下面行:
account required /lib/security/pam-access.so
access.conf文件的格式:
permission : users : origins
其中:
permission:可以是 “+”或“-”,表示允許或拒絕。
user:可以是用戶名、用戶組名,如果是all則表示所有用戶。
origins:登錄地點(diǎn)。local表示本地,all表示所有地點(diǎn),console表示控制臺。另外,origins也可以是某一網(wǎng)絡(luò)。
后面兩個域中加上 except是“除了”的意思。例如:除了用戶wheel、shutdown、sync禁止所有的控制臺登錄:
-:ALL EXCEPT wheel shutdown sync:console
root帳戶的登錄地點(diǎn)不在access.conf文件中控制,而是由/etc/securetty文件控制。如果要讓root能從pts/0登錄,就在這個文件中添加一行,內(nèi)容是0就行,要從pts/1以此類推?;蛘咝薷?etc/pam.d/login,把
auth required /lib/security/pam_securetty.so
注釋掉也可以允許root遠(yuǎn)程登錄。
18.5.4      使用sudo分配特權(quán)
做為系統(tǒng)管理員,可能會碰到過有這樣的情況不好處理:有的時候不得不把服務(wù)器的root權(quán)限交給一個普通的工作人員,比如服務(wù)器正在安裝補(bǔ)丁,然后重啟一下機(jī)器,你因事要突然離開,只能委托給別人重啟一下;而做這項(xiàng)工作(使用reboot命令)是需要root權(quán)限的,你必須先把口令告訴受托人,今后回來了再改成新的。但即使這樣也會在前后的時間差里產(chǎn)生不安全的因素:受托人可以利用root權(quán)限去做一些其他的事情,象查看秘密的文件,系統(tǒng)情況甚至非法安裝軟件等等。
這時你也許會想,我只讓這個用戶以root身份執(zhí)行reboot命令就行了。完全沒錯,可惜在早期Linux通常的系統(tǒng)安裝下這個要求無法達(dá)到。不過令人高興的是已經(jīng)有了軟件可以實(shí)現(xiàn)這樣的功能,它就是sudo。
Sudo是安裝在Linux系統(tǒng)平臺上,許可其他用戶以root身份去執(zhí)行特定指令的軟件。有了sudo,上面的問題就解決了,管理員可以進(jìn)行配置,允許那個普通用戶使用reboot命令,但不可以用root身份執(zhí)行其他命令。而且也不必把root的口令告訴普通用戶。
18.5.4.1  sudo的配置
/etc/sudoers的配置規(guī)則如下:
我們需要使用“visudo”命令,這個命令在系統(tǒng)安裝時與sudo程序一起拷貝到了/usr/bin下。visudo就是用來編輯/etc/sudoers這個文件的,只要把相應(yīng)的用戶名、主機(jī)名和許可的命令列表以標(biāo)準(zhǔn)的格式加入文件并保存就可以生效。例如:
管理員需要允許“xyd”用戶在主機(jī)“solx”上執(zhí)行“reboot”和“shutdown”命令,在visudo時加入
xyd                solx = /usr/sbin/reboot , /usr/sbin/shutdown
注意:這里的命令的表示一定要使用絕對路徑,避免其他目錄的同名命令被執(zhí)行,造成安全隱患。
保存退出就可以了。xyd用戶想執(zhí)行reboot命令時,只要在提示符下運(yùn)行下列命令:
$ sudo reboot                                                                                                           就可以重啟服務(wù)器了。使用sudo時,都是在命令前面加上“sudo”,后面跟所要執(zhí)行的命令。
18.5.4.2  sudo的alias
在visudo時,還可以利用別名來簡化配置文件。別名類似組的概念,有用戶別名、主機(jī)別名和命令別名。多個用戶可以首先用一個別名來定義,然后在規(guī)定他們可以執(zhí)行什么命令的時候使用別名就可以了,這個配置對所有用戶都生效。主機(jī)別名和命令別名也是如此。注意使用前先要visudo中定義:
Host_Alias:用來創(chuàng)建主機(jī)別名[可選],列表中的主機(jī)必須用逗號隔開,如果要設(shè)置多個別名,可以用冒號隔開,保留關(guān)鍵字ALL代表所有主機(jī)。例如:
Host_Alias bluesun=grind,glass
這里用別名bluesun來統(tǒng)稱grind和glass兩臺機(jī)器,grind和glass分別是這兩臺機(jī)器的機(jī)器名。
User_Alias:用來創(chuàng)建用戶別名[可選],列表中的用戶名必須以逗號隔開。其格式同主機(jī)別名,保留關(guān)鍵字ALL代表所有命令。
Cmnd_alias:用來創(chuàng)建命令別名[可選],列表中的命令必須用逗號隔開,如果要定義一個命令無效,可以在該命令前加!號。
后面加入相應(yīng)的名稱就可以了,也以逗號分隔開。
18.5.4.3  sudo的參數(shù)
在運(yùn)行sudo時,使用sudo直接跟上命令就可以了。sudo這個命令還可以加上一些參數(shù)執(zhí)行,完成一些輔助的功能。如
$ sudo –l:會顯示出類似這樣的信息:
User xyd may run thefollowing commands on this host:                                       (root)/usr/sbin/reboot
說明用戶xyd被root允許執(zhí)行/usr/sbin/reboot命令。這個參數(shù)可以使用戶查看自己目前可以在sudo中執(zhí)行哪些命令,方便使用。
其他一些參數(shù)還有:
-V 顯示版本編號
-h 會顯示版本編號及指令的使用方式說明
-l 顯示出自己(執(zhí)行 sudo 的使用者)的權(quán)限
-v 因?yàn)?nbsp;sudo 在第一次執(zhí)行時或是在 N 分鐘內(nèi)沒有執(zhí)行(N 預(yù)設(shè)為五)會問密碼,這個參數(shù)是重新做一次確認(rèn),如果超過 N 分鐘,也會問密碼
-k 將會強(qiáng)迫使用者在下一次執(zhí)行 sudo 時問密碼(不論有沒有超過 N 分鐘)
-b 將要執(zhí)行的指令放在背景執(zhí)行
-p prompt 可以更改問密碼的提示語,其中 %u 會代換為使用者的賬號名稱, %h 會顯示主機(jī)名稱
-u username/#uid 不加此參數(shù),代表要以 root 的身份執(zhí)行指令,而加了此參數(shù),可以以 username 的身份執(zhí)行指令(#uid 為該 username 的使用者號碼)
-s 執(zhí)行環(huán)境變數(shù)中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 將環(huán)境變數(shù)中的 HOME 指定為要變更身份的使用者HOME目錄(如不加 -u 參數(shù)就是系統(tǒng)管理者 root )
18.5.5      初始化環(huán)境:/etc/skel
當(dāng)創(chuàng)建一個新用戶時,如果沒有指定用戶目錄,系統(tǒng)就為其創(chuàng)建一個登錄目錄,這個登錄目錄就是用/etc/skel為模板,所有的文件都和/etc/skel中的文件相同。系統(tǒng)管理員能夠在/etc/skel中建立文件,這些文件可以為用戶提供一個很好的缺省環(huán)境。
例如,用戶可以建立一個/etc/skel/.profile文件,定義用戶登錄后的一些屬性的設(shè)置。但是如果對/etc/skel這個文件夾進(jìn)行改動后,肯定會導(dǎo)致改動前創(chuàng)建的用戶和改動后創(chuàng)建的用戶的一些文件不一樣,所以只要可能,盡量將全局配置放入全局文件中,例如如/etc/profile,以實(shí)現(xiàn)系統(tǒng)用戶一些設(shè)置的統(tǒng)一。
/etc/skel的存在的意義很多,比如一臺專門開虛擬主機(jī)的服務(wù)器上面就可以只在/etc/skel中放一個index.html,讓每個新加的用戶不會有系統(tǒng)安裝時缺省的那些.bashrc等文件,又可以確保未放置主頁的用戶的頁面的統(tǒng)一。
18.5.6 密碼設(shè)置和管理
18.5.6.1  密碼的設(shè)置
密碼設(shè)置應(yīng)按照一定的規(guī)則。在Linux系統(tǒng)中,為了強(qiáng)制用戶使用合格的口令,用戶修改口令時推薦必須最少有6個字符,而且至少包括2個數(shù)字或者特殊字符。不過要注意在以root的身份進(jìn)行密碼修改時是不受這個限制的。下面是在進(jìn)行密碼設(shè)置的時候推薦的一些方式:
密碼至少應(yīng)有6個字符
密碼至少應(yīng)該包含2個英文字母及一個數(shù)字或特殊符號。
密碼應(yīng)與用戶名完全不同,且不能使用原有名稱的變化(如反序、位移等)
新舊密碼至少有3個字符不相同
18.5.6.2  口令的控制
用戶應(yīng)該定期改變自己的口令,例如一個月?lián)Q一次。如果口令被偷去就會引起安全問題,經(jīng)常更換口令可以幫助減少損失。假設(shè)一個駭客偷了用戶的密碼,但并沒有被發(fā)覺,這樣給用戶造成的損失是不可估計(jì)的。隕一段時間換一次口令總比一直保留原有口令損失要小。我們可以為口令設(shè)定有效時間,這樣當(dāng)有效時間結(jié)束后,系統(tǒng)就會強(qiáng)制用戶更改系統(tǒng)密碼。另外,有些系統(tǒng)會將用戶以前的口令記錄下來,不允許用戶使用以前的口令,而要求用戶輸入一個新的口令。這樣就增強(qiáng)了系統(tǒng)的安全性。
18.5.7 禁用帳戶
如果需要暫時讓某個帳戶停用,而不是刪除時,最簡單的方法就是確保用戶口令終止。我們可以手工更改/etc/shadow文件中的帳戶終止時間字段區(qū)域。就像前面介紹的一樣,利用用/etc/shadow文件字段中的日期是自1970年1月1日以后的帳戶將被終止的天數(shù),而shadow文件中第三個子段區(qū)域表示表示自1970年1月1日以來至最后一次更改口令的天數(shù)。我們可以首先變更用戶的口令,然后第三字段將顯示出新的日期數(shù)字。將該數(shù)字減1,并在帳戶終止時間字段區(qū)域(第八區(qū)域)插入運(yùn)算的結(jié)果,然后保存文件即可。
在帳戶重新重用的時候,將日期重新設(shè)置就可以繼續(xù)使用了。
18.6  文件權(quán)限
18.6.1      Linux的文件權(quán)限
Linux系統(tǒng)中的文件權(quán)限,是指對文件的訪問權(quán)限,包括對文件的讀、寫、刪除、執(zhí)行。Linux是一個多用戶操作系統(tǒng),它允許多個用戶同時登錄和工作。因此 Linux 將一個文件或目錄與一個用戶和組聯(lián)系起來。請看下面的例子:
drwxr-xr-x5 root root 1024 Sep 13 03:27Desktop
與文件權(quán)限相關(guān)聯(lián)的是第一、第三、第四個域。第三個域是文件的所有者,第四個域是文件的所屬組,而第一個域則限制了文件的訪問權(quán)限。在這個例子中,文件的所有者是 root,所屬的組是 root,文件的訪問權(quán)限是 drwxr-xr-x。對于文件和目錄講,每個文件和目錄都有一組權(quán)限標(biāo)志和它們結(jié)合在一起,在上例中就是第一個域中的內(nèi)容。下面來仔細(xì)分析這個域中各個符號的意義:
該域由 10 個字符組成,可以把它們分為四組,具體含義分別是:
d
Rwx
r-x
r-x
文件類型
所有者權(quán)限
組權(quán)限
其他用戶權(quán)限
文件類型:第一個字符。由于 Linux 系統(tǒng)對與設(shè)備、目錄、文件都當(dāng)作是文件來處理,因此該字符表明此文件的類型,字符與對應(yīng)的意義如下表:
?。。o表
權(quán)限標(biāo)志:
對每個文件或目錄都有 4 類不同的用戶。每類用戶各有一組讀、寫和執(zhí)行(搜索)文件的訪問權(quán)限,這 4類用戶是:
root:系統(tǒng)特權(quán)用戶類,既 UID = 0 的用戶。
owner:擁有文件的用戶。
group:共享文件的組訪問權(quán)限的用戶類的用戶組名稱。
world:不屬于上面 3 類的所有其他用戶。
作為 root,他們自動擁有了所有文件和目錄的全面的讀、寫和搜索的權(quán)限,所以沒有必要明確指定他們的權(quán)限。其他三類用戶則可以在單個文件或者目錄的基礎(chǔ)上別授權(quán)或撤消權(quán)限。因此對另外三類用戶,一共 9 個權(quán)限位與之對應(yīng),分為 3 組,每組 3 個,分別用 r、w、x 來表示,分別對應(yīng) owner、group、world。
權(quán)限位對于文件和目錄的含義有些許不同。每組 3 個字符對應(yīng)的含義從左至右的順序,對于文件來說是:讀文件的內(nèi)容(r)、寫數(shù)據(jù)到文件(w)、做為命令執(zhí)行該文件(x)。對于目錄來說是:讀包含在目錄中的文件名稱(r)、寫信息到目錄中去(增加和刪除索引點(diǎn)的連接)、搜索目錄(能用該目錄名稱作為路徑名去訪問它所包含的文件或子目錄)。具體來說就是:
有只讀權(quán)限的用戶不能用 cd 進(jìn)入該目錄;還必須有執(zhí)行權(quán)限才能進(jìn)入
有執(zhí)行權(quán)限的用戶只有在知道文件名并擁有該文件的讀權(quán)限的情況下才可以訪問目錄下的文件。
必須有讀和執(zhí)行權(quán)限才可以使用 ls 列出目錄清單,或使用 cd 進(jìn)入目錄。
如用戶有目錄的寫權(quán)限,則可以創(chuàng)建、刪除或修改目錄下的任何文件或子目錄,既是該文件或子目錄屬于其他用戶。
18.6.2      文件和目錄權(quán)限的相關(guān)命令
18.6.2.1  chown
改變文件的屬主,即所有者。
例:# chown xyd scan.sh
上面的命令把scan.sh文件的所有者改為了用戶xyd。這個命令還有以下選項(xiàng):
-c, 詳盡地描述每個 file 實(shí)際改變了哪些所有權(quán)。
-f, 不打印文件所有權(quán)不能修改的報(bào)錯信息。
-h, 只作用于其本身的符號鏈接,而不修改它們所指向的文件。這只在提供了 lchown 系統(tǒng)調(diào)用的情況下才可用。
-v, 詳盡地描述對每個 file 所執(zhí)行的操作(或者無操作)。
-R, 遞歸地修改目錄及其下面內(nèi)容的所有權(quán)。
18.6.2.2  chgrp
改變文件的屬組。
例:# chgrp admin scan.sh
就是把scan.sh文件的屬組更改為admin組。它還有下列選項(xiàng):
-H ,(當(dāng)和 -R 一起給出) 給出的文件操作數(shù)書指向目錄的符號鏈接時,改變這個目錄和目錄中文件的組所有權(quán)。
-L,(當(dāng)和 -R 一起給出) 給出的文件,不論是命令行操作數(shù)還是遍歷整個樹,操作數(shù)書指向目錄的符號鏈接時, 改變這個目錄和目錄中文件的組所有權(quán)。
-P ,(當(dāng)和 -R 一起給出) 對于一個文件,不論是命令行操作數(shù)還是遍歷整個樹, 是符號鏈接的,只改變它本身,優(yōu)于(改變)指向的對象如果系統(tǒng)不支持符號鏈接的組所有權(quán),那就對它不起作用。這是默認(rèn)值。
-R ,遞歸的改變目錄和它的內(nèi)容的組所有權(quán)
18.6.2.3  chmod
改變文件的訪問權(quán)限。這是非常重要的一個命令,要熟練地使用它。
使用chmod命令改變指定文件訪問權(quán)限有兩種方式:一種是用符號標(biāo)記所進(jìn)行更改,另一種方式是采用8進(jìn)制數(shù)指定新的訪問權(quán)限。使用下面的語法格式來使用符號改變方式 `[ugoa。。。][[+-=][rwxXstugo。。。]。。。][,。。。]'。
在這種格式下,所帶參數(shù)是一個用逗號分隔的字符列表。每個符號方式的改變命令以零或者字'ugoa'開始;'ugoa'控制哪些用戶對該文件訪問權(quán)限將被改變:文件的所有者(u),與文件所有者同組的用戶(g),其他組的用戶(o),所有用戶(a)。因此,a在這里等同于ugo。如果沒有帶參數(shù),則缺省設(shè)置為a,運(yùn)行效果相同,但是在umask中設(shè)置的位將不會受影響。
操作符'+'使得用戶選擇的權(quán)限被追加到每個指定文件,(操作給指定文件添加所選權(quán)限);操作符'-'使得這些權(quán)限被撤消;'='使得指定文件只具有這些權(quán)限。
字符串'rwxXstugo' 給用戶選擇新的屬性:(r)讀權(quán)限、(w)寫權(quán)限、 (x)執(zhí)行權(quán)(或?qū)δ夸浀脑L問權(quán)),(X)只有目標(biāo)文件對某些用戶是可執(zhí)行的或該目標(biāo)文件是目錄時才追加x屬性,(s)setuID或setgID,(t)粘滯位(保存程序的文本到交換設(shè)備上),(u)目標(biāo)文件屬主,(g)目標(biāo)文件屬主所在的組,(o)其他用戶。(因此,'chmod g-s file' 撤消sgid位,'chmod ug+s file'同時設(shè)置了suid和sgid位,'chmod o+s file' 則沒有進(jìn)行任何設(shè)置)
數(shù)字模式是一到4個八進(jìn)制數(shù),每個數(shù)由位權(quán)為4,2,1的3位疊加而得。 被省略掉的數(shù)字缺省設(shè)置為零。第一位為4時為suid,2時為sgid,1時為粘滯位,。第二位設(shè)置文件所有者的權(quán)限:可讀(4),可寫(2),可執(zhí)行(1); 第三位設(shè)置了文件所在組其他用戶的權(quán)限,值如上;第四位設(shè)置了其他組的用戶的權(quán)限,值同上。
由于chmod的系統(tǒng)調(diào)用不支持,chomd命令不能改變符號鏈接的權(quán)限。 由于符號鏈接的權(quán)限從不使用,所以這也不成問題。無論如何,由于每個符號連接都可在命令行中列出,chmod改變了所指文件的屬性。 相反,chmod在遞歸目錄遍歷時忽略所碰到的符號連接。
18.6.2      umask
對于root用戶新創(chuàng)建的文件與目錄,注意在沒有必要的情況下,一定要使任何一個用戶沒有訪問的權(quán)限。超級用戶的權(quán)限最好設(shè)置為077。如果某些文件或者目錄需要被別人訪問,生成后再修改權(quán)限就行了。麻煩一點(diǎn)總比被攻擊好。
我們在前面章節(jié)已經(jīng)介紹了umask的概念,它是Linux系統(tǒng)中的一個值,決定了在創(chuàng)建新文件和目錄的時候?yàn)樗x予的默認(rèn)權(quán)限。每個用戶可以改變自己的umask值。在創(chuàng)建文件或者目錄的時候,它以數(shù)值形式?jīng)Q定了默認(rèn)情況下將不會賦予這個文件或者目錄哪些權(quán)限,例如,有個用戶的umask設(shè)置為027,這個數(shù)值可以分解為0、2、7。0表示用戶將獲得所有權(quán)限;2表示用戶所在的組將不會被賦予2-寫權(quán)限;7表示其他用戶將不會賦予任何權(quán)限。
18.7  setuid和setgid
在Linux中,文件除了讀、寫、執(zhí)行權(quán)限外,還有一些特殊權(quán)限。setuid和setgid是其中的一類。它與Linux系統(tǒng)的安全關(guān)系緊密。 Setuid是指設(shè)置程序的有效的執(zhí)行用戶身份(uid)為該文件的主人,而不是調(diào)用該程序的進(jìn)程的uid。Setgid與之類似。Setuid和setgid存在于主人和屬組的執(zhí)行權(quán)限的位置上。
這種權(quán)限怎么用 舉個例子來說,假如某一命令(程序)的主人是root用戶,并且該文件有setuid屬性,但是該文件的讀、寫、執(zhí)行權(quán)限的屬性表明普通用戶user1可以執(zhí)行該命令,那么就表示:當(dāng)user1執(zhí)行該命令時,他具有root的執(zhí)行身份,并獲得相應(yīng)的權(quán)限。一旦該命令執(zhí)行完成,root身份也隨之消失。
18.7.1       setuid權(quán)限的作用
在Linux系統(tǒng)中,setuid權(quán)限起著重要的作用。我們以/bin/login程序來說明這個問題。
(在使用PAM的系統(tǒng)中,不適用)
login是為用戶本地和遠(yuǎn)程登錄時提供交互界面的,用戶在使用系統(tǒng)之前,都需要利用此程序登錄進(jìn)入。簡單來說,登錄過程中l(wèi)ogin程序會訪問兩個文件:/etc/passwd和/etc/shadow,它們的訪問權(quán)限通常是這樣的:
/etc/passwd    - r - - r - - r - -
/etc/shadow    -r - - - - - - - -
login程序需要首先從/etc/passwd文件中讀取用戶的帳戶名稱,然后在/etc/shadow中取得用戶已經(jīng)保存的加密后的密碼字符,與用戶當(dāng)場輸入的密碼進(jìn)行檢驗(yàn)。如果用戶名與密碼正確無誤,用戶就可以進(jìn)入系統(tǒng)了。
但我們應(yīng)該注意用戶發(fā)起的login進(jìn)程會擁有該用戶對系統(tǒng)文件的訪問權(quán)限。而在訪問/etc/shadow文件的時候,做為一個普通用戶,對該文件是沒有任何訪問權(quán)限的,也就是說現(xiàn)在login讀不到/etc/shadow的內(nèi)容。這種情況下,我們就需要setuid權(quán)限來處理了。
login程序文件,它本身是一個setuid權(quán)限的文件,屬主是root。根據(jù)setuid的規(guī)則,普通用戶在運(yùn)行l(wèi)ogin程序的時候,login進(jìn)程會獲得屬主root對系統(tǒng)文件的訪問權(quán)限,這樣/etc/shadow文件就可以讀取了。驗(yàn)證過程得以進(jìn)行。login是個最基本的程序,如果本身不具備setuid權(quán)限,那么用戶就無法登錄了,可見這個權(quán)限的重要性。
與此類似,/bin/passwd程序也是setuid權(quán)限的文件。大家可以思考一下為什么它也需要這個權(quán)限。
18.7.2       setuid權(quán)限對安全的威脅
雖然setuid權(quán)限對Linux操作系統(tǒng)有著重大的意義,但有些文件是不能有setuid權(quán)限的,例如cat、more、vi、tail等可以起顯示和編輯作用的命令。如果有的話會產(chǎn)生什么效果?就會讓普通用戶看到他本不應(yīng)該看到的文件,如/etc/shadow,這里存放著所有用戶加密后的口令。一旦駭客得到root的口令加密串,即使密碼很復(fù)雜,強(qiáng)度很高,一臺性能好的計(jì)算機(jī)也可能在幾小時時間就把root口令算出來,從而非法提升權(quán)限。
如果/bin/ksh這樣的外殼程序有setuid權(quán)限就更厲害了,普通用戶執(zhí)行后就馬上成為超級用戶。
18.7.3       查找setuid/setgid的文件
在駭客攻擊了系統(tǒng)之后,往往會修改一些文件與目錄的屬性,來達(dá)到留后門和其他的目的,我們可以通過下列的手段來找出這些文件,消除隱患。
在當(dāng)前目錄及其子目錄查找所有的SetUID文件:
# find  /  -perm  -4000  -print
在當(dāng)前目錄及其子目錄查找setgid的文件:
# find  / -perm  -2000  -print
在當(dāng)前目錄及其子目錄查找所有用戶都可寫的文件:
# find  /  -perm  -o+w  –print
查找屬于某個用戶的文件,這在確定一個帳戶被非法使用后是有用的:
# find  / -user  xyd  -print
這可以列出系統(tǒng)中所有屬主是用戶xyd的文件
18.8  緩沖區(qū)溢出的安全保護(hù)
18.8.1 什么是緩沖區(qū)溢出
UNIX本身以及其上的許多應(yīng)用程序都是用C語言編寫的,C語言不檢查緩沖區(qū)的邊界。在某些情況下,如果用戶輸入的數(shù)據(jù)長度超過應(yīng)用程序給定的緩沖區(qū),就會覆蓋其他數(shù)據(jù)區(qū)。這稱作“堆棧溢出或緩沖溢出”。
一般情況下,覆蓋其他數(shù)據(jù)區(qū)的數(shù)據(jù)是沒有意義的,最多造成應(yīng)用程序錯誤。但是,如果輸入的數(shù)據(jù)是經(jīng)過“黑客”精心設(shè)計(jì)的,覆蓋堆棧的數(shù)據(jù)恰恰是黑客的入侵程序代碼,黑客就獲取了程序的控制權(quán)。如果該程序恰好是以root運(yùn)行的,黑客就獲得了root權(quán)限,然后他就可以編譯黑客程序、留下入侵后門等,實(shí)施進(jìn)一步地攻擊。按照這種原理進(jìn)行的黑客入侵就叫做“堆棧溢出攻擊”。
緩沖區(qū)溢出攻擊的目的在于擾亂具有某些特權(quán)運(yùn)行的程序的功能,這樣可以使得攻擊者取得程序的控制權(quán),如果該程序具有足夠的權(quán)限,那么整個主機(jī)就被控制了。一般而言,攻擊者攻擊root程序,然后執(zhí)行類似“exec(sh)”的執(zhí)行代碼來獲得root的shell,但不一直是這樣的。為了達(dá)到這個目的,攻擊者必須達(dá)到如下的兩個目標(biāo):
1. 在程序的地址空間里安排適當(dāng)?shù)拇a。
2. 通過適當(dāng)?shù)爻跏蓟拇嫫骱痛鎯ζ?,讓程序跳轉(zhuǎn)到我們安排的地址空間執(zhí)行。
18.8.2      防御緩沖區(qū)溢出的方法
1、開放程序時仔細(xì)檢查溢出情況,不允許數(shù)據(jù)溢出緩沖區(qū)。由于編程和編程語言的原因,這非常困難,而且不適合大量已經(jīng)在使用的程序;
2、使用檢查堆棧溢出的編譯器或者在程序中加入某些記號,以便程序運(yùn)行時確認(rèn)禁止黑客有意造成的溢出。問題是無法針對已有程序,對新程序來講,需要修改編譯器;
3、經(jīng)常檢查你的操作系統(tǒng)和應(yīng)用程序提供商的站點(diǎn),只要發(fā)現(xiàn)他們提供補(bǔ)丁程序,就馬上下載并且應(yīng)用在系統(tǒng)上,這是最好的方法。但是系統(tǒng)管理員總要比攻擊者慢一步,如果這個有問題的軟件是可選的或者是臨時的,把它從你的系統(tǒng)中刪除。
18.9  網(wǎng)絡(luò)安全設(shè)置
18.9.1      停止不必要的網(wǎng)絡(luò)服務(wù)
每一個開放的網(wǎng)絡(luò)服務(wù)就象一扇開著的門,為駭客提供了攻擊的可能。在進(jìn)行網(wǎng)絡(luò)安全設(shè)置的時候,有一個原則就是禁用不需要的服務(wù)。在系統(tǒng)不需要telnet時(可以用ssh代替,來進(jìn)行遠(yuǎn)程管理),禁止它,如果不需要其他rloing、rsh等服務(wù),也禁止它。
在Linux中如果禁止某個服務(wù),我們可以在/etc/init.d目錄中尋找這個服務(wù)的啟動腳本,將其移動到其他備份的目錄,或者干脆刪除,這樣系統(tǒng)啟動時該服務(wù)就不會被運(yùn)行。還要kill掉系統(tǒng)中正在活動的相應(yīng)進(jìn)程。
另外還有的服務(wù)是從xinetd超級守護(hù)進(jìn)程啟動的,這時該服務(wù)的啟動配置存放在/etc/xinetd.conf文件或者/etc/xinetd.d目錄,以單獨(dú)文件的形式出現(xiàn)。這時要停止這項(xiàng)服務(wù),只要在相應(yīng)項(xiàng)的上面將disable選項(xiàng)的值改為yes,如下:
service ftp
{
disable = yes
socket_type             = stream
wait                    = no
user                    = root
server                  = /usr/sbin/vsftpd
nice                    = 10
}
注意此時xinetd的配置文件雖然改變,但還沒有生效。應(yīng)用kill –HUP的方式讓xinetd重新讀入配置文件,該服務(wù)才會真正被停止。
18.9.2      TCP Wrappers
18.9.2.1  TCPWrappers的運(yùn)行原理
TCP Wrappers的主要功能是,對本地的Internet網(wǎng)絡(luò)服務(wù)進(jìn)行訪問控制:控制哪個客戶端可以訪問本地系統(tǒng)的哪個服務(wù),哪些客戶端不可以。
TCP Wrappers提供了一個守護(hù)進(jìn)程,“wrapper”是指對于很多程序來說,它象一個在外面的包裝物一樣,起到保護(hù)的做用。TCPWrappers安裝的時候并不需要對現(xiàn)有的軟件進(jìn)行很大的改動,運(yùn)行之后,它會檢查所請求的服務(wù)和相應(yīng)的客戶端進(jìn)行安全驗(yàn)證,在這個過程中不會與客戶端和服務(wù)器交換信息和建立連接,是一個輕量級的保護(hù)程序。
TCP Wrappers配置的時候需要首先理解系統(tǒng)inetd – 超級守護(hù)進(jìn)程的作用原理和/etc/inetd.conf文件的配置方法。建議不清楚的朋友先去看一看相關(guān)文檔。
18.9.2.2  修改/etc/inetd.conf
前面已經(jīng)介紹過了,TCP Wrappers會在正常的服務(wù)程序之外加一個“殼”。這個殼會在系統(tǒng)真正應(yīng)答請求、建立連接之前檢查遠(yuǎn)程主機(jī)名稱和用戶等信息,查看是否符合預(yù)先的設(shè)定。在安裝完TCP Wrappers并進(jìn)行設(shè)定時,第一步要做的就是修改/etc/inetd.conf文件,規(guī)定哪些服務(wù)程序需要由TCP Wrappers來進(jìn)行保護(hù)。以ssh服務(wù)為例,我們在/etc/inetd.conf文件中會有這么一行條目:
ssh  stream  tcp     nowait  root    /usr/local/bin/sshd  sshd
它說明了如果請求ssh服務(wù)時,inetd進(jìn)程會啟動/usr/local/bin目錄下的sshd程序。我們需要這樣修改:
ssh  stream  tcp     nowait  root    /usr/local/bin/tcpd    /usr/local/bin/sshd
現(xiàn)在這個條目說明了inetd進(jìn)程會在接到sshd服務(wù)請求時首先運(yùn)行/usr/local/bin目錄下的tcpd程序,即TCP Wrappers的主程序,進(jìn)行檢查。如果符合設(shè)定,則運(yùn)行后面的/usr/local/bin/sshd程序,與客戶端建立連接,進(jìn)行通訊;如果不符合就不運(yùn)行sshd程序,那些非法的連接就被拒絕了。
其他的in.ftpd、in.telnetd、fingerd等程序都可以以這種方式定義成需要TCP Wrappers來保護(hù)的。/etc/inetd.conf文件修改之后,配置工作就完成了第一步。注意這時配置還沒有生效,必須重啟inetd守護(hù)進(jìn)程來讀取修改過的inetd.conf文件,使其生效。
# kill  –HUP  inetd PID
18.9.2.3  配置/etc/hosts.allow和/etc/hosts.deny
下一步需要配置/etc/hosts.allow和/etc/hosts.deny文件,TCP Wrappers檢查哪些遠(yuǎn)程客戶端可以訪問本地的哪些服務(wù),就是由這個兩個文件所限定的。
文件語法
服務(wù)類型:本服務(wù)有效ip范圍 :許可或拒絕
文件范例
/etc/hosts.allow
in.telnetd:192.168.0.185:ALLOW
in.ftpd:192.168.0. :ALLOW
in.rshd :all:/usr/local/sbin/safe_finger -l  @%h | usr/ucb/mail admin@yoursite.com
這個配置文件的含義是對telnet服務(wù)來講,只允許來自secu.unix.org的連接;對ftp服務(wù)來講,允許192.168.0.0/24這個c類地址的連接。in.rshd這一部分語法稍微復(fù)雜一些,它的意思是遠(yuǎn)程任何一個客戶端每次試圖使用rsh連接本系統(tǒng)的時候系統(tǒng)會finger發(fā)起連接請求的遠(yuǎn)程用戶,并立即將結(jié)果發(fā)mail到一個管理員的信箱admin@yoursite.com。這是由于試圖進(jìn)行rsh的連接都是有很大的潛在危險性的,這說明也許系統(tǒng)已經(jīng)被人入侵,并安裝了.rhosts文件。這是一個非常危險的信號,所以需要引起極大的注意。所用的safe_finger是TCP Wrappers自帶的程序。
/etc/hosts.deny
ALL:ALL:DENY
它的含義是拒絕所有的連接請求。
TCP Wrappers的/etc/hosts.allow與hosts.deny文件設(shè)定時,類似包過濾防火墻的規(guī)則定制。TCP Wrappers會按照由上至下的順序逐一核對每一條規(guī)則(先hosts.allow后hosts.deny文件),只要有一條規(guī)則符合當(dāng)前連接的條件,此規(guī)則就會生效建立連接了。在hosts.deny中規(guī)定拒絕所有連接,會在hosts.allow文件中沒有允許連接時生效,這樣沒有在hosts.allow文件中允許的連接都會由于這條規(guī)則而被拒絕掉。
18.9.3      Linux防火墻 - iptables
18.9.3.1  iptables與netfilter
從1.1內(nèi)核開始,linux就已經(jīng)具有包過慮功能了,在2.0的內(nèi)核中我們采用ipfwadm來操作內(nèi)核包過慮規(guī)則。之后在2.2內(nèi)核中,采用了大家并不陌生的ipchains來控制內(nèi)核包過慮規(guī)則。現(xiàn)在最新linux內(nèi)核版本是2.4.1,在2.4內(nèi)核中我們不再使用ipchains,而是采用一個全新的內(nèi)核包過慮管理工具--iptables。 這個全新的內(nèi)核包過慮工具將使用戶更易于理解其工作原理,更容易被使用,當(dāng)然也將具有更為強(qiáng)大的功能。
iptables只是一個管理內(nèi)核包過濾的工具,iptables 可以加入、插入或刪除核心包過濾表格(鏈)中的規(guī)則。實(shí)際上真正來執(zhí)行這些過慮規(guī)則的是netfilter(Linux 核心中一個通用架構(gòu))及其相關(guān)模塊(如iptables模塊和nat模塊),下面我們一起來看看netfilter的工作原理。
18.9.3.2  netfilter工作原理
netfilter是Linux 核心中一個通用架構(gòu),它提供了一系列的"表"(tables),每個表由若干"鏈"(chains)組成,而每條鏈中可以有一條或數(shù)條規(guī)則(rule)組成。我們可以這樣來理解,netfilter是表的容器,表是鏈的容器,而鏈又是規(guī)則的容器(如下圖所示)。
系統(tǒng)缺省的表為"filter",該表中包含了INPUT、FORWARD和OUTPUT 3個鏈。每一條鏈中可以有一條或數(shù)條規(guī)則,每一條規(guī)則都是這樣定義的“如果數(shù)據(jù)包頭符合這樣的條件,就這樣處理這個數(shù)據(jù)包”。當(dāng)一個數(shù)據(jù)包到達(dá)一個鏈時,系統(tǒng)就會從第一條規(guī)則開始檢查,看是否符合該規(guī)則所定義的條件: 如果滿足,系統(tǒng)將根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包;如果不滿足則繼續(xù)檢查下一條規(guī)則。最后,如果該數(shù)據(jù)包不符合該鏈中任一條規(guī)則的話,系統(tǒng)就會根據(jù)該鏈預(yù)先定義的策略(policy)來處理該數(shù)據(jù)包。
數(shù)據(jù)包在filter表中的流程如圖二所示。有數(shù)據(jù)包進(jìn)入系統(tǒng)時,系統(tǒng)首先根據(jù)路由表決定將數(shù)據(jù)包發(fā)給哪一條鏈,則可能有三種情況:
1.如果數(shù)據(jù)包的目的地址是本機(jī),則系統(tǒng)將數(shù)據(jù)包送往INPUT鏈,如果通過規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進(jìn)程處理;如果沒通過規(guī)則檢查,系統(tǒng)就會將這個包丟掉;
2.如果數(shù)據(jù)包的目的地址不是本機(jī),也就是說,這個包將被轉(zhuǎn)發(fā),則系統(tǒng)將數(shù)據(jù)包送往FORWARD鏈,如果通過規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進(jìn)程處理;如果沒通過規(guī)則檢查,系統(tǒng)就會將這個包丟掉;
3.如果數(shù)據(jù)包是由本地系統(tǒng)進(jìn)程產(chǎn)生的,則系統(tǒng)將其送往OUTPUT鏈,如果通過規(guī)則檢查,則該包被發(fā)給相應(yīng)的本地進(jìn)程處理;如果沒通過規(guī)則檢查,系統(tǒng)就會將這個包丟掉。
從以上我們可以看出,netfilter比起以前的ipfwadm和ipchains思路上清晰了好多,也好理解了好多,這對于原先對ipfwadm和ipchains總是感到一頭霧水的用戶來說無疑是一個福音。
18.9.3.3 載入iptables模塊
要使用iptables,還必須載入相關(guān)模塊。可以使用以下命令載入相關(guān)模塊:
#modprobe iptable_tables
modprobe命令會自動載入指定模塊及其相關(guān)模塊。iptables_filter模塊會在運(yùn)行時自動載入。
對鏈的操作的語法
建立一個新鏈 (-N)
刪除一個空鏈 (-X)
改變一個內(nèi)建鏈的原則 (-P)
列出一個鏈中的規(guī)則 (-L)
清除一個鏈中的所有規(guī)則 (-F)
歸零(zero)一個鏈中所有規(guī)則的封包字節(jié)(byte) 記數(shù)器 (-Z)
對規(guī)則的操作的語法
加入(append)一個新規(guī)則到一個鏈 (-A)的最后
在鏈內(nèi)某個位置插入(insert) 一個新規(guī)則(-I),通常是插在最前面
在鏈內(nèi)某個位置替換(replace) 一條規(guī)則 (-R)
在鏈內(nèi)某個位置刪除(delete) 一條規(guī)則 (-D)
刪除(delete)鏈內(nèi)第一條規(guī)則 (-D)
指定源地址和目的地址
通過--source/--src/-s來指定源地址(這里的/表示或者的意思,下同),通過--destination/--dst/-s來指定目的地址??梢允褂靡韵滤闹蟹椒▉碇付╥p地址:
使用完整的域名,如“www.kernel.org”;
使用ip地址,如“192.168.1.1”;
用x.x.x.x/x.x.x.x指定一個網(wǎng)絡(luò)地址,如“192.168.1.0/255.255.255.0”;
用x.x.x.x/x指定一個網(wǎng)絡(luò)地址,如“192.168.1.0/24”這里的24表明了子網(wǎng)掩碼的有效位數(shù),這是UNIX環(huán)境中通常使用的表示方法。缺省的子網(wǎng)掩碼數(shù)是32,也就是說指定192.168.1.1等效于192.168.1.1/32。
指定協(xié)議
可以通過--protocol/-p選項(xiàng)來指定協(xié)議,比如-p tcp。
指定網(wǎng)絡(luò)接口
可以使用--in-interface/-i或--out-interface/-o來指定網(wǎng)絡(luò)接口。需要注意的是,對于INPUT鏈來說,只可能有-i,也即只會有進(jìn)入的包;通理,對于OUTPUT鏈來說,只可能有-o,也即只會有出去的包。只有FORWARD鏈既可以有-i的網(wǎng)絡(luò)接口,也可以有-o的網(wǎng)絡(luò)接口。我們也可以指定一個當(dāng)前并不存在的網(wǎng)絡(luò)接口,比如ppp0,這時只有撥號成功后該規(guī)則才有效。
LOG目標(biāo)擴(kuò)展
netfilter缺省的目標(biāo)(也就是一旦滿足規(guī)則所定義以后系統(tǒng)對數(shù)據(jù)包的處理方法)有:
ACEEPT:接收并轉(zhuǎn)發(fā)數(shù)據(jù)包
DORP:丟掉數(shù)據(jù)包
目標(biāo)擴(kuò)展模塊提供了擴(kuò)展的目標(biāo)。LOG目標(biāo)提供了記錄數(shù)據(jù)包的功能。該目標(biāo)擴(kuò)展有以下幾個參數(shù):
--log-level:指定記錄信息的級別,級別有debug、info、notice、warning、err、crit、alert、emerg分別對應(yīng)7到0的數(shù)字。其含義請參看syslog.conf的man手冊。
--log-prefix:后接一個最長為30個字符的字符串,該字符串將出現(xiàn)在每一條日志的前面。
4.12 REJECT目標(biāo)擴(kuò)展
該目標(biāo)擴(kuò)展完全和DORP標(biāo)準(zhǔn)目標(biāo)一樣,除了向發(fā)送方返回一個“port unreachable”的icmp信息外。
還有其他一些擴(kuò)展是常用的,如果你想了解可以參考Packet-Filtering - HOWTO。當(dāng)然,最直接獲得幫助的辦法是查看iptables的在線幫助,比如想得到關(guān)于mac匹配擴(kuò)展的幫助可以執(zhí)行“iptables-m mac -help”命令,想得到LOG目標(biāo)擴(kuò)展的幫助可以執(zhí)行“iptables -j LOG -help”命令。
18.9.4      網(wǎng)絡(luò)防治病毒
在Linux平臺上目前只有幾種病毒,而且并沒有廣泛傳播,不必考慮防毒問題。不過當(dāng)前Windows做為主要的桌面操作系統(tǒng),深受病毒的困擾。系統(tǒng)管理員又不能不對其進(jìn)行處理。為此我們在本章對網(wǎng)絡(luò)中病毒的防治給出一些建議。
18.9.4.1  網(wǎng)關(guān)與郵件防毒
在目前的郵件服務(wù)器前段安裝網(wǎng)關(guān)防毒產(chǎn)品,從網(wǎng)關(guān)過濾郵件病毒。雖然Linux服務(wù)器本身不會染毒,但如果做為網(wǎng)關(guān)使用,病毒會通過Linux服務(wù)器傳播。如果借助適合的殺毒產(chǎn)品, 在Linux服務(wù)器進(jìn)行病毒查殺,會有很好的效果;同樣在目前郵件服務(wù)器上安裝郵件防毒產(chǎn)品,需要進(jìn)行合理配置,禁止危險附件郵件的接收和發(fā)送?,F(xiàn)在已經(jīng)有一些殺毒軟件公司開發(fā)出支持Linux平臺的網(wǎng)關(guān)和郵件服務(wù)器查毒軟件。
18.9.4.2  日常防毒管理
所有用戶必須強(qiáng)制安裝網(wǎng)絡(luò)防毒客戶端,不允許關(guān)閉、刪除或者禁用,一旦發(fā)現(xiàn)將予以警告記錄。采用域策略禁止任何人使用弱口令,并發(fā)布口令策略說明,指導(dǎo)用戶設(shè)置強(qiáng)度較高的口令。使用弱口令的掃描和審計(jì)工具定期檢測網(wǎng)絡(luò)中的弱口令和開放共享,對于存在弱口令用戶的設(shè)備使用者進(jìn)行通告,未能按期修補(bǔ)的,按照病毒防范策略進(jìn)行斷網(wǎng)或記入公司考評處理。使用漏洞掃描器定期檢查網(wǎng)絡(luò)中存在漏洞的主機(jī),對于存在嚴(yán)重安全問題的設(shè)備使用者進(jìn)行通告,未能按期修補(bǔ)的,按照防范策略進(jìn)行斷網(wǎng)或記入公司考評處理。
網(wǎng)絡(luò)防毒產(chǎn)品根據(jù)病毒防范策略定期定時進(jìn)行掃描。每月進(jìn)行匯總,對感染病毒次數(shù)最多的用戶進(jìn)行通報(bào)。移動用戶在可能的情況下,需要首先進(jìn)行查殺病毒后方可接入網(wǎng)絡(luò)。
18.9.4.3  病毒事件的處理
對于存在問題的尚未感染或已經(jīng)感染病毒的服務(wù)器,通知到人,并且必須在當(dāng)天完成殺毒和修補(bǔ)工作,否則將進(jìn)行斷網(wǎng)設(shè)置和通報(bào)備案。 對于高層管理人員的設(shè)備,安全管理員將協(xié)同系統(tǒng)管理員一起,直接為此類用戶進(jìn)行殺毒和修補(bǔ)的工作。根據(jù)安全服務(wù)商的其他建議,要求集成商或網(wǎng)絡(luò)管理員進(jìn)行臨時性的訪問控制、流量限制等工作。
總體策略上來看,對于普通用戶,尤其是非技術(shù)員工,盡量以自動和強(qiáng)制性執(zhí)行的策略進(jìn)行管理;對于服務(wù)器管理員,應(yīng)該通過自主修補(bǔ),安全管理員監(jiān)督的方式管理;對于高層管理用戶,則建議由安全管理員直接支持的方式進(jìn)行。
18.10     簡單攻擊檢測
18.10.1    syslog日志
審計(jì)和日志功能對于系統(tǒng)來說是非常重要的,可以把我們感興趣的操作都記錄下來,供分析和檢查。Linux采用了syslog工具來實(shí)現(xiàn)此功能,如果配置正確的話,所有在主機(jī)上發(fā)生的事情都會被記錄下來,不管是好的還是壞的。
syslog已被許多日志系統(tǒng)采納,它用在許多保護(hù)措施中--任何程序都可以通過syslog記錄事件。syslog可以記錄系統(tǒng)事件,可以寫到一個文件或設(shè)備中,或給用戶發(fā)送一個信息。它能記錄本地事件或通過網(wǎng)絡(luò)紀(jì)錄另一個主機(jī)上的事件。
syslog依據(jù)兩個重要的文件:/sbin/syslogd(守護(hù)進(jìn)程)和/etc/syslog.conf配置文件,習(xí)慣上,多數(shù)syslog信息被寫到/var/adm或/var/log目錄下的信息文件中(messages.*)。一個典型的syslog紀(jì)錄包括生成程序的名字和一個文本信息。它還包括一個設(shè)備和一個行為級別(但不在日志中出現(xiàn))。
/etc/syslog.conf的一般格式如下:
設(shè)備.行為級別 [;設(shè)備.行為級別]    記錄行為
設(shè)備           描述
auth         認(rèn)證系統(tǒng):login、su、getty等,即詢問用戶名和口令
authpriv      同LOG_AUTH,但只登錄到所選擇的單個用戶可讀的文件中
cron         cron守護(hù)進(jìn)程
daemon       其他系統(tǒng)守護(hù)進(jìn)程,如routed
kern        內(nèi)核產(chǎn)生的消息
lpr         打印機(jī)系統(tǒng):lpr、lpd
mail        電子郵件系統(tǒng)
news        網(wǎng)絡(luò)新聞系統(tǒng)
syslog       由syslogd產(chǎn)生的內(nèi)部消息
user        隨機(jī)用戶進(jìn)程產(chǎn)生的消息
uucp        UUCP子系統(tǒng)
local0~local7   為本地使用保留
行為級別       描述
debug        包含調(diào)試的信息,通常旨在調(diào)試一個程序時使用
info        情報(bào)信息
notice       不是錯誤情況,但是可能需要處理
warn(warning)   警告信息
err(error)     錯誤信息
crit        重要情況,如硬盤錯誤
alert        應(yīng)該被立即改正的問題,如系統(tǒng)數(shù)據(jù)庫破壞
emerg(panic)    緊急情況
記錄行為(舉例)    描述
/dev/console     發(fā)送消息到控制臺
/var/adm/messages  把消息寫到文件/var/adm/messages
@loghost       把消息發(fā)到其它的日志記錄服務(wù)器
fred,user1      傳送消息給用戶
*           傳送消息給所有的在線用戶
有個小命令logger為syslog系統(tǒng)日志文件提供一個shell命令接口,使用戶能創(chuàng)建日志文件中的條目。用法:logger 例如:logger This is a test!
它將產(chǎn)生一個如下的syslog紀(jì)錄:Apr 26 11:22:34 xyd: This is a test!
18.10.2    logcheck
Logcheck是一個安全軟件包,用來實(shí)現(xiàn)自動檢查日志文件,以發(fā)現(xiàn)安全入侵和不正常的活動。Logcheck用logtail程序來記錄讀到的日志文件的位置,下一次運(yùn)行的時候從記錄下的位置開始處理新的信息。所有的源代碼都是公開的,實(shí)現(xiàn)方法也非常簡單。
Logcheck SHELL腳本和logtail.c程序用關(guān)鍵字查找的方法進(jìn)行日志檢測。在這兒提到的關(guān)鍵字就是指在日志文件中出現(xiàn)的關(guān)鍵字,會觸發(fā)向系統(tǒng)管理員發(fā)的報(bào)警信息。Logcheck的配置文件自帶了缺省的關(guān)鍵字,適用于大多數(shù)的*inx系統(tǒng)。但是最好還是自己檢查一下配置文件,看看自帶的關(guān)鍵字是否符合自己的需要。
Logcheck腳本是簡單的SHELL程序,logtail.c程序只調(diào)用了標(biāo)準(zhǔn)的ANSI C函數(shù)。Logcheck要在cron守護(hù)進(jìn)程中配置,至少要每小時運(yùn)行一次。腳本用簡單的grep命令來從日志文件檢查不正常的活動,如果發(fā)現(xiàn)了就發(fā)MAIL給管理員。如果沒有發(fā)現(xiàn)異常活動,就不會收到MAIL。
18.10.3    logcheck.sh
logcheck.sh 主腳本文件??刂扑械奶幚磉^程,用grep命令檢查日志文件,發(fā)現(xiàn)問題報(bào)告系統(tǒng)管理員。由cron定時啟動。
logtail 記錄日志文件上次處理到的位置。被logcheck程序調(diào)用,避免重復(fù)處理已處理過的日志文件。所有的日志文件都由此程序處理,在同一目錄下會產(chǎn)生文件######.offset,其中######是檢查的日志文件名。文件中記錄了logtail開始處理的偏移量,如果刪除掉,則從文件開始處進(jìn)行處理。Logcheck跟蹤日志文件的inode號和文件大小,如果inode號發(fā)生變化,或者是文件大小比上次運(yùn)行時的小, logtail會重置偏移量,處理整個文件。
Logcheck.hacking 文件中包含了系統(tǒng)受到攻擊時的關(guān)鍵字。這個文件的關(guān)鍵字比較稀少,除非能知道某種特定的攻擊方式的特征。缺省的關(guān)鍵字是ISS(Internet Security Scanner)攻擊產(chǎn)生的,或者是sendmail中的地址欄里的非法語法。在日志文件中找到了關(guān)鍵字就會給管理員發(fā)信。
logcheck.violations 文件中包含了產(chǎn)生否定或拒絕信息的系統(tǒng)事件。如denied,refused等。
logcheck.violations.ignore 文件中包含了要對logcheck.violations進(jìn)行反向查找的關(guān)鍵字。
18.10.4    配置syslog.conf
為了使logcheck運(yùn)行正常,先要對syslog.conf進(jìn)行配置,你應(yīng)該根據(jù)自己的需要進(jìn)行配置,下面給出的只是一個例子。
把下面的內(nèi)容加到/etc/syslog.conf中
#記錄mail,news以外的消息
*.*;mail.none;news.none -/var/log/messages
#記錄認(rèn)證請求
auth.*;authpriv.* /var/log/authlog
#記錄所有的內(nèi)核消息
kern.* /var/log/kernlog
#記錄警告和錯誤消息
*.warn;*.err /var/log/syslog
這四個文件/var/log/messages,/var/log/authlog,/var/log/kernlog,/var/log/syslog也就是logcheck要檢查的日志文件。
重啟syslog,[root@xyd]#/etc/rc.d/init.d/syslog restart
用編輯器(vi等)打開文件/usr/local/etc/logcheck.sh,在其中會找到下面的內(nèi)容
# Linux Red Hat Version 3.x, 4.x
$LOGTAIL /var/log/messages > $TMPDIR/check.$$
$LOGTAIL /var/log/secure >> $TMPDIR/check.$$
$LOGTAIL /var/log/maillog >> $TMPDIR/check.$$
這是logcheck自帶的內(nèi)容,也就是logcheck要檢查的日志文件,把它該為下面的內(nèi)容,使之于syslog.conf的內(nèi)容相一致:(應(yīng)該根據(jù)你配置的syslog.conf進(jìn)行修改)
$LOGTAIL /var/log/messages > $TMPDIR/check.$$
$LOGTAIL /var/log/authlog >> $TMPDIR/check.$$
$LOGTAIL /var/log/kernlog >> $TMPDIR/check.$$
$LOGTAIL /var/log/syslog >> $TMPDIR/check.$$
還可以找到一行為 SYSADMIN=root,指的是發(fā)郵件時的收信人,缺省為root@localhost,本機(jī)的root用戶,如果機(jī)器與Internet相連,也可以指定真實(shí)的賬號,我就把它改為了xyd@redhat.com.cn,這樣就可以隨時收到郵件了,不須用root賬號登錄到linux機(jī)器上去。
在/etc/crontab中增加一項(xiàng),讓cron定時啟動logcheck。關(guān)于cron的用法請參考相應(yīng)文檔。
00,10,20,30,40,50 * * * *root /usr/local/etc/logcheck.sh
每10分鐘運(yùn)行一次。
18.11     Linux安全工具
18.11.1    saint
SAINT全稱安全管理員集成網(wǎng)絡(luò)工具(SecurityAdministrator's Integrated Network Tool)。它脫胎于著名的網(wǎng)絡(luò)脆弱性檢測工具SATAN(Security Administrator Tool for Analyzing Network,安全管理員網(wǎng)絡(luò)分析工具),也就是通常說撒旦:)。但是,SATAN的兩位作者Dan Farmer和Wietse Venema并沒有參與SAINT的開發(fā)。特點(diǎn)SAINT是一個集成化的網(wǎng)絡(luò)脆弱性評估環(huán)境。它可以幫助系統(tǒng)安全管理人員收集網(wǎng)絡(luò)主機(jī)信息,發(fā)現(xiàn)存在或者潛在的系統(tǒng)缺陷;提供主機(jī)安全性評估報(bào)告;進(jìn)行主機(jī)安全策略測試。SAINT還具有非常友好的界面,用戶可以在本地或者遠(yuǎn)程通過Netscape、Mozilla、lynx等瀏覽器對其進(jìn)行管理,自然還包括Micro$oft Internet Explorer(遠(yuǎn)程管理模式下)。工作模式SAINT有兩種工作模式:簡單模式(simple mode)和探究模式(exploratory mode)。簡單模式(simple mode)在這種模式下,SIANT通過測試各種網(wǎng)絡(luò)服務(wù),例如:finger、NFS、NIS、ftp、tftp、rexd、statd等,來盡可能地收集遠(yuǎn)程主機(jī)和網(wǎng)絡(luò)的信息。除了系統(tǒng)提供的各種服務(wù)之外,這些信息還包括系統(tǒng)現(xiàn)有或潛在的安全缺陷,包括:網(wǎng)絡(luò)服務(wù)的錯誤配置;系統(tǒng)或者網(wǎng)絡(luò)工具的安全缺陷;脆弱的安全策略。然后,SAINT把這些信息以HTML格式輸出到瀏覽器,用戶可以通過瀏覽器對數(shù)據(jù)進(jìn)行分析、查詢收集的信息。探究模式SAINT真正強(qiáng)大之處還在于其探究模式?;陂_始搜集的數(shù)據(jù)和用戶配置的規(guī)則集,通過掃描次級主機(jī)來測試主機(jī)之間的信任通道、主機(jī)之間的依賴性,以及實(shí)現(xiàn)更深入的信息收集。這樣用戶不但可以使用分析主機(jī)和網(wǎng)絡(luò)的,而且可以通過測試主機(jī)或者網(wǎng)絡(luò)之間信任的繼承關(guān)系,幫助用戶對系統(tǒng)的安全級別作出合理的判斷。工作機(jī)制在SAINT軟件包中有一個目標(biāo)捕捉程序,通常這個程序使用fping判斷某臺主機(jī)或者摸個子網(wǎng)中的主機(jī)是否正在運(yùn)行。如果主機(jī)在防火墻之后,就通過tcp_scan進(jìn)行端口掃描來判斷目標(biāo)主機(jī)是否正在運(yùn)行。接著把目標(biāo)主機(jī)列表傳遞給數(shù)據(jù)收集引擎進(jìn)行信息收集。最后SAINT把收集的信息和安全分析/評估報(bào)告以HTML格式輸出到用戶界面(瀏覽器)。
18.11.2    SSH
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如:ftp、pop和telnet在本質(zhì)上都是不安全的,因?yàn)樗鼈冊诰W(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗(yàn)證方式也是有其弱點(diǎn)的,就是很容易受到"中間人"(man-in-the-middle)這種方式的攻擊。所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務(wù)器接收你的傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被"中間人"一轉(zhuǎn)手做了手腳之后,就會出現(xiàn)很嚴(yán)重的問題。
SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣"中間人"這種攻擊方式就不可能實(shí)現(xiàn)了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣?。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的"通道"。
最初SSH是由芬蘭的一家公司開發(fā)的。但是因?yàn)槭馨鏅?quán)和加密算法的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費(fèi)的,可以預(yù)計(jì)將來會有越來越多的人使用它而不是SSH。
SSH是由客戶端和服務(wù)端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務(wù)程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。
18.11.3    tcplogd
tcplogd可以記錄TCP協(xié)議的連接情況,與操作系統(tǒng)本身的TCP連接記錄不同的是,tcplogd能夠記錄半連接的狀態(tài),以此來判斷是否發(fā)生了SYN DoS攻擊。它還可以檢測是否發(fā)生了FTP bounce 攻擊,F(xiàn)IN packet 掃描和Null掃描等攻擊。
18.11.4    swatch
swatch 是一個實(shí)時的日志監(jiān)控工具。您可以設(shè)置您所感興趣的事件,它可以在事件發(fā)生的時候告訴您。Swatch 有兩種運(yùn)行方式:一種可以在檢查日志完畢退出,另一種可以連續(xù)監(jiān)視日志中的新信息。
Swatch 提供了許多通知方式,例如:email,振鈴,終端輸出,多種顏色等等。
您可以從下面的站點(diǎn)下載:ftp://ftp.stanford.edu/general/security-tools/swatch/
swatch 的安裝需要一些 perl 庫的支持,安裝前確信您的系統(tǒng)已經(jīng)可以支持 perl。
Swatch 可以在命令行中進(jìn)行一些簡單的設(shè)置,例如日志循環(huán)時告訴 swatch 在循環(huán)完畢后重新啟動等等。
配置文件 swatchmessage 是 swatch 軟件的重點(diǎn)。這個文本文件告訴 swatch 需要監(jiān)視什么日志,需要尋找什么觸發(fā)器,和當(dāng)觸發(fā)時所要執(zhí)行的動作。當(dāng) swatch 發(fā)現(xiàn)到與 swatchmessage 中定義的觸發(fā)器正則表達(dá)式相符時,它將執(zhí)行在 swatchrc 中定義的通知程序。Swatch 通過使用/usr/bin/tail -f 實(shí)時監(jiān)視日志文件。
在這里我們不想過多的將如何配置,配置 swatch 非常簡單,您可以參考 swatch 自帶的配置文件。針對每個服務(wù)例如:ftp,sendmail 等等,你必須為每個您所關(guān)心的服務(wù)配置一個 swatchmessage 文件。
Swatch 啟動時可以帶很多參數(shù),但使用通常如下格式啟動它就可以了:
/usr/local/bin/swatch -c /var/log/syslogmessage-t /var/log/syslog  -r 06:00&
-c 參數(shù)用于指定配置文件,-t 參數(shù)指定實(shí)時監(jiān)視的日志文件,-r 指定重起的時間,"&" 使 swatch 在后臺運(yùn)行。啟動后,swatch 產(chǎn)生子進(jìn)程,因此 swatch 是以兩個進(jìn)程運(yùn)行的,在停止 swatch 時必須殺掉兩個進(jìn)程。
也可以通過 logrotate 配置在日志循環(huán)后重啟swatch,可以在 /etc/logrotate.d 建立一個您所要關(guān)心的日志的循環(huán)文件,其中最關(guān)鍵的是要加入下面這行:
/usr/local/bin/swatch -c/var/log/syslogmessage -t /var/log/syslog -r + 0
其他的地方可以仿造別的同目錄下的文件。
18.11.5    tcpdump
Linux作為網(wǎng)絡(luò)服務(wù)器,特別是作為路由器和網(wǎng)關(guān)時,數(shù)據(jù)的采集和分析是必不可少的。我們會使用Sniffer,這種工具實(shí)際上就是一個網(wǎng)絡(luò)上的抓包工具,同時還可以對抓到的包進(jìn)行分析。
由于在共享式的網(wǎng)絡(luò)中,信息包是會廣播到網(wǎng)絡(luò)中所有主機(jī)的網(wǎng)絡(luò)接口,只不過在沒有使用sniffer工具之前,主機(jī)的網(wǎng)絡(luò)設(shè)備會判斷該信息包是否應(yīng)該接收,這樣它就會拋棄不應(yīng)該接收的信息包,sniffer工具卻使主機(jī)的網(wǎng)絡(luò)設(shè)備接收所有到達(dá)的信息包,這樣就達(dá)到了網(wǎng)絡(luò)監(jiān)聽的效果。其實(shí),sniffer工具既可以適合于黑客的使用,也同樣有利于網(wǎng)絡(luò)管理員和網(wǎng)絡(luò)程序員。對于網(wǎng)絡(luò)管理人員來說,使用sniffer可以隨時掌握網(wǎng)絡(luò)的實(shí)際情況,在網(wǎng)絡(luò)性能急劇下降的時候,可以通過sniffer工具來分析原因,找出造成網(wǎng)絡(luò)阻塞的來源。對于網(wǎng)絡(luò)程序員來說,通過sniffer工具來調(diào)試程序。
Linux系統(tǒng)中的網(wǎng)絡(luò)數(shù)據(jù)采集分析工具tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來提供分析。它功能強(qiáng)大,支持正則表達(dá)式,針對網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。
18.11.6          whois
whois的作用是從網(wǎng)上的Whois數(shù)據(jù)庫中,查詢曾在Who服務(wù)器上登記過的用戶或站點(diǎn)的聯(lián)絡(luò)信息,比如查詢對象的名稱、Email地址和電話號碼等等。如果覺得某個IP地址或者計(jì)算機(jī)比較可疑,可以用whois命令查看一下它的信息,輔助你進(jìn)行攻擊的判斷。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
- Solaris - 教你如何配置安全的SOLARIS系統(tǒng)[整理] - ChinaUnix.net
學(xué)習(xí)筆記:Linux日志文件
linux日志分析的詳細(xì)介紹
Linux日志文件總結(jié)
Linux 日志審計(jì)
hp-unix命令大集合3
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服