当前位置:首页 > 运维 > 正文内容

linux中入侵类问题排查思路

phpmianshi1个月前 (10-23)运维124

一、检查隐藏帐户及弱口令

  1. 检查服务器系统及应用帐户是否存在 弱口令

    • 检查说明:检查管理员帐户、数据库帐户、网站后台管理员帐户等密码设置是否较为简单,简单的密码很容易被黑客破解。

    • 解决方法:以管理员权限登录系统或应用程序后台,修改为复杂的密码。

  2. 使用last命令查看下服务器近期登录的帐户记录,确认是否有可疑 IP 登录过机器:

    • 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。

    • 解决方法:检查发现有可疑用户时,可使用命令usermod -L 用户名禁用用户或者使用命令userdel -r 用户名删除用户。

  3. 通过less /var/log/secure|grep 'Accepted'命令,查看是否有可疑 IP 成功登录机器:

    • 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。

    • 解决方法: 使用命令usermod -L 用户名禁用用户或者使用命令userdel -r 用户名删除用户。

  4. 检查系统是否采用 默认管理端口

    • 检查系统所用的管理端口(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)命令重启是配置生效。

    1. 修改 FTP、MySQL、Redis 等的程序配置文件的默认监听端口21、3306、6379为其他端口。

    2. 限制远程登录的 IP,编辑/etc/hosts.deny 、/etc/hosts.allow两个文件来限制 IP。

  5. 检查/etc/passwd文件,看是否有非授权帐户登录:

    • 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。

    • 解决方法: 使用命令usermod -L 用户名禁用用户或者使用命令userdel -r 用户名删除用户。

二、检查恶意进程及非法端口

  1. 运行netstat –antp,查看服务器是否有未被授权的端口被监听,查看下对应的 pid。

    • 检查服务器是否存在恶意进程,恶意进程往往会开启监听端口,与外部控制机器进行连接。

    • 解决方法:

    1. 若发现有非授权进程,运行ls -l /proc/$PID/exefile /proc/$PID/exe($PID 为对应的 pid 号),查看下 pid 所对应的进程文件路径。

    2. 如果为恶意进程,删除对应的文件即可。

  2. 使用ps -eftop命令查看是否有异常进程

    • 检查说明:运行以上命令,当发现有名称不断变化的非授权进程占用大量系统 CPU 或内存资源时,则可能为恶意程序。

    • 解决方法:确认该进程为恶意进程后,可以使用kill -9 进程名命令结束进程,或使用防火墙限制进程外联。

三、检查恶意程序和可疑启动项

  1. 使用chkconfig --listcat /etc/rc.local命令,查看开机启动项中是否有异常的启动服务。

    • 检查说明:恶意程序往往会添加在系统的启动项,在用户关机重启后再次运行。

    • 解决方法:如发现有恶意进程,可使用chkconfig 服务名 off命令关闭,同时检查/etc/rc.local中是否有异常项目,如有请注释掉。

  2. 进入 cron 文件目录,查看是否存在非法定时任务脚本。

    • 检查说明:查看/etc/crontab/etc/cron.d/etc/cron.dailycron.hourly/cron.monthlycron.weekly/是否存在可疑脚本或程序。

    • 解决方法:如发现有不认识的计划任务,可定位脚本确认是否正常业务脚本,如果非正常业务脚本,可直接注释掉任务内容或删除脚本。

四、检查第三方软件漏洞

  1. 如果您服务器内有运行 Web、数据库等应用服务,请您限制应用程序帐户对文件系统的写权限,同时尽量使用非 root 帐户运行。

    • 检查说明:使用非 root 帐户运行,可以保障在应用程序被攻陷后,攻击者无法立即远程控制服务器,减少攻击损失。

    • 解决方法:

    1. 进入 web 服务根目录或数据库配置目录。

    2. 运行chown -R apache:apache /var/www/xxxxchmod -R 750 file1.txt命令配置网站访问权限。

  2. 升级修复应用程序漏洞

    • 检查说明:机器被入侵,部分原因是系统使用的应用程序软件版本较老,存在较多的漏洞而没有修复,导致可以被入侵利用。

    • 解决方法:比较典型的漏洞例如 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 {} \;

被入侵后的安全优化建议

  • 推荐使用 SSH 密钥进行登录,减少暴力破解的风险。

  • 在服务器内编辑/etc/ssh/sshd_config文件中的 Port 22,将 22 修改为其他非默认端口,修改之后重启 SSH 服务。

  • 如果必须使用 SSH 密码进行管理,选择一个好密码。

    • 无论应用程序管理后台(网站、中间件、tomcat 等)、远程 SSH、远程桌面、数据库,都建议设置复杂且不一样的密码。

    • 应用程序尽量不使用 root 权限。

版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

Linux中ss命令Recv-Q和Send-Q详解

ss用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netst...

linux中netstat和ss命令详解

由于nio的普及,ck10k的问题已经成为过去式。现在随便一台服务器,都可以支持数十万级别的连接了。那么10万的连接需要多少资源呢?由于一个连接都是文件句柄,所以需要文件描述符数量支持才行,每一个so...

linux中磁盘被占用找不到占用文件

1、用df 检查发现磁盘占用过高[root@VM_0_15_centos ~]# df -h2、用du检查发现各目录占用的空间都很少,有约10G的空间找不到了[root@...

linux中多文件按行拼接整合命令paste

概念Linux下的paste命令主要用于从多个文件(包括标准输入)中读取内容,将每个文件的对应行用指定分隔符(默认tab制表符)拼接起来并打印到标准输出,我们可以使用重定向命令“>”将输出结果保...

openresty中使用淘宝的concat进行css和js合并

背景我们在访问淘宝的时候,会看到代码中的js和css文件是通过一次请求获得的,我们知道浏览器一次请求只能并发访问数个资源,这样的处理错输在网络传输层面可以大大节省时间,这里使用的技术就是把css、js...

linux中set指令用法

简介我们知道,Bash 执行脚本的时候,会创建一个新的 Shell,这个 Shell 就是脚本的执行环境,Bash 默认给定了这个环境的各种参数。set命令用来修改 Shell 环境的运行参数,也...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。