網路城邦
上一篇 回創作列表 下一篇   字體:
【轉載】SUSE安全大揭秘之“十誡”
2015/09/05 10:04:51瀏覽204|回應0|推薦0

【轉載】SUSE安全大揭秘之“十誡”

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

 

  一、補丁、SSH及其他

 

  1、補丁

 

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

 

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

 

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

 

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

 

  4)、如果你的SUSE服務器比較多,也可以通過NFS共享或者內部的FTPHTTP服務來完成。但FTPHTTP又會帶來另外的安全風險。

SUSE的補丁升級,需要去下載Novell的新RPMRPM包的安裝會有先有後,不過多數情況下,RPM會根據其依賴關系來處理。另外,Novell也有一些在特殊情況下的提示,比如內核更新、C運行庫等。Novell公司提供了一個強大的工具YaST,不過遺憾的是,YaST自身也不安全,有在線升級不安全臨時文件建立漏洞。

 

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

 

  2SSH

 

  SUSE上默認安裝了OpenSSHOpenSSH是目前比較流行並且免費的加密連接工具,但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、防火牆

SuSEfirewall2SUSE下面的包過濾防火牆,可以允許、拒絕數據的進出。默認是安裝並且激活的,而且默認不允許任何服務,要開放服務就必須明確的啟用(比如上面提到的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

 

  6SUSE的安全應用框架AppArmor

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

 

  加固方法: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進行配置。

 

  3telnet

 

  如果不是有特別的理由,不要使用telnettelnet使用的是不加密的網絡協議,這就意味著從你的賬號到你傳輸的數據,都可以被人竊聽,嚴重的可以通過會話劫持控制你的系統。所以這裡還是強烈建議使用SSH,雖然SSH也不是那麼的安全。

 

  加固方法:

 

  打開的命令是chkconfig telnet on

 

  關閉的命令是chkconfig telnet off

 

  4FTP

 

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

 

  加固方法:

 

  打開的命令是chkconfig vsftpd

 

  關閉命令是chkconfig vsftpd off

 

  5rlogin/rsh/rcp

 

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

 

  加固方法:

 

  打開命令是

 

  chkconfig rexec on

 

  chkconfig rlogin on

 

  chkconfig rsh on

 

  關閉他們:

 

  chkconfig rexec off

 

  chkconfig rlogin off

 

  chkconfig rsh off

 

  6TFTP

 

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

 

  關閉命令chkconfig tftp off

 

  7IMAP

 

  只有郵件服務器才會用到IMAP,一些郵件客戶端(比如EudoraNetscape MailKmail)需要使用IMAP來檢索遠程郵件。

 

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

 

  chkconfig cyrus offchkconfig imap off

 

  8POP

 

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

 

  加固方法:chkconfig qpopper offchkconfig cyrus off

 

  三、最小化啟動服務

 

  1、設置umask

 

  系統默認的umask至少應設置成027,有些守護進程比如系統日志,會默認設置為任何人可以寫文件。如果某個守護進程需要放開對權限的限制,可以考慮修改守護進程的啟動腳本,給以其權限,同時又不會影響服務器的其他安全。

 

  加固方法:

 

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

 

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

 

  2SMTP

 

  需要確認服務器是否需要處理郵件。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

 

  加固方法:

 

  設置為級別3vi /etc/inittab,將id:5:initdefault中的5修改為3

 

  4X Font Server

 

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

 

  加固方法:

 

  關閉X Font Serverchkconfig 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

 

  6SMBNMB

 

  SUSE提供了Samba,為windows用戶提供文件和打印共享,這樣unix系統可以在windows的網絡上充當文件服務器、打印服務器,甚至為早期的windows系統充當域控驗證服務器。Samba需要用到SMBNMB協議,SMBWindows的文件共享,NMBNetBIOS消息塊。如果不需要充當這些角色的話,就應該關閉這兩個協議。關閉命令 chkconfig smb off

 

  7NFS

 

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

 

  關閉命令:

 

  chkconfig nfsserver off

 

  chkconfig autofs off

 

  8NIS

 

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

 

  關閉命令:

 

  chkconfig ypserv off

 

  chkconfig yppasswdd off

 

  9RPC端口映射

 

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

 

  關閉命令:chkconfig portmap off

 

  10ncpfs腳本

 

  ncpfsNFSwindows網絡裡共享文件需要用到的,但並非默認安裝,如果沒有網絡共享在使用,就把它停掉。這個腳本會掛載在客戶機的網絡驅動器上,好在它不是一個持續的守護進程,所以相對來說不是那麼危險。

 

  關閉命令:chkconfig ncpfs off

 

  11apache

 

  只有WEB服務器才會用到,即使這台服務器是WEB服務器,也不要把數據庫和其他環境支持都放在這台服務器上。

 

  關閉命令:chkconfig apache2 off

 

  12SNMP

 

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

 

  關閉命令:chkconfig snmpd off

 

  13DNS server

 

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

 

  關閉命令:chkconfig named off

 

  14Squid Cache服務器

 

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

 

  關閉命令:chkconfig squid off

 

 

 

四、內核優化

 

  1、網絡參數修改

 

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

 

  建議修改:

 

  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

 

  五、日志

 

  1syslog

 

  SUSE使用了syslog-ng來記錄日志。/var/log/messages包括了iptables, mail, newsmessages,並把它們分別發送到(/var/log/firewall, /var/log/mail*, /var/log/news。文件權限默認是u=rw,g=r,o=

 

  2NTP

 

  NTP是網絡時間協議,目的是保持計算機的時間與網絡同步,默認安裝,但是沒有啟用。系統時鐘應該保持一個高准確度,這樣日志的記錄才能准確的反映時間。NTP啟用後,在udp123端口監聽。在配置上,應該忽略任何未明確允許的消息,只允許本地回環127.0.0.1NTP服務器的消息,防止別人偽造時間服務器。對NTP的修改在/etc/ntp.conf下面。

 

  3、日志文件權限

 

  確保系統日志文件的所有權和權限是正確的,日志文件權限的配置在/etc/syslog-ng/syslog-ng.conf.in/etc/logrotate.d

 

  4、遠程日志記錄

 

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

 

  例如:在/etc/syslog-ngsyslog-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選項,可以阻止用戶在光驅、軟驅或者U盤上運行set-UID權限的程序。如果機器上有多個移動設備,也可以在/etc/fstab中相關設備的第四列設置nosuid

 

  3、禁止用戶掛載可移動介質

SUSE默認只有root用戶可以掛載移動介質,如果/etc/fstab被改成允許用戶掛載,可能會讓病毒進入服務器,或者數據被修改刪除。把它改回nouser選項更有助於安全。

 

  4、驗證passwd, shadow,group文件權限

這些文件都有著默認的所有者和訪問權限,都要修改/etc/shadow權限為644,並且定期檢查。AIDE是一個不錯的工具,可以提醒你對這些文件權限的注意。不過AIDETripwire的非商業版改進,目前還是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 Servertcp6000上監聽

X ServerTCP6000上監聽,接受來自其他客戶端的請求。但是,X Server使用了一個相對不安全的身份驗證協議,攻擊者可以未授權訪問到本地X Server上。使用"-nolisten tcp" 方式可以取消X ServerTCP6000上默認監聽。

 

  4、限制用戶使用at/cron

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

 

  5、限制crontab文件的權限

系統的crontab文件只能由cron守護進程(運行超級用戶權限)和crontab命令(set-UIDroot)訪問。允許未授權的用戶讀取修改crontab,可以讓用戶獲得權限提升。

 

  6、配置xinetd的訪問控制

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

 

  7、限制root登錄到系統控制台

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

 

  8、設置LILO/GRUB密碼

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

 

  方法

 

  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默認禁止這種進入方式,但是作為檢查來說,還是需要檢查一下。如果被改動的話,要搞清楚原因並恢復。89這兩個項目都為了解決物理/啟動的安全問題,也可以考慮設置只從主硬盤啟動,或者設置BIOS密碼。

 

  10、限制NFS客戶端請求特權端口

 

  設置:NFS服務器忽略來自客戶端的低於1024的源端口訪問,這不會妨礙到正常的NFS操作,但可以阻止一些使用工具軟件攻擊的人。其配置文件在/etc/exports裡。

 

  11syslog的消息接收

 

  你的服務器是日志服務器嗎?需要從網絡上、其他主機上接收日志嗎?如果是肯定的,啟用日志系統的遠程消息接受。默認情況下的系統日志的守護進程是syslogd,不在udp514上監聽來自其他系統的日志消息(Solaris相反,默認是接受的。)成立一個獨立的日志服務器來記錄一個或多個日志,是比較推薦的安全做法。但是,如果你不是日志服務器的話,就不應該打開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外,沒有UID0的賬戶

檢查方法:awk -F: '($3 == 0) { print $1 }' /etc/passwd

任何UID0的賬戶都擁有系統的超級用戶權限,唯一的超級用戶應該是root,而且還應該通過非特權賬戶su來獲得權限。

 

  6、用戶主目錄應為750權限或者更多的限制

用戶主目錄如果有任何人可寫的目錄,可以導致別人竊取、修改數據,或者獲得其他用戶的權限。對其他組成員,取消讀、執行權限。不過在全局對用戶主目錄的權限進行修改,可能會造成服務中斷。

 

  7、刪除User.netrc文件

find / -name .netrc

.netrcftp命令的初始化文件,能夠給Ftp帶來一定的方便。但文件可能包含未加密的密碼。在上出他們之前,要考慮.netrc文件的作用,因為可能會影響應用。但是一個良好設計的應用,不應該使用.netrc

 

  8、設置默認的用戶umask

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

 

  9、關閉核心轉儲

這個問題需要問一下你的軟件開發商們,他們是否需要調試程序,或者需要看到debug的信息?如果答案是否定的,則可以關閉。核心轉儲會大量消耗磁盤空間,並且核心轉儲會包含敏感數據。開發人員需要用這個功能來幫助調試。/etc/security下的limits.con文件是用來控制核心轉儲的開關。

 

  10、限制root賬戶su

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

 

  auth required pam_wheel.so

 

  這行命令的意思是,只允許wheel組的用戶,可以suroot。其他用戶在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信息,然後不再回應。這樣的攻擊就使得系統與數百或者上千的連接保持半開狀態。是一個非常簡單的攻擊方法。

 

  3LILO/GRUB安全

 

  給LILOGRUB加上一個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編譯器會構成對系統可信的威脅。編譯器應該安裝在開發系統的機器上,而不是一個生產應用系統上。這裡只是提醒注意檢查。檢查這些:gccgcc3gcc3-c++ gcc3-g77gcc3-javagcc3-objcgcc-c++gcc-chill gcc-g77gcc-javagcc-objcbin86dev86nasm

================================

  /\_/\                       

 (=^o^=)  Wu.Country@俠緣     

 (~)@(~)  一輩子,用心做一件事!

--------------------------------

  學而不思則罔,思而不學則怠! 

================================

【轉載】SUSE安全大揭秘之“十誡”

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

 

  一、補丁、SSH及其他

 

  1、補丁

 

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

 

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

 

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

 

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

 

  4)、如果你的SUSE服務器比較多,也可以通過NFS共享或者內部的FTPHTTP服務來完成。但FTPHTTP又會帶來另外的安全風險。

SUSE的補丁升級,需要去下載Novell的新RPMRPM包的安裝會有先有後,不過多數情況下,RPM會根據其依賴關系來處理。另外,Novell也有一些在特殊情況下的提示,比如內核更新、C運行庫等。Novell公司提供了一個強大的工具YaST,不過遺憾的是,YaST自身也不安全,有在線升級不安全臨時文件建立漏洞。

 

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

 

  2SSH

 

  SUSE上默認安裝了OpenSSHOpenSSH是目前比較流行並且免費的加密連接工具,但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、防火牆

SuSEfirewall2SUSE下面的包過濾防火牆,可以允許、拒絕數據的進出。默認是安裝並且激活的,而且默認不允許任何服務,要開放服務就必須明確的啟用(比如上面提到的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

 

  6SUSE的安全應用框架AppArmor

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

 

  加固方法: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進行配置。

 

  3telnet

 

  如果不是有特別的理由,不要使用telnettelnet使用的是不加密的網絡協議,這就意味著從你的賬號到你傳輸的數據,都可以被人竊聽,嚴重的可以通過會話劫持控制你的系統。所以這裡還是強烈建議使用SSH,雖然SSH也不是那麼的安全。

 

  加固方法:

 

  打開的命令是chkconfig telnet on

 

  關閉的命令是chkconfig telnet off

 

  4FTP

 

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

 

  加固方法:

 

  打開的命令是chkconfig vsftpd

 

  關閉命令是chkconfig vsftpd off

 

  5rlogin/rsh/rcp

 

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

 

  加固方法:

 

  打開命令是

 

  chkconfig rexec on

 

  chkconfig rlogin on

 

  chkconfig rsh on

 

  關閉他們:

 

  chkconfig rexec off

 

  chkconfig rlogin off

 

  chkconfig rsh off

 

  6TFTP

 

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

 

  關閉命令chkconfig tftp off

 

  7IMAP

 

  只有郵件服務器才會用到IMAP,一些郵件客戶端(比如EudoraNetscape MailKmail)需要使用IMAP來檢索遠程郵件。

 

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

 

  chkconfig cyrus offchkconfig imap off

 

  8POP

 

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

 

  加固方法:chkconfig qpopper offchkconfig cyrus off

 

  三、最小化啟動服務

 

  1、設置umask

 

  系統默認的umask至少應設置成027,有些守護進程比如系統日志,會默認設置為任何人可以寫文件。如果某個守護進程需要放開對權限的限制,可以考慮修改守護進程的啟動腳本,給以其權限,同時又不會影響服務器的其他安全。

 

  加固方法:

 

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

 

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

 

  2SMTP

 

  需要確認服務器是否需要處理郵件。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

 

  加固方法:

 

  設置為級別3vi /etc/inittab,將id:5:initdefault中的5修改為3

 

  4X Font Server

 

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

 

  加固方法:

 

  關閉X Font Serverchkconfig 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

 

  6SMBNMB

 

  SUSE提供了Samba,為windows用戶提供文件和打印共享,這樣unix系統可以在windows的網絡上充當文件服務器、打印服務器,甚至為早期的windows系統充當域控驗證服務器。Samba需要用到SMBNMB協議,SMBWindows的文件共享,NMBNetBIOS消息塊。如果不需要充當這些角色的話,就應該關閉這兩個協議。關閉命令 chkconfig smb off

 

  7NFS

 

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

 

  關閉命令:

 

  chkconfig nfsserver off

 

  chkconfig autofs off

 

  8NIS

 

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

 

  關閉命令:

 

  chkconfig ypserv off

 

  chkconfig yppasswdd off

 

  9RPC端口映射

 

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

 

  關閉命令:chkconfig portmap off

 

  10ncpfs腳本

 

  ncpfsNFSwindows網絡裡共享文件需要用到的,但並非默認安裝,如果沒有網絡共享在使用,就把它停掉。這個腳本會掛載在客戶機的網絡驅動器上,好在它不是一個持續的守護進程,所以相對來說不是那麼危險。

 

  關閉命令:chkconfig ncpfs off

 

  11apache

 

  只有WEB服務器才會用到,即使這台服務器是WEB服務器,也不要把數據庫和其他環境支持都放在這台服務器上。

 

  關閉命令:chkconfig apache2 off

 

  12SNMP

 

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

 

  關閉命令:chkconfig snmpd off

 

  13DNS server

 

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

 

  關閉命令:chkconfig named off

 

  14Squid Cache服務器

 

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

 

  關閉命令:chkconfig squid off

 

 

 

四、內核優化

 

  1、網絡參數修改

 

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

 

  建議修改:

 

  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

 

  五、日志

 

  1syslog

 

  SUSE使用了syslog-ng來記錄日志。/var/log/messages包括了iptables, mail, newsmessages,並把它們分別發送到(/var/log/firewall, /var/log/mail*, /var/log/news。文件權限默認是u=rw,g=r,o=

 

  2NTP

 

  NTP是網絡時間協議,目的是保持計算機的時間與網絡同步,默認安裝,但是沒有啟用。系統時鐘應該保持一個高准確度,這樣日志的記錄才能准確的反映時間。NTP啟用後,在udp123端口監聽。在配置上,應該忽略任何未明確允許的消息,只允許本地回環127.0.0.1NTP服務器的消息,防止別人偽造時間服務器。對NTP的修改在/etc/ntp.conf下面。

 

  3、日志文件權限

 

  確保系統日志文件的所有權和權限是正確的,日志文件權限的配置在/etc/syslog-ng/syslog-ng.conf.in/etc/logrotate.d

 

  4、遠程日志記錄

 

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

 

  例如:在/etc/syslog-ngsyslog-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選項,可以阻止用戶在光驅、軟驅或者U盤上運行set-UID權限的程序。如果機器上有多個移動設備,也可以在/etc/fstab中相關設備的第四列設置nosuid

 

  3、禁止用戶掛載可移動介質

SUSE默認只有root用戶可以掛載移動介質,如果/etc/fstab被改成允許用戶掛載,可能會讓病毒進入服務器,或者數據被修改刪除。把它改回nouser選項更有助於安全。

 

  4、驗證passwd, shadow,group文件權限

這些文件都有著默認的所有者和訪問權限,都要修改/etc/shadow權限為644,並且定期檢查。AIDE是一個不錯的工具,可以提醒你對這些文件權限的注意。不過AIDETripwire的非商業版改進,目前還是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 Servertcp6000上監聽

X ServerTCP6000上監聽,接受來自其他客戶端的請求。但是,X Server使用了一個相對不安全的身份驗證協議,攻擊者可以未授權訪問到本地X Server上。使用"-nolisten tcp" 方式可以取消X ServerTCP6000上默認監聽。

 

  4、限制用戶使用at/cron

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

 

  5、限制crontab文件的權限

系統的crontab文件只能由cron守護進程(運行超級用戶權限)和crontab命令(set-UIDroot)訪問。允許未授權的用戶讀取修改crontab,可以讓用戶獲得權限提升。

 

  6、配置xinetd的訪問控制

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

 

  7、限制root登錄到系統控制台

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

 

  8、設置LILO/GRUB密碼

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

 

  方法

 

  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默認禁止這種進入方式,但是作為檢查來說,還是需要檢查一下。如果被改動的話,要搞清楚原因並恢復。89這兩個項目都為了解決物理/啟動的安全問題,也可以考慮設置只從主硬盤啟動,或者設置BIOS密碼。

 

  10、限制NFS客戶端請求特權端口

 

  設置:NFS服務器忽略來自客戶端的低於1024的源端口訪問,這不會妨礙到正常的NFS操作,但可以阻止一些使用工具軟件攻擊的人。其配置文件在/etc/exports裡。

 

  11syslog的消息接收

 

  你的服務器是日志服務器嗎?需要從網絡上、其他主機上接收日志嗎?如果是肯定的,啟用日志系統的遠程消息接受。默認情況下的系統日志的守護進程是syslogd,不在udp514上監聽來自其他系統的日志消息(Solaris相反,默認是接受的。)成立一個獨立的日志服務器來記錄一個或多個日志,是比較推薦的安全做法。但是,如果你不是日志服務器的話,就不應該打開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外,沒有UID0的賬戶

檢查方法:awk -F: '($3 == 0) { print $1 }' /etc/passwd

任何UID0的賬戶都擁有系統的超級用戶權限,唯一的超級用戶應該是root,而且還應該通過非特權賬戶su來獲得權限。

 

  6、用戶主目錄應為750權限或者更多的限制

用戶主目錄如果有任何人可寫的目錄,可以導致別人竊取、修改數據,或者獲得其他用戶的權限。對其他組成員,取消讀、執行權限。不過在全局對用戶主目錄的權限進行修改,可能會造成服務中斷。

 

  7、刪除User.netrc文件

find / -name .netrc

.netrcftp命令的初始化文件,能夠給Ftp帶來一定的方便。但文件可能包含未加密的密碼。在上出他們之前,要考慮.netrc文件的作用,因為可能會影響應用。但是一個良好設計的應用,不應該使用.netrc

 

  8、設置默認的用戶umask

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

 

  9、關閉核心轉儲

這個問題需要問一下你的軟件開發商們,他們是否需要調試程序,或者需要看到debug的信息?如果答案是否定的,則可以關閉。核心轉儲會大量消耗磁盤空間,並且核心轉儲會包含敏感數據。開發人員需要用這個功能來幫助調試。/etc/security下的limits.con文件是用來控制核心轉儲的開關。

 

  10、限制root賬戶su

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

 

  auth required pam_wheel.so

 

  這行命令的意思是,只允許wheel組的用戶,可以suroot。其他用戶在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信息,然後不再回應。這樣的攻擊就使得系統與數百或者上千的連接保持半開狀態。是一個非常簡單的攻擊方法。

 

  3LILO/GRUB安全

 

  給LILOGRUB加上一個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編譯器會構成對系統可信的威脅。編譯器應該安裝在開發系統的機器上,而不是一個生產應用系統上。這裡只是提醒注意檢查。檢查這些:gccgcc3gcc3-c++ gcc3-g77gcc3-javagcc3-objcgcc-c++gcc-chill gcc-g77gcc-javagcc-objcbin86dev86nasm

================================

  /\_/\                       

 (=^o^=)  Wu.Country@俠緣     

 (~)@(~)  一輩子,用心做一件事!

--------------------------------

  學而不思則罔,思而不學則怠! 

================================

( 知識學習考試升學 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=ZeitgeistKuo&aid=29492414