原文:LinuxFocus Georges Tarbouriech
摘要:
安全是系統管理員憂慮的主要問題之一,然而,由于internet引發的侵入危險變得越來越高.
據統計,如果聯接的用戶數量增加,駭客的數量隨之增加.因此,安全工具呈指數增加.再一次多謝自由軟件社區,因為他們給我們提供了我們能見到的最好的工具和大量的文檔.
在本文結束部分的參考文獻區你將會發現許多有趣的聯接,顯而易見地,本文將要提到的不可能沒有疏漏之處,我提到的只是我挑選的一些好工具.
這篇文章不但寫給個人用戶,同樣也是給系統管理員提供的,盡管一些工具是為保護主機和提高網絡安全專門設計的.大部分工具可以在許多unix上工作(如果不是全部的unix上),不管這些unix是商業的還是免費的.
最后,這篇文章不是一篇"如何使你的網絡或主機安全"的文章,而是一篇關于你能夠(必須)用來提高一個網絡或機器安全性的各種工具的介紹.
一、通用的工具
讓我們把這部分稱為"白帽子保護紅帽子,擊退黑帽子的工具(tools for whitehats to protect redhat from blackhats)":-).大多數linux發行版(不僅僅是redhat)都保含了一些好的安全工具,它們被用來使你的機器更加安全.
在這些工具中,我們能數出TCPWrapper,PAM,影子口令工具等,因為它們是發行版的一部份,你可以找到關于它們的許多東西:HOWTO,man手冊,所以我們不想在它們身上化太多時間.
讓我們從影子口令工具開始,簡單來說,它們允許口令加密,文件/etc/passwd被文件/etc/shadow代替.
比影子口令工具更精致的是PAM,就象名字所說的那樣,這是另外一種認證方法,被用來配置對服務的訪問控制.
可以在一些文件中定義許多限制,這樣能容易地進行管理.這些文件通常放在/etc/pam.d目錄中.
TCPWrapper,簡單來說,是通過ip地址或主機名來限制服務訪問權限.倚靠兩個文件來決定容許訪問還是拒絕訪問,這兩個文件是/etc/host.allow和/etc/host.deny
TCPWrapper可以配置為兩種工作模式:通過運行看守進程,或者是修改/etc/inetd.conf文件.如果你的unix系統沒有包含TCPWrapper,你可以從ftp://ftp.porcupine.org/pub/security/獲得它.
現在,我要告訴你們,為什么我不詳悉介紹上面提到的這些工具,因為有一個工具可以完成上敘所有的功能,這就是Bastille-Linux,如果你只想安裝一個安全工具,那么就安裝它吧,目前的常見的linux版本還沒有包含它, 但你可以到http://bastille-linux.sourceforge.net網站上下載.
順便說一下,我們不會在本文介紹Bastille-Linux,這樣做毫無意義,因為我的同事在九月份的LinuxFocus上有一篇相當不錯的文章已經介紹了它.他已經介紹了所有的東西.去那看看吧,讓我們把Bastille-Linux加入你生活中必不可少的重要工具中吧!
另外一個常用的來提高安全性的工具是xinetd,它存在于http://www.xinetd.org,對不起,我也不打算介紹它,同樣是是因為我的同事在十一月份的LinuxFocus上做完了這項工作.
現在,讓我們來看一看一些特別的東西.
二、防火墻工具
自由軟件Linux帶有把你機器變成防火墻的軟件.2.2內核是iptables,而2.0內核則是ipfwadm.為了使iptables或ipfwadm工作,內核必需正確選擇選項進行編譯.關于這個問題,除了HOWTOS,還有很多相關文章,所以,同樣我不打算多提.
簡單地說,我們可以把防火墻看作包過濾工具,工作最重要的部分是關心防火墻的配置,同樣,一個錯誤配置的防火墻會變得非常危險.
不管怎么說,防火墻相當重要.
舉個例子來說,Bastille-Linux可以給你提供一個基于ipchains的防火墻.
如果你訪問http://www.linuxapps.com,并在搜索區中鍵入"firewall",你至少能得到40個以上的答案.其中許多是基于ipchains或ipfwadm管理的圖形化界面,另外一些是真正的大工具,含有大量的功能,舉個例子,象T.REX,http://www.opensourcefirewall.com上的工具就是這樣的東西.再提醒一次,一個防火墻在一個網絡中必不可少,但是網絡安全不能僅僅依靠它,告訴你,一個駭客可以在十五分鐘之內攻破它.
三、端口掃描
在這里我們接觸問題的核心部分,這個思想是:象一個駭客干的那樣,使用同樣的工具,來監測你機器或網絡的弱點所在.
在這個領域,我們能夠在兩個偉大的工具上受益,但還有其它更多的.
第一個叫作nmap,你可以從http://www.insecure.org上下載到,同時還有大量的信息和鏈接等等.
用nmap你可以檢查你的網絡或機器哪些端口是開放的.當然,你可以用其它的命令做到這點,例如lsof或netstat,但是只能檢測你自己的機器.顯而易見的,nmap當然也可以檢查你自己的機器.
nmap能提供給你許多信息,例如,它能告訴你運行的是哪種操作系統,通知你所開放的端口的危險性,最后,至少,nmap相當容易使用.
nmap既可在shell下運行,也可以通過一個叫nmapfe的圖形界面來運行.這個圖形界面是基于gtk庫的,nmap的當前版本是2.53,它可以在許多unix平臺上運行,提供原代碼,rpm包,帶或不帶圖形界面.
nmap是系統管理必不缺少的工具.
多謝Fyodor先生,以及恭賀他的偉大工作.
第二個叫作nessus,可從網站http://www.nessus.org上下載,nessus使用客戶/服務器結構來工作,源代碼遵循posix標準,能在許多unix版本上運行.甚至還有基于win32的客戶端.nessus依賴nmap(要知道,沒有nmap,nessus就不能運行),GUI客戶端還需要GTK庫函數的支持.
nessus當前版本是1.06,通過nessus,你可一用一個命令掃描整個網絡.這個命令就是網絡地址,例如,在目標框中鍵入192.168.1.0/24,將會掃描整個子網的255臺機器.
盡管nessus比nmap復雜不少,但它不但容易使用,功能很多.比方說,它可以生成報告,比較各報告的差異...,另外一個功能相當有趣:nessus為端口掃描中發現的問題提供解決方案,只要這些機器是unix系統,這些建議通常有用,對其它操作系統,就沒這么恰當,但這不是一個問題.
下面是一臺非常容易受攻擊的機器的例子
nessus還有另一項偉大的功能,它可以運行插件,這樣,每次在任何地方發現新的安全漏洞,它都可以很快升級.
nessus是另一個系統管理真的需要的工具,Deraison先生和Merci beaucoup做的棒極了.
兩個工具都在一個linux機器和其它不同操作系統的網絡中測試過,有Linux RH 6.2, Irix 6.5.7, Solaris 2.6, NeXTStep 3.3,QNX RT, BeOS 5.0, Amiga OS 3.5,Not Terminated 4.0.在大多數平臺上測試結果給人留下深刻印象,當然Amiga系統沒有真正被認證,(因為它看起來象一臺打印機或路由器!),但是有誰現在的網絡中還有這種操作系統呢(除了我們)?
不管怎么說,整些工具是今天網絡中必須有的工具.
為了結束這個章節,讓我們來提一提其它一些工具象SARA(http://www-arc.com/sara/),或者是它的父輩SATAN(http://www.porcupine.org/satan/)或AINT(http://www.wwdsi.com).它們不但是端口掃瞄器而且它們都對提高網絡安全非常有用.
四、嗅探系統
有些工具能發現端口掃描或入侵.標準的系統管理不能沒有這種工具(這有點偏執!).
第一套工具集來自算盤工程.你可以從http://www.psionic.com獲得這些工具.其中包含三個工具:
logcheck,portsentry和hostsentry. |
Logcheck版本是1.1.1,portsentry版本是1.0,hostsentry版本是0.0.2alpha.
Portsentry是一個端口掃描發現工具,就象名字所說的那樣,如果端口被某處掃描,portsentrt就會立即堵賽主機,要么就是使用防火墻扔掉路由(或者是一個不用的ip地址),或者只要TCPWrapper安裝在你機器上,就把駭客的ip地址寫進文件/etc/hosts.deny中,反應相當有效率! Portsentry依賴一個主要的配置文件和一些特殊的文件,這些特殊文件是用來忽視一些主機(也就是不堵塞它們),或者是堵塞某些主機的某些端口。通過配置文件,你可以定義portsentry的工作方式。
首先,你要選擇梆定到portsentry上的端口,是TCP還是UDP(或者兩者都是),注意,如果你使用X11,就不能綁定到端口6000上!
按照你使用的unix系統,你有兩種不同的操作方式來監視端口,現在只有linux支持先進模式。
下一步是堵塞選項,要么堵塞要么不堵塞掃描,或著運行外部命令。
接著選擇扔掉路由,或者把攻擊者重定向到一個網絡上不使用的ip地址或者是防火墻上。
下一步是與TCPWrapper有關,那就是你得決定是不是寫一個拒絕條目進文件/etc/hosts.deny中。
接下來你可以定義一個外部命令來運行,最后,你可以為掃描選一個觸發器值,(缺省為0)。
以上就是你必須做的,我們假設你懂得關于日志記錄的一切東西。因為,顯而易見,所有的警告被記錄下來。這意味著,如果你想把最終的警告放到/var/log/messages或var/log/syslog或/var/adm/messages等文件
之外的某個地方,你可以修改你的syslog.conf文件。
你可以選擇在后臺運行portsentry,這個選項取決于你得系統,在大多數unix版本上可以使用-tcp,-udp選項,在linux機器上可以用-atcp,-audp選項.(a代表先進)
讓我們來看一看掃描一臺運行有portsentry的機器時的結果.
如果你是一個每個星期看一次日志的系統管理員(你應該換個工作了),算盤工程提供了另外一個工具:logcheck.如果在日志中發現異常的現象時,這個工具通過cron任務和發郵件給管理員.
這個套件中最新的工具叫作hostsentry,看起來相當有趣,但我沒有測試過.
如果你想要一個偉大,簡單和高效的工具時,選portsentry!
謝謝Rowland先生,他的工作非常偉大,順便說一下,我喜歡他的幽默.
另外一個系統管理員真的不可少的工具叫snort.
snort是一個IDS(入侵檢測系統)并且非常精確的輕量級的工具.你能從http://www.snort.org網站上下載1.6.3版本的snort.據說可以在任何能和libpcap工作的平臺上運行.最好使用最新版的libpcap.順便說一下,你可以得到win32版的snort.
snort可以分析ip數據流,提供非常健壯的日志功能.snort依賴規則腳本,你可以監視你想要監視的東西.
甚至提供給你一個規則數據庫,這樣,你就得做一個重要的決定:把探測器放在何處,或者你會提出,啦種流量要監控?今,出,在防火墻外還是內部?
我們寧愿建議在任何一個地方!!!這對我而言,是個嚴肅的問題,如果你是一個"標準"的系統管理員,探測器越多越好.
現在你決定監聽某處,你必須選擇應用的規則.snort帶有許多基本的規則,后門,ddos,finger,ftp...這些規則被放在snort-lib文件中,你可以從snort的網站上得到新的和升級的規則.
你只要把snort設置好選項作為后臺任務運行就可以了,如果要把snort當做守護進程運行,選項就是-D因為你可以重定向日志,所以你也能定義日志記錄在哪里,甚至是另外一臺機器.
在這篇文章中提到snort的所有功能是不可能的,這篇文章只能告訴你一部份.不管這么說,snort是另外一個你必不可少的工具.snort是非常偉大的工具.多謝Roesch先生.
一些免費工具:比方說http://www.cs.tut.fi/~rammer/aide.html介紹的AIDE.
五、加密
在這個領域有許多工具,我們不能全部說到它們,不管怎樣,我們至少要說一說SSH,特別是免費版本的openSSH.從http://www.openssh.com上能得到它.現在版本是2.3.0,這個偉大的產品原先是在openbsd上開發的,現在可以運行在許多unix版本上.
openssh是telnet和其它遠程命令如rsh,rlogin等的替代品.它包含scp這一ftp和rcp的替代品.openssh可以對網絡上傳輸的數據進行加密.telnet,rsh等用明文傳輸,當然包含口令的傳輸!
所以,你不應該再使用上述工具,而應改用openssh.這有點強迫,就讓我們少少法西斯吧!
問題是這種工具和加密法有關,有些國家非常嚴格,不容許這類軟件.事情正在發生了變化,但是在許多國家你還是不能自由使用這些軟件。舉個例子來說,一段時間以前,如果你在象法國這類國家中使用ssh,你就被當作一個間諜,(根據國家人權法)幸運的是現在不是這樣了,不管怎么說, 我建議在使用這類工具時先讀一下有關
規定。你可以在http://www2.epic.org/reports/crypto2000/countries.html 網頁上找到不同國家關于這種情況的報告。
畢竟,加密是一個非常關注的話題,有許多工具可供考慮,讓我們提一下http://www.openssl.org上的openssl(安全套接層),或者是http://www.strongcrypto.com上的Strong Crypto,一個公開原碼的linux上的VPN工具。
vpn是另外一種解決方案,值得用另外一篇文章來詳細介紹。(象上面題及的大多數工具)因此,我們不想在這里多說什么。
顯而易見地,我們不會忘記提一下在http://www.ietf.org/html.charters/openpgp-charter.html網頁上的
openPGP和網站http://www.gnupg.org中的GNUpg.
六、腳本
在這里,我們不想提什么工具,腳本編寫是任何一個系統管理員的主要技能之一。在你管理網絡時,shell腳本,perl腳本等都是你每天工作的一部份。
顯而易見地,腳本可被用在任務自動執行上,但是,我們同樣可以把它應用在安全監控上,每個系統管理員都有他自己的需要,而且他總是試圖用適合他的方式來管理這些。這通常沒那么容易,有一樣東西能給你幫助:
訂閱系統管理員雜志!這本雜志是系統管理員寫給系統管理員的,提供給你許多程序和腳本,每一期甚至還配有一張電腦光碟,當然包含所有的程序和腳本。
這不是廣告,只不過告訴大家一條找到提高安全的許多解決方案的圖解。如果你是一個系統管理員,去http://www.samag.com看一看吧,你應該試一試,當然,這僅僅是一個建議。
七、還有什么
本文已相當多地講述安全問題,但是,就如我們開始就說過,這篇文章不是一篇“如何使你的網絡或主機安全”的文章。關于這個題目,一本書都不夠,安全不僅僅依賴工具,也與許多行為有關,比如,一些通常的習慣讓我們犯錯。什么時候人們會明白M$ office文件實際上是一個安全炸彈,它們不但體形巨大,而且可能滿是宏病毒。
wintel用戶,請不要把word,execl文件作為郵件附件傳遞,此外,如果你收到它們,請不要打開它,這僅僅是一個建議,但是,你已經被警告過,它們和你收到或下載的可執行文件一樣危險(在我看來,更危險)。順便說一句,純文本和html文件在大小上比office文件小得多,而且它們沒有危險性。
當然,我知道wintel word這樣工作:當你下載一個單獨的驅動,它通常是可執行的,讓我們承認,我們可以相信這個大公司...,但是你知道你下載下來的文件可能發生了什么?誠然,這樣想有點偏執了,但是不是瘋狂呢?為什么你認為許多文件有一個校正值來檢驗正確性呢?
下面所說的可能“傷害”許多人,但這是事實,JAVA是危險的!applet不安全,javascript不安全,雖然如此,有趣的是許多網站使用JAVA,此外,JAVA是當你訪問網站時,瀏覽器經常死掉的問題根源。這是網站的目的嗎?
更不要提來自M$的ActiveX了!
建議,用Rebol代替它。(http://www.rebol.com)
因為基于這樣的事實:請新的internet專家,停止用wintel word和IE5來建站。我注意到,這樣的網站四處蔓延,畢竟許多人用許多不同的操作系統和許多不同的瀏覽器聯接internet,那樣做,等于拒絕人們訪問你的網站。internet的目標
是共享,使用專用的東西是無意義的,以我的粗見,當建設一個網站時,首先要做的是查清訪問者是哪種操作系統,哪種瀏覽器...,但這只是我個人的觀點。想一想吧,如果你用unix機器和netscape訪問那樣的網站,你連首頁都看不到!
對不起,有點離題了。
另外一個重要的觀點是不可能做到100%安全。我們離那還早呢。你所能做的僅僅是提高它,事實上,你有可能可以把我們提到的工具都用上,但是把后門開的大大的!別傻了,駭客們不會首先就去試圖解開128位的密鑰,但是他們可以在某個地方找到一個小漏洞。所以要小心suid或sgid程序,以及訪問權限,運行的沒用的服務,取消的賬號等。
的unix版本有許多相似之處,它們有許多不同的安全隱患要關。有些就象個篩子一樣漏洞百出,你必須注意到這點。比方說,有一個internet cable聯接的M$是了不起的,但是你就會出現在駭客機器上的網上鄰居上,M$將會把你出賣給駭客,我不是在開玩笑...
網絡和計算機安全有一條很長的路要走,如果你對這個領域感興趣,你每天都可以學到新東西。幸運的是,下面有一些資源可以利用。
參考
httpp://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com
http://www.cs.purdue.edu/coast/hotlist/
除了文中已經提到的,linuxfocus的其它文章都值得一讀。