手冊
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