摘要: 今天,許多信息都是存儲在計算機系統中,因此很容易通過計算機網絡遠程訪問他們並獲取數據,無論是財政,行政,軍事,工業還是金融信息。不幸的是,這些數據很容易被一些惡意的人獲取並摧毀,因為他們不知道什麼叫道德。 關於道德方面,我們無能為力,在本文中我將談談在Debian GNU/Linux系統使用一些工具來發現和跟蹤入侵者。 介紹 當我們選擇了Linux系統之後,我們得考慮在那麼多個發行版中到底使用哪個版本,他們許多都是基於RedHat,例如Conectiva (巴西), Hispa source(西班牙), Mandrake (法國), SuSE (德國), Caldera和其他的版本都使用RPM 包管理器,而Slackware更象傳統的Unix盡量使用.tgz包,他們幾乎都是商業公司開發的,但Debian例外。 Debian提供了一個叫DPKG的包管理器幫助我們自動在Internet上查找和升級軟件,檢查信任關系,這樣使系統管理更加簡單並且可以及時的打上安全補丁。 為什麼使用Debian GNU/Linux ? Debian也有一些很重要的功能: 1) 他不包含商業意圖並且不按照市場規則運作。 2) 他有一個非常優秀的漏洞跟蹤系統,問題將在48小時內得到解決。 3) 他從一開始就是想開發一個完善和可信的操作系統。 4) 他是由全球的志願者一起開發的。 每個新的版本都對一些新的硬件體系提供支, 現在他支持Alpha, ARM, HP PA-RISC, Intel x86, Intel IA-64, Motorola 680x0, MIPS, MIPS (DEC), Power PC, IBM S/390, Sparc並且可以工作在Sun UltrASParc和Hitachi SuperH。他是Linux系統中支持硬件體系最多的平台。 在現有的Debian發行版中,有很多實時入侵檢測工具可以幫助我們檢測到惡意的連接。他有兩種類型,一個是監視整個網絡的(NIDS),另外一類是監視單個主機的(HIDS)。 主機工具 我們使用PortSentry來發現端口掃描,TripWire來檢測系統完整性和使用LogSentry做日志分析。第一個和最後一個工具都是Psionic Technologies的TriSentry套件。 端口掃描檢測 PortSentry監視我們系統的端口,當他發現一個非正常的連接請求的時候,他可以采取一些行動(一般是阻攔)。 他的主頁在http://www.psionic.com/prodUCts/portsentry.Html 同時PortSentry也支持Solaris, BSD, AIX, SCO, Digital Unix, HP-UX, and Linux系統. 在Debian中,輸入下面的命令就可以把他裝上了: apt-get install portsentry 有三種不同的模式可供選擇:基本模式,隱蔽模式和高級模式。他的配置文件在/usr/local/psionic/portsentry/portsentry.conf file 他的主要參數如下: TCP_PORTS,這裡你定義在基本模式或者隱蔽模式下需要控制的端口,作者按照不同的控制級別提供了三個端口列表,最大的端口數量是64個。 UDP_PORTS,和上面的相似,不同的只是UDP端口 ADVANCED_PORTS_TCP, ADVANCED_PORTS_UDP, 在高級模式中可能會用到高端口檢測,最大可以定義到65535,但是建議不要超過1024,以免誤報。 ADVANCED_EXCLUDE_TCP, ADVANCED_EXCLUDE_UDP,提供了一個排除列表,在高級模式中,裡面的端口將不會被監視。在這裡,你可以寫上你提供特殊服務的端口,但不要是真正的服務,例如: ident IGNORE_FILE, 在這裡我們可以寫上需要忽略IP的文件的位置,在這裡可以找到回環地址,你同樣可以在這裡添加一個本地地址。 KILL_ROUTE,在這裡我們可以添加一個命令來阻攔惡意的主機,例如: iptables -I INPUT -s $TARGET$ -j DROP,$TARGET$指的是惡意主機. KILL_RUN_CMD, 在阻攔惡意主機之前執行的命令. SCAN_TRIGGER, 定義超過多少次攻擊才啟動報警. PORT_BANNER, 在端口被連接之後顯示的banner信息 在配置完之後,你最好使用下面的參數執行其中的一中模式:TCP是使用-tcp (基本模式), -stcp (隱蔽模式)和-atcp (高級模式);UDP就相應的改為 -udp, -sudp, -audp. 完整性檢查 可以使用TripWire進行系統完整性檢查,他的主頁在http://www.tripwire.org他的linux版本是免費的而Windows NT, Solaris, AIX and HP-UX的版本則是商業化的. 在Debian中,我們使用下面的命令安裝他: apt-get install tripwire 保存信息需要兩個密鑰: 第一個是"site key",他是用來加密策略和配置文件的,另外一個是"local key"是用來加密檢測的信息的。 一個准備好的配置文件在/etc/tripwire/twpol.txt ,你可以使用下面的命令初始化他: twadmin -m P /etc/tripwire/twpol.txt 我們使用下面的命令創建一個當前文件系統初始的數據庫: tripwire -m i 2 檢測系統完整性就使用下面的命令: tripwire -m c 使用下面的命令刪除配置文件,以免被入侵者發現了你改動了什麼文件: rm /etc/tripwire/twcfg.txt /etc/tripwire/twpol.txt 如果你需要重新創建配置文件,你可以使用下面的命令: twadmin -m p > /etc/tripwire/twpol1.txt twadmin -m f > /etc/tripwire/twcfg.txt 日志分析 日志檢測是LogSentry的一部分,他以一個非常有效的方法分類和產生可讀性強的活動和錯誤報告。他分為忽略,忽略異常,異常活動,入侵四種不同的日志等級。 他的主頁在http://www.psionic.com/products/logsentry.html. 他可以很好的運行在Solaris, BSD, HP-UX和Linux系統中。 在Debian中,我們使用下面的命令安裝他: apt-get install logcheck logtail程序被安裝在/usr/local/bin,下面相應的程序也被安裝: Logcheck.sh, 日志檢測腳本 Logcheck.hacking, 入侵的規則文件 Logcheck.ignore, 忽略的規則文件 Logcheck.violations, 異常的規則文件 Logcheck.violations.ignore, 忽略異常的規則文件 你可以使用cron讓他每小時執行一次: 0 * * * * /bin/sh /usr/local/etc/logcheck.sh 網絡工具 我們使用Snort來發現網絡攻擊,他的主頁在http://www.snort.org他同樣可以很好的運行在多種操作系統上,包括BSD, Solaris, AIX, Irix, Windows, MacOS X和Linux. 在Debian中,我們使用下面的命令安裝他: apt-get install snort 他有三中工作模式:包括嗅探模式,包記錄模式和入侵檢測模式。 他有下面的幾個主要的參數: -l 日志的存放目錄 指定日志存放的目錄。 -h IP 指定需要監控的IP地址。 -b 使用TcpDump的格式輸出。 -r 文件 處理一個TcpDump的格式的文件。 Snort的嗅探和包記錄模式 在嗅探模式,他讀取任何流過網絡數據並把他輸出到終端,而包記錄模式就會把數據記錄到一個目錄中。 Snort -v 顯示IP頭信息 Snort -dv 以TcpDump的格式詳細輸出 Snort -dev 以TcpDump的格式詳細輸出並顯示第二層頭信息 Snort的入侵檢測模式 在這個模式中snort將檢測端口掃描, DoS (拒絕服務攻擊), eXPloits, etc. 他由位於/usr/local/share/snort的規則決定,你可以從他的網站得到最新的規則庫。 配置他很簡單,只須對snort.conf做一些小小的修改,比如網絡信息和工作目錄等,下面先改變IP設置: var HOME_NET IP 簡單的執行Snort只須輸入: snort -c snort.conf 日志文件在/var/log/snort,我們可以在這裡看到攻擊者的IP地,當然這絕對不夠,我建議可以認真的看看他的說明,絕大多數的組織,雜志和安全小組都把他評價他為各種系統下最好的入侵檢測系統並且強烈推薦他,並且有象Silicon Defense,Source Fire和GUIs這樣的商業公司開始提供對他更廣泛的軟件支持。 有時一些緊急事件的發生需要強大的分析器,這些問題一般是由入侵者由於某些原因嘗試非法訪問我們的服務或者其他的服務器,無論是隱蔽的還是明顯的,或者是安裝一個嗅探器甚至是得到更加高的權限造成的。 其他有用的工具 嗅探器檢測 嗅探器就是一個可以把網卡的設置成混雜模式的工具,並且監聽整個網絡的信息,使用ifconfig程序可以得到詳細的網絡接口信息: eth0 Link encap:Ethernet HWaddr 00:50:BF:1C:41:59 inet addr:10.45.202.145 Bcast:255.255.255.255 Mask:255.255.128.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7180 errors:0 dropped:0 overruns:0 frame:0 TX packets:4774 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:8122437 (7.7 MiB) TX bytes:294607 (287.7 KiB) Interrupt:10 Base address:0xc000 但是如果ifconfig程序被篡改或者嗅探器工作在網絡中的其他機器,你必須進行更深一步的檢查,例如發封郵件給“陌生”的用戶或者嘗試查找嗅探器的記錄。 有一個叫neped由一個西班牙黑客組織設計的工具,他可以發現整個網絡的接口工作模式是不是被設置成了混雜模式,但是現在他並沒有被移植到 Debian中,我們可以在這裡下載FTP://apostols.org/AposTools/snapshots/neped/neped.c 注意:這個服務器似乎幾個星期之前就當掉了. 這個程序的執行結果會產生下面的輸出: neped eth0 ---------------------------------------------------------- > My HW Addr: 00:80:F6:C2:0E:2A > My IP Addr: 192.168.0.1 > My NETMASK: 255.255.255.0 > My BROADCAST: 192.168.1.255 ---------------------------------------------------------- Scanning .... * Host 192.168.0.2, 00:C2:0F:64:08:FF **** Promiscuous mode detected !!! End. 當我們從191.168.0.1發送IP包到192.168.0.2的時候,我們需要知道他的MAC地址,我們可以通過發一個廣播包來查詢我們所需要IP對應的MAC地址,所有的機器都會接到這個包,但是只有“真正”的機器才會響應。 neped不通過廣播,而是使用一個不存在的IP查詢網絡中的每個IP, 這樣只有處於混雜模式的接口才會響應這個包。 Rootkits檢測 rootkits可以讓入侵者得到更高的權限,一般情況下,他通過覆蓋一些系統二進制程序來達到目的。 這就是我們要檢測我們的程序是否被篡改的原因。 我們可以這樣安裝他: apt-get install chkrootkit 他的網站在www.chkrootkit.org並且他檢測下列文件: aliens, asp, bindshell, lkm, rexedcs, sniffer, wted, z2, amd, basename, biff, chfn, chsh, cron, date, du, dirname, echo, egrep, env, find, fingerd, gpm, grep, hdparm, su, ifconfig, inetd, inetdconf, identd, killall, ldsopreload, login, ls, lsof, mail, mingetty, netstat, named, passwd, pidof, pop2, pop3, ps, pstree, rpcinfo, rlogind, rshd, slogin, sendmail, sshd, syslogd, tar, tcpd, top, telnetd, timed, traceroute, w, write 可以使用下面的命令啟動他: chkrootkit 他檢測上面的文件,查找嗅探器和rootkits,還有其他的工具檢查日志警告(chkwtmp和chklastlog)並且ifpromisc告訴我們的網卡是否處於混雜模式 參考文獻 Alexander Reelsen, Securing Debian How To, version 1.4, 18 February 2001 Anónimo, Linux Máxima Seguridad, Pearson Educación, Madrid 2000 Brian Hatch, Hackers in Linux, Mc Graw Hill 2001 Jim Mellander, A Stealthy Sniffer Detector, Network Security Antonio Villalón Huerta, Seguridad en Unix y redes, Open Publication License, octubre 2000 CSI FBI Computer Crime and Security Survey, CSI Issues&Trends, Vol.7 Whos Sniffing Your Network?, www.linuxsecurity.com/articles/intrusion_detection_article-798.html Root-kits and integrity: November 2002 Linuxfocus article