天天看點

linux安全設定

一個潛在的黑客如果要攻擊你的Linux伺服器,他首先就會嘗試緩沖區溢出。在過去的幾年中,以緩沖區溢出為類型的安全漏洞是最為常見的一種形式了。更為嚴重的是,緩沖區溢出漏洞占了遠端網絡攻擊的絕大多數,這種攻擊可以輕易使得一個匿名的Internet使用者有機會獲得一台主機的部分或全部的控制權!

為了防止此類攻擊,我們從安裝系統時就應該注意。如果用root分區紀錄資料,如log檔案和email,就可能因為拒絕服務産生大量日志或垃圾郵件,進而導緻系統崩潰。是以建議為/var開辟單獨的分區,用來存放日志和郵件,以避免root分區被溢出。最好為特殊的應用程式單獨開一個分區,特别是可以産生大量日志的程式,還有建議為/home單獨分一個區,這樣他們就不能填滿/分區了,進而就避免了部分針對Linux分區溢出的惡意攻擊。

關于BIOS

記着要在BIOS設定中設定一個BIOS密碼,不接收軟碟啟動。這樣可以阻止不懷好意的人用專門的啟動盤啟動你的Linux系統,并避免别人更改BIOS設定,如更改軟碟啟動設定或不彈出密碼框直接啟動伺服器等等。

關于密碼

密碼是系統中認證使用者的主要手段,系統安裝時預設的密碼最小長度通常為5,但為保證密碼不易被猜測攻擊,可增加密碼的最小長度,至少等于8。為此,需修改檔案/etc/login.defs中參數PASS_MIN_LEN(密碼最小長度)。同時應限制密碼使用時間,保證定期更換密碼,建議修改參數PASS_MIN_DAYS(密碼使用時間)。

關于Ping

既然沒有人能ping通你的機器并收到響應,你可以大大增強你的站點的安全性。你可以加下面的一行指令到/etc/rc.d/rc.local,以使每次啟動後自動運作,這樣就可以阻止你的系統響應任何從外部/内部來的ping請求。

echo 1 》 /proc/sys/net/ipv4/icmp_echo_ignore_all

關于Telnet

如果你希望使用者用Telnet遠端登入到你的伺服器時不要顯示作業系統和版本資訊(可以避免有針對性的漏洞攻擊),你應該改寫/etc/inetd.conf中的一行象下面這樣:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

加-h标志在最後使得telnet背景不要顯示系統資訊,而僅僅顯示login。

關于特權賬号

禁止所有預設的被作業系統本身啟動的且不需要的帳号,當你第一次裝上系統時就應該做此檢查,Linux提供了各種帳号,你可能不需要,如果你不需要這個帳号,就移走它,你有的帳号越多,就越容易受到攻擊。

為删除你系統上的使用者,用下面的指令:userdel username

為删除你系統上的組使用者帳号,用下面的指令:groupdel username

在終端上打入下面的指令删掉下面的特權用賬号:

userdel adm

userdel lp

userdel sync

userdel shutdown

userdel halt

userdel mail

如果你不用sendmail伺服器,就删除這幾個帳号:

userdel news

userdel uucp

userdel operator

userdel games

如果你不用X windows 伺服器,就删掉這個帳号。

userdel gopher

如果你不允許匿名FTP,就删掉這個使用者帳号:

userdel ftp

關于su指令

如果你不想任何人能夠su為root的話,你應該編輯/etc/pam.d/su檔案,加下面幾行:

auth sufficient /lib-

http://security.chinaitlab.com/pam_rootok-

.so debug

auth required /lib-

http://security.chinaitlab.com/pam_wheel-

.so group=isd

這意味着僅僅isd組的使用者可以su作為root。如果你希望使用者admin能su作為root.就運作下面的指令:

usermod -G10 admin

suid程式也是非常危險的,這些程式被普通使用者以euid=0(即root)的身份執行,隻能有少量程式被設定為suid。用這個指令列出系統的suid二進制程式:

suneagle# find / -perm -4000 -print

你可以用chmod -s去掉一些不需要程式的suid位。

關于賬戶登出

如果系統管理者在離開系統時忘了從root登出,系統應該能夠自動從shell中登出。那麼,你就需要設定一個特殊的 Linux 變量“tmout”,用以設定時間。 同樣,如果使用者離開機器時忘記了登出賬戶,則可能給系統安全帶來隐患。你可以修改/etc/profile檔案,保證賬戶在一段時間沒有操作後,自動從系統登出。 編輯檔案/etc/profile,在“histfilesize=”行的下一行增加如下一行:

tmout=600

則所有使用者将在10分鐘無操作後自動登出。注意:修改了該參數後,必須退出并重新登入root,更改才能生效。

關于系統檔案

對于系統中的某些關鍵性檔案如passwd、passwd.old、passwd._、shadow、shadown._、inetd.conf、services和lilo.conf等可修改其屬性,防止意外修改和被普通使用者檢視。 如将inetd檔案屬性改為600:

# chmod 600 /etc/inetd.conf

這樣就保證檔案的屬主為root,然後還可以将其設定為不能改變:

# chattr +i /etc/inetd.conf

這樣,對該檔案的任何改變都将被禁止。 你可能要問:那我自己不是也不能修改了?當然,我們可以設定成隻有root重新設定複位标志後才能進行修改:

# chattr -i /etc/inetd.conf

關于使用者資源

對你的系統上所有的使用者設定資源限制可以防止DoS類型攻擊,如最大程序數,記憶體數量等。例如,對所有使用者的限制, 編輯/etchttp://security.chinaitlab.com/limits.con加入以下幾行:

* hard core 0

* hard rss 5000

* hard nproc 20

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

session required /libhttp://security.chinaitlab.com/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

繼續閱讀