應(yīng)急響應(yīng)分為5個(gè)階段,準(zhǔn)備->事件檢測(cè)->抑制->根除->恢復(fù)->報(bào)告
0x01 基礎(chǔ)命令:
1、tar -cvf? .tar? 打包不壓縮
? tar -zxvf? .tar.gz
? tar -zcvf? .tar.gz? c創(chuàng)建文件
? tar -jcvf? .tar.bz2
? gzip? ? ? ? .gz
2、uniq
? -c 在輸出行前面加上每行在文本中出現(xiàn)的次數(shù)
? ? (結(jié)合sort一起使用)此參數(shù)只針對(duì)連續(xù)出現(xiàn)的相同行做統(tǒng)計(jì)改含,
? ? 一旦相同內(nèi)容行中間有其他內(nèi)容杆烁,則中斷統(tǒng)計(jì),然后重新對(duì)下面的內(nèi)容進(jìn)行統(tǒng)計(jì)跷乐。
? -d? 僅顯示重復(fù)行
? -u? 僅顯示不重復(fù)的行
3、sort
? -b 忽略每行前面開始出的空格符號(hào)趾浅。
? -n 依照數(shù)值大小排序
? -r 以相反的順序來排序
? -t 指定欄位分隔字符
4愕提、awk
? #cat /etc/passwd |awk? -F ':'? '{print $1"\t"$7}'
? #cat /etc/passwd |awk? -F ':'? 'BEGIN {print "name,shell"}? {print $1","$7} END {print "blue,/bin/nosh"}'
? ? 顯示/etc/passwd的賬戶和賬戶對(duì)應(yīng)的shell,而賬戶與shell之間以逗號(hào)分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
? ? awk工作流程是這樣的:先執(zhí)行BEGING皿哨,然后讀取文件揪荣,讀入有/n換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域往史,填充域仗颈,$0則表示所有域,$1表示第一個(gè)域,$n表示第n個(gè)域,隨后開始執(zhí)行模式所對(duì)應(yīng)的動(dòng)作action。接著開始讀入第二條記錄······直到所有的記錄都讀完椎例,最后執(zhí)行END操作挨决。
? awk -F: '/root/'? /etc/passwd
? 搜索含有root關(guān)鍵字的所有行
? awk -F:
? awk -F: '/root/{print $7}' /etc/passwd
? ‘’ 單引號(hào)中可以包含命令(action)
5、sed
? sed是一個(gè)很好的文件處理工具订歪,本身是一個(gè)管道命令脖祈,主要是以行為單位進(jìn)行處理,可以將數(shù)據(jù)行進(jìn)行替換刷晋、刪除盖高、新增、選取等特定工作眼虱,下面先了解一下sed的用法
? 替換一行中的某部分
格式:sed 's/要替換的字符串/新的字符串/g'? (要替換的字符串可以用正則表達(dá)式)
? ? # sed -n '/ruby/p' ab | sed 's/ruby/bird/g'? ? #替換ruby為bird
? # sed -n '/ruby/p' ab | sed 's/ruby//g'? ? ? ? #刪除ruby
6喻奥、wc
? -l? 統(tǒng)計(jì)數(shù)量
7、cut
8捏悬、scp? 利用ssh傳輸文件
? a) 從服務(wù)器下載文件到本地
? ? ? scp username@servername:/path/filename? /var/www/local_dir(本地目錄)
? b)上傳本地文件到服務(wù)器
? ? ? scp /path/filename username@serverip:/path
9撞蚕、stat? 查看文件基本信息 stat filename
? 顯示文件的mtime、ctime过牙、atime
----------------------------------------------------------
0x02?預(yù)備知識(shí):
1甥厦、history -c 清除歷史命令
2、如果日志在更新寇钉,實(shí)時(shí)查看 tail -f /var/log/messages
? ? ? ? ? ? ? ? 或者 watch -d -n 1 cat /var/log/messages
? ? ? ? -d 表示高亮不同的地方刀疙,-n表示多少秒刷新一次。
該指令扫倡,不會(huì)直接返回命令行谦秧,而是實(shí)時(shí)打印日志文件中新增加的內(nèi)容,
這一特性,對(duì)于查看日志是非常有效的油够。如果想終止輸出蚁袭,按 Ctrl+C 即可
3征懈、linux日志文件說明
/var/log/message 系統(tǒng)啟動(dòng)后的信息和錯(cuò)誤日志石咬,是Red Hat Linux中最常用的日志之一
/var/log/secure 與安全相關(guān)的日志信息
/var/log/maillog 與郵件相關(guān)的日志信息
/var/log/cron 與定時(shí)任務(wù)相關(guān)的日志信息
/var/log/spooler 與UUCP和news設(shè)備相關(guān)的日志信息
/var/log/boot.log 守護(hù)進(jìn)程啟動(dòng)和停止相關(guān)的日志消息
/var/log/wtmp
4、LINUX中的七種文件類型
d? 目錄文件卖哎。
l? 符號(hào)鏈接(指向另一個(gè)文件,類似于瘟下的快捷方式)鬼悠。
s? 套接字文件。
b? 塊設(shè)備文件,二進(jìn)制文件亏娜。
c? 字符設(shè)備文件焕窝。
p? 命名管道文件。
-? 普通文件维贺,或更準(zhǔn)確地說它掂,不屬于以上幾種類型的文件
=>>>>
*ubuntu/var/log/下各個(gè)日志文件,方便出現(xiàn)錯(cuò)誤的時(shí)候查詢相應(yīng)的log
/var/log/alternatives.log-更新替代信息都記錄在這個(gè)文件中
/var/log/apport.log -應(yīng)用程序崩潰記錄
/var/log/apt/? -用apt-get安裝卸載軟件的信息
/var/log/auth.log? -登錄認(rèn)證log
/var/log/boot.log? -包含系統(tǒng)啟動(dòng)時(shí)的日志溯泣。
/var/log/btmp? ? -記錄所有失敗啟動(dòng)信息
/var/log/Consolekit? - 記錄控制臺(tái)信息
/var/log/cpus? ? - 涉及所有打印信息的日志
/var/log/dist-upgrade? - dist-upgrade這種更新方式的信息
/var/log/dmesg? ? -包含內(nèi)核緩沖信息(kernel ringbuffer)虐秋。在系統(tǒng)啟動(dòng)時(shí),顯示屏幕上的與硬件有關(guān)的信息
/var/log/dpkg.log? - 包括安裝或dpkg命令清除軟件包的日志垃沦。
/var/log/faillog? ? - 包含用戶登錄失敗信息客给。此外,錯(cuò)誤登錄命令也會(huì)記錄在本文件中肢簿。
/var/log/fontconfig.log -與字體配置有關(guān)的log靶剑。
/var/log/fsck? ? - 文件系統(tǒng)日志
/var/log/faillog? -包含用戶登錄失敗信息。此外池充,錯(cuò)誤登錄命令也會(huì)記錄在本文件中桩引。
/var/log/hp/
/var/log/install/
/var/log/jokey.log
/var/log/kern.log –包含內(nèi)核產(chǎn)生的日志,有助于在定制內(nèi)核時(shí)解決問題收夸。
/var/log/lastlog —記錄所有用戶的最近信息阐污。這不是一個(gè)ASCII文件,因此需要用lastlog命令查看內(nèi)容咱圆。
/var/log/faillog –包含用戶登錄失敗信息笛辟。此外,錯(cuò)誤登錄命令也會(huì)記錄在本文件中序苏。
/var/log/lightdm/
/var/log/mail/ – 這個(gè)子目錄包含郵件服務(wù)器的額外日志手幢。
/var/log/mail.err? ? -類似于上面的
/var/log/news/
/var/log/pm-powersave.log
/var/log/samba/ –包含由samba存儲(chǔ)的信息。
/var/log/syss.log
/var/log/speech-dispacher/
/var/log/udev
/var/log/ufw.log
/var/log/upstart/
/var/log/uattended-upgrades/
/var/log/wtmp —包含登錄信息忱详。使用wtmp可以找出誰正在登陸進(jìn)入系統(tǒng)围来,誰使用命令顯示這個(gè)文件或信息等。
/var/log/xorg.*.log— 來自X的日志信息
----------------------------------------------------------
0x03 linux下apache日志分析
? ? a) 找到apache日志的位置(locate apache2)
? ? b) 查看訪問次數(shù)最多的10個(gè)IP
? ? ? awk '{print $1}' access.log|sort|uniq -c|sort -nr|head -n 10
? ? c) 查看訪問的時(shí)間
? ? d) 查看訪問最多的頁(yè)面
? ? ? awk '/113.5.x.11/{print $6}{print $7}' access.log|sort|uniq -c |sort -nr
? 1、查看apache進(jìn)程:
? ? ? ps -aux|grep 'httpd'? ? ? ?
? 2监透、查看80端口的tcp連接:
? ? ? netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
? 3桶错、通過日志查看當(dāng)天ip連接數(shù):
? ? ? cat access_log | grep "19/May/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
? 4、用tcpdump嗅探80端口的訪問看看誰最高
? tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
? 5胀蛮、當(dāng)前WEB服務(wù)器中聯(lián)接次數(shù)最多的20條ip地址:
? netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
? 6院刁、查看最近訪問量最高的文件
? cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
? tail? -f? xxx.log
---------------------------------------------------------
0x04 mysql日志:
? *主要包含:(修改日志設(shè)置,需要到mysql的配置文件my.cnf中進(jìn)行修改
? ? ? ? ? ? ? 或者
? ? ? ? ? ? ? 在mysql下執(zhí)行set global slow_query_log=1;)
? ? 錯(cuò)誤日志粪狼、查詢?nèi)罩就诵取⒙樵內(nèi)罩尽⑹挛锶罩驹匍⒍M(jìn)制日志狡刘;
? ? ? ? 錯(cuò)誤日志:默認(rèn)開啟,不可禁止困鸥。主機(jī)名.err
? ? ? ? 查詢?nèi)罩荆耗J(rèn)關(guān)閉嗅蔬。該日志默認(rèn)情況下會(huì)記錄用戶所有的操作,包括增刪改查等信息疾就。general_log
? ? ? ? 慢查詢?nèi)罩荆河涗泩?zhí)行時(shí)間超過指定時(shí)間的查詢語句澜术。可以找到效率低的查詢語句虐译。
? ? ? ? 事物日志:(InnoDB特有的日志瘪板,存儲(chǔ)引擎修改表數(shù)據(jù)時(shí)只需要修改其內(nèi)存拷貝,再把修改行為記錄到事物日志當(dāng)中)
? ? ? ? 二進(jìn)制日志(變更日志):*log_bin漆诽。
? ? ? ? ? ? ? 記錄修改數(shù)據(jù)或者有可能引起數(shù)據(jù)改變的mysql語句侮攀,并記錄語句發(fā)生時(shí)間、執(zhí)行時(shí)長(zhǎng)厢拭、操作的數(shù)據(jù)等兰英。
? ? ? ? ? ? ? ->查看二進(jìn)制文件
? ? ? ? ? ? ? ? ? mysql>show binary logs;? 顯示當(dāng)前服務(wù)器使用的二進(jìn)制文件及大小
? ? ? ? ? ? ? ? ? mysql>show master logs;? 顯示主服務(wù)器使用的二進(jìn)制文件的大小
? ? ? ? ? ? ? ? ? mysql>show master status; 當(dāng)前使用的二進(jìn)制文件及其所處位置
? *日志的輸出位置一般有三種方式:file(文件)供鸠,table(表)畦贸,none(不保存);
? *查詢?nèi)罩痉?wù)是否開啟:
? ? ? ? show global variables like '%log%';
? ? ? ? 設(shè)置變量:
? ? ? ? ? ? (使用set session 變量名=value楞捂;即表示只在這個(gè)session中生效)
? ? ? ? ? ? ? set global 變量名=value薄坏;
? *命令行下查看二進(jìn)制文件 mysqlbinlog mysql-bin.000017
---------------------------------------------------------
1、檢測(cè)rootkit:使用chkrootki
2寨闹、獲取系統(tǒng)日志:
? 比較重要的二進(jìn)制日志文件:
utmp,用w工具訪問胶坠;
wtmp,用last工具訪問;
lastlog,用lastlog工具訪問繁堡;
進(jìn)程記賬日志,用astcomm工具訪問
? ? 在這些日志文件中沈善,最有用的是messages,secure這兩個(gè)乡数,從日志中我們可以看到哪些時(shí)候哪些用戶從哪些地方登陸進(jìn)系統(tǒng),這對(duì)我們的響應(yīng)取證非常有用
3闻牡、檢查用戶情況
? ? w? 查看當(dāng)前在線用戶
? ? last? 查看歷史登錄用戶
4净赴、查看系統(tǒng)、文件異常
? 查看/etc/passwd文件
? 查找最近5天內(nèi)更改的文件: find -type f -mtime 5
? bash_history文件
5罩润、系統(tǒng)狀態(tài)
? 系統(tǒng)服務(wù): chkconfig
? 進(jìn)程:ps -ef? 以全格式顯示當(dāng)前所有的進(jìn)程
? ? ? ps -aux? 顯示以用戶為主的格式情況下玖翅、不以終端機(jī)來區(qū)分、包括其他用戶的進(jìn)程的所有程序哨啃,烧栋。
? ? ? ps -aux |grep 'httpd' 查看apache進(jìn)程
? 監(jiān)聽端口:netstat -utnpl
? 系統(tǒng)所有端口情況:netstat -ano