Linux網路安全之經驗談(4)

  關於用戶資源 對你的系統上所有的用戶設定資源限制可以防止dos類型攻擊,如最大進程數,記憶體數量等。例如,對所有用戶的限制, 編輯/etc/security/limits.con加入以下幾行:

* hard core 0
* hard rss 5000
* hard nproc 20

你也必須編輯/etc/pam.d/login檔案,檢查這一行的存在:

session required /lib/security/pam_limits.so

上面的命令禁止core files“core 0”,限制進程數為“nproc 50“,且限制記憶體使用為5m“rss 5000”。

關於nfs伺服器

由於nfs伺服器漏洞比較多,你一定要小心。如果要使用nfs網路檔案系統服務,那么確保你的/etc/exports具有最嚴格的存取許可權設定,不意味著不要使用任何通配符,不允許root寫許可權,mount成唯讀檔案系統。你可以編輯檔案/etc/exports並且加:

/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)

其中/dir/to/export 是你想輸出的目錄,host.mydomain.com是登錄這個目錄的機器名,ro意味著mount成唯讀系統,root_squash禁止root寫入該目錄。最後為了讓上面的改變生效,還要運行/usr/sbin/exportfs -a

關於開啟的服務

默認的linux就是一個強大的系統,運行了很多的服務。但有許多服務是不需要的,很容易引起安全風險。這個檔案就是/etc/inetd.conf,它制定了/usr/sbin/inetd將要監聽的服務,你可能只需要其中的兩個:telnet和ftp,其它的類如shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth, etc. 除非你真的想用它。否則統統關閉之。

你先用下面的命令顯示沒有被注釋掉的服務:

grep -v "#" /etc/inetd.conf

這個命令統計面前服務的總數:

ps -eaf|wc -l

需要提醒你的是以下三個服務漏洞很多,強烈建議你關閉它們:s34yppasswdd(nis伺服器)、s35ypserv(nis伺服器)和s60nfs(nfs伺服器)。

我們可以運行#killall -hup inetd來關閉不需要的服務。當然,你也可以運行

#chattr +i /etc/inetd.conf

如果你想使inetd.conf檔案具有不可更改屬性,而只有root 才能解開,敲以下命令

#chattr -i /etc/inetd.conf

當你關閉一些服務以後,重新運行以上命令看看少了多少服務。運行的服務越少,系統自然越安全了。我們可以用下面命令察看哪些服務在運行:

netstat -na --ip

如果你用的是redhat那就方便多了。^_^ redhat提供一個工具來幫助你關閉服務,輸入/usr/sbin/setup,然後選擇"system services",就可以定製系統啟動時跑哪些服務。另外一個選擇是chkconfig命令,很多linux版本的系統都自帶這個工具。腳本名字中的數字是啟動的順序,以大寫的k開頭的是殺死進程用的。