1.準(zhǔn)備工作
最小限度保證安全的方法是只在主機(jī)上運行一個或兩個服務(wù)。使用一個機(jī)器比只使用一個擁有所有權(quán)利的機(jī)器安全的多,因為這樣可以隔離,方便查找問題所在。總之:在你的機(jī)器上運行你一些最必要的服務(wù)。考慮拆除鍵盤,屏幕,這樣可以避免使用X11和知道命令行所示,在一個隔離的信任的網(wǎng)絡(luò)段中進(jìn)行測試。明確你的系統(tǒng)和硬件配置能產(chǎn)生什么樣的結(jié)果,如在安裝SUN的Disksuite時要考慮你是否需要RPC服務(wù),因為DISKSUITE必須使用RPC服務(wù)。明確各種應(yīng)用程序是怎樣工作的如:使用什么端口和文件.
2,初始化安裝操作系統(tǒng)。
連接串口控制臺,開機(jī),當(dāng)出現(xiàn)OK提示時發(fā)送Stop-A信息(~#,~%b,或者F5,主要取決于你使用tip,cu或者vt100終端),然后開始安裝過程-"boot cdrom - install"使用最小安裝 end user bundle(除非你要額外的server/developer工具),設(shè)置主機(jī)名,終端,IP參數(shù),時區(qū)等等,不要激活NIS或者NFS及不要激活電源管理。選擇手工劃分分區(qū):把/usr和/opt和ROOT分離開來以便這些分區(qū)可以以只讀方式掛(mount)起來。考慮把大的/var文件系統(tǒng)和擁有較多的數(shù)據(jù)量如(web,ftp)劃分為獨立的分區(qū)。
如果硬盤是2GB建議200MB / (+var), 200MB swap, 600MB /usr及 1GB 給 /opt
如果硬盤是2GB建議300MB / (+var+opt), 200MB swap, 500MB /usr
給ROOT設(shè)置一個7到8字符大小寫結(jié)合等比較強(qiáng)壯的密碼,再重啟動。接著安全由SUN的安全補(bǔ)叮一般的在CD上就包含這些安全補(bǔ)丁包。重啟動及作為ROOT重啟動后,你可以使用showrev -p查看補(bǔ)丁列表。
3,配置操作系統(tǒng)
磁盤共享(mount):為了減少木馬和不授權(quán)的修改,在/etc/vfstab,在mount /時請
使用"remount,nosuid"選項;在/var上請帶上"nosuid"選項;在/tmp后加上"size=100m,nosuid"選項(允許/tmp只能使用100M空間及不允許執(zhí)行SUID程序);如果軟盤不需要的話再把"/dev/fd"行注釋掉。(下面的命令假定你使用的是c-shell)
使NFS無效:
rm /etc/rc2.d/{S73nfs.client,K28nfs.server} /etc/rc3.d/S15nfs.server /etc/dfs/dfstab
|
使Sendmail守護(hù)程序無效,雖然sendmail不是作為一個守護(hù)程序來運行的,但兩進(jìn)制
程序是依然存在的,EMAIL還可以通過它了發(fā)送(但不能接受)。設(shè)定只要一個主機(jī)來接受EMAIL,另必須使用smap或其他等同命令來把sendmail危險程度降低到最底。
rm /etc/rc2.d/S88sendmail |
再在cron行中增加處理郵件隊列的命令:
|
再關(guān)閉一些其他的服務(wù):
|
使RPC無效:這一般來說是建議關(guān)閉此功能的,但一些程序如DISKSUITE會開啟RPC服務(wù),所以一般建議不使用DISKSUITE工具。如果你不想使RPC無效,則一定要使用信息包過濾器。
|
使打印服務(wù)無效(除非有一個本地打印機(jī)存在):
|
使naming Services Caching Daemon(名字服務(wù)緩沖守護(hù)程序)服務(wù)無效:
mv /etc/rc2.d/S76nscd /etc/rc2.d/.S76nscd
使CDE程序無效(除非你堅持要使用圖形控制臺):
rm /etc/rc2.d/S99dtlogin |
使NTP-NETWORK TIME PROTOCOL無效(NTP會增加帶寬和不安全的因素,建議使用rdate到一臺使用NTP的機(jī)器來獲得精確時間):
rm /etc/rc2.d/S74xntpd |
使SNMP無效:
rm /etc/rc2.d/K07snmpdx /etc/rc3.d/S76snmpdx |
在Inetinit中是IP forwarding和sourec routing(源路)由無效(假如有超過一個網(wǎng)絡(luò)接口的話)。在/etc/init.d/inetinit中增加下面所示設(shè)置:
|
根據(jù)RFC1948建議在/etc/default/inetinit中增加如下的生成初始化序列號設(shè)置來防止TCP序列號預(yù)測攻擊(ip欺騙):
|
在/etc/system中增加如下設(shè)置來防止某些緩沖溢出攻擊。這些保護(hù)是那些需在堆棧中執(zhí)行的攻擊方式。但需要硬件的支持(只在sun4u/sun4d/sun4m系統(tǒng)中有效):
|
使用默認(rèn)路由:在/etc/defaultrouter中增加IP地址,或使用"route"在
/etc/rc2.d/S99static_routes中建立啟動文件。為了使動態(tài)路由無效:
|
為了使多路廣播(multicasting)無效請在/etc/init.d/inetsvc中注解掉
"route add 224.0.0.0"周圍的幾行。
為了記錄INETD連接的所有信息,在inetd低端的啟動行中增加"-t"參數(shù),即:: /usr/sbin/inetd -s -t
在/etc/hosts中配置一些你想取舍的主機(jī)(一些你不想通過DNS解析的)。
/etc/inetd.conf:
先使所有服務(wù)無效;配置你真正需要的服務(wù),但必須使用FWTK netacl或tcp wrappers來允許最小限度的IP地址訪問和各種記錄
4,連接并測試網(wǎng)絡(luò)
系統(tǒng)通過上面的安全剝離和篩選,你必須肯定系統(tǒng)能正常工作,把它連接到一個安全隔離的網(wǎng)絡(luò)。重起并以ROOT身份登錄控制臺,檢查控制臺啟動時的錯誤信息并根據(jù)需要進(jìn)行修改。
5,安裝系統(tǒng)管理工具軟件
這部分將安裝標(biāo)準(zhǔn)的工具和實用程序。最重要的是SSH,這些工具必須在其他機(jī)器
上編譯和精心測試過的。
環(huán)境:
DNS客戶端:在/etc/resolv.conf中增加域名和DNS服務(wù);在/etc/nsswitch.conf中增加DNS入口的主機(jī)。
EMAIL:如果主機(jī)不需要在子網(wǎng)外發(fā)送EMAIL,就不需要使用mailhost的別名。否則的話必須編輯/etc/mail/aliases,在/etc/hosts中設(shè)置mailhost,在/etc/mail/sendmail.cf取消Dj行的注釋并把它設(shè)置為Dj$w.YOURDOMAIN.COM.如果DNS沒有配置,就在 /etc/hosts中增加這太機(jī)器的別名
hostname.YOURDOMAIN.COM。
現(xiàn)在發(fā)送一封測試EMAIL:mailx -v -s test_email root </dev/null .
在/.cshrc/.profile中設(shè)置別名,變量如:VISUAL, EDITOR和PATH,但不要包含'.'號。
為LOGIN登錄進(jìn)程安裝SSH。配置SSH守護(hù)程序(/etc/sshd_config)以便訪問限制在帶有known public keys的主機(jī)(/etc/ssh_known_hosts)并使rhosts認(rèn)證無效。如果遠(yuǎn)程管理確實需要的話,使用.shosts要比.rhosts好的多。檢查Inetd中的telnetd/ftpd是否仍然激活,如果是的話請在/etc/inetd.conf中注釋掉,在進(jìn)行SSH測試。
安裝一些其他的一些必須工具如:gzip;traceroute;top(不帶SUID);lsof.
安裝和建立Perl5到/bin/perl.
在/secure中安裝安全腳本如:rotate_cron, rotate_log, wtrim.pl, rdistd并改變屬性來保護(hù)/secure:chmod -R 700 /secure; chown -R root /secure
6,在次配置和篩選系統(tǒng)安全:
許多在CD中OS的補(bǔ)丁是不夠及時的,因此從sunsolve.sun.ch中獲取patchdiag工具來查看安全補(bǔ)丁并下載安裝這些補(bǔ)叮
配置登錄記錄
在/etc/default/su中使SU記錄有效。
使用以下方法使嘗試登錄失敗記錄有效:
|
SYSLOG記錄:根據(jù)syslog.conf例子來分散LOG分析記錄,即把多項服務(wù)的記錄分散到各個獨立的LOG文件,有條件的話在(/etc/hosts)中指定一臺機(jī)器作為loghost
syslog "loghost"
需要一個大的磁盤作為LOG記錄的存儲介質(zhì)。
建立空的LOGS文件并設(shè)立相應(yīng)的權(quán)限:
|
使用rotate_log來修剪和壓縮LOGS文件,在root cron中增加如下條目:
|
為了你自己使用上面的條目請在root cron中使其他的log修剪(pruning)無效:
|
## Synchronise the time(同步時間):
|
文件權(quán)限
必須限制一些有關(guān)ROOT操作的權(quán)限或干脆使其無效:
|
再在登錄信息上設(shè)置警告用戶非授權(quán)登錄的信息(如果要起訴侵入者你就需要這些信息)。如在Telnet和SSH,在/etc/motd中設(shè)置警告語句:
|
重新啟動,通過SSH登錄,現(xiàn)在使用ps -e來顯示進(jìn)程列表:
|
及使用netstat -a 將顯示最小的網(wǎng)絡(luò)連接(如只有SSH):
|
7,建立Tripwire映象,備份和測試
-測試 SSH和標(biāo)準(zhǔn)工具是否能正常工作?檢查LOG條目,檢查控制臺信息來了解系統(tǒng)是否按照你設(shè)想的計劃實現(xiàn)。
-當(dāng)所有工作運行的正常時,就freeze(凍結(jié))/usr有可能的話凍結(jié)/opt:
在/etc/vfstab中增加"ro"選項以只讀方式掛上(mount)/usr和/opt分區(qū),這樣減少木馬程序和非認(rèn)證的修改。以nosuid方式mount其他分區(qū)。
重啟
-如果CD-ROMS不需要的話,是卷管理無效,使用如下命令可以在你需要時重新啟用:
|
-最后安全TRIPWIRE(或者其他使用hashing算法的文件檢查工具),初始化它的數(shù)據(jù)庫和運行常規(guī)的檢查來檢測文件的改變。如果可能的話使TRIPWIRE的數(shù)據(jù)庫安裝在另一個機(jī)器上或一次性寫入介質(zhì)。如果還需要更安全的措施,那么就拷貝TRIPWIRE和它的數(shù)據(jù)庫并使用SSH遠(yuǎn)程運行。這將使入侵者很難知道TRIPWIRE在使用。
8,安裝,測試應(yīng)用程序
應(yīng)該考慮把應(yīng)用程序安裝在獨立的分區(qū)或者在/opt分區(qū),如果使用/opt,在安裝時必須以讀寫方式來掛起此分區(qū),在安裝和測試后必須再設(shè)置回只讀方式。根據(jù)服務(wù)器的功能,選擇你所需要的如:ftpd,BIND,proxies等等,在安裝應(yīng)用程序時遵照以下的規(guī)則來安裝:
--在應(yīng)用程序啟動之前umask是否設(shè)置好如(如:022)
--應(yīng)用程序是不是能以非ROOT身份運行?是否很好的設(shè)置密碼若最少8位加標(biāo)點,字符大小寫
--注意是否所有文件的權(quán)限設(shè)置正確,即是不是只能有應(yīng)用程序用戶自己擁有讀寫權(quán)限,有沒有全局能讀寫的文件
--當(dāng)應(yīng)用程序在寫LOG記錄時是否安全?有沒有可能把密碼寫到安裝LOG中去(不用感到好笑,這很普遍)
9,系統(tǒng)正式運行
詳細(xì)檢查;使用不同的人以不同的觀點及在不同的網(wǎng)絡(luò)點登錄測試應(yīng)用軟件。
10,常規(guī)維護(hù)
下面是根據(jù)你系統(tǒng)的重要程度決定你要每小時,每天,每星期,每個月要做的事情:
-檢查SUN公司的pathdiag來不斷升級系統(tǒng),特別注意系統(tǒng)內(nèi)核的補(bǔ)叮
-檢查所有錯誤和不尋常的活動記錄:
syslog (/var/adm/messages or /var/log/*, depending on syslog.conf), |
-注意一些新的漏洞及安全建議,訂閱CERT,CIAC的安全公告和供應(yīng)商的安全列表
下面是一些安裝常用服務(wù)所需要的安全問題
1,F(xiàn)TP服務(wù)(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的系統(tǒng)帳號使其不能用來FTP,如使以ROOT身份登錄FTP無效,把"root"增加到/etc/ftpusers.要想把所有系統(tǒng)帳號加入到你的新系統(tǒng)中去可使用如下方法:
awk -F: '{print $1}' /etc/passwd > /etc/ftpusers
-FTP可以通過/etc/ftpusers選擇性的激活每個用戶;也可以使用下面的方法:
對于那些不能通過FTP訪問此機(jī)器的,提供他們一些不正規(guī)的SHELL(如BASH和TCSH),但不把新的SHELL加入到/etc/shells,這樣FTP訪問將被拒絕。相反,要把一個非標(biāo)準(zhǔn)的SHELL加入到/etc/shells才能使FTP正常工作。
-使LOGGING有效:把"-l"選項增加到/etc/inetd.conf中去,另外"-d"選項將增加debug輸出。
-FTP可以限制IP地址或基于tcp wrappers的主機(jī)名。
-如果需要匿名FTP訪問,必須非常謹(jǐn)慎,一個chroot的環(huán)境是必須的。
具體請參看in.ftpd 手冊。避免允許上傳文件權(quán)利。如果需要上傳文件的權(quán)利,需不允許下載上載了的文件,隱藏上載文件名及不允許他們覆蓋方式操作。
-使用FTP強(qiáng)烈建議使用chroot.
-把FTP數(shù)據(jù)放在獨立的磁盤分區(qū),以nosuid方式mount。
3,DNS服務(wù):
-使用最新的BIND(Berkeley Internet Name Server)來代替SUN的named,BIND有很多好的特征,若容易DEBUG和當(dāng)有安全問題發(fā)現(xiàn)時很快更新。
具體請參看網(wǎng)站:
www.isc.org/view.cgi?/products/BIND/index.phtml.
-使用8.1.2或以后的版本
-使用測試工具www.uniplus.ch/direct/testtool/dnstest.html來測試DNS。
-使用nslookup和dig來檢查服務(wù)結(jié)果。
-如果在DNS客戶端存在問題檢查/etc/nsswitch.conf和/etc/resolv.conf,
使用nslookup -d2來獲得DEBUG的信息。嘗試殺掉nscd守護(hù)程序。
-如果服務(wù)器端有問題使用named -d來讀console LOG,一般這LOG在syslog文件中的"daemon"段。
-要獲得name服務(wù)的統(tǒng)計使用
kill -ABRT `cat /etc/named.pid` 將會把統(tǒng)計信息記錄到/usr/tmp/named.stats.
-要查看改變設(shè)置后的配置信息使用HUP信號
kill -HUP `cat /etc/named.pid`
更多的請參看www.ebsinc.com/solaris/dns.html
4,有關(guān)chroot環(huán)境請參看如下網(wǎng)站:
www.sunworld.com/swol-01-1999/swol-01-security.html
以下準(zhǔn)備正式運行系統(tǒng)
如果可能請使用多人進(jìn)行最后測試,以便忘記某些重要的東西。
使用網(wǎng)絡(luò)漏洞掃描器掃描系統(tǒng),保證只有你想使用的服務(wù)在運行。
如商用掃描器IIS和免費掃描 器nmap或Satan.
檢查/opt和/usr分區(qū)是否為只讀狀態(tài)。
初始化Tripwire(或等同的檢查工具)
最后測試什么在工作,什么是禁止的,檢查console/log條目,
開始時經(jīng)常查看LOG記錄。


