網絡並不比大多數操做系統更安全。雖然沒有任何系統能保證100%安全,但一些安全措施能夠加強系統的安全性,網絡也是如此。當設計安全措施時,你須要從影響安全的兩個方面考慮:用戶的意外操做和入侵。 linux
意外事件的產生主要是用戶缺少培訓或不想遵照程序流程。若是安全策略過於繁瑣,工做將變成一種折磨,你的用戶就會迴避的你的策略。密碼規則過於嚴格,用戶也許會把密碼寫到他們的辦公桌上。
當入侵者侵入你的系統後,他(她)會尋找所感興趣的信息,如信用卡。有些人或許只想讓你的系統垮掉。你能夠採起一些措施來保證你的網絡安全。監控最近產生的 Red Hat 錯誤表。使用 yum,保證 Red Hat 系統包升級到最新。
在工做中:
Red Hat 已經將up2date用yum替換掉, RHEL5 依然保留了 Red Hat Network 註冊和管理工具如:rhn_register 和 rhn_check。若是你使用Fedora Core 6 或 CentOS,Red Hat Network 是不可用的。幸運的是,Red Hat 考試不會考到與 Red Hat Network 有關的知識。
在這章稍後部分,你能夠經過 /etc/hosts.allow 和 /etc/hosts.deny 文件來管理你的系統對特定請求的響應。你可使用基於iptables 或 ipchains 的防火牆實施內核級的安全策略。保證安全的一個簡單方法是儘可能刪除不使用的服務。
基於用戶和主機的安全
防止入侵者利用某個服務侵入的最好方法是將這個服務從Linux 系統上完全刪除。可是,你可能要保留某些服務,以保證未來的須要。
在/etc/xinetd.d 和 /etc/init.d 目錄下,你能夠移除或撤銷不使用的服務。對於你須要的服務,你可使用 /etc 目錄下的hosts.allow 和 hosts.deny 文件來控制接入服務的用戶、計算機甚至某個網絡。這個系統被稱爲 tcp_wrappers,默認是開啓的,主要保護 xinetd 服務,在第13章有描述。
當系統收到某個服務的網絡請求,它將請求轉到 tcp_wrappers。系統記錄這個請求並檢查進入規則。若是沒有特定主機和IP地址的限制,tcp_wrappers 將控制權交給服務。
關鍵的文件是 hosts.allow 和 hosts.deny。原理很簡單:hosts.allow 中的用戶和客戶端是被容許接入的;而hosts.deny 中的用戶和客戶端會被拒絕鏈接。若是用戶或客戶端同時出如今兩個文件中,則 tcp_wrappers 系統遵循以下步驟:
一、查詢 /etc/hosts.allow 文件,若是匹配,容許進入,再也不作其餘操做;
二、查詢 /etc/hosts.deny 文件,若是匹配,拒絕進入,再也不作其餘操做;
三、若是兩個文件都沒有匹配項,則默認容許接入。
/etc/hosts.allow 與 /etc/hosts.deny 文件中的語法是相同的。基本的格式與命令以下:
daemon_list : client_list
最簡單的版本是:
ALL : ALL
這將應用規則到全部服務和全部用戶或主機、IP地址。若是在 /etc/hosts.deny 定義以上規則,則全部的鏈接都是被禁止的。 固然,你能夠創建更好的過濾條件。如:在 /etc/hosts.allow 加入下列內容,將容許從 192.168.1.5 鏈接到 Telnet 服務:
telnetd : 192.168.1.5
一樣的內容放入 /etc/hosts.deny 中將禁止這個IP地址鏈接到你係統的 Telnet 服務。你能夠指定一個客戶端經過不一樣的方法,以下所示:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
客戶端 描述
.example.com 域名。以「.」開始,表示這個域名下全部客戶端。也能夠定義具體的,如:user.example.com
172.16. IP 地址。以「.」結束,表示網段下全部客戶端。具體的描述爲:a.b.c.e
172.16.72.0/255.255.254.0 用子網掩碼標識的 IP 子網。不支持CIDR(172.16.72.0/23)。
ALL 全部客戶端,或全部服務
user@linux1.example.com 某個計算機的具體用戶
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如上所示,這裏有兩種不一樣的通配符。「ALL」用了匹配全部客戶端或服務。「.」匹配全部主機或 IP 網絡地址。
你可使用逗號「,」來設定多個服務和地址。例外狀況但是使用 EXCEPT 進行操做。請看下列 /etc/hosts.allow 文件中的示例:
#hosts.allow
ALL : .example.com
telnetd : 192.168.25.0/255.255.255.0 EXCEPT 192.168.25.73
sshd, in.tftpd : 192.168.1.10.25.73
文件中第1行以「#」開始的是註釋。第2行使用「ALL」將全部服務對 example.com 域開放。第3行將 Telnet 服務對除 IP 地址 192.168.25.73 外的 192.168.25.0/255.255.255.0 網段開放。第4行對IP 地址 192.168.1.10 開放了 SSH 和 TFTP服務。
下列代碼展現了利用 hosts.deny 對訪問進行控制:
#hosts.deny
ALL EXCEPT in.tftpd : .example.org
telnetd : ALL EXCEPT 192.168.1.10
ALL:ALL
hosts.deny文件中的第1行是註釋。第2行定義了對域 .example.org 開放除 TFTP 外的全部服務。第3行將 Telnet 開放給全部用戶,IP 地址 192.168.1.10 除外。最後,第4行禁止了全部客戶端對 tcp_wrappers 控制的全部服務的訪問。
你也能夠在 /etc/hosts.allow 或 /etc/hosts.deny 使用 twist 或 spawn 命令來控制 shell 命令;它們主要用於發送消息、跟蹤接入和記錄問題。例如,如下 /etc/hosts.deny 中的內容:
telnetd : .crack.org : twist /bin/echo Sorry %c, access denied
這條命令將對試圖鏈接 Telnet 的 crack.org 域的用戶發送錯誤消息。 不一樣的運算符如:%c 有以下描述:(這些運算符將幫助你跟蹤入侵者)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
運算符 描述
%a 客戶端地址
%A 主機地址
%c 客戶端信息
%d 進程名稱
%h 客戶端主機名
%H 服務器名稱
%p 進程ID
%s 服務器信息
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在這個練習中,你將利用 tcp_wrappers 來控制對網絡資源的訪問。 tcp_wrappers 默認是開啓的,你不須要作任何修改或安裝的工做。
一、肯定你能夠利用本地地址 telnet 到系統中。首先你要些事情:
1)從 krb5-workstation RPM 包安裝 Kerberos Telnet 服務;
2)使用 chkconfig krb5-telnet on 激活服務;
3)容許服務經過防火牆和 SELinux 服務(若是你對防火牆和SELinux不熟的話,建議先把它們關掉);
4)在 /etc/hosts 定義你的主機名(好比說 rhel5l1)。
127.0.0.1 rhel5l1 localhost.localdomain localhost
5)要知道,RHEL5默認是不容許 root 經過 telnet 登陸。
二、編輯 /etc/hosts.deny 文件,加入以下內容(不要忘記保存哦):
ALL : ALL
三、當你登陸到本地的 telnet 服務時發生了什麼?
四、編輯 /etc/hosts.allow 文件,加入下列內容:
telnetd : 127.0.0.1
五、如今登陸看看??
六、若是你可使用其餘的系統,你可使用 tcp_wrappers 對它們進行限制。也不要忘了那些有趣的運算符(%a,%c)。
七、實驗完成後,記得將改動內容改回去。
shell