SUSE安全大揭秘之“十誡”

來源:互聯網
上載者:User

  【51CTO.com獨家特稿】SUSE由於其出色的效能和對安全較好的控制,吸引了很多企業級使用者,目前在國內開始有大量的關鍵應用。但這並不代表SUSE在使用中就是安全的,SUSE裡還有很多安全細節要注意。本文就SUSE中的這些安全細節進行逐一介紹,為大家揭開每一個需要注意的地方。

  一、補丁、SSH及其他

  1、補丁

  每個補丁的更新都意味著這是一個安全性漏洞,或是有其他嚴重的功能問題,但如果更新補丁則又可能導致系統的一些異常,甚至引起一些服務的癱瘓。所以對於補丁的更新要謹慎處理。從實際的角度來說,有4種做法:

  1)是在剛裝完系統之後立刻更新補丁,然後再上應用。

  2)是通過外圍防護手段來保護伺服器,可以用防火牆、IPS之類的手段。

  3)是在測試機上更新補丁。不過值得注意的是,有些補丁帶來的問題是隱性的,可能今天明天沒問題,但後天出了問題,所以,觀察的時間需要久一些。

  4)、如果你的SUSE伺服器比較多,也可以通過NFS共用或者內部的FTP、HTTP服務來完成。但FTP、HTTP又會帶來另外的安全風險。
SUSE的補丁升級,需要去下載Novell的新RPM。RPM包的安裝會有先有後,不過多數情況下,RPM會根據其依賴關係來處理。另外,Novell也有一些在特殊情況下的提示,比如核心更新、C運行庫等。Novell公司提供了一個強大的工具YaST,不過遺憾的是,YaST自身也不安全,有線上升級不安全臨時檔案建立漏洞。

  加固方法:輸入yast,在software中選擇online update。

  2、SSH

  SUSE上預設安裝了OpenSSH,OpenSSH是目前比較流行並且免費的加密串連工具,但OpenSSH的低版本也存在不少安全性漏洞,所以最好還是去http://www.openssh.org下載最新版本的。在升級到最新版本之後,SSH仍有很多需要安全強化工作要做。比如限制那些賬戶的登入、更改預設連接埠、指定可訪問的網路等等,限於篇幅本文對此不做更詳細的介紹。但至少有一點,是你必須要做的:將協議版本修改為2。因為版本1的安全問題實在太嚴重了,甚至可以截獲密碼。

  加固方法:

  vi /etc/ssh/ssh_config

  修改protocol的值為2。

  3、系統效能審計

  對於營運人員來說,需要經常監控系統的效能情況,SUSE提供的sysstat就是一個檢測系統狀態的工具,比如比如CPU利用率、磁碟I/O等。sysstat預設每10分鐘收集一次系統資料,可以用sar命令查看。sysstat首先會建立一個正常的效能曲線,當這個基準建立完畢以後,任何超出基準的活動都會給出提示。例如密碼猜測、或者在業務高峰期以外的事件會導致CPU利用率過高,從而偏離正常的基準。注意sysstat收集的資料預設是在系統上存放一周,一周之後會被cron任務自動移除,可在/var/log/sa/目錄下來維護收集的資料。但是預設安裝的伺服器版本是不包括sysstat包的,除非安裝的時候選擇了完整安裝。

  加固方法:安裝sysstat,並使用sar命令。

  4、防火牆
SuSEfirewall2是SUSE下面的包過濾防火牆,可以允許、拒絕資料的進出。預設是安裝並且啟用的,而且預設不允許任何服務,要開放服務就必須明確的啟用(比如上面提到的SSH)。

  加固方法:

  在YAST裡,Center--#Security and Users--#Firewall進行防火牆策略調整。
更細粒度的策略配置,可以在YAST Center--#System#--/etc/sysconfig editor-Network/Firewall/SuSEfirewall2,也可直接編輯/etc/sysconfig/SuSEfirewall2檔案。

  5、系統安全定期檢查指令碼seccheck

  seccheck是一個系統安全檢查指令碼,可以每天、每周、每月的定期產生報告,並且郵件發送。不過他在定期啟動並執行時候比較佔用資源,所以要選擇在非業務高峰期來做。

  加固方法:YAST Center-System-#/etc/sysconfig-System/Security/Seccheck selection

  6、SUSE的安全應用程式框架AppArmor
AppArmor和SuSEfirewall2相比,他的特點在於對應用級的保護,可以管理應用的檔案和目錄訪問等更細顆粒的操作,是一個白名單的機制,即指定哪些行為才是允許的,其他的拒絕,這樣可以更好的隱藏內部系統。比如你的系統存在一個漏洞,但由於對其的操作沒有受到白名單允許,所以操作會被拒絕。

  加固方法:YAST Center-Novell AppArmor可以調整細節策略、查看報告。如果不熟悉的話,AppArmor還內設了一個嚮導功能。

  二、最小化xinetd

  1、關閉標準服務

  SUSE使用xinetd,他比inetd更優秀也更方便使用。SUSE預設情況下是關閉所有服務的,在啟用SSH之後,就可以配置xinetd的服務了。安全的做法也應該如此,先關閉所有服務,然後只啟用必須的服務。

  加固方法:運行chkconfig查看所有服務的開啟狀態,對不需要的服務進行關閉。

  2、可信網路接入

  對伺服器的訪問應該受到控制,所以需要用SuSEfirewall2或者其他的措施來控制,只允許那些可信的網路接入。

  加固方法:

  vi /etc/sysconfig/SuSEfirewall2中的第10項配置。也可以在yast Center#System#/etc/sysconfig editor進行配置。

  3、telnet

  如果不是有特別的理由,不要使用telnet,telnet使用的是不加密的網路通訊協定,這就意味著從你的帳號到你傳輸的資料,都可以被人竊聽,嚴重的可以通過工作階段劫持控制你的系統。所以這裡還是強烈建議使用SSH,雖然SSH也不是那麼的安全。

  加固方法:

  開啟的命令是chkconfig telnet on。

  關閉的命令是chkconfig telnet off。

  4、FTP

  同樣,在沒有充分理由的情況下,不要使用FTP,尤其是匿名FTP。和telnet一樣,FTP也不加密,也可以被人竊聽或者工作階段劫持。SSH則提供了SCP和SFTP,可以取代FTP。要注意的是,有時候FTP可能是因為某些應用綁定的,比如我多次見到的WEB上傳通道,所以你必須要用這種匿名FTP。如果必須要用FTP,那還是要做一些控制,要注意的一點是,FTP的目錄應該受到控制,最好能有自己的分區。在SUSE上,vsftpd預設是不安裝的。

  加固方法:

  開啟的命令是chkconfig vsftpd。

  關閉命令是chkconfig vsftpd off。

  5、rlogin/rsh/rcp

  所有r系列的命令都應該被關閉。他們除了可以被竊聽之外,在驗證機制上也存在問題,並且還有其他的安全性漏洞,比如緩衝區溢位、任意命令執行等。建議還是用SSH來取代。

  加固方法:

  開啟命令是

  chkconfig rexec on

  chkconfig rlogin on

  chkconfig rsh on

  關閉他們:

  chkconfig rexec off

  chkconfig rlogin off

  chkconfig rsh off

  6、TFTP

  TFTP一般用在無盤工作站, X-terminals等情況下。路由器或者其他網路裝置的配置資料可以利用它複製,實現備份功能。當然,在這裡,沒有特殊原因,我們仍然建議你禁用。TFTP在SUSE上也不是預設安裝的。

  關閉命令chkconfig tftp off

  7、IMAP

  只有郵件伺服器才會用到IMAP,一些郵件用戶端(比如Eudora、Netscape Mail和Kmail)需要使用IMAP來檢索遠程郵件。

  加固方法:關閉服務的命令

  chkconfig cyrus off或chkconfig imap off。

  8、POP

  這是一個收郵件的服務,作為伺服器有收取郵件的需要嗎?如果沒有,同樣也應關閉。

  加固方法:chkconfig qpopper off或chkconfig cyrus off。

  三、最小化啟動服務

  1、設定umask

  系統預設的umask至少應設定成027,有些守護進程比如系統日誌,會預設設定為任何人可以寫檔案。如果某個守護進程需要放開對許可權的限制,可以考慮修改守護進程的啟動指令碼,給以其許可權,同時又不會影響伺服器的其他安全。

  加固方法:

  vi /etc/profile,改變umask的值為027。

  對/home下的所有使用者,根據其shell類型,定義umask的值。一般在/home/.profile中新增加一行umask 027。

  2、SMTP

  需要確認伺服器是否需要處理郵件。SUSE中,預設安裝的是Postfix,並且是啟用狀態。如果這台伺服器是郵件伺服器的話,需要注意的是,有許可權在web介面上搜尋附件是一個安全隱患。另外,如果你對郵件伺服器管理有經驗的話,你會知道為postfix規劃一個chroot環境有多麼重要。在chroot環境下,即使有人闖入了smtpd daemon,能夠造成的損害也比較有限。

  加固方法:

  開啟:vi /etc/sysconfig/mail,設定SMTPD_LISTEN_REMOTE="yes"。在防火牆上也必須啟用。

  關閉:vi /etc/sysconfig/mail,設定SMTPD_LISTEN_REMOTE="no"。

  3、運行層級

  SUSE裡有兩個主要的運行層級,層級5直接啟動到X Windows,層級3則是字元介面。但注意的是,即使系統運行在層級3,使用者仍然可以在shelle下執行startx來啟動X Windows。

  加固方法:

  設定為層級3,vi /etc/inittab,將id:5:initdefault中的5修改為3。

  4、X Font Server

  對於伺服器來說,一般不需要運行X Windows,如果不使用圖形介面的話,X Font Server就可以關掉,他是為圖形介面提供字型集用的,並且XFS還有一些緩衝區溢位的問題。

  加固方法:

  關閉X Font Server:chkconfig xfs off

  5、標準啟動服務

  每個系統的守護進程,如果你不能明確知道必須開啟的話,都應該關閉。伺服器上啟動並執行脆弱應用,將大大增加風險。SUSE使用chkconfig來管理所有的系統服務指令碼。這裡要注意的是,SUSE的補丁程式可能會恢複啟動某些服務,在更新補丁之前,最好還是先記錄一下你已經啟動哪些服務。還有就是一些守護進程會擁有一些賬戶,對這些賬戶要進行刪除、鎖定,避免別人登入,或者對他的Shell設定成/bin/false。

  加固方法:

  添加、刪除啟動服務的方法是在在不同運行層級下的目錄裡,首先你需要知道你的系統運行界別,使用runlevel命令查看運行層級,如果運行層級是3的話,那就需要在/etc/rc.d/rc3.d修改。這裡面以S開頭的,都是啟動時會啟動並執行服務。例如mv /etc/rc3.d/S04rpcbind etc/rc3.d/K04rpcbind,是將rpcbind服務關閉。

  另外還需要對守護進程的賬戶進行刪除或鎖定,刪除使用者命令是userdel,可以刪除這些使用者:adm lp sync shutdown halt news uucp operator gopher,如果不用x windows的話可以刪除games,如果沒有匿名ftp可以刪除ftp。

  6、SMB和NMB

  SUSE提供了Samba,為windows使用者提供檔案和列印共用,這樣unix系統可以在windows的網路上充當檔案伺服器、列印伺服器,甚至為早期的windows系統充當域控驗證伺服器。Samba需要用到SMB和NMB協議,SMB是Windows的檔案分享權限設定,NMB是NetBIOS訊息塊。如果不需要充當這些角色的話,就應該關閉這兩個協議。關閉命令 chkconfig smb off

  7、NFS

  NFS經常被利用來越權存取檔案,所以沒有需要也應關閉。即使真的需要NFS服務,也應該採取控制措施,包括限制訪問的IP範圍、檔案的唯讀等。NFS的用戶端服務也應關閉。

  關閉命令:

  chkconfig nfsserver off

  chkconfig autofs off

  8、NIS

  除非十分有必要,否則不要使用NIS。NIS是網路資訊服務的縮寫,類似與windows中的網域控制站。NIS雖然使用維護簡單,但有設計上的安全問題,而且也完全可以用LDAP來替代。

  關閉命令:

  chkconfig ypserv off

  chkconfig yppasswdd off

  9、RPC連接埠映射

  要想NIS能夠運行,須首先運行portmap守護進程。但是RPC的驗證機制很薄弱,很容易被繞過,卻可以利用RPC得到很多重要的資訊。除非是需要NIS,最好禁用。

  關閉命令:chkconfig portmap off

  10、ncpfs指令碼

  ncpfs是NFS、windows網路裡共用檔案需要用到的,但並非預設安裝,如果沒有網際網路共用在使用,就把它停掉。這個指令碼會掛載在客戶機的網路磁碟機上,好在它不是一個持續的守護進程,所以相對來說不是那麼危險。

  關閉命令:chkconfig ncpfs off

  11、apache

  只有WEB伺服器才會用到,即使這台伺服器是WEB伺服器,也不要把資料庫和其他環境支援都放在這台伺服器上。

  關閉命令:chkconfig apache2 off

  12、SNMP

  在規模比較大的網路裡會經常用到的網路管理協議,要確定你是不是在使用依賴SNMP的遠程監控工具,比如HP OpenView, MRTG, Cricket等。如果使用了SNMP,也建議更改預設的community string。在SUSE中,snmp的設定在/etc/snmpd.conf裡。

  關閉命令:chkconfig snmpd off

  13、DNS server

  確定你的網路是否需要網域名稱解析的伺服器,針對DNS的攻擊這兩年越來越多,如果必須要用,建議在/etc/named.conf裡 使用存取控制。比如,內部的DNS伺服器不應該對外部開放查詢。在比較大的網路裡,一般都會使用內部和外部的DNS伺服器分別提供查詢,但一些小的網路沒有條件內外分開,就應考慮存取控制。

  關閉命令:chkconfig named off

  14、Squid Cache伺服器

  Squid是一個Proxy 伺服器軟體,其實Squid是一個較好的安全架構,因為他在用戶端和伺服器之間設定了一道代理,在一定程度上減少了系統泄露資訊的風險,防止內部漏洞被發現。但是,在使用Squid的時候要仔細進行配置,有很多關於Squid cache的漏洞。如果不加安全考慮的話,外部仍然可以探測到內部的主機,或者利用你的cache來隱藏攻擊者的真實IP。所以應該配置成:不允許外部人員未經認證使用你的緩衝。

  關閉命令:chkconfig squid off

 

四、核心最佳化

  1、網路參數修改

  SUSE和其他Linux一樣,把網路參數的修改都放在了/proc/sys/net/ipv4下,這裡所有檔案名稱中包含rate和max的變數都可以防止拒絕服務的攻擊。對於每個參數的具體解釋可以參考相關文檔,這裡就不一一介紹。

  建議修改:

  net.ipv4.tcp_max_syn_backlog = 4096

  net.ipv4.conf.all.accept_source_route = 0

  net.ipv4.conf.all.accept_redirects = 0

  net.ipv4.conf.all.secure_redirects = 0

  net.ipv4.conf.default.rp_filter = 1

  net.ipv4.conf.default.accept_source_route = 0

  net.ipv4.conf.default.accept_redirects = 0

  net.ipv4.conf.default.secure_redirects = 0

  net.ipv4.icmp_echo_ignore_broadcasts = 1

  2、其他參數

  如果系統不是作為一個防火牆或網關的話,需要修改以下部分。

  建議修改:

  net.ipv4.ip_forward = 0

  net.ipv4.conf.all.send_redirects = 0

  net.ipv4.conf.default.send_redirects = 0

  五、日誌

  1、syslog

  SUSE使用了syslog-ng來記錄日誌。/var/log/messages包括了iptables, mail, news和messages,並把它們分別發送到(/var/log/firewall, /var/log/mail*, 和/var/log/news。檔案許可權預設是u=rw,g=r,o=。

  2、NTP

  NTP是網路時間協議,目的是保持電腦的時間與網路同步,預設安裝,但是沒有啟用。系統時鐘應該保持一個高準確度,這樣日誌的記錄才能準確的反映時間。NTP啟用後,在udp123連接埠監聽。在配置上,應該忽略任何未明確允許的訊息,只允許本地迴環127.0.0.1和NTP伺服器的訊息,防止別人偽造時間伺服器。對NTP的修改在/etc/ntp.conf下面。

  3、記錄檔許可權

  確保系統記錄檔的所有權和許可權是正確的,記錄檔許可權的配置在/etc/syslog-ng/syslog-ng.conf.in和/etc/logrotate.d

  4、遠程日誌記錄

  配置系統日誌記錄發送到網路的其他主機上。注意的是,這個時候,就需要精確的系統時鐘了,所以需要使用NTP。為什麼要在遠程記錄日誌呢?原因是,如果你的系統發生故障或者崩潰了,它是什麼原因造成的?你就可以在這台遠程記錄日誌的主機上找到原因。syslog-ng可以使用UDP或TCP。但是,除非這台遠程主機能夠保證一直可用、網路也很可靠,否則,建議使用TCP,防止資料丟失。

  例如:在/etc/syslog-ng的syslog-ng.conf中添加

  destination logserver { tcp("10.10.10.10" port(514)); };

  六、檔案許可權許可

  1、在 /etc/fstab使用nodev方式
nodev選項的意思是禁止使用者在任何分區上掛載未授權的裝置,需要掛載裝置時,應該在其他地方比如/dev。但也有例外,比如在chroot的環境中,經常需要在chroot目錄中建立多個裝置。如果在你的機器上使用了chroot,要注意這個nodev的選項。

  2、在/etc/fstab中使用nosuid
在移動介質上,經常會有一些病毒、惡意軟體,通過nosuid選項,可以阻止使用者在光碟機、軟碟機或者隨身碟上運行set-UID許可權的程式。如果機器上有多個行動裝置,也可以在/etc/fstab中相關裝置的第四列設定nosuid。

  3、禁止使用者掛載可移動介質
SUSE預設只有root使用者可以掛載移動介質,如果/etc/fstab被改成允許使用者掛載,可能會讓病毒進入伺服器,或者資料被修改刪除。把它改回nouser選項更有助於安全。

  4、驗證passwd, shadow,group檔案許可權
這些檔案都有著預設的所有者和存取權限,都要修改/etc/shadow許可權為644,並且定期檢查。AIDE是一個不錯的工具,可以提醒你對這些檔案許可權的注意。不過AIDE是Tripwire的非商業版改進,目前還是BETA版,可能不適合用於關鍵的生產系統上。

  5、沒有許可權限制的目錄應該設定粘滯位
你在任何一個目錄上設定粘滯位以後,就只有檔案所有者能夠刪除目錄裡的檔案,而不是任何有寫入權限的人可以刪除。設定粘滯位可以防止彼此覆蓋檔案,無論是意外、惡意行為。但也應在設定粘滯位之前,查看一下你的應用程式文檔,避免破壞用用程式的依賴。

  用這個指令碼進行檢查:
for PART in `awk '($3 ~ "ext2|ext3|reiserfs") \
{ print $2 }' /etc/fstab`; do
find $PART -xdev -type d \
\( -perm -0002 -a ! -perm -1000 \) -print
done
如果你的系統設定的足夠安全的話,這裡應該不會有任何的返回。

  6、任何人都可寫的檔案
在某個檔案上,如果任何人都可以寫,將可能導致對系統的修改,或者對系統上的使用者造成影響。避免這種檔案的出現,要在編寫指令碼或者程式時加以注意,因為這會導致系統的完整性受到影響。一般來說,可以消除寫訪問(chmod o-w ),但對於關鍵伺服器來說,還是要諮詢一下相關廠商。

  用這個指令碼進行檢查
for PART in `awk '($6 != "0") { print $2 }' /etc/fstab`; do
find $PART -xdev -type f \
\( -perm -0002 -a ! -perm -1000 \) -print
done

  如果你的系統設定的足夠安全的話,這裡應該不會有任何的返回。

  7、未授權SUID/SGID的可執行檔

  管理員要檢查在系統裡,有沒有未授權的set-UID。另外如果可能的話,應做Set-UID的審計,或者減少這種Set-UID程式。
檢查方法:
for PART in `awk '($6 != "0") { print $2 }' /etc/fstab`; do
find $PART \( -perm -04000 -o -perm -02000 \) \
-type f -xdev -print
done

  8、尋找無主檔案
不要讓你的系統上有任何無主檔案,無主檔案可能是一個入侵者已經訪問了你的系統,或者是不當檔案包的維護安裝造成的。比如刪除了使用者或者組,但是相關檔案沒有刪除。另一種常見情況是軟體安裝時,沒有正確的設定所有者。NFS掛載檔案,會忽視使用者ID和系統之間的映射同步,也有可能造成無主檔案的產生。如果你在使用NIS或者LDAP,那可能是其他原因造成的,什麼原因就需要你去仔細檢查了。

  檢查方法:
for PART in `awk '($6 != "0") { print $2 }' /etc/fstab`; do
find $PART -nouser -o -nogroup -print
done

 

   七、系統的管理、授權、認證

  1、在PAM設定檔裡移除.rhosts支援
.rhosts定義了哪些電腦和使用者可以不用提供口令就在本機電腦上執行遠程命令,很容易被攻擊者利用。使用.rhosts是對使用者存取控制規則的破壞,盡量關閉。如果有特殊原因,必須要使用,那就需要一些預防措施。永遠不要在.rhosts裡使用+萬用字元。.rhosts必須指定特定的可信任使用者名稱,比如trustedhost DB1,而不是trustedhost。這種在配置HA的時候常見。要避免信任關係之外的主機,而且防火牆或者其他安全裝置應該阻止外部的rlogin/rsh/rcp訪問。最後,還要確保.rhost檔案只有所有者可讀。例如檔案許可權600。

  2、/etc/ftpusers
/etc/ftpusers的列表裡定義了哪些使用者不允許使用系統的FTP,一般來說,應該只有普通使用者可以使用FTP,而不是system這種類型的賬戶。當然,root使用者永遠都不應該使用FTP方式直接傳輸檔案。
SUSE提供了一個netcfg的包,預填充了不該使用FTP的賬戶。

  3、 防止X Server在tcp6000上監聽
X Server在TCP6000上監聽,接受來自其他用戶端的請求。但是,X Server使用了一個相對不安全的身分識別驗證協議,攻擊者可以未授權訪問到本地X Server上。使用"-nolisten tcp" 方式可以取消X Server在TCP6000上預設監聽。

  4、限制使用者使用at/cron
cron.allow、 at.allow定義了誰可以使用crontab、at命令在預定的時間運行作業。在很多系統上,只有系統管理員有這種能力。即使某個使用者不在cron.allow裡面,使用者仍然可以運行cron作業。cron.allow控制的是:crontab命令調度的許可權、修改cron作業的許可權。注意:不要修改/etc/at.deny和/etc/cron.deny檔案,除非你的確瞭解他們,這兩個檔案裡都有合理的預設內容。如果對at和cron必須加以控制,建立/etc/at.allow和/etc/cron.allow檔案,增加適當的使用者。

  5、限制crontab檔案的許可權
系統的crontab檔案只能由cron守護進程(運行超級使用者權限)和crontab命令(set-UID為root)訪問。允許未授權的使用者讀取修改crontab,可以讓使用者獲得許可權提升。

  6、配置xinetd的存取控制
可使用簡單的基於IP的存取控制,限制對xinted的非法串連。現在比較流行的工具是PortSentry,可以用於監視那些試圖訪問未使用連接埠的行為。然後再使用系統防火牆SuSEfirewall2來控制。

  7、限制root登入到系統控制台
root直接登入到系統控制台是不允許的,除非特別情況。在其他時候,管理員應該通過無特權的賬戶並使用授權機制,比如su、sudo來擷取額外的特權。這些機制至少提供了審計的線索。/etc/securtty讓你可以規定root可從哪個tty登入。/etc/securtty列出來的都是可以登入的,注釋、不存在的都是不允許root登入的。

  8、設定LILO/GRUB密碼
大多數的Linux系統,預設在引導時,有裝載提示,這讓攻擊者破壞正常的引導變得很容易。對他設定密碼,這樣在試圖修改LILO或GRUB的時候,就需要驗證,當然,密碼要夠強壯。

  方法

  A、如果你有/etc/lilo.conf 檔案
在/etc/lilo.conf前面添加:
password=

  以root執行命令:
chown root:root /etc/lilo.conf
chmod 600 /etc/lilo.conf

  B、如果是/etc/grub.conf檔案
在/etc/grub.conf取消password的注釋。
以root執行命令:
chown root:root /etc/grub.conf
chmod 600 /etc/grub.conf

  9、對單一使用者模式驗證

  在一些Linux上你可以在LILO模式下鍵入linux single進入單一使用者模式,或者在GRUB的引導編輯菜單。這就帶來風險,進入系統的認證應該始終需要root層級的訪問,防止攻擊者物理訪問系統。SUSE預設禁止這種進入方式,但是作為檢查來說,還是需要檢查一下。如果被改動的話,要搞清楚原因並恢複。8和9這兩個項目都為瞭解決物理/啟動的安全問題,也可以考慮設定只從主硬碟啟動,或者設定BIOS密碼。

  10、限制NFS用戶端請求特權連接埠

  設定:NFS伺服器忽略來自用戶端的低於1024的源連接埠訪問,這不會妨礙到正常的NFS操作,但可以阻止一些使用工具軟體攻擊的人。其設定檔在/etc/exports裡。

  11、syslog的訊息接收

  你的伺服器是Log Service器嗎?需要從網路上、其他主機上接收日誌嗎?如果是肯定的,啟用日誌系統的遠程訊息接受。預設情況下的系統日誌的守護進程是syslogd,不在udp514上監聽來自其他系統的日誌訊息(Solaris相反,預設是接受的。)成立一個獨立的Log Service器來記錄一個或多個日誌,是比較推薦的安全做法。但是,如果你不是Log Service器的話,就不應該開啟udp514的監聽,因為這些資訊的傳遞沒有任何認證機制。攻擊者也可以利用此連接埠發起DDOS攻擊,或者不停的發送日誌訊息填滿你的日誌系統,這樣以後的攻擊就不會被記錄到了。
在syslog-ng.conf.in裡,把下面這行加上#注釋掉
#udp(ip("0.0.0.0") port(514))

  八、使用者賬戶和環境

  1、鎖定系統賬戶
有很多賬戶是系統賬戶,不會被人使用,鎖定這些賬戶有助於減少攻擊者的利用。這些賬戶不應該有shell。如果沒有守護進程/服務使用的話,甚至可以將賬戶刪除。比較簡單的做法是直接停用,停用的做法是鎖定password,設定一個無效的shell(比如/bin/false)。SUSE裡使用/bin/false而不是/dev/null和/bin/nologin。

  2、空密碼賬戶
使用awk -F: '($2 == "") { print $1 }' /etc/shadow尋找空密碼賬戶。空密碼賬戶是指任何人都可以登入,而不用提供密碼。所有的賬戶都應該有健壯的密碼,或者使用鎖定密碼的字串:NP、*LOCKED*。

  3、設定賬戶到期和密碼參數
強制使用者定期改變密碼,設定所有活躍賬戶(除了系統賬戶)強制更改密碼,例如:每90天(-M 90),下次允許更改密碼之前最少的天數7天 (-m 7),使用者在密碼到期前28天收到警告(-W 28)。一旦密碼到期,賬戶將被鎖定7天(-I 7)。最後,密碼最小長度為6。這隻是一些建議,你需要根據你的實際情況在/etc/login.defs進行調整。

  4、確認在passwd, shadow,group裡沒有‘+’
使用命令grep ^+: /etc/passwd /etc/shadow /etc/group檢查。+用於NIS的資料對應配置,在passwd, shadow,group檔案裡存在+號,將會為攻擊者提供一個提權的途徑,應該把它們都刪掉。

  5、確認除了root外,沒有UID為0的賬戶
檢查方法:awk -F: '($3 == 0) { print $1 }' /etc/passwd
任何UID為0的賬戶都擁有系統的超級使用者權限,唯一的超級使用者應該是root,而且還應該通過非特權賬戶su來獲得許可權。

  6、使用者主目錄應為750許可權或者更多的限制
使用者主目錄如果有任何人可寫的目錄,可以導致別人竊取、修改資料,或者獲得其他使用者的許可權。對其他群組成員,取消讀、執行許可權。不過在全域對使用者主目錄的許可權進行修改,可能會造成服務中斷。

  7、刪除User.netrc檔案
find / -name .netrc
.netrc是ftp命令的初始設定檔案,能夠給Ftp帶來一定的方便。但檔案可能包含未加密的密碼。在上出他們之前,要考慮.netrc檔案的作用,因為可能會影響應用。但是一個良好設計的應用,不應該使用.netrc。

  8、設定預設的使用者umask值
將umask設定為077,這樣由使用者建立的檔案和目錄不會被系統上任何其他人可讀。如果需要改變許可權可通過chmod命令。可將uamsk命令插入到shell設定檔中來實現,例如.profile, .cshrc, etc.等。027可讓同組人員可讀,而022的umask值可讓系統上每個使用者都可讀。但是,過於嚴格的umask會導致軟體的安裝問題,比如umask設定為700,那麼他的應用程式或者守護進程就無法讀取檔案。所以一般umask的設定不能過於嚴格,或者在檔案安裝之後再控制umask。

  9、關閉核心轉儲
這個問題需要問一下你的軟體開發商們,他們是否需要偵錯工具,或者需要看到debug的資訊?如果答案是否定的,則可以關閉。核心轉儲會大量消耗磁碟空間,並且核心轉儲會包含敏感性資料。開發人員需要用這個功能來協助調試。/etc/security下的limits.con檔案是用來控制核心轉儲的開關。

  10、限制root賬戶su
su命令允許你成為系統上的其他使用者,常常被用來作為root執行命令。如果不希望某些使用者可以su到root,在/etc/pam.d/su下加入:

  auth required pam_wheel.so

  這行命令的意思是,只允許wheel組的使用者,可以su為root。其他使用者在su root的時候,會收到一條訊息,說該密碼是不正確的。通過限制使用root賬戶,即使使用者知道root密碼,也無法成為root使用者,除非它能夠物理上控制這個伺服器,或者他被添加到wheel組。
這樣就增加了一個安全保護層,防止未經授權的訪問。

  九、殺毒

  在有些系統上,比如郵件伺服器、檔案伺服器,主要是給windows使用者使用的,應該有殺毒軟體來保護。linux平台下的殺毒軟體有:
Sophos http://www.sophos.com/ 商業軟體
NAI Virus Scan 商業軟體
McAfee http://www.mcafee.com/ 商業軟體
ClamAV http://www.clamav.net/ 開源軟體
f-prot Antivirus 商業軟體
f-prot Antivirus http://www.f-prot.com 商業軟體
Trend Micro 商業軟體
Computer Associates InoculateIT http://www.cai.com/ 商業軟體

  十、其他

  1、對於危險檔案建立符號連結
/root/.rhosts, /root/.shosts, /etc/hosts.equiv等檔案的存取控制很薄弱,我們在第七章裡已經討論過了,攻擊者會經常針對這些漏洞進行攻擊,把他們連結到/dev/null,意味著任何資料都會被簡單的拋棄。

  可以使用這個指令碼:
for FILE in /root/.rhosts /root/.shosts /etc/hosts.equiv \
/etc/shosts.equiv; do
rm -f $FILE
ln -s /dev/null $FILE
done

  2、開啟TCP SYN Cookie的保護

  SYN攻擊是一種拒絕服務的攻擊,目的在於消耗系統資源。這個攻擊是由於TCP串連握手協議的漏洞,對方發送SYN資訊,然後不再回應。這樣的攻擊就使得系統與數百或者上千的串連保持半開狀態。是一個非常簡單的攻擊方法。

  3、LILO/GRUB安全

  給LILO和GRUB加上一個i的屬性,這樣他既不能刪除也不能修改,可以有效地防止設定檔發生任何變化(不管是意外或者其他原因)。如果想要修改,必須用chattr -i命令。
chattr +i /etc/lilo.conf
chattr +i /boot/grub/menu.lst

  4、配置sudo

  sudo的是一個檔案包,它允許管理員授權給使用者做一些特權,這些特權超出了使用者的許可權,比如重啟web服務。我們舉個例子,因為你的web服務有bug或者不斷的出現故障,那你可能需要不斷地修改web的設定檔來讓找出問題原因。這時候如果你要用su - root的話就會非常繁瑣,因為你只是在改完設定檔之後,重啟一下web服務而已。這時候sudo就派上用場了,它允許管理員授權給該使用者權利來重啟web服務。sudo安裝之後,使用visudo來配置而不是vi設定檔,因為visudo有錯誤檢查功能。

  5、刪除所有的編譯器和組譯工具

  在安全上,C編譯器會構成對系統可信的威脅。編譯器應該安裝在開發系統的機器上,而不是一個生產應用系統上。這裡只是提醒注意檢查。檢查這些:gcc、gcc3、gcc3-c++、 gcc3-g77、gcc3-java、gcc3-objc、gcc-c++、gcc-chill、 gcc-g77、gcc-java、gcc-objc、bin86、dev86、nasm。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.