Linux入侵类问题排查思路
深入分析,查找入侵原因
一、检查隐藏帐户及弱口令
检查服务器系统及应用帐户是否存在 弱口令:
检查说明:检查管理员帐户、数据库帐户、MySQL 帐户、tomcat 帐户、网站后台管理员帐户等密码设置是否较为简单,简单的密码很容易被黑客破解。
解决方法:以管理员权限登录系统或应用程序后台,修改为复杂的密码。
风险性:高。
使用 last 命令查看下服务器近期登录的帐户记录,确认是否有可疑 IP 登录过机器:
检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。
解决方法:检查发现有可疑用户时,可使用命令 usermod -L 用户名禁用用户或者使用命令 userdel -r 用户名删除用户。
风险性:高。
通过 less /var/log/secure|grep 'Accepted' 命令,查看是否有可疑 IP 成功登录机器:
检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。
解决方法: 使用命令 usermod -L 用户名禁用用户或者使用命令 userdel -r 用户名删除用户。
风险性:高。
检查系统是否采用 默认管理端口:
检查系统所用的管理端口(SSH、FTP、MySQL、Redis 等)是否为默认端口,这些默认端口往往被容易自动化的工具进行爆破成功。
解决方法:
在服务器内编辑 /etc/ssh/sshd_config 文件中的 Port 22,将22修改为非默认端口,修改之后需要重启 ssh 服务。
运行 /etc/init.d/sshd restart(CentOS)或 /etc/init.d/ssh restart(Debian / Ubuntu)命令重启是配置生效。
修改 FTP、MySQL、Redis 等的程序配置文件的默认监听端口21、3306、6379为其他端口。
限制远程登录的 IP,编辑 /etc/hosts.deny 、/etc/hosts.allow 两个文件来限制 IP。
风险性:高。
检查 /etc/passwd 文件,看是否有非授权帐户登录:
检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。
解决方法: 使用命令 usermod -L 用户名禁用用户或者使用命令 userdel -r 用户名删除用户。
风险性:中。
二、检查恶意进程及非法端口
运行 netstat –antlp 查看下服务器是否有未被授权的端口被监听,查看下对应的 pid。
检查服务器是否存在恶意进程,恶意进程往往会开启监听端口,与外部控制机器进行连接。
解决方法:
若发现有非授权进程,运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号),查看下 pid 所对应的进程文件路径。
如果为恶意进程,删除下对应的文件即可。
风险性:高。
使用 ps -ef 和 top 命令查看是否有异常进程
检查说明:运行以上命令,当发现有名称不断变化的非授权进程占用大量系统 CPU 或内存资源时,则可能为恶意程序。
解决方法:确认该进程为恶意进程后,可以使用 kill -9 进程名 命令结束进程,或使用防火墙限制进程外联。
风险性:高。
三、检查恶意程序和可疑启动项
使用 chkconfig --list 和 cat /etc/rc.local 命令查看下开机启动项中是否有异常的启动服务。
检查说明:恶意程序往往会添加在系统的启动项,在用户关机重启后再次运行。
解决方法:如发现有恶意进程,可使用 chkconfig 服务名 off 命令关闭,同时检查 /etc/rc.local 中是否有异常项目,如有请注释掉。
风险性:高。
进入 cron 文件目录,查看是否存在非法定时任务脚本。
检查说明:查看 /etc/crontab,/etc/cron.d,/etc/cron.daily,/etc/cron.hourly/,/etc/cron.monthly,/etc/cron.weekly/ 是否存在可疑脚本或程序。
解决方法:如发现有不认识的计划任务,可定位脚本确认是否正常业务脚本,如果非正常业务脚本,可直接注释掉任务内容或删除脚本。
风险性:高。
四、检查第三方软件漏洞
如果您服务器内有运行 Web、数据库等应用服务,请您限制应用程序帐户对文件系统的写权限,同时尽量使用非 root 帐户运行。
检查说明:使用非 root 帐户运行可以保障在应用程序被攻陷后攻击者无法立即远程控制服务器,减少攻击损失
解决方法:
进入 web 服务根目录或数据库配置目录;
运行 chown -R apache:apache /var/www/xxxx、chmod -R 750 file1.txt 命令配置网站访问权限。
风险性:中。
参考示例
升级修复应用程序漏洞
检查说明:机器被入侵,部分原因是系统使用的应用程序软件版本较老,存在较多的漏洞而没有修复,导致可以被入侵利用。
解决方法:比较典型的漏洞例如 ImageMagick、openssl、glibc 等,用户可以根据腾讯云已发布安全通告指导通过 apt-get/yum 等方式进行直接升级修复。
风险性:高。
网站目录文件权限的参考示例如下:
场景:
我们假设 HTTP 服务器运行的用户和用户组是 www,网站用户为 centos,网站根目录是 /home/centos/web。
方法/步骤:
1、我们首先设定网站目录和文件的所有者和所有组为 centos,www,如下命令:
chown -R centos:www /home/centos/web
2、设置网站目录权限为750,750是 centos 用户对目录拥有读写执行的权限,设置后,centos 用户可以在任何目录下创建文件,用户组有有读执行权限,这样才能进入目录,其它用户没有任何权限。
find -type d -exec chmod 750 {} \;
3、设置网站文件权限为640,640指只有 centos 用户对网站文件有更改的权限,HTTP 服务器只有读取文件的权限,无法更改文件,其它用户无任何权限。
find -not -type d -exec chmod 640 {} \;
4、针对个别目录设置可写权限。例如,网站的一些缓存目录就需要给 HTTP 服务有写入权限、discuz x2 的/data/目录就必须要写入权限。
find data -type d -exec chmod 770 {} \;
被入侵后的安全优化建议
1、尽量使用 SSH 密钥进行登录,减少暴力破解的风险。
2、在服务器内编辑 /etc/ssh/sshd_config 文件中的 Port 22,将 22 修改为其他非默认端口,修改之后重启 SSH 服务。可使用命令重启
/etc/init.d/sshd restart(CentOS)或 /etc/init.d/ssh restart(Debian/Ubuntu)
3、如果必须使用 SSH 密码进行管理,选择一个好密码。
无论应用程序管理后台(网站、中间件、tomcat 等)、远程 SSH、远程桌面、数据库,都建议设置复杂且不一样的密码。
下面是一些好密码的实例(可以使用空格):
1qtwo-threeMiles3c45jia
caser, lanqiu streets
下面是一些弱口令的示例,可能是您在公开的工作中常用的词或者是您生活中常用的词:
公司名+日期(coca-cola2016xxxx)
常用口语(Iamagoodboy)
4、使用以下命令检查主机有哪些端口开放,关闭非业务端口。
netstat -anltp
5、通过腾讯云-安全组防火墙限制仅允许制定 IP 访问管理或通过编辑 /etc/hosts.deny、/etc/hosts.allow 两个文件来限制 IP。
6、应用程序尽量不使用 root 权限。
例如 Apache、Redis、MySQL、Nginx 等程序,尽量不要以 root 权限的方式运行。
7、修复系统提权漏洞与运行在 root 权限下的程序漏洞,以免恶意软件通过漏洞提权获得 root 权限传播后门。
及时更新系统或所用应用程序的版本,如 Struts2、Nginx,ImageMagick、Java 等。
关闭应用程序的远程管理功能,如 Redis、NTP 等,如果无远程管理需要,可关闭对外监听端口或配置。
8、定期备份云服务器业务数据。
对重要的业务数据进行异地备份或云备份,避免主机被入侵后无法恢复。
除了您的 home,root 目录外,您还应当备份 /etc 和可用于取证的 /var/log 目录。
9、安装腾讯云主机安全(云镜) Agent,在发生攻击后,可以了解自身风险情况。
本文来自腾讯云,文档中心>主机安全>故障排除>Linux入侵类问题排查思路:https://cloud.tencent.com/document/product/296/9604
Linux入侵类问题排查思路的更多相关文章
- Linux 服务器性能问题排查思路
一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...
- Linux服务器被黑 排查思路
目录 一.为何会被入侵? 二.排查 入侵排查 检查是否还存在被登陆可能 计划任务 被修改的文件 筛选日志 日志恢复 找到异常进程-1 找到异常进程-2 找到异常进程-3 找到异常进程-4 三.总结 一 ...
- Linux运维故障排查思路
linux系统故障 网络问题 linux系统无响应 linux系统无法启动 linux系统故障处理思路 1.重视报错信息,一般情况下此提示基本定位了问题的所在 2.查阅日志文件,系统日志和应用日志 3 ...
- Linux进程僵死原因排查思路
常情况下脚本执行时间几秒完成,如果超过很长时间执行完成,可能是进程等待某些资源引起阻塞(假死状态). 场景:xx.perl读取文件并发送邮件 现象:执行脚本的进程僵死(卡住) 排查:ps -ef |g ...
- Linux应急响应入侵排查思路
0x00 前言 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解 ...
- 6.【应急响应】Linux入侵排查思路
0x01 入侵排查思路 一.账号安全 基本使用: 1.用户信息文件/etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GI ...
- windows应急响应入侵排查思路
0x00 前言 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解 ...
- 1.Windows入侵排查思路
0x00 前言 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方 ...
- Java线上问题排查思路及Linux常用问题分析命令学习
前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...
随机推荐
- springboot 控制台程序读取配置文件(原创)
首先新建一个springboot项目,此处省略. 1.新建一个application.properties person.name=kevin person.age=6 person.sex=male ...
- DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render
DRF框架 全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...
- STVD使用printf输出数据错误
使用STM8L052输出调试信息 重定向put char #include "stdio.h" //必不可缺少 char putchar (char c) { /* Write a ...
- go语言浅析二叉树
Hello,各位小伙伴大家好,我是小栈君,今天给大家带来的分享是关于关于二叉树相关的知识点,并用go语言实现一个二叉树和对二叉树进行遍历. 我们主要针对二叉树的概念,go实战实现二叉树的前序遍历.中序 ...
- vue的特殊指令 v-if v-once v-bind v-for v-on v-model
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- BZOJ5312 冒险 势能分析、线段树
传送门 区间位赋值.区间求最大值似乎是不能够像一般的线段树一样直接打标记的,但是直接暴力也太没有面子了. 我们考虑优化一下暴力:如果说线段树的一段区间内在当前修改的所有位置上所有数都是相同的,那么这个 ...
- HTML5 极简的JS函数
页面初始化 mui框架将很多功能配置都集中在mui.init方法中,要使用某项功能,只需要在mui.init方法中完成对应参数配置即可,目前支持在mui.init方法中配置的功能包括:创建子页面.关闭 ...
- spring cloud各个版本之间的区别
最近公司在使用spring cloud进行开发,对于spring cloud版本号一直有疑惑. 那个版本在前?那个版本在后? 那个版本是最新的? 一.常见版本号说明 举个瓜:2.0.3 RELEASE ...
- linux mount一个目录到另外一个目录
从linux内核2.4.0以后mount支持mount --bind 一个目录到另外一个目录 比如: [root@localhost wind]# mkdir test1 test2 dir3 m ...
- 科普帖:Linux操作系统
使用计算机必然会接触操作系统,现代操作系统已经发展的十分成熟,一般用户都可以很轻松的使用计算机.然而,对于要利用计算机进行专业开发和应用的用户来说,需要更加深入地理解操作系统的原理和运行机制,这样才能 ...