王俊杰 武漢傳媒學院
服務器運行的物理安全環境是很重要的,很多人忽略了這點。物理環境主要是指服務器托管機房的設施狀況,包括通風系統、電源系統、防雷防火系統以及機房的溫度、濕度條件等。這些因素會影響到服務器的壽命和所有數據的安全。我不想在這里討論這些因素,因為在選擇IDC時你自己會作出決策。
在這里著重強調的是,有些機房提供專門的機柜存放服務器,而有些機房只提供機架。所謂機柜,就是類似于家里的櫥柜那樣的鐵柜子,前后有門,里面有放服務器的拖架和電源、風扇等,服務器放進去后即把門鎖上,只有機房的管理人員才有鑰匙打開。而機架就是一個個鐵架子,開放式的,服務器上架時只要把它插到拖架里去即可。這兩種環境對服務器的物理安全來說有著很大差別,顯而易見,放在機柜里的服務器要安全得多。
很多Windows服務器采用終端服務進行管理,在一個機架式的機房里,你可以隨便把顯示器接在哪臺服務器上。如果你碰巧遇到某臺機器的管理員或使用者正通過終端使用這臺機器,那么他的操作你可以一覽無余。甚至,你可以把鍵盤接上去,把他killoff,然后完全控制這臺機器。當然,這種事情比較少見,但不意味著不可發生。
在系統安全體系中,權限認證體系最為關鍵。當一個用戶訪問一個文件的時候;如果當前用戶的UID與文件owner的UID匹配,那么就遵守第一個三位組的權限,如果不匹配那么看GID。如果當前用戶的GID與文件group的GID匹配,那么就遵守第二個三位組的權限。如果當前用戶的UID與GID和文件的owner與group都不匹配,那么就看第三個三位組other的權限。
默認情況下管理員的umask 022,普通用戶的umask 002。
下面我們就以文件默認權限是666,umask是033,來講解一下最后我們得到一個文件的權限。
1.666的權限是rw- rw- rw-,換算成 2進制 110 110 110。
2.umask 033 權限是 --- -wx -wx ,換算成2進制 000 011 011。
3.umask 2進制取反 000 011 011 -------->111 100 100。
4.umask 取反后的2進制和默認權限做與運算。
inux建議使用普通用戶,如果用到root之后,需要切換管理員,那么用su有安全問題,su的時候需要輸入root密碼,可能密碼太簡單,站旁邊就能看到你輸入的什么密碼,有可能有鍵盤記錄木馬,所以這種情況相當危險。可以使用sudo,sudo用的是普通用戶的密碼,就算丟密碼也沒問題,再一個使用sudo是需要授權的。
系統是怎么對一個用戶的登錄過程進行一步步驗證的,如果驗證的過程中不能滿足我的要求,那我們能不能設置我們自己的驗證?
假如我是以上程序的開發人員,在寫代碼的時候,有一部分代碼是做身份驗證的,比如使用的時候使用賬戶密碼,什么時候只要有密碼都可以登錄,那好,我加點功能,規定指定的時間可以登錄,問題又來了,用戶要求只想讓某臺機器登錄,這時候我又加點功能,這樣下去,千奇百怪的問題都會來,那我的代碼會越來越長。怎么辦?
同一種花色的門,用戶對鎖有各種各樣的要求,要都生產的話,那生產的太多了,怎么辦?我在門上留鎖孔,由用戶自己去市場買鎖,這鎖還可換,選擇性還大。以上的道理就是:應用與驗證分離那么現在就來說下PAM ,pam就相當于一堆鎖,用戶想用就用。
安全增強型Linux(SELinux)開始是由NSA(國家安全局)啟動并加入到Linux系統中的一套核心組件及用戶工具,可以讓應用程序運行在其所需 的最低權限上。未 經修改過的Linux系統是使用自主訪問控制的,用戶可以自己請求更高的權限,由此惡意軟件幾乎可以訪問任何它想訪問的文件,而如果你授予其root權限,那它就無所不能了。
所有DAC機制都有一個共同的弱點,就是它們不能識別自然人與計算機程序之間最基本的區別。簡單點說就是,如果一個用戶被授權允許訪問,意味著程序也被授權訪問,如果程序被授權訪問,那么惡意程序也將有同樣的訪問權。DAC最根本的弱點是主體容易受到多種多樣的惡意軟件的攻擊,MAC就是避免這些攻擊的出路,大多數MAC特性組成了多層安全模型。
工作在linux內核中的網絡防火墻系統,iptables與netfilter是一組工具,起到防火墻作用的是netfilter,它是內核中的一個框架frame。iptables是一個能夠生成防火墻規則,并將規則加載到frame中使其生效的一個工具。
防火墻定義:對于計算機網絡而言,工作在主機邊緣(網卡)或者網絡的邊緣(路由),對于進出的各種數據報文(TCP報文、IP報文等)進行檢查和監控,并且能夠根據事先定義好的規則(匹配標準),對匹配到的報文做出該規則中定義好的處理方法進行處理(管理)的一套組件或者機制就叫做防火墻(網絡防火墻)。
網絡防火墻(Linux主機),其網絡功能是由Linux內核實現,而netfilter框架上應用的防火墻規則也應該是加載到內核中,由內核執行相應的規則,使其具有相應功能。具體來說,Linux內核中,TCP/IP協議棧具體完成網絡通信功能實現,而所謂的netfilter會將防火墻規則加載或者設置到TCP/IP協議棧上才能發揮具體功用。
①規則(rules):網絡管理員預定義的條件
②鏈(chains):是數據包傳播的路徑
③表(tables):內置3個表filter表,nat表,mangle表分別用于實現包過濾網絡地址轉換和包重構的功能。
另外一個問題,對每個"鏈"上都放置了一串規則,但是這些規則有些很相似,比如,A類規則都是對IP或者端口的過濾,B類規則是修改報文,那么這個時候,我們是不是能把實現相同功能的規則放在一起呢,必須能的。
我們把具有相同功能的規則的集合叫做"表",所以說,不同功能的規則,我們可以放置在不同的表中進行管理,而iptables已經為我們定義了4種表,每種表對應了不同的功能,而我們定義的規則也都逃脫不了這4種功能的范圍,所以,學習iptables之前,我們必須先搞明白每種表的作用。
iptables為我們提供了如下規則的分類,或者說,iptables為操作者提供了如下"表"。
但是需要注意的是,某些"鏈"中注定不會包含"某類規則",就像某些"關卡"天生就不具備某些功能一樣,比如,A"關卡"只負責打擊陸地敵人,沒有防空能力,B"關卡"只負責打擊空中敵人,沒有防御步兵的能力,C"關卡"可能比較NB,既能防空,也能防御陸地敵人,D"關卡"最屌,海陸空都能防。