1,Preparation 2,Initial OS installation 3,Stripping/configuring OS: 1st pass 4,Connect to test network 5,Installing tools & sysadmin software 6,Stripping/configuring OS: 2nd pass 7,Create Tripwire image, backup, test 8,Install, test, harden applications. 9,Install on live network, test 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 在/.cshrc/.profile中設置別名,變量如:VISUAL, EDITOR和PATH,但不要包含'.'號 。 為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 5