最近在做一個風險評估和等保測評相結合項目,需要對某單位的4套核心系統進行風險評估和等保測評,其中有2套系統還是等保定級的4級系統,非常重要。在進行主機和數據庫的策略審計時,遇到一點小麻煩,情況是這樣的,傳統的譬如說銀行證券行業、政府行業、通信行業,他們的運維終端一般都是windows的,所以對主機和數據庫的配置檢查可以通過windows終端的SecureCRT等工具連接,並記錄檢查日誌來實現,或許和直接上傳sh腳本執行,然後將結果傳下來即可。
但是要評估的單位的系統部署在比較特殊的網絡架構中,且運維終端都是linux或者hp-ux。在不能使用SecureCRT的情況下,也就無法複製粘貼直接運行如下命令了。
hostname
ifconfig
uname-a
who-r
netstat-nr
netstat-a
netstat-lnpt
ps-ef
ps-ef|greptelnet
ps-ef|grepssh
ps-ef|grepsyslog
ps-ef|grepaudit
ls-l/etc
ls-l/etc/security
....
在這種情況下如何處理呢?
目前運維終端都是圖形化界面的linux系統(PS:未安裝ssh連接工具),既然無法使用工具連接,那麼自然也無法設置自動日誌配置輸出。解決的辦法就是將檢查的結果輸出到指定文件中,最後再導出文件即可。當然此時可使用windows終端也通用的方法就是直接上傳sh腳本到每一臺服務器上,然後直接腳本,最後再將結果導到本地終端上。但是好多客戶是禁止直接往服務器上傳腳本、工具等的。那只有最後一個方法,就是製作直接可在運維終端本地運行的腳本。核心思路就是在linux運維終端上ssh遠程連接數據庫等服務器,然後打開並複製粘貼上傳到linux運維終端上的腳本內容並執行,在遠端服務器上生成諸多配置文件,然後打包,最後再將結果導到本地終端上,並記得刪除遠端服務器上的生成的檢查的配置文件。具體的腳本內容如下,此處先只介紹遠程服務器是linux系統的linuxscript.txt腳本情況:
linuxscript.txt
mkdir./syschecklog
cd./syschecklog
echo'#superOrder0001********************hostname*****************#'>>0001hostname.log
hostname>>0001hostname.log
echo'#superOrder0002********************ifconfig*****************#'>>0002ifconfig.log
ifconfig>>0002ifconfig.log
echo'#superOrder0003********************uname-a*****************#'>>0003uname.log
uname-a>>0003uname.log
echo'#superOrder0004********************who-r*****************#'>>0004who_r.log
who-r>>0004Who_r.log
echo'#superOrder0005********************ifconfig-a*****************'>>0005ifconfig_a.log
ifconfig-a>>0005ifconfig_a.log
echo'#superOrder0006********************netstat-nr*****************'>>0006netstat_nr.log
netstat-nr>>0006netstat_nr.log
echo'#superOrder0007********************netstat-a*****************'>>0007netstat_a.log
netstat-a>>0007netstat_a.log
echo'#superOrder0008********************ps-ef*****************'>>0008ps_ef.log
ps-ef>>0008ps_ef.log
echo'#superOrder0009********************ls-l/etc*****************'>>0009etc_filelist.log
ls-l/etc>>0009etc_filelist.log
echo'#superOrder0010********************ls-l/etc/security*****************'>>0010etc_security.log
ls-l/etc/security>>0010etc_security.log
echo'#superOrder0011********************etc/hosts.equiv*****************'>>0011etc_hosts.equiv
cat/etc/hosts.equiv>>0011etc_hosts.equiv
echo'#superOrder0014********************df-h*****************'>>0014df_h.log
df-h>>0014df_h.log
echo'#superOrder0015********************cat/etc/inittab*****************'>>0015etc_inittab.log
cat/etc/inittab>>0015etc_inittab.log
echo'#superOrder0016********************cat/etc/rc.d/rc.sysinit*****************'>>0016etc_rcd_rc.sysinit.log
cat/etc/rc.d/rc.sysinit>>0016etc_rcd_rc.sysinit.log
echo'#superOrder0017********************cat/etc/rc.d/rc.local*****************'>>0017rcd_rc_local.log
cat/etc/rc.d/rc.local>>0017rcd_rc_local.log
echo'#superOrder0018********************ls-l/etc/rc.d/rc0.d*****************'>>0018rcd_rc0d.log
ls-l/etc/rc.d/rc0.d>>0018rcd_rc0d.log
echo'#superOrder0019********************ls-l/etc/rc.d/rc1.d*****************'>>0019rcd_rc1d.log
ls-l/etc/rc.d/rc1.d>>0019rcd_rc1d.log
echo'#superOrder0020********************ls-l/etc/rc.d/rc2.d*****************'>>0020rcd_rc2d.log
ls-l/etc/rc.d/rc2.d>>0020rcd_rc2d.log
echo'#superOrder0021********************ls-l/etc/rc.d/rc3.d*****************'>>0021rcd_rc3d.log
ls-l/etc/rc.d/rc3.d>>0021rcd_rc3d.log
echo'#superOrder0022********************ls-l/etc/rc.d/rc4.d*****************'>>0022rcd_rc4d.log
ls-l/etc/rc.d/rc4.d>>0022rcd_rc4d.log
echo'#superOrder0023********************ls-l/etc/rc.d/rc5.d*****************'>>0023rcd_rc5d.log
ls-l/etc/rc.d/rc5.d>>0023rcd_rc5d.log
echo'#superOrder0024********************ls-l/etc/rc.d/rc6.d*****************'>>0024rcd_rc6d.log
ls-l/etc/rc.d/rc6.d>>0024rcd_rc6d.log
echo'#superOrder0025********************cat/etc/fstab*****************'>>0025etc_fstab.log
cat/etc/fstab>>0025etc_fstab.log
echo'#superOrder0026********************cat/etc/profile*****************'>>0026etc_profile.log
cat/etc/profile>>0026etc_profile.log
echo'#superOrder0027********************cat/etc/environment*****************'>>0027etc_environment.log
cat/etc/environment>>0027etc_environment.log
echo'#superOrder0028********************printenv*****************'>>0028printenv.log
printenv>>0028printenv.log
echo'#superOrder0029********************cat/etc/syslog.conf*****************'>>0029etc_syslog_conf.log
cat/etc/syslog.conf>>0029etc_syslog_conf.log
echo'#superOrder0030********************ls-l/var/log*****************'>>0030var_log_list.log
ls-l/var/log>>0030var_log_list.log
echo'#superOrder0031********************crontab-l*****************'>>0031crontab_l.log
crontab-l>>0031crontab_l.log
echo'#superOrder0032********************at-l*****************'>>0032at_l.log
at-l>>0032at_l.log
echo'#superOrder0033********************cat/etc/passwd*****************'>>0033etc_passwd.log
cat/etc/passwd>>0033etc_passwd.log
echo'#superOrder0034********************cat/etc/shadow*****************'>>0034etc_shadow.log
cat/etc/shadow>>0034etc_shadow.log
echo'#superOrder0035********************cat/etc/group*****************'>>0035etc_group.log
cat/etc/group>>0035etc_group.log
echo'#superOrder0036********************cat/etc/pam.d/system-auth*****************'>>0036etc_pamd_system_auth.log
cat/etc/pam.d/system-auth>>0036etc_pamd_system_auth.log
echo'#superOrder0037********************cat/etc/login.defs*****************'>>0037etc_login_defs.log
cat/etc/login.defs>>0037etc_login_defs.log
echo'#superOrder0038********************cat/etc/ssh/sshd_config*****************'>>0038etc_ssh_sshd_config.log
cat/etc/ssh/sshd_config>>0038etc_ssh_sshd_config.log
echo'#superOrder0039********************cat/etc/logrotate.conf*****************'>>0039etc_logrotate_conf.log
cat/etc/logrotate.conf>>0039etc_logrotate_conf.log
echo'#superOrder0040********************chkconfig--list*****************'>>0040chkconfig_list.log
chkconfig--list>>0040chkconfig_list.log
echo'#superOrder0041********************cat/etc/security/limits.conf*****************'>>0041etc_security_limits_conf.log
cat/etc/security/limits.conf>>0041etc_security_limits_conf.log
echo'#superOrder0042********************cat/etc/hosts.allow*****************'>>0042etc_hosts_allow.log
cat/etc/hosts.allow>>0042etc_hosts_allow.log
echo'#superOrder0043********************cat/etc/hosts.deny*****************'>>0043etc_hosts_deny.log
cat/etc/hosts.deny>>0043etc_hosts_deny.log
echo'#superOrder0044********************cat/etc/snmp/snmpd.conf*****************'>>0044etc_snmp_snmpd_conf.log
cat/etc/snmp/snmpd.conf>>0044etc_snmp_snmpd_conf.log
echo'#superOrder0045********************service--status-all*****************'>>0045service_status.log
service--status-all>>0045service_status.log
cat *.log
cd../
dateInfo=`date+"%Y%m%d"`
tar -cvf linuxcheck$dateInfo.tar./syschecklog
但是實際操作時還是出現了一些小插曲。此腳本的結構是先在當前目錄下建立一個新的syschecklog目錄,然後進入此目錄,將45個檢查項的提示語和命令執行結果輸入到對應的文件中,最終會生成45個結果文件,然後在syschecklog的上一目錄中生成一個對syschecklog目錄的壓縮包。
出現的第一個問題是權限問題。遠端服務器的root用戶已配置高強度密碼,已密封不讓使用,另外設置了一個管理員叫sysroot。在用sysroot用戶登錄後,原本預想在根目錄下保存檢查結果,複製粘貼腳本內容運行,大批量的報錯無權限,然後依次換了/var/和/tmp/目錄都不行。說明管理員對sysroot用戶的可建立目錄的權限範圍限制的很死。最後只好在/home/sysroot/這一用戶自身的目錄下建立syschecklog目錄來保存檢查結果了。
接下來遇到了第二個問題腳本格式問題。腳本上傳到linux終端上去後,打開後複製粘貼運行後,只生成35個文件。其中編號第32到41的檢查結果沒生成,檢查腳本執行情況,發現命令被斷開執行了,自然會報錯。解決辦法是將編號第32到41的命令了重新執行一遍即可。
經測試腳本運行還存在另外一個問題是偶爾會出現tar包失敗的情況,解決方法是單獨執行tar包命令即可,tar -cvf linuxcheck1.tar./syschecklog
接下來是導出tar包到本地,因爲運維終端連接遠端服務器使用了ssh協議。故可使用scp命令進行遠程文件傳輸。格式是
scp遠端服務器用戶名@遠端服務器ip:/要複製文件的路徑/文件發送目的地的路徑,即
scp [email protected]:/home/sysroot/linuxcheck1.tar /d8003/home/checklog
然後輸入sysroot用戶的密碼即可下載。
等批量檢查完近百臺服務器後,在終端上拷貝走所有tar包即可。
文章中以列出了針對風險評估的linux檢查的命令腳本。希望這個能對大家有用。