對你的系統上所有的用戶設置資源限制可以防止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開頭的是殺死進程用的。