您的需求已经提交,我们将在48小时内联系您
全国服务热线:400-1000-221
确定
免费享受企业级云安全服务
获取手机验证码
{{message}}
免费试用

如何查看linux服务器是否被入侵

作者:
发布时间:2020-09-14

  对于linux服务器来说,安全性是非常重要的问题。而服务器被入侵最常见的表现有:由内向外发送大量数据包(被DDOS肉鸡)、服务器资源被耗尽(被挖矿)、不正常的端口连接(反向shell)、服务器日志被恶意删除等。这里就跟大家讲解一下如何查看linux服务器是否被入侵

如何查看linux服务器是否被入侵

如何查看linux服务器是否被入侵

 

  1、账号安全

  基本使用:

  1 )用 户 信 息 文 件 /etc/passwd root:x:0:0:root:/root:/bin/bash

  account:password:UID:GID:GECOS:directory:shell

  用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell 注:无密码只允许本机登陆,远程不允许登陆

  2)影子文件/etc/shadow

  root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::

  用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之

  后的宽限天数:账号失效时间:保留

  who//查看当前登录用户(tty本地登陆pts远程登录)

  w //查看系统信息,想知道某一时刻用户的行为

  uptime //查看登陆多久、多少用户,负载

  入侵排查:

  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、文件排查

  1)敏感目录的文件分析[类/tmp 目录,命令目录/usr/bin /usr/sbin 等]

  ls用来显示目标列表

  2)查看 tmp 目录下的文件:ls –alt /tmp/

  Linux服务器入侵检测排查方法

  3)查看开机启动项内容:ls -alt /etc/init.d/,/etc/init.d 是 /etc/rc.d/init.d的软链接

  入侵排查:

  启动项文件: more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d

  4)按时间排序查看指定目录下文件:ls -alt | head -n 10

  针对可疑文件可以使用 stat 进行创建修改时间、访问时间的详细查看,若修改时间距离事件日期接近,有线性关联,说明可能被篡改或者其他。

  (1) Access Time:简写为 atime,表示文件的访问时间。当文件内容被访问时,更新这个时间。

  (2) Modify Time:简写为 mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。

  (3) Change Time:简写为 ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks 数。

  5)查看历史命令记录文件~/.bash_history

  查找~/.bash_history 命令执行记录,主要分析是否有账户执行过恶意操作系统;命令在 linux 系统里,只要执行过命令的用户,那么在这个用户的 HOME 目录下,都会有一个.bash_history 的文件记录着这个用户都执行过什么命令;

  那么当安全事件发生的时候,我们就可以通过查看每个用户所执行过的命令,来分析一下这个用户是否有执行恶意命令,如果发现哪个用户执行过恶意命令, 那么我们就可以锁定这个线索,去做下一步的排查。

  基本使用:

  通过.bash_history查看帐号执行过的系统命令

  ①root的历史命令

  histroy

  ②打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令

  为历史的命令增加登录的IP地址、执行命令时间等信息:

  a)保存1万条命令

  sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

  b)在/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 ##########

  c)source /etc/profile让配置生效

  生成效果: 12018-07-10 19:45:39 192.168.204.1 root source /etc/profile

  ③历史操作命令的清除:history -c

  注:此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。

  入侵排查:

  进入用户目录下

  cat .bash_history >> history.txt

  

如何查看linux服务器是否被入侵

 

  6)查看操作系统用户信息文件/etc/passwd

  查找/etc/passwd 文件, /etc/passwd 这个文件是保存着这个 linux 系统所有用户的信息,通过查看这个文件,我们就可以尝试查找有没有攻击者所创建的用户,或者存在异常的用户。我们主要关注的是第 3、4 列的用户标识号和组标识号,和倒数一二列的用户主目录和命令解析程序。一般来说最后一列命令解析程序如果是设置为 nologin 的话,那么表示这个用户是不能登录的,所以可以结合我们上面所说的 bash_history 文件的排查方法。首先在/etc/passwd 中查找命令解释程序不是 nologin 的用户, 然后再到这些用户的用户主目录里, 找到bash_history,去查看这个用户有没执行过恶意命令。

  /etc/passwd 中一行记录对应着一个用户,每行记录又被冒号(:)分隔为 7 个字段, 其格式和具体含义如下:

  用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell

  7)查看新增文件

  find:在指定目录下查找文件

  例:find ./ -mtime 0 -name "*.php"(查找 24 小时内被修改的 php 文件)

  find / -ctime 2(查找 72 小时内新增的文件)

  8)特殊权限的文件查看

  查找 777 的权限的文件:find / *.jsp -perm 4777

  9)隐藏的文件(以 "."开头的具有隐藏属性的文件)

  注:在文件分析过程中,手工排查频率较高的命令是 find grep ls 核心目的是为了关联推理出可疑文件;

  3、端口、进程排查

  1)使用netstat 网络连接命令,分析可疑端口、IP、PID

  netstat -antlp|more

  查看下pid所对应的进程文件路径:运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)

  netstat 用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

  选项参数:

  -a 显示所有连线中的 Socket。

  -n 直接使用 IP 地址,而不通过域名服务器。

  -t 显示 TCP 传输协议的连线状况。

  -u 显示 UDP 传输协议的连线状况。

  -v 显示指令执行过程。

  -p 显示正在使用 Socket 的程序识别码和程序名称。

  -s 显示网络工作信息统计表。

  2)根据 netstat 定位出的 pid,使用 ps 命令,分析进程

  -a 代表 all。同时加上 x 参数会显示没有控制终端的进程

  -aux 显示所有包含其他使用者的行程(ps -aux --sort -pcpu | less 根据 cpt 使用率进行排序)

  -C 显示某的进程的信息

  -axjf 以树形结构显示进程

  ps aux | grep pid | grep –v grep

  4、日志排查

  1)查看系统用户登录信息

  a)使用 lastlog 命令,系统中所有用户最近一次登录信息。

  b)使用 lastb 命令,用于显示用户错误的登录列表;

  c)使用 last 命令,用于显示用户最近登录信息(数据源为/var/log/wtmp,var/log/btmp);

  utmp 文件中保存的是当前正在本系统中的用户的信息。

  wtmp 文件中保存的是登录过本系统的用户的信息。

  /var/log/wtmp 文 件 结 构 和 /var/run/utmp 文 件 结 构 一 样 , 都 是 引 用

  /usr/include/bits/utmp.h 中 的 struct utmp;

  

如何查看linux服务器是否被入侵

 

  关于如何查看linux服务器是否被入侵就为大家介绍到这里,如果您的linux服务器出现了一些异常的现象,应该第一时间就根据上面介绍的检查方法逐一排查,尽早解决入侵问题才能避免遭受更大的损失。如果您对于服务器被入侵的问题无法自己解决,也可以向安全狗寻求技术支持,我们会安排专业的安全技术团队为您解决。

标签: