使用Yassp工具包安裝安全的Solaris系統 (一)
2024-07-26 00:29:37
供稿:網友
1、安裝系統前的準備工作
2、系統的初始化安裝
3、安裝YASSP工具包
4、在/etc/vfsab文件中對mount文件系統加以限制
5、在Solaris 8中安裝Sunscreen EFS防火墻
6、進一步增強系統的可靠性:路由、郵件、 解析及工具的設置
7、補丁
8、RPC
9、日志、Cron、權限
10、限制SUID類型的文件
11、安裝完整性檢查工具:如Tripwire
12、安裝、檢測并提高應用程序的可靠性
13、開始工作
1、安裝系統前的準備工作
* 簡化:建議在一臺主機上只運行一至兩種服務。使用多臺服務器,而不要只用一臺超級服務器
去完成所有的工作。這樣便于應用的隔離,可靠性的提高,也易于排錯及進行軟/硬件地升級。切
記,只運行必要的程序。
* 硬件:考慮使用串囗終端安裝系統。保證網絡環境的可信以及封閉。
* 保證安全地下載軟件:在一個封閉的或者沒有對外路由的網絡環境中,通過ftp與網絡內部其它
主機傳送文件。如果網絡并不是完全封閉的,要在文件傳輸完成后,馬上斷開網絡的連接,以減
小遭到攻擊的機會。添加一個以/tmp為HOME目錄的非特權用戶專門用來在主機間傳送文件。
* 清楚系統的用途、硬件的配置等。有時為了提高系統的可靠性可能會導致某些程序不能正常運
行,如CDE/OpenWindows,Disksuite及Legato運行都需要RPC的支持,但是在用作為防火墻的主機
上,要關閉RPC。
* 理解各種應用的工作方式非常重要(比如應用如何使用端囗、設備及文件),這樣才可以判斷哪
些方面需要加強及存在的風險。
2、系統的初始化安裝
連接串囗終端,加電,按下Stop-A鍵使主機進入到OK提示符模式,使用boot cdrom -install命令
開始安裝過程。
選擇以最終用戶包(end user bundle)或者核心包(core)模式進行安裝,設置主機名,終端類型,
IP地址,所在時區等,不要開啟任何的命名服務,如NIS或NFS。不要打開電源管理或者mount遠程
文件系統。
注:對于Solaris 8系統,使用F4功能鍵可以對最終用戶包內的軟件進行定制。
分區注意的事項:
* 對于syslog、web、新聞、代理服務器或者防火墻過濾主機,要為其/var文件系統建立一個獨立
的,較大磁盤空間的分區。將要存儲大量數據的服務器,如web或ftp服務器,也應該使用獨立的
分區存儲其數據。
* 將/usr及/opt分區與根區分離,使得/usr及/opt分區可以使用只讀(read-only)方式mount。
* 如果一定要使用Disksuite工具,設置RAID及磁盤鏡像,需要為其保留5MB的磁盤空間。使用
Veritas的文件卷管理,還需要額外的兩個分區。
* 分區實例:
2GB硬盤,不在本地記錄日志,將在/opt下安裝大量程序
200MB /(root+var),200MB swap,400MB /usr,1.2GB on /opt
2GB硬盤,為程序保留最大空間,/var分區獨立(使得日志文件不會把根區占滿)
1.6GB /(root+usr+opt),200MB swap,200MB /var
9GB硬盤,主機提供服務
200MB /,500MB swap,2GB /usr,5GB /opt,1GB /var
系統重啟
為root設置一個不易破解的囗令(7到8位,包含數字、字母及標點符號)。安裝過程將保留在
/var/sadm/install_data/install_log文件中。
以最終用戶包模式安裝時,需要手工安裝幫助文件(man pages)。如果用核心包模式安裝,為了使
用幫助文件,還需要安裝SUNWlibc包:
cd /cdrom/cdrom0/s0/Solaris_2.6/PRoduct;
pkgadd -d . SUNWman SUNWdtma SUNWjvman SUNWpmowm SUNWolman SUNWxwman
cd /cdrom/cdrom0/s0/Solaris_2.7/Product;
pkgadd -d . SUNWman SUNWdtmaz SUNWdtma SUNWjvman SUNWpmowm SUNWxwman
針對Solaris8系統,使用2號光盤安裝標準幫助文件及java幫助
cd /cdrom/cdrom0/Solaris_*/Product;
pkgadd -d . SUNWman SUNWjvman SUNWj2man
此外,還需要安裝一些常用的工具,如解壓縮及其它shell。
pkgadd -d . SUNWgzip SUNWbash SUNWbzip SUNWtcsh SUNWzlib
升級索引,以便使用“man -k keyWord”命令時,搜索相關的幫助:
/usr/lib/makewhatis /usr/man;
/usr/lib/makewhatis /usr/openwin/man;
使用核心包模式安裝的用戶,還需要安裝其它常用的軟件包,如:
Terminfo:SUNWter
Accounting:SUNWaccr SUNWaccu
NTP:SUNWntpr SUNWntpu
UCB tools:SUNWscpu
Man pages tools:SUNWlibC SUNWdoc。
下載并安裝Sun的最新推薦安裝補丁包到/opt/install目錄:
2.6 SPARC 2.6_Recommended.tar.Z
7 SPARC 7_Recommended.zip
7 Intel 7_x86_Recommended.zip
8 SPARC 8_Recommended.zip
8 Intel 8_x86_Recommended.zip
* 安裝補丁之前,閱讀README文件并保存系統已經安裝的補丁列表,解壓縮補丁包文件。
cd /opt/install;
showrev -p > patches.before;
unzip -q 8_*Recommended.zip
注:如果只安裝了核心包,showrev命令將不能使用,使用patchadd -p命令代替。
在Solaris7系統中使用patchadd命令,需要對命令做以下改動:
cd /usr/sbin;
mv patchadd patchadd-orig;
sed s////xpg4// patchadd-orig > patchadd;
chown root:bin patchadd;
chmod 555 patchadd;
* 進入解壓縮補丁包后產生的目錄,使用下面兩種方法執行安裝角本文件:
a) 在新安裝的系統中,使用帶有nosave參數的安裝命令,可以節省磁盤空間:
cd 8_*Recommended;./install_cluster -nosave
b) 在需要可能進行反安裝補丁文件的系統中,使用如下命令進行補丁的安裝,這時將在
/var/sadm/pathc目錄下保留備份文件。補丁只可以逐個加以刪除,系統沒有提供
"deinstall_cluster"的命令。
./install_cluster
* 檢查實際安裝了哪些補丁
cd ..;
showrev -p > patches.after;
diff patches.after patches.before;
* 查看安裝日志文件,返回值8代表沒有安裝,返回值2表示補丁安裝正常。
more /var/sadm/install_data/Solaris_*Recommended_log
重新啟動系統,以root登錄。
3、安裝YASSP工具包
安裝YASSP(Yet Another Solaris Security Package,目前的版本是Yassp beta#15)加強Solaris
系統的安全性,它包含多個編譯好的安全工具。
注:安裝YASSP后,所有有改動過的文件將在/yassp.bk/Before_DATE目錄中保留備份。
將YASSP安全工具的安裝過程記錄到文件中,提供日后查詢:
script -a /yasspinstall.log
下載yassp.tar.gz文件,保存到/opt/install目錄中,切斷網絡連接。
ifconfig hme0 down
解壓縮軟件包,產生yassp目錄
gunzip < yassp.tar.gz | tar xf -
cd yassp; ls -l
Yassp包文件詳細清單
drwxr-xr-x 2 7644 7001 512 Nov 20 06:54 RCS
-r-------- 1 7644 100 14482 Nov 20 06:54 README
-r--r--r-- 1 7644 100 8418 Nov 20 06:52 WhatIsNew
-rw-r--r-- 1 7644 7001 66 May 21 2000 admin
-rw-r--r-- 1 7644 100 61952 Nov 20 01:20 aubtocsin
lrwxrwxrwx 1 7644 100 9 Nov 22 10:13 aubtocsin_i386 -> aubtocsin
lrwxrwxrwx 1 7644 100 9 Nov 22 10:13 aubtocsin_sparc -> aubtocsin
-rw-r--r-- 1 7644 100 136192 Nov 20 06:54 gnugzip_i386
-rw-r--r-- 1 7644 100 147456 Nov 20 06:54 gnugzip_sparc
-rw-r--r-- 1 7644 100 903168 Nov 20 06:54 gnurcs_i386
-rw-r--r-- 1 7644 100 1021952 Nov 20 06:54 gnurcs_sparc
drwxr--r-- 3 7644 100 512 Nov 20 06:53 html_doc
-r-xr-xr-x 1 7644 100 5323 Nov 20 05:25 install.sh
-rw-r--r-- 1 7644 100 3180544 Nov 20 06:54 openssh_i386
-rw-r--r-- 1 7644 100 4121600 Nov 20 06:54 openssh_sparc
-rw-r--r-- 1 7644 100 26624 Nov 20 06:54 parcdaily
lrwxrwxrwx 1 7644 100 9 Nov 22 10:12 parcdaily_i386 -> parcdaily
lrwxrwxrwx 1 7644 100 9 Nov 22 10:12 parcdaily_sparc -> parcdaily
-rw-r--r-- 1 7644 100 231936 Nov 20 06:54 prftripw_i386
-rw-r--r-- 1 7644 100 293888 Nov 20 06:54 prftripw_sparc
-rw-r--r-- 1 7644 100 1290240 Nov 20 06:54 secclean
lrwxrwxrwx 1 7644 100 8 Nov 22 10:12 secclean_i386 -> secclean
lrwxrwxrwx 1 7644 100 8 Nov 22 10:12 secclean_sparc -> secclean
-rw-r--r-- 1 7644 100 271360 Nov 20 06:54 wvtcpd_i386
-rw-r--r-- 1 7644 100 609792 Nov 20 06:54 wvtcpd_sparc
執行安裝文件
./install.sh
依據提示安裝下列工具:SECclean GNUrcs GNUgzip PARCdaily WVtcpd(包括rpcbind) PRFtripw
OPENssh
SECclean是一個腳本文件,它通過對文件權限的配置,tcp/ip的調整,關閉不必要的服務加
強系統的可靠性。
Yassp beta#15中的問題:
1. SSH:
* Yassp在Solaris7及以前版本的系統中不安裝SSH,只在Solaris8中安裝。
* Scp的服務器端需要如下設置:
chmod 755 /usr/local /opt/local
ln -s /usr/local/bin/scp /usr/bin/scp
2. Solaris 8 10/00版本的系統中,有一個新的守護進程'picld',是一種對客戶端發布特定平臺
信息的機制,picld進程負責維護及控制客戶及內插模塊對PICL(Platform Information and
Control Library)信息的訪問。
關閉此進程
mv /etc/rcS.d/S95picld /etc/rcS.d/.S95picld
mv /etc/init.d/picld /etc/init.d/.picld
3. Tocsin是Yassp內含的入侵檢測工具,用來偵聽網絡數據包,缺省情況下不安裝。
pkgadd -d aubtocsin
配置YASSP
安裝完YASSP后,首先瀏覽一下/etc/yassp.conf配置文件,帶有注釋,很容易理解。查看
yassp.conf及yassp的man pages幫助。一般情況下,除了SSH,不需要改動什么。
1. 帳號
* 守護進程及用戶(DEF_UMASK)的缺省umask值都被設置成為077,禁止組及全局訪問。在某些情
況下,可能需要將umask值改為027,使組可讀。
* cleanup_passwd腳本會關閉/usr/passwd文件中的用戶帳號,但是不會刪除他們。Yassp.conf文
件中的USERDENIED變量包含缺省的列表。加入非標準的應用帳號。
* 如果確定刪除某些帳號,將其加入yassp.conf文件中的USEDELETED變量項中,并從新執行
cleanup_passwd。
注:此操作可能會產生無主文件或導致錯誤,如刪除uucp將使tip命令不能使用。
* ROOTALLOWED變量包含所有UID為0的帳號列表,cleanup_passwd會關閉所有列表之外的UID為0的
帳號。
2. Cron:
* 非root用戶需要使用at/cron命令時,需要編輯/etc/cron.d目錄下的allow/deny文件。
* root的cron列表將會被替換。如果在安裝yassp之前,你已經在cron中添加了條目,這些條目需
要重新加入,舊的cron列表備份于/yassp.bk目錄中。
* yassp的daily腳本用來整理日志記錄,在cron中將其注釋掉。
3. SSH:Yassp將同時安裝SSH的客戶及服務器端
* 最新版本的SSH可以被“tcp wrapper"保護,因此使用前,要在/etc/hosts.allow文件中放開,
缺省是全部關閉。
* SSH服務對所有主機開放,編輯/etc/hosts.allow加入
sshd : ALL
* 允許X11轉發使用SSH,編輯/etc/hosts.allow加入
sshdfwd-X11 : LOCAL
* 提示:在hosts.allow/deny,SSH的規則中不要使用反向finger查詢。
* 在SSH中,通常使用'scp'傳送文件。' sftp'使用于新的SSH2中,如果需要,在
/etc/sshd_config中打開它,當然,由于這是一項新的功能,因此有可能會存在問題。Subsystem
sftp /opt/local/libexec/sftp-server
* 不接受RSA用戶認識,而只允許使用囗令。
RSAAuthentication no
* 檢查服務器(/etc/sshd_config)及客戶端(/etc/ssh_config)其它的設置,如設置只允許特定
的用戶使用SSH,禁止用守護進程的帳號使用SSH。
4. Syslog:在Solaris8系統中,Yassp會以‘-t'參數啟動syslog,因此它將不接受其它主機
syslog連接。因此,如果你想使用一臺中心log服務器,需要設置
SYSLOGFLAGS=""
5. 如果需要啟動INETD服務,設置RUNINETD值為YES,并在/etc/inetd.conf中開放相應的服務。
缺省情況下,yassp會關閉所有的服務。如果確實需要,使用tcp wrapper,編輯
/etc/hosts.allow和/etc/hosts.deny文件中對訪問服務進行限制。
6. nscd守護進程
* 不啟動nscd進程,有些應用,如Netscape的http代理服務將不能工作,設置NETSCAPE或者NSCD
變量可以設置激活nscd進程。
* 關閉nscd進程將加重nameserver的負載,因此,通過調整resolv.conf文件中nameserver的順序
,可以達到平衡負載的目的。
7. 編輯登錄的標語文件,對非法的用戶訪問提出警告。對于telnet和SSH,登錄前的文件為
/etc/issue,登錄后的文件是/etc/motd
8. Yassp更改/etc/system文件內的參數對Solaris系統進行調整。
* Yassp增加對文件描述的字節限制,rlim_fd_max=1024、rlim_fd_cur=256。有些應用也許會需
要更大的值,根據需要改動。
* 將小于8的soft-limit增加到256對一些應用會有幫助。Hard-limit不需要改變,仍為1024。系
統管理員需要知道哪些應用需要更多的hard-limit值,并對/etc/system做相應的改動。
* 設置sys:coredumpsize=0從而不產生corefiles。當然有時候,管理員需要corefiles進行分析
,但是也要注意corefiles可能會泄露敏感的信息。
* 其它的設置:
*Increase SVR4 style ptys
set pt_cnt=128
*Attempt to prevent and log stack-smashing attacks
set noexec_user_stack=1
set noexec_user_stack_log=1
*enable advanced memory paging technique
*NOT NEEDED ON Solaris 8:set priority_paging=1
set tcp:tcp_conn_hash_size=16348
*If the NFS_PORTMON variable is set,then clients are required to use
*privileged ports(portsSet nfssrv:nfs_portmon=1
*max users processes in here too
set maxuprc=150
關閉記錄動作,刪除yassp安裝目錄
#exit
Script done,file is /yasspinstall.log
#cd; rm -rf /opt/install/yassp
重新啟動,使改動生效
#reboot
重新啟動后,檢查控制臺上的錯誤信息,如果有,更正之。以root登錄,檢查網絡聯接情況,應
該只有ssh和syslog(Solaris7及以前版本)在監聽:
netstat -a
UDP: IPv4
Local Address Remote Address State
-------------------- -------------------- -------
*.* Unbound
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -------
*.* *.* 0 0 24576 0 IDLE
*.ssh *.* 0 0 32768 0 LISTEN
*.* *.* 0 0 32768 0 IDLE
--------------------------------------------------------------------------------