1. 程式人生 > 其它 >Linux檢查伺服器是否被入侵

Linux檢查伺服器是否被入侵

Linux檢查伺服器是否被入侵

檢查root使用者是否被纂改
awk -F: '$3==0{print $1}' /etc/passwd 
awk -F: '$3==0  {print}' /etc/passwd
檢視空口令
awk -F: 'length(2)==0 {print}' /etc/shadow
查詢可以遠端登入的帳號,即:/bin/shell
awk '/\$1|\$6/{print $1}' /etc/shadow
檢查sudo許可權
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
禁用或刪除多餘及可疑的帳號
usermod -L user ###禁用帳號,帳號無法登入,驗證:/etc/shadow 第二欄為 ! 開頭
userdel user    ###刪除 user 使用者
userdel -r user 將刪除user使用者,且將/home目錄下的user家目錄一併刪除
檢查當前及歷史使用者登入情況
who, whoami,last,lastb,cat .bash_history >> history.txt,lastlog
檢視機器所有使用者的連線時間(小時)
ac -dp

系統異常排查

檢查當前主機系統負載
w、top、uptime
檢視異常程序的埠
ss -antlp|less  ##分析可疑埠、IP、PID;如果發現異常,用以下命令檢視下pid所對應的程序檔案路徑,
ls -l /proc/$PID/exe 或 file /proc/$PID/exe  #($PID 為對應的 pid 號)
ps aux | grep pid   ##分析異常進行,關聯的子程序或執行緒
killall -9 可疑程序   ###殺掉所有可疑程序的關聯程序/執行緒;
啟動項配置檔案檢視是否異常
more /etc/rc.local /etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
檢視系統啟動檔案rc.local和/etc/init.d有無異常指令碼檔案;
或進去/etc/init.d/刪除異常開機檔案
檢視異常計劃任務執行
crontab -l
crontab -e ##進去刪除異常的任務
more /etc/cron.daily/* 檢視目錄下檔案
ps aux | grep crond
關注以下目錄中是否存在惡意指令碼
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
檢視系統指令碼異常
檢視以下目錄下指令碼檔案的修改時間和最近訪問時間:
var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/*
服務檢視
chkconfig --list 檢視服務自啟動狀態,可以看到所有的RPM包安裝的服務
檢視日誌
入侵者可能會刪除機器的日誌資訊,可以檢視日誌資訊是否還存在或者是否被清空
more /etc/rsyslog.conf #檢視日誌配置情況
ll -h /var/log/*
du -sh /var/log/*
cat /var/log/secure | grep -i "accepted password" ##嘗試發現入侵者的資訊
日誌檔案 說明
/var/log/cron 記錄了系統定時任務相關的日誌
/var/log/cups 記錄列印資訊的日誌
/var/log/dmesg 記錄了系統在開機時核心自檢的資訊,也可以使用dmesg命令直接檢視核心自檢資訊
/var/log/mailog 記錄郵件資訊
/var/log/message 記錄系統重要資訊的日誌。這個日誌檔案中會記錄Linux系統的絕大多數重要資訊,如果系統出現問題時,首先要檢查的就應該是這個日誌檔案
/var/log/btmp 記錄錯誤登入日誌,這個檔案是二進位制檔案,不能直接vi檢視,而要使用lastb命令檢視
/var/log/lastlog 記錄系統中所有使用者最後一次登入時間的日誌,這個檔案是二進位制檔案,不能直接vi,而要使用lastlog命令檢視
/var/log/wtmp 永久記錄所有使用者的登入、登出資訊,同時記錄系統的啟動、重啟、關機事件。同樣這個檔案也是一個二進位制檔案,不能直接vi,而需要使用last命令來檢視
/var/log/utmp 記錄當前已經登入的使用者資訊,這個檔案會隨著使用者的登入和登出不斷變化,只記錄當前登入使用者的資訊。同樣這個檔案不能直接vi,而要使用w,who,users等命令來查詢
/var/log/secure 記錄驗證和授權方面的資訊,只要涉及賬號和密碼的程式都會記錄,比如SSH登入,su切換使用者,sudo授權,甚至新增使用者和修改使用者密碼都會記錄在這個日誌檔案中
定位有多少IP在爆破主機的 root 帳號
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些 IP 在爆破
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破使用者名稱字典是什麼?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
登入成功的 IP 有哪些
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登入成功的日期、使用者名稱、IP
grep "Accepted " /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’
增加一個使用者日誌,刪除用userdel grep -i "useradd" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
檢視sudo
visudo
sudo -l
異常檔案檢視
find . -name “muma.php” -type f -mtime -5 -exec ls -l {} ; ##如果懷疑muma.php
find常用:
find /home -size +512k; #查大於512k的檔案
find /home -size -512k; #查小於512k的檔案
find /home -mtime -2; # 在/home下查最近兩天內改動過的檔案
find /home -atime -1; # 查1天之內被存取過的檔案
find /home -mmin +60; # 在/home下查60分鐘前改動過的檔案
find /home -amin +30; # 查最近30分鐘前被存取過的檔案
find /home -newer tmp.txt; # 在/home下查更新時間比tmp.txt近的檔案或目錄
find /home -anewer tmp.txt; # 在/home下查存取時間比tmp.txt近的檔案或目錄
ls -lc filename 列出檔案的建立時間

注意:ctime 是在寫入檔案、更改所有者、許可權或連結設定時隨Inode的內容更改而更改的時間。
ls -l filename 列出檔案的修改時間;
注意:mtime 是在寫入檔案時隨檔案內容的更改而更改的時間。如果ctime和mtime不一致時有可能是木馬檔案,黑客有可能會修改了mtime時間。

確認後刪除木馬檔案:
find . -name “muma.php” -type f -mtime -5 -size -5k -exec rm -rf {} ;
查詢目錄下檔案內容包含木馬特定字串(比如YLb)的檔案列表,並刪除處理:
#查詢檔案,並顯示檔案的ctime時間,比對檔案資訊
find . -name “.php" -exec grep -rl “YLb” {} ; -exec ls -lc {} ;
#確認沒有問題後,刪除掉
find . -name ".php” -exec grep -rl “YLb” {} ; -exec rm -rfv {} ;
如果殺不了,檢視以下檔案:
/usr/bin/killall
/usr/bin/wget
另外:木馬也喜歡出現的目錄/tmp,檢視其下是否有異常檔案;
檢視cat /etc/resolv.conf,如果網頁惡意重定向
安裝防毒軟體
yum -y install clamav*
service clamd restart啟動
freshclam ##更新病毒庫
掃描方法:
clamscan -r /etc –max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin –max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr –max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r –remove /bin/
clamscan -r –remove /usr/bin/
檢視常用運維排查軟體
ps,ps,netstat,lsof等命令是否異常;如果ps命令,ls命令執行無輸出,就該警惕被病毒感染替換為虛假命令工具;
/root/chattr -i -a /bin/ps && rm /bin/ps -f #刪除這些可能被感染的命令,比如ps,ls,netstat,lsof,top等。可以通過ls -lh /bin/ps 檢視這些命令的大小和正常程式是否一致;如果被感染,可去一個相同作業系統的的ps,ls, netstat,lsof命令,將這些命令複製到被感染的系統中,臨時使用。
RPM check檢查
 系統完整性可以通過rpm自帶的-Va來校驗檢查所有的rpm軟體包,檢視哪些命令是否被替換了:./rpm -Va > rpm.log;如果一切均校驗正常將不會產生任何輸出,如果有不一致的地方,就會顯示出來,輸出格式是8位長字串,每個字元都用以表示檔案與RPM資料庫中一種屬性的比較結果 ,如果是. (點) 則表示測試通過。驗證內容中的8個資訊的具體內容如下:
S 檔案大小是否改變
M 檔案的型別或檔案的許可權(rwx)是否被改變
5 檔案MD5校驗是否改變(可以看成檔案內容是否改變)
D 裝置中,從程式碼是否改變
L 檔案路徑是否改變
U 檔案的屬主(所有者)是否改變
G 檔案的屬組是否改變
T 檔案的修改時間是否改變

rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取rpm包中ls命令到當前目錄的/bin/ls下
檢視異常程序
top #仔細檢查異常程序pid
ls -l /proc/pid/exe 檢視異常程序命令所在地
若發現異常程序,可在虛擬檔案系統目錄查詢該程序的可執行檔案:
ll /proc/1850/ | grep -i exe ##1850是程序的pid
ps -eFH ##
對關鍵目錄加鎖,降低危害
chmod 000 /usr/bin/可疑檔案
chattr +i /usr/bin
chattr +i /bin
chattr +i /tmp
linux查詢被入侵後留下的後門檔案
找/opt/下的所有jsp,拷貝到/dir(提前建立隔離目錄)
linux下:find /opt -name *.jsp | xargs cp -a --target-directory=/dir/ --parents
或:find . -name *.jsp|xargs cp -a --target-directory=/dir/ --parents
流量異常

如果發現機器產生了異常流量,可以使用命令“tcpdump”抓取網路包檢視流量情況或者使用工具”iperf”檢視流量情況,使用命令iftop,檢視檢視網絡卡流量情況;

ctrl+shift+esc開啟你Windows工作管理員檢視CPU、記憶體、網路等情況;

原理介紹

如果確認機器已經被入侵,重要檔案已經被刪除,可以嘗試找回被刪除的檔案

1>當程序打開了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序並不知道檔案已經被刪除,它仍然可以向開啟該檔案時提供給它的檔案描述符進行讀取和寫入。除了該程序之外,這個檔案是不可見的,因為已經刪除了其相應的目錄索引節點。

2>在/proc 目錄下,其中包含了反映核心和程序樹的各種檔案。/proc目錄掛載的是在記憶體中所對映的一塊區域,所以這些檔案和目錄並不存在於磁碟中,因此當我們對這些檔案進行讀取和寫入時,實際上是在從記憶體中獲取相關資訊。大多數與 lsof 相關的資訊都儲存於以程序的 PID 命名的目錄中,即 /proc/1234 中包含的是 PID 為 1234 的程序的資訊。每個程序目錄中存在著各種檔案,它們可以使得應用程式簡單地瞭解程序的記憶體空間、檔案描述符列表、指向磁碟上的檔案的符號連結和其他系統資訊。lsof 程式使用該資訊和其他關於核心內部狀態的資訊來產生其輸出。所以lsof 可以顯示程序的檔案描述符和相關的檔名等資訊。也就是我們通過訪問程序的檔案描述符可以找到該檔案的相關資訊。

3>當系統中的某個檔案被意外地刪除了,只要這個時候系統中還有程序正在訪問該檔案,那麼我們就可以通過lsof從/proc目錄下恢復該檔案的內容。
假設/var/log/secure檔案被刪除,用lsof命令檢視當前是否有程序開啟/var/log/secure,執行:lsof | grep /var/log/secure
結果示例:
rsyslogd 1264 root 4w REG 8,1 3173904 263917 /var/log/secure (deleted) ##其中4w的4表示:檔案描述符未4

然後:在/proc/1264/fd/4(fd下的每個以數字命名的檔案表示程序對應的檔案描述符)中檢視相應的資訊來確認:tail -f /proc/1264/fd/4

安全建議

1)密碼檔案安全:

/etc/hosts.deny 和/etc/hosts.allow利用這2個檔案建立白名單,控制主機訪問;
或利用iptables規則;

對/etc/passwd、/etc/group、/etc/sudoers、/etc/shadow等使用者資訊檔案進行加鎖(chattr +ai),驗證lsattr,一切非必要使用者登入許可權均設為/sbin/nologin

禁ping設定:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

緊急臨時賬戶鎖定:passwd -l 異常賬戶 ##-u解鎖,對應-L鎖定需要-U解鎖

2)密碼安全控制

設定密碼有效期和複雜度

對新建使用者,編輯/etc/login.defs,新增PASS MAX DAYS 30
對老使用者,chage -M 30 zabbix;修改已存在使用者zabbix的密碼有效期為30天
chage -d 0 zabbix //強制zabbix使用者下次登入時必須更改密碼

3)歷史命令記錄

減少歷史命令記錄條數,登出時自動清空命令歷史

編輯/etc/profile,修改HISTSIZE=5引數值,這裡配置為5條或export HISTSIZE=5;

同上修改/etc/profile,修改TMOUT=100引數,即讓系統終端閒置100s後自動登出;如果針對單個特定使用者來進行,只需修改該使用者下的.bash_profile的TMOUT=100引數。

4)限制su命令使用和sudo許可權
將允許使用su命令的使用者加入wheel組,啟用pam_wheel模組;su的操作記錄在/var/log/secure日誌裡;編輯/etc/login.defs,文末新增SU_WHEEL_ONLY yes

注:PAM認證一般遵循順序:service—>pam配置檔案—>pam_*.so;pam認證首先要確定當前求情的事哪一項服務,後加載響應的pam配置檔案(位於/etc/pam.d/),找到後呼叫認證檔案(/lib/security/)來安全認證;

pam常見4種控制型別:驗證開始----->required—>requisite—>sufficient—>optional—>驗證結束

sudo許可權限制visudo或vim /etc/sudoers,記錄格式:使用者 主機名列表 = 命令程式列表

sudo預設日誌/var/log/sudo;

5)禁止root從其他終端登入,只能從安全終端登入
編輯/etc/securetty,只保留tty1為安全終端,其他註釋掉。

6)臨時禁止普通使用者登入
1.建立/etc/nologin檔案,這樣當普通使用者登入時,login程式會檢查/etc/nologin檔案是否存在,如存在就拒絕普通使用者登入系統,root不受此限制。

攻防演練工具

1)DDos演練工具:

1> windows:Hyenae

hyenae是在Windows平臺上非常好用的一款ddos攻擊工具,可以完成絕大多數的攻擊操作。軟體下載

使用簡述:

●攻擊源的IP,MAC地址以及埠號可以非常靈活的設定,按MAC-IP@port的格式書寫,上圖中的攻擊源匹配模式%-172.17.14.158@80,其中:

% 代表任意,在此處代表任意的MAC地址
172.17.14.158為偽造的攻擊源IP,可以修改為任意的合法IP
80為埠號,80同時也是網路伺服器的預設埠

●攻擊目標的設定方式與攻擊源一致,圖中的%-172.17.14.10@80,其中:

% 隨機生成MAC地址
172.17.14.10代表被攻擊的IP
80為攻擊目標的被攻擊埠號

上述圖示的作用是產生MAC地址隨機,IP為172.17.14.158,埠為80的偽造源,去攻擊目的MAC隨機,IP為172.17.14.10的web server。

由於目的MAC隨機,當MAC地址首位元組為奇數時,生成的資料包為廣播包,此時將產生廣播風暴,區域網內的所有裝置都將收到大量的廣播包,當速率很高時,很容易導致區域網癱瘓,這是需要注意的。本人當時年少輕狂,有次測試,使用全速率的廣播式SYN/ACK攻擊,直接導致部門的區域網癱瘓斷網,幸好是晚上,後來找人重置了部門內的網路裝置才恢復,想想真是罪過啊。

2> Linux:hping3

hping3是用於生成和解析TCPIP協議資料包的開源工具。hping3同樣可用於產生ddos攻擊包,但與hyenae不同的是,hping3無法手動設定MAC地址,而是根據IP地址自動獲取。

使用介紹參見

hping3編譯安裝

軟體下載:http://www.hping.org/hping3-20051105.tar.gz

對應windows版本:http://www.hping.org/hping2.win32.tar.gz

3> 其他工具:

免費DDOS攻擊測試工具大合集

4> webshell查殺

河馬webshell查殺:http://www.shellpub.com
深信服Webshell網站後門檢測工具:http://edr.sangfor.com.cn/backdoor_detection.html

5>Rootkit查殺

網址:http://www.chkrootkit.org

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz 
tar zxvf chkrootkit.tar.gz 
cd chkrootkit-0.52 
make sense #編譯完成沒有報錯的話執行檢查 
./chkrootkit

6>rkhunter

網址:http://rkhunter.sourceforge.net

wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4 
./installer.sh --install rkhunter -c

7>Clamav防毒

官方下載地址為:http://www.clamav.net/download.html

#安裝zlib依賴:
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7 
#安裝一下gcc編譯環境: 
yum install gcc CFLAGS="-O3 -fPIC"
./configure --prefix= /usr/local/zlib/
make && make install

#新增使用者組clamav和組成員clamav:
groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

#安裝Clamav:
tar –zxvf clamav-0.97.6.tar.gz
cd clamav-0.97.6
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make
make install

#配置Clamav:
mkdir /opt/clamav/logs 
mkdir /opt/clamav/updata 
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
cd /opt/clamav/logs
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log

#ClamAV 使用:
/opt/clamav/bin/freshclam  #升級病毒庫
./clamscan –h  #檢視相應的幫助資訊
./clamscan -r /home #掃描所有使用者的主目錄就使用
./clamscan -r --bell -i /bin 掃描bin目錄並且顯示有問題的檔案的掃描結果

#yum安裝
yum install -y clamav 
freshclam #更新病毒庫
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log #掃描方法 
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log 
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ #掃描並防毒
clamscan -r --remove /usr/local/zabbix/sbin
cat /root/usrclamav.log |grep FOUND #檢視日誌發現

8>linux安全檢查指令碼

https://github.com/grayddq/GScan 
https://github.com/ppabc/security_check 
https://github.com/T0xst/linux