Windows和Linux應急響應以及IP封堵

目錄

1、Windows入侵排查思路

1.1 檢查系統賬號安全

1.2 檢查異常端口、進程

1.3 檢查啟動項、計劃任務、服務

1.4 檢查系統相關信息

1.5 自動化查殺

1.6 日志分析

系統日志分析

Web 訪問日志

2、Linux 入侵排查思路

2.1?賬號安全

2.1.1、基本使用

2.1.2、入侵排查

2.2 歷史命令

2.2.1基本使用

2.2.2入侵排查

2.3 檢查異常端口

2.4 檢查異常進程

2.5 檢查開機啟動項

2.5.1基礎使用

2.5.2入侵排查

2.6 檢查定時任務

2.6.1基本使用

2.6.2入侵排查

2.7 檢查服務

2.7.1服務自啟動

2.7.2入侵排查

2.8 檢查異常文件

2.9 檢查系統日志

2.9.1基礎使用

2.9.2日志分析

3、封堵IP

3.1基本使用:iptables封堵 IP

3.2自動封堵IP(deny.sh)

3.2.1deny.sh腳本要求:實現自動封堵IP,失敗三次后自動使用iptables封堵爆破IP

3.2.2示例運行結果

3.2.3使用crontab來定時執行上述腳本


1、Windows入侵排查思路

1.1 檢查系統賬號安全

  • 查看服務器是否有弱口令,遠程管理端口是否對公網開放。

  • 查看服務器是否存在可疑賬號、新增賬號。

  • 查看服務器是否存在隱藏賬號、克隆賬號。

  • 結合日志,查看管理員登錄時間、用戶名是否存在異常。

1.2 檢查異常端口、進程

  • 檢查端口連接情況,是否有遠程連接、可疑連接。
  • 檢查是否有可疑進程。
  • 檢查小技巧:看端口對應的 PID:`netstat -ano | findstr "port"`;查看進程對應的 PID:任務管理器 -- 查看 -- 選擇列 -- PID 或者 `tasklist ?| findstr "PID"`;查看進程對應的程序位置(任務管理器 -- 選擇對應進程 -- 右鍵打開文件位置,運行輸入wmic,cmd 界面輸入process?);tasklist /svc? ?進程 -- PID -- 服務;查看Windows服務所對應的端口(%systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路徑))。

1.3 檢查啟動項、計劃任務、服務

  • 檢查服務器是否有異常的啟動項。
  • 檢查計劃任務。
  • 服務自啟動。

1.4 檢查系統相關信息

  • 查看系統版本以及補丁信息。
  • 查找可疑目錄及文件。
  • 發現并得到 WebShell、遠控木馬的創建時間。

1.5 自動化查殺

  • 病毒查殺

? ? ? ? ?檢查方法:下載安全軟件,更新最新病毒庫,進行全盤掃描。

  • webshell查殺

? ? ? ? ?檢查方法:選擇具體站點路徑進行webshell查殺,建議使用兩款 WebShell 查殺工具同時查殺,可相互補充規則庫的不足。

1.6 日志分析

系統日志分析

  • 前提:開啟審核策略,若日后系統出現故障、安全事故則可以查看系統的日志文件,排除故障,追查入侵者的信息等。
  • Win+R 打開運行,輸入 "eventvwr.msc",回車運行,打開"事件查看器"。
  • 導出應用程序日志、安全日志、系統日志,利用 [Log Parser](https://www.microsoft.com/en-us/download/details.aspx?id=24659) 進行分析。

Web 訪問日志

  • 找到中間件的web日志,打包到本地方便進行分析。
  • 推薦工具:Windows 下,推薦用 EmEditor 進行日志分析,支持大文本,搜索效率還不錯。Linux 下,使用 Shell 命令組合查詢分析。

2、Linux 入侵排查思路

2.1?賬號安全

2.1.1、基本使用

  • 用戶信息文件 /etc/passwd
  • 影子文件 /etc/shadow
  • who ? ? 查看當前登錄用戶(tty 本地登陸 ?pts 遠程登錄)
  • w ? ? ? 查看系統信息,想知道某一時刻用戶的行為
  • uptime ?查看登陸多久、多少用戶,負載狀態

2.1.2、入侵排查

(1)查詢特權用戶特權用戶(uid 為0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd

(2)查詢可以遠程登錄的帳號信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow

(3)除root帳號外,其他帳號是否存在sudo權限。如非管理需要,普通帳號應刪除sudo權限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

(4)禁用或刪除多余及可疑的帳號
? ? usermod -L user ? ?禁用帳號,帳號無法登錄,/etc/shadow 第二欄為 ! 開頭
?? ?userdel user ? ? ? 刪除 user 用戶
?? ?userdel -r user ? ?將刪除 user 用戶,并且將 /home 目錄下的 user 目錄一并刪除

2.2 歷史命令

2.2.1基本使用

通過 .bash_history 文件查看帳號執行過的系統命令

1、root 用戶的歷史命令
histroy
2、打開 /home 各帳號目錄下的 .bash_history,查看普通帳號執行的歷史命令。
為歷史的命令增加登錄的 IP 地址、執行命令時間等信息:
1)保存1萬條命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2)在/etc/profile的文件尾部添加如下行數配置信息:
######jiagu history xianshi#########
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
######### jiagu history xianshi ##########
3)source /etc/profile 讓配置生效
生成效果: 1 ?2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
3、歷史操作命令的清除:history -c
但此命令并不會清除保存在文件中的記錄,因此需要手動刪除 .bash_profile 文件中的記錄。

2.2.2入侵排查

進入用戶目錄下,導出歷史命令。
cat .bash_history >> history.txt

2.3 檢查異常端口

使用 netstat 網絡連接命令,分析可疑端口、IP、PID

netstat -antlp | more

查看下 pid 所對應的進程文件路徑,
運行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 為對應的 pid 號)

2.4 檢查異常進程

使用 ps 命令,分析進程

使用 ps 命令,分析進程

2.5 檢查開機啟動項

2.5.1基礎使用

系統運行級別示意圖:

查看運行級別命令 `runlevel`

2.5.2入侵排查

啟動項文件:

more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/

2.6 檢查定時任務

2.6.1基本使用

crontab -l ? 列出某個用戶cron服務的詳細內容

Tips:默認編寫的crontab文件會保存在 (/var/spool/cron/用戶名 例如: /var/spool/cron/root

crontab -r ? 刪除每個用戶cront任務(謹慎:刪除所有的計劃任務)

crontab -e ? 使用編輯器編輯當前的crontab文件?

如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分鐘寫入文件

2.6.2入侵排查

重點關注以下目錄中是否存在惡意腳本:

/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/*

more /etc/cron.daily/* ?查看目錄下所有文件

2.7 檢查服務

2.7.1服務自啟動

第一種修改方法:

chkconfig [--level 運行級別] [獨立服務名] [on|off]
chkconfig –level ?2345 httpd on ?開啟自啟動
chkconfig httpd on (默認level是2345)

第二種修改方法:

修改 /etc/re.d/rc.local 文件

加入 /etc/init.d/httpd start

第三種修改方法:

使用 ntsysv 命令管理自啟動,可以管理獨立服務和 xinetd 服務。

2.7.2入侵排查

查詢已安裝的服務:

RPM 包安裝的服務

chkconfig ?--list ?查看服務自啟動狀態,可以看到所有的RPM包安裝的服務
ps aux | grep crond 查看當前服務

系統在3與5級別下的啟動項?
中文環境
chkconfig --list | grep "3:啟用\|5:啟用"
英文環境
chkconfig --list | grep "3:on\|5:on"

源碼包安裝的服務

查看服務安裝位置 ,一般是在/user/local/
service httpd start
搜索/etc/rc.d/init.d/ ?查看是否存在

2.8 檢查異常文件

  • 查看敏感目錄,如/tmp目錄下的文件,同時注意隱藏文件夾,以“..”為名的文件夾具有隱藏屬性
  • 得到發現WEBSHELL、遠控木馬的創建時間,如何找出同一時間范圍內創建的文件?

?? ? ? ? ? ? ? ? ?可以使用find命令來查找,如 ?find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前訪問過的文件

  • 針對可疑文件可以使用 stat 進行創建修改時間。

2.9 檢查系統日志

2.9.1基礎使用

日志默認存放位置:/var/log/

查看日志配置情況:more /etc/rsyslog.conf

2.9.2日志分析

1、定位有多少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
?
2、登錄成功的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}'?

3、增加一個用戶kali日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure?

4、刪除用戶kali日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure

5、su切換用戶:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)

sudo授權執行:
sudo -l
Jul 10 00:43:09 localhost sudo: ? ?good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

3、封堵IP

3.1基本使用:iptables封堵 IP

sudo iptables -A INPUT -s 192.168.1.100 -j DROP? ? -------封堵單個IP

sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP? ?-------封堵IP段

sudo iptables -L -n? ? ?-------查看當前規則

sudo iptables -D INPUT -s 192.168.1.100 -j DROP? ? -------解除封禁

3.2自動封堵IP(deny.sh)

3.2.1deny.sh腳本要求:實現自動封堵IP,失敗三次后自動使用iptables封堵爆破IP

#需求:
#封堵在一分鐘內爆破次數超過100次的IP#!/bin/bash
# 日志文件路徑
logfile=/usr/local/nginx/logs
last_minutes=1 
# 開始時間1分鐘之前(這里可以修改,如果要幾分鐘之內攻擊次數多少次,這里可以自定義)
start_time=`date -d"$last_minutes minutes ago" +"%d/%m/%Y:%H:%M:%S"`
echo $start_time
# 結束時間現在
stop_time=`date +"%d/%m/%Y:%H:%M:%S"`
echo $stop_time
cur_date="`date +%d/%m/%Y`"
echo $cur_date
# 過濾出單位之間內的日志并統計最高ip數,請替換為你的日志路徑
tac $logfile/access.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($4,2);if(t>=st && t<=et){print $1}}' |sort | uniq -c | sort -nr > $logfile/log_ip_top10
#ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'`
# 出現橫杠使用sed去掉第一行
#sed -i '1d' $logfile/log_ip_top10    
# 單位時間[1分鐘]內單ip訪問次數超過200次的ip記錄入black.txt
ip=`cat $logfile/log_ip_top10 | awk '{if($1 > 100)print $2}'`
for line in $ip
do
echo $line >> $logfile/getip.txt
echo $line
iptables -I INPUT -p tcp  -m multiport --dport 80,443 -s $line -j DROP
done

注意事項

  1. 腳本中使用了for循環來處理多個超過訪問限制的IP。
  2. 清空access.log的操作是可選的,根據實際情況決定是否執行。
  3. 確保腳本具有執行權限,可以使用chmod +x deny.sh來賦予權限。

3.2.2示例運行結果

假設access.log中有多個IP超過了訪問限制,運行腳本后,getip.txt文件可能包含以下內容:

deny 192.168.1.1;
deny 192.168.1.2;

3.2.3使用crontab來定時執行上述腳本

編輯crontab

crontab -e

在crontab文件中添加一行,每分鐘執行一次:

* * * * * /usr/local/nginx/logs/deny.sh

注意:確保腳本路徑正確,且腳本具有執行權限。

重啟crond服務,使配置生效

systemctl restart crond.service

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92366.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92366.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92366.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MIT成果登上Nature!液態神經網絡YYDS

2025深度學習發論文&模型漲點之——液態神經網絡液態神經網絡&#xff08;Liquid Neural Networks&#xff0c;LNN&#xff09;是一種受生物神經系統啟發的連續時間遞歸神經網絡&#xff08;RNN&#xff09;&#xff0c;其核心創新在于將靜態神經網絡轉化為由微分方程驅動的…

AI 對話高效輸入指令攻略(四):AI+Apache ECharts:生成各種專業圖表

- **AI與數據可視化的革命性結合**:介紹AI如何降低數據可視化門檻,提升效率。 - **Apache ECharts:專業可視化的利器**:使用表格對比展示ECharts的特點、優勢和適用場景。 - **四步實現AI驅動圖表生成**:通過分步指南講解從環境準備到圖表優化的全流程,包含多個代碼示例及…

vue2 基礎學習 day04 (結構/樣式/邏輯、組件通信、進階語法)下

一、非父子通信-event bus 事件總線1.作用非父子組件之間&#xff0c;進行簡易消息傳遞。(復雜場景→ Vuex)2.步驟創建一個都能訪問的事件總線 &#xff08;空Vue實例&#xff09;import Vue from vue const Bus new Vue() export default BusA組件&#xff08;接受方&#xf…

ubuntu 20.04 C和C++的標準頭文件都放在哪個目錄?

在 Ubuntu 20.04 中&#xff0c;C 和 C 標準頭文件的存放目錄主要由編譯器&#xff08;如 GCC&#xff09;的安裝路徑決定&#xff0c;通常分為以下兩類&#xff1a;?1. C 標準頭文件?C 語言的標準頭文件&#xff08;如 <stdio.h>、<stdlib.h> 等&#xff09;默認…

change和watch

是的&#xff0c;你理解得很對&#xff01; change 與 v-model 的結合&#xff1a;change 事件通常用于監聽 表單元素的變化&#xff0c;但它并不一定意味著值發生了變化。它主要是當 用戶與輸入框交互時&#xff08;如點擊選項、選擇文本框內容、提交表單等&#xff09;觸發的…

分布式微服務--GateWay(1)

一、什么是微服務網關&#xff08;API Gateway&#xff09; 定義&#xff1a;微服務網關是整個系統請求的統一入口&#xff0c;負責請求轉發、過濾處理、安全校驗等。 作用&#xff1a; 請求路由 日志記錄 權限控制 參數校驗 解決跨域問題 黑白名單控制 限流、熔斷、降級…

大文件斷點續傳(vue+springboot+mysql)

斷點續傳vue前端代碼后端代碼controller 層service層持久層主表&#xff0c;初始化單次上傳文件表&#xff0c;單次上傳所有的文件記錄文件分塊表科普信息參考其他博主 流程圖 vue前端代碼 這里是只做了demo示例&#xff0c;主線測試沒什么問題&#xff0c;前端同學可參考修…

Nodejs》》MySql

Node.js 操作MySQL數據庫 文檔 # 項目要先安裝mysql包npm i mysqlxx // 安裝指定版本npm i mysql // 默認安裝最新版本 # 連接 mysq// 使用連接池連接const mysql require(mysql)# 建立連接const db mysql.createPool({host:, // 數據庫的IP地址user:ro…

金倉數據庫常見問題(持續更新)

目錄 1.查看大小是否敏感寫參數&#xff0c;提示&#xff1a;未認可的配置參數 "case_sensitive" 2.sys_backup.sh init時提示can not connect the primary node 3.設置邏輯備份運行腳本時提示錯誤are not allowed to use this program (crontab) 4.修改表字段類…

Docker Buildx最佳實踐:多架構鏡像構建指南

文章目錄為什么需要 Docker Buildx安裝與啟用 Docker Buildx創建多架構構建器實例構建多架構鏡像優化構建性能調試多架構構建實戰案例&#xff1a;構建 Go 應用多架構鏡像總結Docker Buildx 是 Docker 官方推出的擴展工具&#xff0c;用于支持多平臺鏡像構建&#xff0c;簡化跨…

你用的是什么鍵盤?

在電競行業飛速發展的當下&#xff0c;游戲鍵盤作為玩家操作的核心載體&#xff0c;其性能表現直接影響著游戲體驗與競技結果。而賽卓電子推出的磁軸鍵盤專用芯片 SC4823&#xff0c;憑借一系列突破性的技術特性&#xff0c;正成為游戲鍵盤領域的性能革新者。?對于游戲玩家而言…

Activiti 中各種 startProcessInstance 接口之間的區別

前言在用 RuntimeService 接口啟動流程實例時&#xff0c;總是分不清楚不同 startProcessInstanceXXX 接口之間的區別&#xff0c;這篇文章基于 Activiti 7.0.0.GA 版本&#xff0c;對這一類接口進行一個梳理和歸類。詳解接口列表RuntimeService 接口中以 startProcessInstance…

新手BUG:函數中 static 變量的賦值語句只會執行一次

在 C 函數中使用 static 變量時&#xff0c;很多新手會陷入一個認知誤區&#xff1a;認為變量的初始化語句會在每次函數調用時執行。比如在bool funcA() { // Q&#xff1a;多次調用funcA&#xff0c;funcB會被執行幾次&#xff1f;// A&#xff1a;1次static bool value func…

Python 基礎詳解:數據類型(Data Types)—— 程序的“數據基石”

一、引言&#xff1a;為什么數據類型如此重要&#xff1f;在 Python 編程中&#xff0c;數據類型決定了&#xff1a;數據的存儲方式可以對數據執行的操作數據的取值范圍不同類型之間的運算規則理解數據類型是編寫正確、高效程序的基礎。Python 是動態類型語言&#xff0c;雖然你…

WindowsLinux系統 安裝 CUDA 和 cuDNN

Windows安裝前的準備工作 檢查硬件兼容性&#xff1a;確認電腦顯卡為 NVIDIA GPU。通過快捷鍵 Win R 喚出“運行”&#xff0c;輸入“control /name Microsoft.DeviceManager”喚出“設備管理器”&#xff0c;點擊“顯示適配器”查看是否有 NVIDIA 字樣。 驗證 CUDA 支持性&a…

工業數采引擎-通信鏈路SOCKET

通信庫&#xff1a;DotNetty 封裝實現&#xff1a;TcpServer、TcpClient、Udp TCP協議特性&#xff1a;面向連接協議&#xff1b;每個新連接都會創建獨立的ChannelHandler實例&#xff1b;TcpHandler構造函數在每次客戶端連接時觸發 UDP協議特性&#xff1a;無連接協議&#…

PHP小白零基礎入門(附視頻教程)

概述 PHP是一種通用開源腳本語言&#xff0c;常用于服務器端Web開發&#xff0c;具有語法簡單、上手快等特點。視頻教程&#xff1a;https://pan.quark.cn/s/8f214c23301b 搭建開發環境&#xff1a; 選擇集成工具&#xff1a;可選擇XAMPP&#xff08;支持Windows/Mac/Linux…

驗證碼等待時間技術在酒店自助入住、美容自助與社區場景中的應用必要性研究—仙盟創夢IDE

代碼 代碼 完整<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>驗證碼倒計時</title><s…

Flask從入門到實戰:基礎、進階、項目架構與接口測試

本文將帶你從零開始掌握Flask框架&#xff0c;涵蓋基礎使用、進階技巧、項目架構設計&#xff0c;并提供完整的接口測試客戶端代碼。 目錄一、Flask基礎入門1.1 Flask簡介與安裝1.2 第一個Flask應用1.3 路由與請求處理1.4 請求與響應處理二、Flask進階使用2.1 模板引擎Jinja22.…

華為云產品圖解

框架圖核心說明: 1. 分層邏輯清晰 基礎設施層(IaaS):提供最基礎的計算(ECS/BMS)、存儲(OBS/EVS)、網絡(VPC/CDN)資源,是所有上層服務的 “物理底座”。 平臺服務層(PaaS):基于 IaaS 構建,提供容器編排(CCE)、數據庫(GaussDB)、大數據與 AI(ModelArts)、中…