Linux安全檢測常用方法


一. 系統狀態備份

主要是網絡、服務、端口、進程等狀態信息的備份工作

系統服務備份: chkconfig --list > services.log
進程備份: ps -ef > ps.log
監聽端口備份: netstat -utnpl > port-listen.log
系統所有端口情況: netstat -ano > port-all.log

 

二. 斷開和限制對外連接

iptables -A OUTPUT -o lo -j ACCEPT    允許本機訪問本機
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT 允許主動訪問本服務器的請求
iptables -A OUTPUT –p tcp –d <Your IP> -jACCEPT 允許服務器主動訪問的IP白名單
iptables -A DROP  拒絕對外訪問

  

三. 進程查看

定位導致高流量的進程, 然后通過它的行為, 分析是否是黑客掛的馬

iftop -nP  查看流量情況

如先用iptraf-ng查下,如果UDP包發的很多,基本都被人裝了后門

1.web后門查殺
2.top (ps -ef)     查看進程
lsof –c 可疑進程名  (查看關聯文件,發現對外的 tcp 連接)

查看文件路徑。並查看文件創建時間
    whereis 可疑進程名 
    ls -al  可疑進程名

# ps -aux(注意UID是0的)
# lsof -p pid(察看該進程所打開端口和文件)
# cat /etc/inetd.conf | grep -v “^#”(檢查守護進程)

檢查隱藏進程
# ps -ef|awk ‘{print }’|sort -n|uniq >1
# ls /porc |sort -n|uniq >2
# diff 1 2

kill 終止進程

查端口對應的進程:lsof -i:PID

如: lsof -i:9001

一些常用的方法: 
kill -STOP [pid] 
發送SIGSTOP (17,19,23)停止一個進程,而並不消滅這個進程。 
kill -CONT [pid] 
發送SIGCONT (19,18,25)重新開始一個停止的進程。 
kill -KILL [pid] 
發送SIGKILL (9)強迫進程立即停止,並且不實施清理操作。 
kill -9 -1 
終止你擁有的全部進程。 
SIGKILL 和 SIGSTOP 信號不能被捕捉、封鎖或者忽略,但是,其它的信號可以。

常用命令

  lsof filename         顯示打開指定文件的所有進程
  lsof -a             表示兩個參數都必須滿足時才顯示結果   lsof -c string         顯示COMMAND列中包含指定字符的進程所有打開的文件   lsof -u username       顯示所屬user進程打開的文件   lsof -g gid          顯示歸屬gid的進程情況   lsof +d /DIR/         顯示目錄下被進程打開的文件   lsof +D /DIR/         同上,但是會搜索目錄下的所有目錄,時間相對較長   lsof -d FD           顯示指定文件描述符的進程   lsof -n             不將IP轉換為hostname,缺省是不加上-n參數   lsof -i             用以顯示符合條件的進程情況

lsof -Pnl +M -i4

-P   :約束着網絡文件的端口號到端口名稱的轉換,在端口名稱的查找不能奏效時很有用的
-n   : 約束着網絡文件的端口號到主機名稱的轉換,在主機名稱的查找不能奏效很有用
-l   :約束着用戶ID號到登錄名的轉換。在登錄名的查找不正確或很慢時很有用。
+M   :此選項支持本地TCP和UDP端口映射程序的注冊報告。
-i4   :僅列示IPv4協議下的端口。
-i6   :僅列示IPv6協議下的端口。

  

批量中止進程

kill -9 $(ps -ef | grep 進程名 | grep -v grep | awk '{print $2}')  

網絡行為分析

抓取數據包進行分析,如wireshark,tcpdump等,例

1
tcpdump -i eth1 dst xxx.xxx.xxx.xxx

四.后門掃描

后門賬戶查找

1. 檢查帳戶
# cat /etc/passwd
# grep :0: /etc/passwd    檢查是否產生了新用戶,和UID、GID是0的用戶
# ls -l /etc/passwd       查看文件修改日期
# awk -F: ‘$3= =0 {print $1}’ /etc/passwd  查看是否存在特權用戶
# awk -F: ‘length($2)= =0 {print $1}’ /etc/shadow  查看是否存在空口令帳戶

檢查后門

 cat /etc/crontab
 ls /var/spool/cron/
 cat /etc/rc.d/rc.local
 ls /etc/rc.d
 ls /etc/rc3.d
 find / -type f -perm 4000

rookit檢測

Rootkit Hunter:rkhunter --check
chkrootkit:chkrootkit | grep INFECTED

查找指定的tty進程:ps aux | grep pts/0

rkhunter

rkhunter --check   檢測。出現紅色的警告信息,請仔細檢測是否已經中招了。

查看產生的日志:cat /var/log/rkhunter.log | grep Warning

# ss -l  列出所有打開的網絡連接端口
# ss -pl 查看進程使用的socket

自動發送報告
每天5點檢測並發送通知郵件

crontab -e
* 5 * * * /usr/local/rkhunter/bin/rkhunter --cronjob -l --nomow --rwo | mail -s "[rkhunter] report `hostname` `date`" root@localhost

找出與 crypto 與 bash 這兩個服務有關的 PID 號碼

ps aux | egrep '(cron|syslog)'

檢查計划任務

注意root和UID是0的schedule
# crontab –u root –l
# cat /etc/crontab
# ls /etc/cron.*
# crontabs: crontab -lrm ...  清理計划認為

 

五. 查看系統、文件異常

主要針對文件的更改時間、屬組屬主信息問題,新增用戶,文件最后修改時間等問題:

   # find -type f -mtime -5 #查找最近5天內更改的文件
  # find / -uid 0 –perm -4000 –print
  # find / -size +10000k –print
  # find / -name "..." –print
  # find / -name ".." –print
  # find / -name "." –print
  # find / -name " " –print    注意SUID文件,可疑大於10M和空格文件
  # find / -name core -exec ls -l {} ;  (檢查系統中的core文件)
  檢查系統文件完整性
  # md5sum –b 文件名
  # md5sum –t 文件名

檢查網絡

# ip link | grep PROMISC(正常網卡不該在promisc模式,可能存在sniffer)
# lsof –i
# netstat –nap(察看不正常打開的TCP/UDP端口)
# arp –a

檢查內核模塊

# lsmod

檢查系統服務
# chkconfig
# rpcinfo -p(查看RPC服務)

 

六. 查看關鍵日志

/var/log/faillog --登陸失敗日志

/var/log/auth.log --驗證日志 

例:grep 'sshd' /var/log/auth.log

還有/var/log/messages、/var/log/secure

secure日志可以查看Accept關鍵字;last可以查看登錄信息;bash_history可以查看命令執行信息等,

例:查看登錄情況

cat secure-20150317 | grep 'Failed password' | cut -d " " -f 9,10,11 | sort | uniq

 

# last(查看正常情況下登錄到本機的所有用戶的歷史記錄)
注意”entered promiscuous mode”
注意錯誤信息如:

Remote Procedure Call (rpc) programs with a log entry that includes a large number (> 20) strange characters(-^PM-^PM-^PM-^PM-^PM-^PM-^PM-^PM)

補充:

通過syslog協議通過udp進行傳輸日志,以下是兩種方式:

1) Logger方式:cat localhost_access_log.2016-11-22.txt | logger -t graylog2 -n 127.0.0.1 -P 端口

2)nc方式:cat localhost_access_log.2016-11-22.txt | nc -w 1 -u 127.0.0.1 端口

 

輔助

用Shell Script編寫一段腳本,通過這個腳本讓chkrootkit的監測自動化。如有rootkit被發現的時候,發送郵件通知root用戶,並且將運行結果保存在/var/log/messages文件中。

[root@localhost ~]# vi mychkrootkit  ← 建立chkrootkit自動運行腳本

#!/bin/bash
PATH=/usr/bin:/bin
TMPLOG=`mktemp`
# Run the chkrootkit
/usr/local/chkrootkit/chkrootkit > $TMPLOG
# Output the log
cat $TMPLOG | logger -t chkrootkit
# bindshe of SMTPSllHow to do some wrongs
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
rm -f $TMPLOG

 

一些小工具:

IPTraf-實時局域網IP監控
Htop – Linux進程監控
VnStat PHP – 網絡流量監控
Suricata – 網絡安全監控
iotop – 簡單的類似top的I/O監控器

 

Vnstat

#初始化,綁定要監測的網卡的名稱,比如eth0
vnstat -u -i eth0 
vnstat

  

相關鏈接

監控 Linux 性能的 18 個命令行工具: http://os.51cto.com/art/201402/429890.htm

Linux下10個使用lsof命令的例子: http://www.tecmint.com/10-lsof-command-examples-in-linux/

Linux 性能監控之命令行工具: http://m.2cto.com/os/201606/517821.html

用Linux肉雞滲透一個小型內網的思路:  http://www.91ri.org/12362.html

高手對決 -- 博客服務器被黑的故事: http://ruby-china.org/topics/23848


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM