控制臺安全
禁用Ctrl+Alt+Del,修改/etc/init/control-alt-delte.conf
把以上這行代碼注釋。
Ubuntu默認禁用root用戶。如果要以root身份執(zhí)行命令,可以使用sudo命令。如果一定要使用root用戶,只需要重設(shè)root密碼即可
關(guān)于sudo
通過sudo,有權(quán)限的普通用戶可以執(zhí)行只有root才能執(zhí)行的命令??梢酝ㄟ^配置文件/etc/sudoers來設(shè)置。編輯/etc/sudoers文件,務(wù)必使用visudo命令,該命令可以提供安全檢查。
/etc/sudoers文件,主要分為兩部分:一部分定義別名,另一部分進行授權(quán)。
>別名(基本變量)規(guī)則有4種:
主機別名(Host_Alias)
用戶別名(User_Alias)
Runas別名(Runas_Alias)
命令別名(Cmnd_Alias)
>用戶授權(quán)規(guī)則,規(guī)格為:
用戶名 主機名 = [(目的用戶)] [NOPASSWD:] 命令列表
默認,/etc/sudoers中有一個admin組(Ubuntu將安裝過程中創(chuàng)建的第一個用戶加入了admin組),該組中的所有成員,都有權(quán)利執(zhí)行sudo命令。如果要讓某個用戶具有root權(quán)限,只需要讓其加入admin組即可。一般,某個用戶只需要執(zhí)行一兩個特定命令。
舉例:
1) 指定運行命令的身份
上面的設(shè)置,讓用vfeelit可以在ifeeline這臺主機上用operator用戶的身份執(zhí)行/bin/ls和/bin/kill。
如果改為:
表示用戶vfeelit可以用operator的身份執(zhí)行/bin/ls,以root的身份執(zhí)行/bin/kill。
2) 有密碼/無密碼
使用NOPASSWD、PASSWD標(biāo)簽,可以設(shè)置用戶在sudo時是否需要輸入密碼:
修改/etc/pam.d/common-password設(shè)置密碼策略。
Ubuntu Snort入侵檢測
Snort是入侵檢測系統(tǒng)中最佳利器之一。Snort默認把信息記錄在日志文件中,不過Ubuntu提供了snort-mysql這個軟件包,可以把Snort的日志記錄在MySQL數(shù)據(jù)庫中,手工查看分析比較麻煩,可以借助BASE這個工具(acidbase軟件包),可以很直觀地查看Snort的分析結(jié)果。
安裝運行環(huán)境
安裝LAMP,BASE需要PHP的ADOdb庫文件,因此還需要安裝libphp-adodb軟件包。
安裝snort-mysql
安裝過程需要進行幾項配置。首先是HOME_NET的定義,這個是指定要監(jiān)聽的網(wǎng)絡(luò),比如填192.168.111.0/24。接下來詢問要不要設(shè)置數(shù)據(jù)庫,輸入Yes,然后得到提示:
這是指示如何導(dǎo)入數(shù)據(jù)。
安裝完成后,為其創(chuàng)建一個數(shù)據(jù)庫(也可以創(chuàng)建對應(yīng)的用戶,這里直接使用root),然后導(dǎo)入數(shù)據(jù):
最后刪除/etc/snort/db-pending-config文件(新版看起來不需要刪除,也不存在)
然后配置Snort,打開/etc/snort/snort.conf:
新版本的Snort把對數(shù)據(jù)庫的配置寫入到了/etc/snort/database.conf中
該設(shè)置使Snort將log信息寫到指定的MySQL數(shù)據(jù)庫中。
測試是否正常:
————->安裝、配置BASE
1) 安裝acidbase軟件包(一套PHP程序,類似phpMyAdmin)
BASE是Basic Analysis and Security Engine的縮寫(基本分析與安全引擎),前身是ACID.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sudo apt-get install acidbase #####設(shè)置 The acidbase package can be configured to use one of several database types. Below, you will be presented with the available choices. 1. mysql 2. pgsql Database type to be used by acidbase: Please provide a password for acidbase to register with the database server. If left blank, a random password will be generated. MySQL application password for acidbase: |
安裝完畢后,會自動添加一個連接文件到/etc/apache2/conf.d/下(acidbase.conf -> /etc/acidbase/apache.conf):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <IfModule mod_alias.c> Alias /acidbase "/usr/share/acidbase" < /IfModule > <DirectoryMatch /usr/share/acidbase/ > Options +FollowSymLinks AllowOverride None order deny,allow deny from all allow from 127.0.0.0 /255 .0.0.0 <IfModule mod_php5.c> php_flag magic_quotes_gpc Off php_flag track_vars On php_value include_path .: /usr/share/php < /IfModule > < /DirectoryMatch > |
這種形式更安裝配置phpMyAdmin時的模式是一樣的(注意安裝實際情況修改allow from的網(wǎng)段)。
先到達/etc/acidbase目錄下把base_conf.php重命名(或者刪除也可),然后訪問acidbase/setup/進行安裝:
選擇Chinese(繁體中文 或simplified_chinese簡體中文),輸入ADODB路徑(/usr/share/php/adodb)
接下來的第4步點擊Create BASE AG在數(shù)據(jù)庫中建立一些BASE要用到的表。
進入第5步驟,把配置文件拷貝下來,寫入到/etc/acidbase/base_conf.php:
訪問http://example.com/acidbase,登錄。
Ubuntu 安全檢查(后門檢測)
3個程序:
chkrootkit 可以掃描rootkitsrkhunter 可以掃描rootkit backdoor sniffer exploitunhide 可以發(fā)現(xiàn)隱藏的進程和端口
1) chkrootkit的使用
chkrootkit是Check Rootkit的簡稱,可以檢測到60多種常見的rootkit、蠕蟲和LKM(Linux Kernel Module)等有害程序,列表:http://www.chkrootkit.org。
安裝:
參數(shù):
-l 顯示可用的掃描對象-d 調(diào)試-q 安靜模式-x 專家模式-r dir 將dir所指定的目錄作為root目錄-p dir1:dir2:dirN 指定掃描過程中要使用的程序的路徑-n 不掃描掛載的NFS分區(qū)<喎?"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcHJlPg0KPHA+08O3qKO6PC9wPg0KPHByZSBjbGFzcz0="brush: bash; title: ; notranslate" title="\">#檢查ps ls 和cron命令是否被感染sudo chkrootkit ps ls cron#如果不指定掃描對象,就會掃描所有對象sudo chkrootkit#加上-q選項后就進入安靜模式,只有被感染的才顯示sudo chkrootkit –q#如果使用-x選項,程序會調(diào)用/usr/bin/strings將掃描對象中所有可疑字符串打印處理sudo chkrootkit –x su " less
chkrootkit在運行過程中,會調(diào)用系統(tǒng)中的awk cut egrep find head id ls netstat ps strings sed uname等命令。如果擔(dān)心這些命令已經(jīng)被感染,那么可以使用-p選項指定這些程序的路徑??梢园堰@些/bin /sbin /usr/bin等目錄放到一個ISO文件中(只讀),然后mount這個iso文件。
然后:
最好的檢查方法,則是從一臺確認安全的機器上,將被入侵的機器的文件系統(tǒng)掛載過來,使用-r選項指定root目錄:
2) rkhunter的使用
rkhunter是Rootkit Hunter的簡稱,可以檢查幾十種rootkits、backdoors、LKMs、worms,使用rkhunter的—list子命令可以顯示。
安裝
rkhunter依賴MTA(郵件傳輸代理)服務(wù)器,選擇postfix(看起來,如果不需要發(fā)送郵件,應(yīng)該不需要安裝):
安裝完成后,先對其數(shù)據(jù)進行更新,相當(dāng)是獲取最新病毒庫:
配置
rkhunter的配置文件位于/etc/rkhunter.conf,和chkrootkit相同,rkhunter也可以指定外部命令的路徑。可以通過修改配置文件來指定。配置文件有一項BINDIR,可以將該項修改為掛載在iso上的路徑:
如果要查看rkhunter都支持哪些掃描項目:
要用rkhunter進行檢查,使用-c或者—check即可
可以通過/var/log/rkhunter.log查看掃描結(jié)果。
rkhunter在安裝時創(chuàng)建了一個cron任務(wù)/etc/cron.daily/rkhunter,每天執(zhí)行一次。
1 2 3 4 5 6 7 8 9 10 11 12 13 | cat /etc/cron .daily /rkhunter #!/bin/sh RKHUNTER= /usr/bin/rkhunter test -x $RKHUNTER "| exit 0 # source our config . /etc/default/rkhunter #####省略 #nice調(diào)整進程調(diào)度優(yōu)先級, 然后就運行/usr/bin/rkhunter,我們可以提取這行命令出來手動運行(/usr/bin/rkhunter --cronjob --report-warnings-only –appendlog > rk.log ) /usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only --appendlog > $OUTFILE #####省略 |
可以看到,該任務(wù)會調(diào)用rkhunter的另外一個配置文件/etc/default/rkhunter(. /etc/default/rkhunter),查看該配置文件(這個配置文件只是跟定制是否發(fā)送郵件,是否更新病毒庫有關(guān),跟rkhunter運行沒有關(guān)系):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | cat /etc/default/rkhunter # Defaults for rkhunter automatic tasks # sourced by /etc/cron.*/rkhunter and /etc/apt/apt.conf.d/90rkhunter # # This is a POSIX shell fragment # # Set this to yes to enable rkhunter daily runs 是否每天運行一次,默認為true # (default: true) CRON_DAILY_RUN= "" # Set this to yes to enable rkhunter weekly database updates 每周更新數(shù)據(jù)庫(病毒庫),默認為true # (default: true) CRON_DB_UPDATE= "" # Set this to yes to enable reports of weekly database updates 每周更新病毒庫后發(fā)送報告(默認不發(fā)送) # (default: false) DB_UPDATE_EMAIL= "false" # Set this to the email address where reports and run output should be sent(發(fā)送給那個地址,寫上email地址) # (default: root) REPORT_EMAIL= "vfeelit@qq.com" # Set this to yes to enable automatic database updates 開啟自動更新,默認為false # (default: false) APT_AUTOGEN= "false" # Nicenesses range from -20 (most favorable scheduling) to 19 (least favorable) # (default: 0) NICE= "0" # Should daily check be run when running on battery # powermgmt-base is required to detect if running on battery or on AC power # (default: false) RUN_CHECK_ON_BATTERY= "false" |
3) unhide的使用
unhide也是一個Rootkit診斷工具,它的功能側(cè)重于檢測隱藏的進程和TCP/UDP端口。
安裝完成后有兩個工具,unhide 和 unhide-tcp。
檢測原理
unhide使用3種方法進行檢查(檢查進程),分別是:
>proc 將/proc中的進程和/bin/ps的結(jié)果相對比>sys 將系統(tǒng)調(diào)用和/bin/ps的結(jié)果相對比>brute 整個PIDs空間(遍歷,逐個嘗試)
unhide-tcp使用遍歷的方法,掃描所有有效端口,找出那些正在監(jiān)聽的、在/bin/netstat命令中看不到的隱藏端口。
檢查隱藏進程:
監(jiān)測隱藏的網(wǎng)絡(luò)端口
數(shù)據(jù)完整性監(jiān)測
Tripwire是UNIX平臺上著名的文件系統(tǒng)完整性檢查工具,它能夠幫助判斷系統(tǒng)的一些重要文件是否被入侵者修改過。工作原理是,使用數(shù)字簽名對文件進行比較;對每個要監(jiān)控的文件,都生成一個數(shù)字簽名并存檔(放在數(shù)據(jù)庫中),在檢查時,如果發(fā)現(xiàn)數(shù)字簽名于存檔不一致,就說明文件被改動過。
安裝Tripwire
配置Tripwire
Tripwire的配置文件位于/etc/tripwire/目錄下,主配置文件為twcfg.txt,策略文件為twpol.txt,而tw.cfg和tw.pol分別為配置文件盒策略文件被編譯后的二進制文件。Tripwire在運行過程中調(diào)用的是編譯后的二進制文件,所以,每次修改配置后,都必須將文件編譯。
1)配置twcfg.txt
主配文件基本不需要修改,只有SMTP服務(wù)器地址已經(jīng)E-mail報告級別等設(shè)置可能需要根據(jù)實際進行調(diào)整:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #cat twcfg.txt ROOT = /usr/sbin #Tripwire程序的根目錄 POLFILE = /etc/tripwire/tw .pol #策略文件路徑 DBFILE = /var/lib/tripwire/ $(HOSTNAME).twd #數(shù)據(jù)庫文件路徑 REPORTFILE = /var/lib/tripwire/report/ $(HOSTNAME)-$(DATE).twr #報告文件路徑 SITEKEYFILE = /etc/tripwire/site .key #site秘鑰文件的路徑 LOCALKEYFILE = /etc/tripwire/ $(HOSTNAME)- local .key #local秘鑰文件路徑 EDITOR = /usr/bin/editor #Tripwire所調(diào)用的編輯器路徑 LATEPROMPTING = false #是否延遲詢問密碼 LOOSEDIRECTORYCHECKING = false #是否減少目錄報告 MAILNOVIOLATIONS = true #是否發(fā)送郵件報告 EMAILREPORTLEVEL =3 #郵件報告級別(0-4) REPORTLEVEL =3 #指定twprint命令生成報告的級別 SYSLOGREPORTING = true #是否將日志寫入syslog MAILMETHOD =SMTP #指定要使用的郵件協(xié)議 SMTPHOST =localhost #指定SMTP主機地址 SMTPPORT =25 #指定SMTP主機的端口號 TEMPDIRECTORY = /tmp |
文件修改好后,需要重新編譯:
2) 配置twpol.txt
策略文件基本不需要修改,里面定義了各種Tripwire策略,包括要監(jiān)控的目錄和文件等。
不過在Ubuntu的默認配置文件中,將整個/proc目錄都監(jiān)控了,這會導(dǎo)致每次做完檢查時都出現(xiàn)一堆不必要的錯誤(舊進程結(jié)束,新進程開始)。所以這類可以修改一下該策略,僅監(jiān)控/proc下面重要的進程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | vi /etc/tripwire/twpol .txt # # Critical devices # ( rulename = "Devices & Kernel information" , severity = $(SIG_HI), ) { /dev -> $(Device) ; #/proc -> $(Device) ; /proc/devices -> $(Device); /proc/net -> $(Device); /proc/sys -> $(Device); /proc/cpuinfo -> $(Device); /proc/modules -> $(Device); /proc/mounts -> $(Device); /proc/dma -> $(Device); /proc/filesystems -> $(Device); /proc/pci -> $(Device); /proc/interrupts -> $(Device); /proc/driver/rtc -> $(Device); /proc/ioports -> $(Device); /proc/scsi -> $(Device); /proc/kcore -> $(Device); /proc/self -> $(Device); /proc/kmsg -> $(Device); /proc/stat -> $(Device); /proc/ksyms -> $(Device); /proc/loadavg -> $(Device); /proc/uptime -> $(Device); /proc/locks -> $(Device); /proc/version -> $(Device); /proc/mdstat -> $(Device); /proc/meminfo -> $(Device); /proc/cmdline -> $(Device); /proc/misc -> $(Device); } #修改完成,重新編譯 sudo twadmin –m P –S site.key twpol.txt #策略文件刪除后可以重新導(dǎo)出 sudo twadmin –print-polfile " sudo tee /etc/tripwire/twpol .txt |
測試郵件報告功能:
初始化Tripwire數(shù)據(jù)庫
執(zhí)行完整性監(jiān)測
默認,Tripwire在安裝時會創(chuàng)建一個cron任務(wù),每天執(zhí)行一次完整性檢查,并發(fā)送郵件。也可以手工執(zhí)行:
監(jiān)測報告分析
Tripwire的監(jiān)測結(jié)果,放在/var/lib/tripwire/report/目錄下。這些不是文本文件,必須用twprint命令才能查看: