天天看點

linux 背景開發—淺談網絡安全性

每天十分鐘,熟讀一個技術點,水滴石穿,一切隻為渴望更優秀的你!

                                                                           ————零聲學院
           

網絡安全簡介

連接配接網絡的主機,特别是連接配接網際網路的主機,比沒有連接配接入網絡的主機會暴露出更多的安全問題。安全問題。網絡安全性高可以降低連接配接網絡的風險,但就其性質而言,網絡通路和計算機安全性是沖突的。網絡是一條資料高速公路,它專門用來增加對計算機系統的通路,而安全性卻需要控制通路。提供網絡安全性是在公開通路與控制通路之間的一種折中。

我們可以将網絡想象成高速公路,它就像高速公路一樣為所有的通路者——無論是受歡應的通路者還是不受歡應的黑客(hacker,在網絡上非法入侵别人機器的人)——提供相等的通路權。通常,我們是通過鎖門來為财産提供安全性的,而不是封鎖接到。同樣, 網絡安全性一般是指對單台主機提供何時的安全性,而不是直接在網絡上提供安全性。

在很多小城鎮中,人們互相之間都互相認識,因而房門往往是不鎖的。但在大城市中, 房門安裝了笨重的門闩和鍊條。在短短的十幾年中,網際網路已從一個隻有數十個使用者的“小鎮”發展到具有數百萬使用者的“大城市”。就像大城市使鄰居之間變得陌生一樣,網際網路的飛速發展減少了網絡鄰居之間的信任度。對計算機安全性要求的增長是一個負效應,但這種發展并不是一件壞事情。一個大城市可以提供更大的選擇餘地和更多的服務,同樣,擴充後的網絡也可以提供日益增加的服務。對大多數人來說,安全隻是通路網絡時需要考慮的一小部分。

随着網絡的發展,其越來越社會化,網絡的非法入侵事件也有增無減。但是,這些入侵的十幾程度常常被大大的誇大了。對侵入迹象的反應過度會阻礙對網絡的正常利用,是以一定要對症下藥。有關網絡安全性的最好建議是尊重正常,在 RFC1233 中很好的闡述了這一原則:

“尊重正常是用來确定安全政策的最何時的準則。精心設計的安全性方案和機制,誠然是令人佩服的,也确實可以充分發揮作用,但應兼顧控制的簡單性,即實施其方案時, 在經濟和時間上的投資也必須予以充分考慮”。

網絡安全的重要性

1996 年初,五角大樓宣布其計算機系統在 1995 年遭到 215 萬次非法入侵。更令人不安的是大多數非法入侵未被察覺。這些非法入侵給國家安全帶來的影響程度還未确定,但是已發現的非法入侵多數是針對計算機系統所存放的敏感資訊,其中有三分之二的非法入侵是成功的,黑客盜竊、修改或破壞了系統上的資料。

同時,我們也應該以嚴肅的态度來考慮企業間諜無處不在這個問題。有很多公司并沒

有充分的準備來對付非法入侵者,甚至沒有意識到它們的存在,有些公司還沒有看到這些威脅對它們的影響。事實上,計算機線上社會是人類生存的真實社會的仿制品,在電子空間中有許多不道德的人不斷侵犯各種計算機系統上的安全系統,還有一些并非不道德的人出于某種心理在電子空間徘徊并和使用者開一些玩笑來嘲笑使用者的安全性。

事實上,網絡從其出現的一開始就受到黑客們的攻擊,下面是曆史上著名的幾次網絡

事故:

1988 年 9 月,著名的蠕蟲程式(worm)被傳播到網際網路上,造成網際網路的癱瘓, 使許多網絡不能連接配接到網際網路上。

1991 年 5 月,在 Biscay 海灣發生了一起由于網絡被非法入侵而造成的沉船事故。

這是由于歐洲氣象預報中心的計算機系統被網絡黑客侵入,造成氣象預報衛星不能正常工作,導緻一場暴風雨的預報失誤而釀成的悲劇。

1993 年 6 月,美國一家醫院連接配接到網絡上的一些化驗報告,其資料被黑客侵入後将陰性改為陽性,許多被化驗者是以誤認為自己患上了癌症。

在過去的十幾年中,網絡黑客們一直在通過計算機的漏洞對計算機系統進行攻擊,而且這種攻擊方法變得越來越複雜。

1988 年,大部分入侵者的方法僅是靠猜測密碼,利用系統的配置不當、以及系統上軟體本身的漏洞。到了 1998 年,這些方法仍被使用,但又增加了新的手段。有些入侵者甚至通過讀取作業系統源代碼的方法來擷取系統的漏洞,并以此展開攻擊。一些網絡黑客編寫的攻擊站點的工具軟體,在網際網路上也可以容易的得到,這就給網絡安全帶來了更嚴峻的挑戰。

正是由于這些線上犯罪,FBI 的國家計算機犯罪小組建議采用防火牆作為防止計算機犯罪的措施。雖然 NCCS 還有其它安全措施,但是普遍認為采用防火牆是防止 Intranet 被入侵的最好方法。

其他被推薦的措施有:

對非法通路的登入進行橫幅警告。顯示在登入螢幕上,警告那些非法使用者,它們正在進入一個受保護的系統。

鍵盤級監控。這個安全措施十幾上是捕捉在某台工作站上的鍵盤敲擊并記錄在檔案中。這些檔案經管理者檢視後确定是否有非正常方式,如從一台工作站上出現多次登入失敗等。

捕捉、跟蹤來自電話公司的服務。這種服務允許使用者的公司截取進來的電話并跟蹤到出發點,并找出和排除非法的遠端通路。

呼叫者 ID。這種服務(現在家庭使用者中也很流行)識别進入系統的号碼和姓名, 能夠在一開始就識别并排除非法的遠端通路。

電話截取。這種服務(與呼叫者 ID 有關)允許某些電話号碼被阻止接通到電話系統。例如。假設數據機(遠端通路系統)接收到一個來自某大學宿舍的一個數字電話,可以截取這個電話号碼(可以自己打個電話到學校機關)。

資料加密措施。可以用加密和解密軟體來“攪亂”資料,使多數黑客沒有興趣登入到系統。

防火牆。所有這些安全措施中,防火牆是最具有防護性的。因為它可以根據需要

設計并安裝在系統中的最重要部位。如果将防火牆與其他一些安全措施相結合,會得到一個對公司的資料和 Intranet 最佳的安全措施。

資訊系統安全的脆弱性

黑客攻擊網絡已有十幾年的曆史。它們的攻擊方法包括:獵取通路路線、獵取密碼、強行闖入、改變與建立 UAF(使用者授權檔案)記錄,偷取額外特權、引入“特洛伊木馬” 軟體掩蓋其真實企圖、引入指令過程或程式“蠕蟲”把自己幾聲在特權使用者上、清理磁盤、使用一個節點作為網關(代理)到其他節點上以及通過隐蔽信道進行非法活動等。

黑客使用很多工具進行攻擊,例如 Rootkit 工具、特洛伊木馬和軌迹跟蹤等。SATAN 工具專門用來查找和分析一個網絡安全的薄弱環節。Aita Vista 工具可以用來查找一個網絡的脆弱部分或者黑客敏感的資訊。

黑客在網絡上經常采用的攻擊手段是:利用 UNIX 作業系統提供的 telnet、ftp 和 remoteexec 守護程序等預設帳戶進行攻擊。另外,黑客還可以采用 UNIX 作業系統提供的指令 finger 與 rusers 等收集的資訊不斷提高自己的攻擊能力;利用 sendmail 漏洞,采用 debug 工具、wizard 工具、pipe 機制、假名及 Ident 守護程序進行攻擊;采用 ftp 的匿名通路進行攻擊; 利用 NFS 的漏洞進行攻擊;利用 CGI 程式的漏洞進行攻擊;通過 rsh、rlogin、rexec 守護程序以及 X Windows 等方法進行攻擊。

網絡黑客之是以能夠得逞,是因為資訊系統本身存在一些安全方面的脆弱性。

下面是資訊系統在安全方面存在的一些問題:

1. 作業系統安全的脆弱性

作業系統的體系結構造成作業系統本身的不安全,這是計算機系統不安全的根本原因。作業系統的程式可以動态連結,包括 I/O 的驅動程式與系統服務,都可以用打更新檔的方式進行動态連結。Linux 作業系統的許多版本更新開發都是采用打更新檔的方式進行的。這種方法廠商可以使用,黑客同樣也可以使用。這種動态連結是計算機病毒産生的好環境。一個靠更新與打更新檔開發的作業系統不可能從根本上解決安全問題,但作業系統支援程式動态連結與資料動态交換又是現代系統繼承和系統擴充的必備功能,是以這是互相沖突的。

作業系統支援在網絡上傳輸檔案,包括可執行的映象檔案,即在網絡上加載程式。這樣也破壞了系統的安全性。

作業系統不安全的另一個原因在于它可以建立程序,甚至支援在網絡的節點上建立和激活遠端程序,更重要的是被建立的程序可以繼承建立程序的權限。這一點與上一點(可以在網絡上加載程式)結合起來就構成了可以在遠端伺服器上安裝“間諜”軟體的條件。若再加上把這種間諜軟體以更新檔的方式“打”在一個合法的使用者上,尤其“打”在一個特權使用者上,間諜軟體就可以使系統程序與作業的監視程式都檢測不到它的存在。

作業系統通常都提供守護程序。這種軟體實質上是一些系統簡稱,它們總在等待一些條件的出現。一旦有滿足需要的條件出現,程式便繼續運作下去。這樣的軟體都是黑客可以利用的。這裡應該說明的是:關鍵不在于有沒有守護程序,而在于這種守護程序在UNIX、Windows NT 作業系統上是否具有與作業系統核心層軟體同等的權力。

作業系統提供遠端過程調用(RPC)服務,RPC 服務本身也存在一些可以被非法使用者利用的漏洞。

作業系統提供 debug(調試器)程式。許多研制系統軟體的人員,它們的基本技能就是開發更新檔程式和系統調試器。掌握了這兩種技術,它們就有條件從事黑客可以從事的事情。

作業系統安排的無密碼入口是為系統開發人員提供的便捷入口,但它也是黑客的通道。另外,有些作業系統還有隐蔽的通道。

2. 計算機網絡安全的脆弱性

Iternet/Intranet 使用的 TCP/IP 協定以及 FTP、E-mail、RPC 和 NFS 等都包含許多不安全的因素,存在許多漏洞。

許多人都知道,1988 年 Robert Morries 在 VAX 機上用 C 語言編寫了一個通過 GUESS 軟體,根據搜尋的使用者名字來猜測機器密碼密碼的程式。結果是該程式自 1988 年 11 月開始在網絡上傳播依賴,幾乎每年都給網際網路上的系統造成一億美元的損失。

黑客通常采用源端口、源路由、SOCKS 、TCP 序列預測或者使用遠端過程通路(RPC)進行直接掃描等方法對防火牆進行攻擊。

3. 資料庫管理系統安全的脆弱性

資料庫管理系統的安全必須與作業系統的安全相比對。由于資料庫的安全管理同樣是建立在分級管理的基礎之上的,是以 DBMS 的安全也是脆弱的。

4.缺少安全管理

世界上現有的資訊系統絕大多數都缺少安全管理者,缺少資訊系統安全管理的技術規範,缺少定期的安全測試與檢查,更缺少安全監控。

我國許多企業的資訊系統已經使用了許多年,但計算機的系統管理者與使用者的注冊還出于預設配置的狀态。

從某種意義上講,缺少安全管理是造成系統不安全的最直接因素。是以,如果要提高整個系統的安全性,首要的任務就是找一位專門管理系統的人員,由他來維護和監督系統的安全。

Linux 網絡不安全的因素

大部分計算機安全問題是由于管理不當,而不是由于系統軟體的漏洞。嚴謹的管理将會大大減少系統被非法入侵的可能性。

下面是一些常見的安全漏洞。

1. 特權軟體的安全漏洞

IFS

一種攻擊的方法是通過 IFS(Input Files Separator,輸入字段分隔符) shell 變量來實作的。該變量用于決定傳給 shell 字元串的分隔符。例如,一個程式調用函數 system()或 popen()執行一個 shell 指令,那麼該指令首先由 shell 來分析,如果執行的使用者可以控制 IFS 環境變量,就可能會導緻不可預測的結果。

這是一個典型例子:如果程式執行如下的代碼:

system(“/bin/ls –l”);

如果 IFS 變量被設定為包含”/”字元,而一個惡意的程式被命名為 bin 并且放在使用者的path 變量那,則該指令會被解釋成 bin ls –l,它執行程式 bin 并帶有兩個參數 ls 和-l。為了防止這種情況的發生,一個程式應該盡量不要使用 system()、popen()、execlp()、和 execvp() 這些依賴外部環境的函數來運作其他程式,而應該使用 execle()這樣自行傳遞環境變量的函數。

下面是一個設定 IFS 變量的指令行指令:

%setenv IFS / #C shell

$IFS=/ #B shell

$export $IFS HOME

另一個攻擊方法是通過使用 HOME 環境變量。

通常,csh 和 ksh 在路徑名稱中用字元”~”來代替 HOME 變量。是以,如果一個入侵者能改變 HOME 變量的值,就能利用一個使用字元”~”作為 HOME 指令的 shell 檔案來達到目的。

例如,如果一個 shell 檔案用~/。rhosts 或者$HOME/。rhosts 指向使用者指定的檔案,就有可能被人通過在執行指令前重新設定 HOME 環境變量的方法來進行破壞活動。

PATH

使用 PATH 攻擊方法的特征是,利用 PATH 環境變量中檔案路徑的值和順序。不合理的路徑順序會導緻意外的結果——如果執行的指令不是以絕對路徑的方式執行。例如,用下面的方式指定 PATH:

PATH=。/:/usr/bin:/bin:/sbin

如果有人在目前路徑建立了一個名為 ls 的檔案,它就會比/bin/ls 先執行。如果該檔案包括如下内容:

#! /bin/sh

/bin/cp /bin/sh /tmp/。secret 2>/dev/null rm –f $0

exec /bin/ls “$1”

該代碼會暗中建立一個/bin/sh 的拷貝,它在執行時會以執行該檔案的使用者的身份被執行。此外,它消除證據,使使用者在執行該指令時感覺不到是在執行另外一個程式。

緩沖區溢出

由于不好的程式設計習慣,也會導緻軟體本身的安全漏洞。在這個方面最典型的例子是Morris 蠕蟲攻擊程式。該漏洞是由于系統調用 gets()(系統調用 fgets()沒有這個問題)時不檢查參數的長度而造成的。這使得在使用者的控制下緩沖區會溢出。是以,在正常情況下,程式在遇到緩沖區溢出時會停止運作。而如果使用者對作業系統很熟悉,就可以使程式在遇到緩沖區溢出時轉而運作另一個程式。

設想如下情況,一個特權程式(suid )在遇到緩沖區溢出後轉而執行一個 shell,那麼這時的普通使用者就變成得來 root 使用者。是以,緩沖區溢出問題是非常嚴重的。據統計,有70%以上的成功的非法入侵是通過緩沖區溢出來實作的。另外還有幾個系統調用也存在同樣的漏洞,如 scanf()、sscanf()、fscanf()和 sprintf()。

umask 值

一個程式員經常犯的錯誤是,umask(預設的檔案保護掩碼)的設定不正确。許多程式沒有檢查 umask(的值,而且經常忘記指定建立檔案的保護掩碼值。程式建立了一個新檔案,卻忘記改變其保護模式而使之安全。黑客們經常可以利用這一點,更改可寫的檔案進而擷取特權。

是以,在建立一個新檔案之前,一定要先用 Linux 提供的系統調用 umask()設定一個正确的 umask 值。

狀态傳回值

另一個程式員經常犯的錯誤是程式不檢查每個系統調用的傳回值。在程式設計時程式員往往會認為某些系統調用總是正确執行的。但是,如果一個黑客可以控制他的運作環境, 那麼他就可以設法使一個在程式中被認為是永遠正确的系統調用産生錯誤。這會使使用者的程式産生不可預測的結果。

捕捉信号

一般,程式員編寫的程式不捕捉它可以接收的信号,這一點也常常被黑客們所利用。例如,一個黑客将其 umask 設定為一個适當的值,然後向一個沒有正确捕捉信号的特

權程式發送 SIGQUIT 信号——該信号導緻該程式産生 core 檔案。此時,該 core 檔案的所有者是執行該程式的 UID,但是它的保護掩碼是 umask 設定的,黑客可以讀取這個檔案。黑客就可以進一步利用 gdb 等工具來讀這個core 檔案,進而可能擷取系統上的重要資訊。

隊列邊界檢查

這個漏洞與前面講述的“緩沖區溢出”問題是密切相關的。

典型的情況是,程式中使用了固定長度的數組變量,而在執行時卻不檢查其中的資料是否超過數組邊界,進而導緻程式出現不可預測的結果。

2.特洛伊木馬程式

特洛伊木馬程式與一般使用者想要執行的程式從外觀上(如檔案名)看很相似,例如編輯器、登入程式或者遊戲程式。這種程式與一般使用者想要執行的程式表面上很相似,但是卻完成其他的操作,例如删除檔案、竊取密碼和格式化磁盤等。等到使用者發現,卻為時已晚。

特洛伊木馬可以出現在很多地方。它們可以出現在被編譯過的程式中,也可以出現在又系統管理者執行的系統指令檔案中。有的特洛伊木馬程式還可作為消息(例如電子郵件或發給終端的消息)的一部分發送。一些郵件頭(mail headers)允許使用者退到外殼(shell) 并執行指令,該特性能在郵件被閱讀的時候激活。給終端發送特定的消息能在終端上存儲一個指令序列,然後該指令序列被執行,就好像在終端上直接從鍵盤輸入一樣。編輯器初始化檔案(如 vi 對應的.exrc 檔案)也是經常出現特洛伊木馬的地方。

特洛伊木馬程式非常普遍。黑客們經常以多種方式改變系統,以便在最初的攻擊活動被發現後,還可以進入系統。這也使一個被攻破的系統很難恢複。是以為了找出特洛伊木馬,有必要搜尋整個系統。

3.網絡監聽及資料截取

計算機網絡安全中的一個重大問題是計算機之間傳輸的資料可以很容易的被截取。在過去大型主機的時代,這不成為威脅,因為在那種系統上資料的傳輸處于系統的控制之下。但由于異種機的互聯,敏感資料的傳輸會處于系統的控制之外,有許多現成的軟體可以監視網絡上傳輸的資料。尤其脆弱的是總線型網絡(例如以太網),這種網絡上發送給每個特定機器的資料都可以被網絡上的任何機器截取到。

這意味着任何資料都可以被截取并用于不同的目的,不僅僅包括敏感資料,還有資訊交換(例如登入順序,包括密碼)。資料截取并不一定要從網絡本身截取。通過在網絡軟體上或應用程式上安裝特洛伊木馬,就能截取資料并儲存到磁盤上以備後用。

4.軟體之間的互相作用和設定

計算機安全受到威脅的根本原因是計算機系統的運作的軟體日益增長的複雜性。任何一個人都不可能編寫整個系統,是以也無法預測系統那每個部分之間的互相作用。一個例子是/bin/login 的一個問題,它接收其他一些程式的非法參數,進而可以使普通使用者成為超級使用者。

5.研究源代碼的漏洞

許多入侵者是通過研究一些程式的源代碼而成功的攻擊系統的。通常,這種源代碼可以免費下載下傳得到,這使得許多人可以研究它,并找出裡面的潛在漏洞。過去這種攻擊方法還很少見,而如今卻非常普遍。從某種意義上講,這也是一種好事。因為它可以促程序式員改正軟體錯誤,也使人們了解一些軟體程式設計的方法。

每日分享15分鐘技術摘要選讀,關注一波,一起保持學習動力!

繼續閱讀