歡迎您光臨本站 註冊首頁

Solaris安全手冊

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  1. Preparation 最小限度保證安全的方法是只在主機上運行一個或兩個服務。使用一個機器比只使用一個擁有所有權利的機器安全的多,因為這樣可以隔離,方便查找問題所在。總之:在你的機器上運行你一些最必要的服務。考慮拆除鍵盤,屏幕,這樣可以避免使用X1 1和知道命令行所示,在一個隔離的信任的網路段中進行測試。明確你的系統和硬體配置能產生什麼樣的結果,如在安裝SUN的Disksuite時要考慮你是否需要RPC服務,因為DISKSUITE必須使用RPC服務。明確各種應用程序是怎樣工作的如:使用什麼埠和文件. 2,初始化安裝操作系統。連接串口控制台,開機,當出現OK提示時發送Stop-A信息(~#,~%b,或者F5,主要取決於你使用tip,cu或者vt100終端),然後開始安裝過程-「boot cdrom - install「 使用最小安裝 end user bundle(除非你要額外的server/developer工具),設置主機名,終端,IP參數,時區等等,不要激活NIS或者NFS及不要激活電源管理。選擇手工劃分分區:把/usr和/opt和ROOT分離開來以便這些分區可以以只讀方式掛(mount)起來。考慮把大的/var文件系統和擁有較多的數據量如(web,ftp)劃分為獨立的分區。如果硬碟是2GB建議200MB / (+var), 200MB swap, 600MB /usr及 1GB 給 /opt 如果硬碟是2GB建議300MB / (+var+opt), 200MB swap, 500MB /usr 給ROOT設置一個7到8字元大小寫結合等比較強壯的密碼,再重啟動。接著安全由SUN的安全補丁。一般的在CD上就包含這些安全補丁包。重啟動及作為ROO T重啟動后,你可以使用showrev -p查看補丁列表。 3,配置操作系統磁碟共享(mount):為了減少木馬和不授權的修改,在/etc/vfstab,在mount /時請使用 「remount,nosuid「選項;在/var上請帶上「nosuid「選項;在/tmp后加上 「size=100m,nosuid「選項(允許/tmp只能使用100M空間及不允許執行SUID程序);如果軟盤不需要的話再把「/dev/fd「行註釋掉。 (下面的命令假定你使用的是c-shell) 使NFS無效: rm /etc/rc2.d/{S73nfs.client,K28nfs.server} /etc/rc3.d/S15nfs.server /etc/ dfs/dfstab使Sendmail守護程序無效,雖然sendmail不是作為一個守護程序來運行的,但兩進位程序是依然存在的,EMAIL還可以通過它了發送(但不能接受)。設定只要一個主機來接受EMAIL,另必須使用smap或其他等同命令來把sendmail危險程度降低到最底。 rm /etc/rc2.d/S88sendmail 再在cron行中增加處理郵件隊列的命令: 0 * * * * /usr/lib/sendmail -q 在關閉一些其他的服務: rm /etc/rc2.d/{S74autofs,S30sysid.net,S71sysid.sys,S72autoinstall} rm /etc/rc2.d/{S93cacheos.finish,S73cachefs.daemon,S80PRESERVE} rm /etc/rc2.d/{S85power,K07dmi} rm /etc/rc3.d/S77dmi If you have server/developer packages: rm /etc/rc2.d/{S47asppp,S89bdconfig,S70uucp} 使RPC無效:這一般來說是建議關閉此功能的,但一些程序如DISKSUITE會開啟RPC服務,所以一般建議不使用DISKSUITE工具。如果你不想使RPC無效,則一定要使用信息包過濾器。 rm /etc/rc2.d/S71rpc 使列印服務無效(除非有一個本地印表機存在): rm /etc/rc2.d/{S80lp,S80spc} 使naming Services Caching Daemon(名字服務緩衝守護程序)服務無效: mv /etc/rc2.d/S76nscd /etc/rc2.d/.S76nscd 使CDE程序無效(除非你堅持要使用圖形控制台): rm /etc/rc2.d/S99dtlogin 使NTP-NETWORK TIME PROTOCOL無效(NTP會增加帶寬和不安全的因素,建議使用 rdate到一台使用NTP的機器來獲得精確時間): rm /etc/rc2.d/S74xntpd 使SNMP無效: rm /etc/rc2.d/K07snmpdx /etc/rc3.d/S76snmpdx 在Inetinit中是IP forwarding和sourec routing(源路)由無效(假如有超過一個網路介面的話)。在/etc/init.d/inetinit中增加下面所示設置: ndd -set /dev/ip ip_forward_directed_broadcasts 0 ndd -set /dev/ip ip_forward_src_routed 0 ndd -set /dev/ip ip_forwarding 0 根據RFC1948建議在/etc/default/inetinit中增加如下的生成初始化序列號設置來防止TCP序列號預測攻擊(ip欺騙): TCP_STRONG_ISS=2 在/etc/system中增加如下設置來防止某些緩衝溢出攻擊。這些保護是那些需在堆棧中執行的攻擊方式。但需要硬體的支持(只在sun4u/sun4d/sun4m系統中有效): set noexec_user_stack=1 set noexec_user_stack_log=1 使用默認路由:在/etc/defaultrouter中增加IP地址,或使用「route「在/etc/rc2.d/ S99static_routes中建立啟動文件。為了使動態路由無效: touch /etc/notrouter 為了使多路廣播(multicasting)無效請在/etc/init.d/inetsvc中註解掉 「route add 224.0.0.0「周圍的幾行。為了記錄INETD連接的所有信息,在inetd低端的啟動行中增加「-t「參數,即:: /usr/sbin/inetd -s -t 在/etc/hosts中配置一些你想取捨的主機(一些你不想通過DNS解析的)。 /etc/inetd.conf: 先使所有服務無效;配置你真正需要的服務,但必須使用FWTK netacl或tcp wrappers來允許最小限度的I P地址訪問和各種記錄 4,連接並測試網路系統通過上面的安全剝離和篩選,你必須肯定系統能正常工作,把它連接到一個安全隔離的網路。重起並以ROOT身份登錄控制台,檢查控制台啟動時的錯誤信息並根據需要進行修改。 5,安裝系統管理工具軟體這部分將安裝標準的工具和實用程序。最重要的是SSH,這些工具必須在其他機器上編譯和精心測試過的。環境: DNS客戶端:在/etc/resolv.conf中增加域名和DNS服務;在/etc/nsswitch.conf中增加DNS入口的主機。 EMAIL:如果主機不需要在子網外發送EMAIL,就不需要使用mailhost的別名。否則的話必須編輯/etc/mail/aliases,在/etc/hosts中設置mailhost,在/etc/mail/sendm ail.cf取消Dj行的註釋並把它設置為Dj$w.YOURDOMAIN.COM. 如果DNS沒有配置,就在 /etc/hosts中增加這太機器的別名hostname.YOURDOMAIN.CO M。現在發送一封測試EMAIL:mailx -v -s test_email root 為LOGIN登錄進程安裝SSH。配置SSH守護程序(/etc/sshd_config)以便訪問限制在帶有 known public keys的主機(/etc/ssh_known_hosts)並使rhosts認證無效。如果遠程管理確實需要的話,使用.shosts要比.rhosts好的多。檢查Inetd中的telnetd/ftpd是否仍然激活,如果是的話請在/etc/inetd.conf中註釋掉,在進行SSH測試。

安裝一些其他的一些必須工具如:gzip;traceroute;top(不帶SUID);lsof.

安裝和建立Perl5到/bin/perl.

在/secure中安裝安全腳本如:rotate_cron, rotate_log, wtrim.pl, rdistd 並改變屬性來保護/secure:chmod -R 700 /secure; chown -R root /secure 6,在次配置和篩選系統安全:許多在CD中OS的補丁是不夠及時的,因此從sunsolve.sun.ch中獲取patchdiag 工具來查看安全補丁並下載安裝這些補丁。

配置登錄記錄 在/etc/default/su中使SU記錄有效。使用以下方法使嘗試登錄失敗記錄有效: touch /var/log/loginlog; chmod 600 /var/log/loginlog; chgrp sys /var/log/loginlog

SYSLOG記錄:根據syslog.conf例子來分散LOG分析記錄,即把多項服務的記錄分散到各個獨立的LOG文件,有條件的話在(/etc/hosts)中指定一台機器作為loghost

syslog 「loghost「 需要一個大的磁碟作為LOG記錄的存儲介質。建立空的LOGS文件並設立相應的許可權:

cd /var/log; touch daemonlog authlog kernlog userlog maillog lprlog cronlog newslog locallog alertlog;

chmod 600 daemonlog authlog kernlog userlog maillog lprlog cronlog newslog locallog alertlog;

kill -1 `pgrep syslogd`

使用rotate_log來修剪和壓縮LOGS文件,在root cron中增加如下條目: ## Prune syslog logs weekly, keeping the last 6 months or so: 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 al ertlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 au thlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 cr onlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 da emonlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 ke rnlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 lo callog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 ne wslog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 us erlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 10 lp rlog 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 ma illog # Reset syslog daemon 0,15,30 0 * * 0 kill -HUP `cat /etc/syslog.pid`

為了你自己使用上面的條目請在root cron中使其他的log修剪(pruning)無效: #10 3 * * 0,4 /etc/cron.d/logchecker #10 3 * * 0 /usr/lib/newsyslog #15 3 * * 0 /usr/lib/fs/nfs/nfsfind #1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 #30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clea n

Pruning of login & other logs:

## Empty login/logout records at year end 0 0 31 12 * /secure/wtrim.pl wtmp 0 0 31 12 * /secure/wtrim.pl wtmpx 20 # Solaris 2.x logs: 0 4 * * 6 /secure/rotate_log -L /var/adm -c -m 640 -M 440 -c -s -n 30 logi nlog 0 4 * * 6 /secure/rotate_log -L /var/adm -c -m 640 -M 440 -c -s -n 30 sulo g 0 4 * * 6 /secure/rotate_log -L /var/adm -c -m 640 -M 440 -c -s -n 2 vold. log 0 4 * * 6 /secure/rotate_cron

crons

刪除不需要的crons:rm /var/spool/cron/crontabs/{lp,sys,adm}

Root cron 條目:通過可信賴的來源使用rdate設定日期(你或許使用NTP協議,這將使時間精確一些,但正向上面所說的增加帶寬和不必要的安全問題): ## Synchronise the time(同步時間): 0 * * * * /usr/bin/rdate YOURTIMEHOST >/dev/null 2>&1

文件許可權必須限制一些有關ROOT操作的許可權或乾脆使其無效: chmod 0500 /usr/sbin/snoop /usr/sbin/devinfo chmod o-r /var/spool/cron/crontabs/* chmod 000 /bin/rdist chmod o-rx /etc/security chmod og-rwx /var/adm/vold.log chmod u-s /usr/lib/sendmail #Except for mailgateways chmod 400 /.shosts /etc/sshd_config /etc/ssh_known_hosts

再在登錄信息上設置警告用戶非授權登錄的信息(如果要起訴侵入者你就需要這些信息 )。如在Telnet和SSH,在/etc/motd中設置警告語句: ATTENTION: You have logged onto a secured XXXX Corporation server. Access by non YYYY administrators is forbidden. For info contact YYYY@XXX.com

重新啟動,通過SSH登錄,現在使用ps -e來顯示進程列表: PID TTY TIME CMD 0 ? 0:00 sched 1 ? 0:00 init 2 ? 0:00 pageout 3 ? 0:09 fsflush 156 ? 0:00 ttymon 152 ? 0:00 sac 447 ? 0:06 sshd 88 ? 0:00 inetd 98 ? 0:00 cron 136 ? 0:00 utmpd 605 ? 0:00 syslogd 175 console 0:00 ttymon 469 pts/1 0:00 csh 466 ? 0:01 sshd 625 pts/1 0:00 ps 及使用netstat -a 將顯示最小的網路連接(如只有SSH): UDP Local Address Remote Address State -------------------- -------------------- ------- *.syslog Idle *.* Unbound

TCP Local Address Remote Address Swind Send-Q Rwind Recv-Q State -------------------- -------------------- ----- ------ ----- ------ ------ - *.* *.* 0 0 0 0 IDLE *.22 *.* 0 0 0 0 LISTEN *.* *.* 0 0 0 0 IDLE

7,建立Tripwire映象,備份和測試 -測試 SSH和標準工具是否能正常工作?檢查LOG條目,檢查控制台信息來了解系統是否按照你設想的計劃實現。 -當所有工作運行的正常時,就freeze(凍結)/usr有可能的話凍結/opt: 在/etc/vfstab中增加「ro「選項以只讀方式掛上(mount)/usr和/opt分區,這樣減少木馬程序和非認證的修改。以nosuid方式mount其他分區。重啟-如果CD-ROMS不需要的話,是卷管理無效,使用如下命令可以在你需要時重新啟用:

mv /etc/rc2.d/S92volmgt /etc/rc2.d/.S92volmgt -最後安全TRIPWIRE(或者其他使用hashing演算法的文件檢查工具),初始化它的資料庫和運行常規的檢查來檢測文件的改變。如果可能的話使TRIPWIRE的資料庫安裝在另一個機器上或一次性寫入介質。如果還需要更安全的措施,那麼就拷貝TRIPWIRE和它的資料庫並使用SSH遠程運行。這將使入侵者很難知道TRIPWIRE在使用。

8,安裝,測試應用程序應該考慮把應用程序安裝在獨立的分區或者在/opt分區,如果使用/opt,在安裝時必須以讀寫方式來掛起此分區,在安裝和測試后必須再設置回只讀方式。根據伺服器的功能,選擇你所需要的如:ftpd,BIND,proxies等等,在安裝應用程序時遵照以下的規則來安裝: --在應用程序啟動之前umask是否設置好如(如:022) --應用程序是不是能以非ROOT身份運行?是否很好的設置密碼若最少8位加標點,字元大小寫 --注意是否所有文件的許可權設置正確,即是不是只能有應用程序用戶自己擁有讀寫許可權,有沒有全局能讀寫的文件 --當應用程序在寫LOG記錄時是否安全?有沒有可能把密碼寫到安裝LOG中去(不用感到好笑,這很普遍)下面是一些安裝常用服務所需要的安全問題 1,FTP服務(ftp) -如果你使用Western University wu-ftpd,必須知道它存在一些歷史BUG,如 (請參看 CERT advisories CA-93:06, CA-94:07, CA-95:16 and Auscert AA-97.03 and AA-1999.02),最起碼使用V2.6.0或以後的版本。 2,配置/etc/ftpusers的系統帳號使其不能用來FTP,如使以ROOT身份登錄FTP無效,把「root「增加到/etc/ftpusers.要想把所有系統帳號加入到你的新系統中去可使用如下方法: awk -F: 『{print $1}『 /etc/passwd > /etc/ftpusers -FTP可以通過/etc/ftpusers選擇性的激活每個用戶;也可以使用下面的方法:對於那些不能通過FTP訪問此機器的,提供他們一些不正規的SHELL(如BASH和TCSH),但不把新的SHELL加入到/etc/shells,這樣FTP訪問將被拒絕。相反,要把一個非標準的SHELL加入到/etc/shells才能使FTP正常工作。 -使LOGGING有效:把「-l「選項增加到/etc/inetd.conf中去,另外「-d「選項將增加debu g輸出。 -FTP可以限制IP地址或基於tcp wrappers的主機名。 -如果需要匿名FTP訪問,必須非常謹慎,一個chroot的環境是必須的。具體請參看in.ftpd 手冊。避免允許上傳文件權利。如果需要上傳文件的權利,需不允許下載上載了的文件,隱藏上載文件名及不允許他們覆蓋方式操作。 -使用FTP強烈建議使用chroot. -把FTP數據放在獨立的磁碟分區,以nosuid方式mount。 2,DNS服務: -使用最新的BIND(Berkeley Internet Name Server)來代替SUN的named,BIND有很多好的特徵,若容易DEBUG和當有安全問題發現時很快更新。具體請參看網站: www.isc.org/view.cgi?/products/BIND/index.phtml. -使用8.1.2或以後的版本 -使用測試工具www.uniplus.ch/direct/testtool/dnstest.html來測試DNS。 -使用nslookup和dig來檢查服務結果。 -如果在DNS客戶端存在問題檢查/etc/nsswitch.conf和/etc/resolv.conf,使用nslo okup -d2來獲得DEBUG的信息。嘗試殺掉nscd守護程序。 -如果伺服器端有問題使用named -d來讀console LOG,一般這LOG在syslog文件中的「 daemon「段。 -要獲得name服務的統計使用 kill -ABRT `cat /etc/named.pid` 將會把統計信息記錄到/usr/tmp/named.stats. -要查看改變設置后的配置信息使用HUP信號 kill -HUP `cat /etc/named.pid` 更多的請參看www.ebsinc.com/solaris/dns.html 3,有關chroot環境請參看如下網站: www.sunworld.com/swol-01-1999/swol-01-security.html

以下準備正式運行系統如果可能請使用多人進行最後測試,以便忘記某些重要的東西。使用網路漏洞掃描器掃描系統,保證只有你想使用的服務在運行。如商用掃描器IIS和免費掃描 器nmap或Satan. 檢查/opt和/usr分區是否為只讀狀態。初始化Tripwire(或等同的檢查工具) 最後測試什麼在工作,什麼是禁止的,檢查console/log條目,開始時經常查看LOG記錄。 9,系統正式運行詳細檢查;使用不同的人以不同的觀點及在不同的網路點登錄測試應用軟體。 10,常規維護

下面是根據你系統的重要程度決定你要每小時,每天,每星期,每個月要做的事情: -檢查SUN公司的pathdiag來不斷升級系統,特別注意系統內核的補丁。 -檢查所有錯誤和不尋常的活動記錄: syslog (/var/adm/messages or /var/log/*, depending on syslog.conf), /var/cron/log, last, /var/adm/sulog, /var/adm/loginlog, application/server logs. -運行tripwire -注意一些新的漏洞及安全建議,訂閱CERT,CIAC的安全公告和供應商的安全列表如(Sun, Microsoft)

其他附加信息: Free Tools SSH notes: www.boran.com/security/ssh_stuff.html TCP Wrappers www.cert.org/ftp/tools/tcp_wrappers SMAP & FWTK www.fwtk.org Top, gzip, lsof, traceroute, perl: www.sunfreeware.com Rdist www.magnicomp.com/rdist/rdist.shtml Sample tools for analysing logs: Logcheck www.psionic.com/abacus/logcheck Swatch ftp://ftp.stanford.edu/general/security-tools/swatch

Security Portal Research Centre: Firewall products www.securityportal.com/research/center.cgi?Category=firewalls Firewall white papers www.securityportal.com/research/center.cgi?Category=whitefaqfire Tripwire: Commercial Version www.tripwiresecurity.com (starts at $495.-/server) Free version V1.2 www.cert.org/ftp/tools/tripwire (last updated in 1994). Sunworld security columns www.sunworld.com/sunworldonline/common/swol-backissues-columns.html Padded Cells: www.sunworld.com/swol-01-1999/swol-01-security.html


[火星人 ] Solaris安全手冊已經有642次圍觀

http://coctec.com/docs/security/show-post-73070.html