Linux 入侵类问题排查思路

在这篇文章中:

深入分析,查找入侵原因

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

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

    • 检查说明:检查管理员账户、数据库账户、MySQL 账户、tomcat 账户、网站后台管理员账户等密码设置是否较为简单,简单的密码很容易被黑客破解。
    • 解决方法:以管理员权限登录系统或应用程序后台,修改为复杂的密码。
    • 风险性:高
  2. 使用last命令查看下服务器近期登录的账户记录,确认是否有可疑 IP 登录过机器:

    • 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统账户实施提权或其他破坏性的攻击。
    • 解决方法:检查发现有可疑用户时,可使用命令usermod -L 用户名禁用用户或者使用命令userdel -r 用户名删除用户。
    • 风险性:高
  3. 通过less /var/log/secure|grep 'Accepted'命令,查看是否有可疑 IP 登录机器成功:

    • 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统账户实施提权或其他破坏性的攻击。
    • 解决方法: 使用命令usermod -L 用户名禁用用户或者使用命令userdel -r 用户名删除用户。
    • 风险性:高
  4. 检查系统是否采用 默认管理端口

    • 检查系统所用的管理端口(SSH、FTP、MySQL、Redis 等)是否为默认端口,这些默认端口往往被容易自动化的工具进行爆破成功。

    • 解决方法:

      1. 在服务器内编辑/etc/ssh/sshd_config文件中的 Port 22,将 22 修改为非默认端口,修改之后需要重启 ssh 服务;

      2. 运行/etc/init.d/sshd restart命令重启是配置生效;

        • [](javascript: void 0;)

          复制

          复制成功

        3\. 修改 FTP、MySQL、Redis 等的程序配置文件的默认监听端口 21、3306、6379 为其他端口;
        4\. 限制远程登录的 IP,编辑`/etc/hosts.deny` 、`/etc/hosts.allow`两个文件来限制 IP。
        
        
    • 风险性:高

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

    • 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统账户实施提权或其他破坏性的攻击。
    • 解决方法: 使用命令usermod -L 用户名禁用用户或者使用命令userdel -r 用户名删除用户。
    • 风险性:中

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

  1. 运行netstat –antlp查看下服务器是否有未被授权的端口被监听,查看下对应的 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,如下命令:

    • [](javascript: void 0;)

      复制

      复制成功

    chown -R centos:www /home/centos/web
    
    
  2. 设置网站目录权限为 750,750 是 centos 用户对目录拥有读写执行的权限,设置后,centos 用户可以在任何目录下创建文件,用户组有有读执行权限,这样才能进入目录,其它用户没有任何权限。

    • [](javascript: void 0;)

      复制

      复制成功

    find -type d -exec chmod 750 {} \;
    
    
  3. 设置网站文件权限为 640,640 指只有 centos 用户对网站文件有更改的权限,http 服务器只有读取文件的权限,无法更改文件,其它用户无任何权限。

    • [](javascript: void 0;)

      复制

      复制成功

    find -not -type d -exec chmod 640 {} \;
    
    
  4. 针对个别目录设置可写权限。比如网站的一些缓存目录就需要给 http 服务有写入权限。例如 discuz x2 的/data/目录就必须要写入权限。

    • [](javascript: void 0;)

      复制

      复制成功

    find data -type d -exec chmod 770 {} \;
    
    

被入侵后的安全优化建议

  1. 尽量使用 SSH 密钥进行登录,减少暴力破解的风险。

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

    • [](javascript: void 0;)

      复制

      复制成功

    /etc/init.d/sshd restart
    
    
  3. 如果必须使用 SSH 密码进行管理,选择一个好密码。

    • 无论应用程序管理后台(网站、中间件、tomcat 等)、远程 SSH、远程桌面、数据库,都建议设置复杂且不一样的密码。
    • 下面是一些好密码的实例(可以使用空格):
      1qtwo-threeMiles3c45jia
      caser, lanqiu streets
    • 下面是一些弱口令的示例,可能是您在公开的工作中常用的词或者是您生活中常用的词:
      公司名+日期(coca-cola2016xxxx)
      常用口语(Iamagoodboy)
  4. 使用以下命令检查主机有哪些端口开放,关闭非业务端口。

    • [](javascript: void 0;)

      复制

      复制成功

    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 目录。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容