主題:Solaris安全FAQ


參考資料:The Solaris Security FAQ by Peter Baer Galvin 
 
 1) (概述--略)
 
 2) 怎樣將Solaris配置得更加強壯? 
 
 2.1) 哪些檔的許可許可權需要改變? 
 
 有個叫fix-modes的軟體(ftp://ftp.fwi.uva.nl/pub/solaris/fix-modes.tar.gz)可以在
 Solaris 2.4和2.5上執行並改變系統檔及目錄的存取許可權,這樣會使非ROOT的用戶更難
 於更改系統檔或者取得ROOT許可權。
 
 2.2) 如何對ROOT的環境加以配置? 
 
 將umask設為077或者027. 
 
 查看你的環境中路徑設置情況,不要有./
 
 2.3) 我該更改哪些啟動檔? 
 
 通常情況下,你要檢查所有在/etc/rc2.d和/etc/rc3.d以S開頭的檔,所有並非必要的設備
 或者服務都可以重命名(不要再以S開頭),然後你可以重新啟動,從/var/adm/messages中來
 觀察自啟動的情況,並且從ps -elf的輸出中加以檢查。
 
 2.4) 如何將ROOT的遠端登入取消? 
 
 在/etc/default/login裡加上 "CONSOLE"行,在/etc/ftpusers裡加上root。
 
 2.5) 如何取消rlogin/rsh服務? 
 
 移去/etc/hosts.equiv和/.rhosts以及各home目錄下的.rhosts,並且在/etc/inetd.conf中
 把r系列服務都殺掉,然後找出inetd的程序號,重啟它。
 
 2.6) 哪些帳號是不必須的? 
 
 移去或者鎖定那些不是必須的帳號,比如sys\uucp\nuucp\listen等等,簡單的辦法是在
 /etc/shadow的password域中放上NP字元。
 
 2.7) 怎樣保護我的設備? 
 
 在檔/etc/logindevperm中包含了對系統設備的許可許可權配置資訊,應該檢視堶悸漲U項
 設定並且手動賦予你所想要的許可許可權。
 
 對於抽取式的BSM設備需要設定只有single user允許進入。
 
 2.8) 我應該將/etc的存取許可權改為什麼才安全? 
 
 用chmod -R g-w /etc命令來移去組用戶對/etc的寫許可權。
 
 2.9) Solaris機器充當路由器? 
 
 默認情況下,如果Solaris機器有超過一塊的網卡的話,它將會在不同網卡間轉發資料包,這一行為可
 以在/etc/init.d/inetinit中得到控制。要在Solaris 2.4或者更低版本機器下關閉它,可以將
 ndd -set /dev/ip ip_forwarding 0添加於/etc/init.d/inetinit的未尾。在Solaris 2.5
 中,只要touch /etc/notrouter. 
 
 2.10) 如何取消automounter? 
 
 Automounter是由/etc/auto_*這些配置檔控制的,要取消它,只要簡單地移去這些檔,
 並且/或者將/etc/rc2.d/S74autofs改名。 
 
 2.11) 如何取消NFS服務? 
 
 NFS的共用輸出是由/etc/dfs/dfstab文件管理的.可以刪除它。要將NFS伺服器的守護程序關閉
 則可以重命名/etc/rc3.d/S15nfs.server。要防止一台機器成為NFS客戶機,可以重命名檔
 /etc/rc2.d/S73nfs.client——當重命名這些自啟動檔時,要注意不要將檔的首字母設為
 “S”。 
 
 2.12) 對cron任務我該注意些什麼? 
 
 你得查看所有的cron任務——在/var/spool/cron/crontabs檔中你可以找到它們。還必須在
 /etc/default/cron堻]置了"CRONLOG=yes" 來記錄corn的動作。 
 
 2.13) 使用動態路由有什麼風險嗎? 
 
 使用動態路由守護程序的機器用in.routed及in.rdisc來維護路由,這可能會大大增加路由協議的複雜程
 度,而且路由更新會消耗相當大比便的可用帶寬,因此在可能的情況下,還是建議你使用靜態路由。
 
 2.14) 何時及如何運用靜態ARP? 
 
 ARP是聯繫IP位址和乙太網的協定(位址轉換協定) 。默認地,Solaris機器動態地確定ARP位址,arp命令
 可以用來靜態地設定ARP表並且刷新它,如果你的系統媔有少量無需更改的機器,那麼這是一個很好的工具。
 為了防止ARP欺騙,最好將受託機器的硬體位址作為永久條目保存在ARP的快取記憶體中。
 
 2.15) 執行rpcbind是不安全的嗎? 
 
 rpcbind是允許rpc請求和rpc服務之間相互連接的程式,但標準的rpc是不安全的:(,它使用的是"AUTH_UNIX"
 驗證, 也就是說它依靠的是遠端系統的IP位址和遠端用戶的UID來驗證。一般的系統可能需要某些rpc存在,但
 對各種伺服器如Web servers, ftp servers, mail servers, etc)最好將rpc服務關閉,你也可以通過
 一些安全工具來確定rpc服務是否會影響到你系統的安全性。可以通過將/etc/rc2.d/S71RPC改名來禁止rpc。
 
 2.16) /etc/utmp的許可權應該如何設定? 
 
 # chmod 644 /etc/utmp  
 
 2.17) 哪些程式可以去掉SUID位元? 
 
 許多setgid和setuid程式都只是由root執行的,或者是由某些特定用戶或組執行,那就可以將其setuid位
 移去,下面是一個Solaris 2.6上setuid程式的列表,你應該根據自己的情況進行增減。
 
 # find / -perm -4000 -print
 /usr/lib/lp/bin/netpr
 /usr/lib/fs/ufs/quota
 /usr/lib/fs/ufs/ufsdump
 /usr/lib/fs/ufs/ufsrestore
 /usr/lib/fs/vxfs/vxdump
 /usr/lib/fs/vxfs/vxquota
 /usr/lib/fs/vxfs/vxrestore
 /usr/lib/exrecover
 /usr/lib/pt_chmod
 /usr/lib/sendmail
 /usr/lib/utmp_update
 /usr/lib/acct/accton
 /usr/lib/uucp/remote.unknown
 /usr/lib/uucp/uucico
 /usr/lib/uucp/uusched
 /usr/lib/uucp/uuxqt
 /usr/lib/sendmail.orig
 /usr/openwin/lib/mkcookie
 /usr/openwin/bin/xlock
 /usr/openwin/bin/ff.core
 /usr/openwin/bin/kcms_configure
 /usr/openwin/bin/kcms_calibrate
 /usr/openwin/bin/sys-suspend
 /usr/dt/bin/dtaction
 /usr/dt/bin/dtappgather
 /usr/dt/bin/sdtcm_convert
 /usr/dt/bin/dtprintinfo
 /usr/dt/bin/dtsession
 /usr/bin/at
 /usr/bin/atq
 /usr/bin/atrm
 /usr/bin/crontab
 /usr/bin/eject
 /usr/bin/fdformat
 /usr/bin/login
 /usr/bin/newgrp
 /usr/bin/passwd
 /usr/bin/ps
 /usr/bin/rcp
 /usr/bin/rdist
 /usr/bin/rlogin
 /usr/bin/rsh
 /usr/bin/su
 /usr/bin/tip
 /usr/bin/uptime
 /usr/bin/w
 /usr/bin/yppasswd
 /usr/bin/admintool
 /usr/bin/ct
 /usr/bin/cu
 /usr/bin/uucp
 /usr/bin/uuglist
 /usr/bin/uuname
 /usr/bin/uustat
 /usr/bin/uux
 /usr/bin/chkey
 /usr/bin/nispasswd
 /usr/bin/cancel
 /usr/bin/lp
 /usr/bin/lpset
 /usr/bin/lpstat
 /usr/bin/volcheck
 /usr/bin/volrmmount
 /usr/bin/pppconn
 /usr/bin/pppdisc
 /usr/bin/ppptool
 /usr/sbin/allocate
 /usr/sbin/mkdevalloc
 /usr/sbin/mkdevmaps
 /usr/sbin/ping
 /usr/sbin/sacadm
 /usr/sbin/whodo
 /usr/sbin/deallocate
 /usr/sbin/list_devices
 /usr/sbin/m64config
 /usr/sbin/lpmove
 /usr/sbin/pmconfig
 /usr/sbin/static/rcp
 /usr/sbin/vxprint
 /usr/sbin/vxmkcdev
 /usr/ucb/ps
 /usr/vmsys/bin/chkperm
 /etc/lp/alerts/printer
 
 而且還應該建立一個setuid/setgid程式的列表,日後可以對比是否有新的setuid程式出現--這可能是
 入侵者光臨過的徵兆。
 
 2.18) 哪些系統工具我可以去掉它? 
 
 所有的網路工具你都應該檢查並且確定它在你的系統環境堿O否是必需的,如果答案為否的話,就
 幹掉它,下面這些工具有些可以在開始檔中找到它,有些則上在/etc/inetd.conf中被啟動的,注
 釋掉那些不必要的服務,並且kill -HUP inetd守護程序——類似的東西有:
 
 tftp         systat        rexd    ypupdated    netstat
 rstatd         rusersd        sprayd    walld           exec
 comsat         rquotad        name    uucp
 
 最好把常規的inetd.conf替換掉——改成隻開telnet和ftp服務——如果你真的需要它們的話(建議再
 用防火牆建立阻塞)。
 
 2.19) 我應該執行in.fingerd嗎? 
 
 in.fingerd在過去有一些安全問題,如果你想提供finger工具,用nobody來執行它。
 
 2.20) 如何讓syslog有更大作用?
 
 默認情況下,syslog僅提供最精簡的記錄,你可以通過編輯/etc/syslog.conf文件來讓syslog記
 錄更多的資訊,然後你需要重啟syslog以使它讀取配置檔。
 
 你還可以通過
 
 touch /var/adm/loginlog
 chmod 600 /var/adm/loginlog
 chgrp sys /var/adm/loginlog
 
 來建立login的記錄。
 
 2.21) 對EEPROM如何做才能更安全? 
 
 將EEPROM設于安全的模式:通過設定對"ok setenv security-mode=command"的密碼保護來實現。
 當然這並不能真正地防止入侵,如果某人可以物理接觸某控制臺的話,它就能打開機器並替換掉EEPROM,
 更改hostid........
 
 2.22) 我的機器是處於“混雜模式”下嗎? 
 
 在Solaris下,你只能通過安裝某些工具來判斷是否機器是處於混雜模式下,可以參見第三部分。只有當你
 執行諸如snoop或者某些網路監聽軟體時機器才會處在混雜模式下,如果你並沒有監聽整個網路,那極大的可
 能性就是黑客已經侵入到你的系統中並且開始以監聽來接收資料了。
 
 2.23) 如果我必須執行NFS,如何使它更安全? 
 
 在/etc/dfs/dfstab中的所有檔將被所有人共用,默認情況下,NFS客戶會以"-o rw"或者"-o ro"選項
 共用。 
 必須使用"nosuid"參數來使setuid程式失效。
 不要通過rpcbind來執行nfs mount。而是用更安全的rpcbind替代程式或者安裝SUN最新的rpcbind補丁。
 在可能的情況下,儘量使用secure-RPC。否則的話,你執行的是"AUTH_UNIX"認證,它僅僅依靠客戶的IP地
 址來進行驗證,很容易有IP欺騙的情況發生。
 在可能的情況下,不要使用NFS,因為它的資訊傳遞是通過明文的(甚至你用了"AUTH_DES"或者"AUTH_KERB"來
 進行認證)所以傳輸的任何檔對嗅探來說是及危險的。
 有程式可以猜度ROOT所mountr的檔案名柄,並且獲得NFS server上的檔。 
 
 2.24) 如何讓sendmail更安全? 
 
 sendmail總是不斷地有新漏洞被發現,怎樣才能使它更安全呢?
 
 使用最新版本的Berkeley sendmail (see section 3) 
 使用smrsh (section 3) 
 從/etc/aliases塈R除decode 
 將/etc/aliases的許可權設為644 
 可以考慮使用代理防火牆來過濾SMTP中不必要的命令。
 
 2.25) NIS是安全的嗎,如何使其更強壯? 
 
 NIS從來就不是一個安全的服務,如果配置得當的話NIS+會更好些,就象暴力破解密碼一樣,NIS功能變數名稱
 如果被猜出來,就會給入侵者提供相當豐富的資訊,要關閉這個漏洞,可以將信任主機的位址放在
 /var/yp/securenets中。並且考慮使用NIS+或者secure RPC。
 
 2.26) 匿名FTP要怎樣才會安全可靠? 
 
 Solaris 2.5 ftpd(1M)包含了一個很好的FTP配置說明
 
 cp /etc/nsswitch.conf ~ftp/etc 
 確保包含~ftp的檔系統在被安裝是沒有用nosuid選項
 在~ftp下任何檔的屬主都不是"ftp" 
 更詳細的資訊參見它的配置說明及FAQ
 
 2.27) 如何將X配置得更安全? 
 
 使用SUN-DES-1選項來調用Secure RPC來通過X鑒別,可以使用xhost +user@host來通過訪問請求。
 
 2.28) 如何打開SUN-DES-1的鑒別機制? 
 
 set DisplayManager*authorize: true 
 set DisplayManager._0.authName: SUN-DES-1 
 rm ~/.Xauthority 
 增加對localhost的許可許可權:通過xauth local/unix:0 SUN-DES-1 unix.local@nisdomain
                            xauth local:0 SUN-DES-1 unix.local@nisdomain 
 Start X via xinit -- -auth ~/.Xauthority 
 把你自己加入,並移去其他所有人:xhost +user@ +unix.local@nisdomain -local -localhost 
 賦予用戶foo進入主機"node"的許可權: 
 
 允許foo進入node:           xhost +foo@ 
 建立適當的foo的xauthority: xauth add node:0 SUN-DES-1 unix.node@nisdomain 
 foo現在就能連上"node"了:    xload -display node:0 
 
 2.29) 我需要安裝哪些補丁? 
 
 用showrev -p命令來察看補丁在系統堛漲w裝情況,在你想保護的主機以及大眾都可以訪問的主機
 上,你應該到SUN公司的主頁上去查找相關的補丁包來安裝,並且應該常常查看最新的補丁發佈情況。
 
 2.30) 如何防止在堆疊中執行代碼? 
 
 入侵者常常使用的一種利用系統漏洞的方式是堆疊溢位,他們在堆疊堨岱恩a插入一段代碼,利用
 它們的溢出來執行,以獲得對系統的某種許可權。
 
 要讓你的系統在堆疊緩衝溢出攻擊中更不易受侵害,你可以在/etc/system裡加上如下語句:
 
 set noexec_user_stack=1
 set noexec_user_stack_log =1
 
 第一句可以防止在堆疊中執行插入的代碼,第二句則是在入侵者想執行exploit的時候會做記錄:)
 
 3) 應該增加或者替代哪些程式? 
 
 3.1) inetd 
    
 inetd可以用xinetd代替,以增加日誌功能。 
 xinetd: 
 ftp://qiclab.scn.rain.com/pub/security/xinetd* 
 或 ftp://ftp.dlut.edu.cn/pub/unix/sun-source/xinetd-2.1.tar.Z(不知是否為最新版本). 
 
 3.2) ifstatus 
 
 ifstatus可以確定你的網卡是否工作於混雜模式(有人進行網路監聽?) 
 url: 
 ftp://coast.cs.purdue.edu/pub/tools/unix/ifstatus/ 
 
 3.3) xntp 
 
 xntp是有個更安全的網路時間協定(Network Time Protocol). 
 URL: 
 ftp://ftp.udel.edu/pub/ntp/xntp3-5.93.tar.gz (1907KB)      
 3.4) sendmail 
 
 用Berkeley Sendmail(http://www.sendmail.org/)替代Solaris自帶的sendmail. 
 
 3.5) rpcbind 
 
 可以用如下URL中的rpcbind替換Solaris自帶的rpcbind, 這個rpcbind包含了類似 
 於tcpwrapper的功能並關閉了通過rpcbind訪問NFS. 
   
 ftp://ftp.win.tue.nl/pub/security/rcpbind_1.1.tar.Z 
 
 3.6) 口令檢查程式 
 
 很不幸,Solaris 上還未發佈passwd+及npasswd, 這兩個程式可以用於檢查在UNIX 
 上那些愚蠢的口令。 
 
 3.7) crack 
 
 crack可以找出/etc/shadow中那些容易猜測的口令,雖然執行crack將會使CPU的 
 負載加重,但它在第一次執行時就可以給出10%系統帳號的口令。 
 
 URL: (我想國內很多站點已有此程式了。) 
 ftp://sable.ox.ac.uk/pub/comp/security/software/crackers/ 
 
 3.8) ftp 
 
 不用多說,使用wu-ftpd, 國內站點上有的是,如果找不到,試試:     
 URL: 
 ftp://ftp.dlut.edu.cn/pub/unix/ftp/wu-ftpd/ 
 OR: 
 ftp://wuarchive.wustl.edu/packages/wuarchive-ftpd 
 
 3.9) fix-modes 
 
 用於糾正Solaris 2.2 ~ 2.6系統中敏感檔及目錄的屬性,以適應安全性需要。 
 URL: 
 ftp://ftp.dlut.edu.cn/pub/unix/security/fix-modes.tar.gz 
 OR: 
 http://www.fwi.uva.nl./pub/comp/solaris/fix-modes.tar.gz 
 
 3.10) noshell 
 
 可用於不希望登入系統的用戶的shell, 能夠記錄發生的事件並防止用戶login. 
     
 3.11) bind
 
 標準的Solaris堭a的bind有著眾所周知的安全問題(參見CERT第4部份),現在的發行版已經做
 了修補。
 
 3.12) netcat
 
 NetCat對系統管理員和入侵者來說都是很實用的工具,它可以在兩個系統間建立靈活我TCP連接。
 
 
 
 5) 如何使我的Solaris Web server更安全? 
 
 下面的方法可以令你的以Solaris為基礎的系統十分安全,你同時還可以配以利用防火牆及過濾路由
 器來組成一個完整而強大的網路拓撲,但是,沒有任何系統是完美的,所以你除了關注安全動態,給機
 器作好防範之外,也不應該在機器上裝載其他無關的第三方的軟體--webserver需要的是安全,而不是
 對管理員的方便。
 
 5.0) Web server安全檢查
 
 用下面的安全檢查列表來察看你的系統是否是安全地安裝的,當然如果你有特殊的安全需求則不一定以此為准:
 
 在完成一切安全設置前將系統與網際網路斷開
 僅僅安裝系統的核心部分以及需要的套裝軟體
 安裝推薦的安全補丁
 修改系統的開始檔來進行
 在/etc/init.d/inetinit中關閉IP轉發
 改變/tmp的存取許可權(可以在系統的開始檔中加入腳本
 用ps檢查程序情況
 Invoke sendmail from cron to process queued mail occasionally. 
 安裝配置tcp_wrappers, S/Key, wu-ftp及tripwire於你的系統環境。
 編輯/etc/hosts.allow來確定可進入的機器,並且編輯/etc/inetd.conf注釋掉所有不需要的服務
 用syslog記錄下所有的telnet連接通信
 Mount上的檔系統要是唯讀而且是no-suid的
 確定/noshell是除了root之外所有不希望進入的帳號的默認shell
 刪除/etc/auto_*, /etc/dfs/dfstab, p/var/spool/cron/crontabs/* (except root). 
 使用靜態路由
 測試你的系統,包括允許及拒絕訪問的配置及記帳系統
 考慮使用更安全版本的sendmail, syslog, bind以及crontab來替代現有的 
 安裝xntp來有更精確的時間戳
 考慮更詳細地系統記帳
 保持監聽和測試Web server的習慣 
 
 在你完成上面的配置之後,你的系統已經會比安裝一個標準的UNIX系統,並配以標準配置更安全了。
 
 5.1) 硬體上......
 
 在系統完全安裝好並且配置得更安全之前,不要將它放到網際網路上——從理論上說,一些入侵者喜歡
 在你把系統弄得完美之前溜進去放幾個後門——而且最好從CD-ROM安裝你的系統並且將二進位檔
 載入在磁帶機或者軟碟上物理防寫.......
 
 5.2) 安裝系統
 
 從最新的,可靠的Solaris2.x版本安裝,每一版本的Solaris都會比前一版更安全一些的。
 
 Solaris是非常靈活並且包含了大量工具可供使用的。但不幸的是,這些外帶的功能套裝軟體可能也會
 導致一些潛在的危險,所以要建立一個安全的系統,最好的辦法是,只安裝基本的OS部份,其餘的軟體
 包則以必要為原則,非必需的包就可以不裝——這樣還可以使機器更快和更穩定:)
 
 在Solaris的安裝程式堙A你可以選擇Core SPARC installation cluster來安裝,事實上,就連
 這個選項都還有些東西是不必要的確良:(,但它的確是一個安全的系統基礎,另一個好處是,它需要的空
 間很少,看看下面你就知道了:
 
 s0:    /         256 megabytes
 s1:    swap        256 megabytes
 s2:    overlap
 s3:
 s4:    
 s5:    
 s6:    /local        ??? megabytes (rest of the drive)
 s7:
 
 /var要足夠大以放置審核記錄檔,而swap分區則與你的硬體(記憶體)相適應就行了,當然大的swap
 分區可以在應付DoS攻擊時更強有力。
 
 現在可以用另外的機器,ftp到sunsolve.sun.com:/pub/patches並且下載最新的推薦補丁,將它放
 在磁帶機中轉到你的“安全主機”上,然後安裝這些補丁,當然有些補丁可能安裝不上,因為它所
 要補的那個軟體你沒有安裝:)
 
 5.3) 系統堛搴trip 
 
 在Solaris下,你可以通過對/etc/rc[S0-3].d檔來修改啟動時自引導的動作:
 
 考慮移去/etc/rc2.d中在你系統中用不到的服務,我還建議你移除/etc/init.d堸ㄓU以下列表中
 檔外的所有東西:
 
 K15rrcd         S05RMTMPFILES   K15solved       S20sysetup
 S72inetsvc      S99audit        S21perf         
 S99dtlogin      K25snmpd        S30sysid.net    S99netconfig
 K50pop3         S74syslog       S75cron         S92rtvc-config 
 K60nfs.server   K65nfs.client   S69inet                     
 K92volmgt       README          S95SUNWmd.sync
 S01MOUNTFSYS    S71sysid.sys    S88utmpd        S95rrcd
 
 這些檔可能會與你的不同--這取決於你機器堛犒洇峊d/是否使用Solaris DiskSuits等等。
 移除/etc/rc3.d堛漱憟........
 
 舉例來說,在Solaris 2.4中,你應該編輯/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
 
 並且通過設定ndd -set /dev/ip ip_strict_dst_multihoming 1來關閉"ip_strict_dst_multihoming" 
 核心變數。solaris機器就不會在兩塊網卡間轉發IP包,這可以防止host spoof。
 
 * 在Solaris 2.5下,只要建立一個叫/etc/notrouter的檔就能阻止IP轉發,要重新打開它,只要移除
 /etc/notrouter並重啟動系統就行了。It's important to note that there is a small time 
 window between when this file is created and when routing is disabled, 
 theoretically allowing some routing to take place. 
 
 在Solaris 2.4下,添加一個新的腳本名為/etc/init.d/tmpfix: 
 
 
 #!/bin/sh
 #ident  "@(#)tmpfix 1.0    95/08/14"
 
 if [ -d /tmp ]
 then
     /usr/bin/chmod 1777 /tmp
     /usr/bin/chgrp sys /tmp
     /usr/bin/chown root /tmp
 
 並且連接/etc/init.d/tmpfix到/etc/rc2.d/S79tmpfix,這樣這個腳本就會在系統啟動時執行了。
 這可以使入侵者更難在系統媢雰root許可權。在Solaris 2.5則不必如此。
 
 另外還有一些好的建議,就是在啟動時為用戶設定安全的umask,下面的script就是做這事兒的:
 
      umask 022  # make sure umask.sh gets created with the proper mode
      echo "umask 022" > /etc/init.d/umask.sh
      for d in /etc/rc?.d
      do
          ln /etc/init.d/umask.sh $d/S00umask.sh
      done
 
 Note: 腳本名稱中的".sh"是必需的,這樣腳本才會在本shell而不是它的子shell中執行。
 
 刪除/etc/auto_*檔,刪除/etc/init.d/autofs可以防止automounter在啟動時就執行。
 
 刪除/etc/dfs/dfstab,清除/etc/init.d以防止機器成為NFS伺服器。
 
 刪除crontab檔,你可以將/var/spool/cron/crontabs中屬主root以外的檔全部刪除。
 
 使用靜態路由,建立/etc/defaultrouter來維護之,以避免spoof。如果你必須通過不同的閘道,考慮增
 加/usr/bin/route命令於/etc/init.d/inetinit以取代執行routed。 
 
 當地切完成時,重啟機器,徹底地查看程序,ps -ef的輸出應該是這樣的:
 
      UID   PID  PPID  C    STIME TTY      TIME COMD
     root     0     0 55   Mar 04 ?        0:01 sched
     root     1     0 80   Mar 04 ?       22:44 /etc/init -
     root     2     0 80   Mar 04 ?        0:01 pageout
     root     3     0 80   Mar 04 ?       33:18 fsflush
     root  9104     1 17   Mar 13 console  0:00 /usr/lib/saf/ttymon -g -h -p myhost console 
      login:  -T sun -d /dev/console -l co
     root    92     1 80   Mar 04 ?        5:15 /usr/sbin/inetd -s
     root   104     1 80   Mar 04 ?       21:53 /usr/sbin/syslogd
     root   114     1 80   Mar 04 ?        0:11 /usr/sbin/cron
     root   134     1 80   Mar 04 ?        0:01 /usr/lib/utmpd
     root   198     1 25   Mar 04 ?        0:00 /usr/lib/saf/sac -t 300
     root   201   198 33   Mar 04 ?        0:00 /usr/lib/saf/ttymon
     root  6915  6844  8 13:03:32 console  0:00 ps -ef
     root  6844  6842 39 13:02:04 console  0:00 -sh
 
 /usr/lib/sendmail守護程式並沒有打開,因為你不必總在25埠監聽mail的列表請求,你可以在root的
 crontab檔中增加:
 
 0 * * * * /usr/lib/sendmail -q > /var/adm/sendmail.log 2>&1
 
 這條命令要以每小時調用sendmail程序處理排隊中的郵件。 
 
 5.4) 安裝第三方軟體
 
 你需要的第一個軟體是TCP Wrappers套裝軟體——由Wietse Venema寫的,它提供了一個小的二
 進制檔叫tcpd,能夠用它來控制對系統服務的進出——比如telnet及ftp,它在/etc/inetd.conf
 中啟動,訪問控制可以由IP位址、功能變數名稱或者其他參數來限制,並且tcpd可以提升syslog的記錄
 級別,在系統遇到未經認證的連接時,發送email或者警告給管理員。 
 
 然後安裝S/Key來控制遠端連接的安全性,可以在Q5.6中看到詳細的配置方法。
 
 如果你打算打開ftp服務(不管是匿名ftp或者是出了管理目的),你需要取得一份WU-Archive ftp,
 最好要拿到它的最新版本,否則會有一些安全漏洞存在,如果你認為需要管理員的遠端登入服務的
 話,可能得修改S/Key來支持ftp daemon。在Crimelabs S/Key的發行版本中,你可以在找到
 S/Key/misc/ftpd.c,這個C程式示範了如何讓S/Key支持WU-Archive ftp,你可以對新版的WU-FTP
 做類似的改動,當然你可能要閱讀wu-ftp FAQ以增加瞭解。
 
 編譯並且安裝了這些二進位檔後(tcpd, wu-ftpd及keyinit, keysu,keysh),它們會被安裝在
 /usr/local/bin中,當編譯wu-ftpd時你需要指定一個配置檔及日誌的存放目錄,我們推薦你將
 配置檔放在/etc下,將日誌檔放在/var下,Q5.7更詳細地說明了wu-ftp的配置。
 
 用/noshell來阻止那些不想讓他們進入的帳號,讓/noshell成為那些人的shell。這些帳號不允許登入
 並且會記錄下登入的企圖,入侵者無法通過這種帳號入侵。
 
 5.5) 限制通過網路進入系統 
 
 
 telnet和ftp守護程序是從inetd程序啟動的,inetd的配置檔是/etc/inetd.conf,還包含了其他
 的各種服務,所以你可以乾脆移去這個檔,新建一個隻包括以下兩行的檔:
 
 ftp stream tcp nowait root /usr/local/bin/tcpd /usr/local/bin/wu-ftpd
 telnet stream tcp nowait root /usr/local/bin/tcpd /usr/sbin/in.telnetd
 
 當然這是基於你需要telnet及ftp的基礎上的,如果你連這兩個服務都不用的話,你就可以將它注釋
 掉或者刪除,這樣在系統啟動的時候inetd甚至就起不來了:)
 
 tcpd的訪問控制是由/etc/hosts.allow和/etc/hosts.deny文件控制的,tcpd先查找/etc/hosts.allow
 ,如果你在這堶惜像\了某幾台主機的telnet或ftp訪問的話,那麼deny訪問就是對其他所有機器的了。
 這是“默認拒絕”的訪問控制策略,下面是一個hosts.allow檔的樣本:
 
 ALL: 172.16.3.0/255.255.255.0
 
 這將允許172.16.3.0網路的主機上任何用戶訪問你的telnet及ftp服務,記住在這堶n放置IP地址,因
 為功能變數名稱比較容易受到欺騙攻擊…… 
 
 現在我們準備拒絕其餘所有人的連接了,將下面的語句放在/etc/hosts.deny中: 
 
 ALL: ALL: /usr/bin/mailx -s "%d: connection attempt from %c" root@mydomain.com
 
 這條指令不僅拒絕了其他所有的連接,而且能夠讓tcpd發送email給root——一旦有不允許的連接嘗試
 發生時。
 
 現在你可能希望用syslog記錄下所有的訪問記錄,那麼在/etc/syslog.conf放進如下語句:
 
 auth.auth.notice;auth.info           /var/log/authlog
 
 注意兩段語句間的空白是tab鍵,否則syslog可能會不能正常工作。
 
 Sendmail將用以cron來調用sendmail來替代。
 
 5.6) 配置S/Key 
 
 S/Key是一個用於實現安全的一次性口令方案的軟體,它根據一系列資訊(包括一個秘密口令)通過MD4
 處理而形成的初始鑰匙,該初始鑰匙再交給MD4進行處理,資助將128位元的數位簽名縮成64位元,該64位元資訊
 再次傳給MD4函數,這個過程一直持續直到達到期望值……
 
 開始使用S/Key時,要建立一個以/usr/local/bin/keysh為shell的帳號:
 在/etc/passwd中加入
 
 access:x:100:100:Access Account:/tmp:/usr/local/bin/keysh
 
 並且在/etc/shadow中加入
 
 access:NP:6445::::::
 
 然後使用passwd access命令來設定用戶的訪問密碼。
 
 由於/usr/local/bin/keysh不是一個標準的shell,所以你的/etc/shells檔中內容如下:
 
 /sbin/sh
 /usr/local/bin/keysh
 
 只有使用這兩種login shell的用戶才允許接入。
 
 然後建立一個檔/etc/skeykeys並賦予一定的許可許可權:
 
 touch /etc/skeykeys
 chmod 600 /etc/skeykeys
 chown root /etc/skeykeys
 chgrp root /etc/skeykeys
 
 使用keyinit access命令來初始化S/Key秘密口令。
 
 現在你可以配置允許用戶通過keysu命令來成為超級用戶,首先改變/etc/group:
 
 root::0:root,access
 
 只有在這埵C出來的用戶才允許通過keysu成為超級用戶。現在你可以使用不著keyinit root命令來初
 始化超級用戶的S/Key秘密口令,我建議該口令要與user的有所區別。
 
 本來你可以將/bin/su刪掉以確定用戶只能使用keysu……,但不幸的是,許多腳本使用/bin/su來開啟
 程序,所以你只需用chmod 500 /bin/su來改變它的許可權就行了。
 
 
 5.7) 配置wu-ftp 
 
 配置wu-ftp需要經驗:),當你編譯wu-ftpd時,你需要指定一個存放配置檔的地方,這個檔夾堭N
 包含一個pid檔夾和三個檔,一個ftp conversions檔可以是空的,但不能沒有,還有ftpusers文
 件包含了所有在password檔中存在但不允許登入系統ftp的用戶名稱,也就是如uucp、bin之類的系統
 帳號都將應該被限制。root最好是永遠都被扔在這堶:)。
 
 最後一個檔是ftpaccess:
 
 class users real 172.16.3.*
 
 log commands real
 log transfers real inbound,outbound
 
 這將允許從172.16.3.0的任何用戶ftp而拒絕所有其他的,所有的檔與命令將被記錄下來,並且存放
 在你指定的記錄檔目錄。
 
 至於建立匿名FTP,你要小心,因為很容易配置錯誤。
 
 建立一個特殊帳戶如:
 
 ftp:*:400:400:Anonymous FTP:/var/spool/ftp:/bon/false
 
 因為使用了chroot()功能,必須建立一個小的檔系統,包含了bin\etc\pub目錄:
 
 這堶戚n注意的有:
 
 確保bin及etc下的所有檔屬主都是root,且任何人不可寫,只有執行許可權,最好另外拷貝
 一份passwd到ftp的etc中,即使被入侵者得到了,也不會洩露太多資訊。
 
 詳細配置情況還需要看關於wu-ftp的faq。
 
 5.8) 限制對檔及檔系統的存取許可權
 
 下載並使用fix-modes,這個程式會將系統堣ㄕw全的檔存取許可權(檔/目錄)找出來。
 
 使用nosuid參數來配置/etc/vfstab,以防止setuid程式從UFS檔系統執行
 
 /proc               -       /proc      proc    -   no   -
 fd                  -       /dev/fd    fd      -   no   -
 swap                -       /tmp       tmpfs   -   yes  -
 /dev/dsk/c0t3d0s1       -       -          swap    -   no   -
 
 /dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0  /       ufs  1   no   remount,nosuid
 /dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4  /usr    ufs  1   no   ro
 /dev/dsk/c0t3d0s5 /dev/rdsk/c0t3d0s5  /var    ufs  1   no   nosuid
 /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6  /local  ufs  2   yes  nosuid
 
 5.9) 測試配置
 
 重啟你的機器,確定下面這些東西:
 
 你可以從你配置為允許tcpd連接的機器telnet及ftp到你的server。
 
 嘗試從其他未被允許的機器進入,應該會拒絕並email告知當事人。
 
 你只能以user的身份遠端telnet或者ftp上站,不能以root登入。 
 
 用戶可以通過/usr/local/bin/keysu成為超級用戶。
 
 ps -ef只有少量的程序顯示,最好不要有sendmail和各種NFS程序。
 
 touch /usr/FOO會得到錯誤提示,因為檔系統是ro的。
 
 成為超級用戶,將ps命令複製到/,要保持它的setuid位元,然後刪除它的二進位檔。
 
 好了,祝賀你,你已經建立了一個比較安全的系統了:)
 
 5.10) 最後:一些建議
 
 使用XNTP來確定精確的時間。
 
 在你把機器放到網上前,用tripwire和MD5做一個校驗,如果系統被入侵,你可以通過保存的校驗和
 來判斷哪些程式被替換掉了。
 
 考慮使用程序記錄來記來系統埵用資源的情況。
 
 定期改變你的S/Key secrets並且選擇一個好的密碼,在各地方的密碼最好不要一樣……