目录

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)、中…