Ubuntu16.04如何发现隐藏的ssh登录行为
Posted 玩电脑的辣条哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu16.04如何发现隐藏的ssh登录行为相关的知识,希望对你有一定的参考价值。
环景:
Ubuntu16.04
问题描述:
如何发现隐藏的ssh登录行为
解决方案:
一、测试
1.正常的登录服务器
输入 w 命令显示
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/13 192.168.1.21 16:16 1.00s 0.05s 0.01s w
输入 last 命令显示
root pts/13 192.168.1.21 Mon Feb 7 16:16 still logged in
2.ssh隐藏登录w和last看不见记录
ssh -lroot 192.168.1.111 /bin/bash
root@192.168.1.111’s password:
输入密码登入成功
ls
clearIndexdata.log
core
sensors
swappiness~
swappinesz~
3.输入 w 命令显示
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/13 192.168.1.21 16:16 1.00s 0.05s 0.01s w
4.输入 last 命令显示
root pts/13 192.168.1.21 Mon Feb 7 16:16 still logged in
5.为什么用ssh -lroot 192.168.1.111 /bin/bash
w和last都没有记录
w命令显示信息来源于utmp,last 来源于wtmp,并不是所有程序登录的时候都会调用utmp 和wtmp 日志记录接口,只有交互式会话,才会调用utmp 和 wtmp的日志记录接口,比如 通过tty 或者pts或者图形界面登录的都会调用utmp 和wtmp 日志记录接口,我们在使用w 和last 命令的时候就会发现登录信息
6.ssh -lroot 192.168.1.111 /bin/bash 为什么不属于交互式会话
ssh -lroot 192.168.1.111 /bin/bash 其实就相当于登录之后直接调用bash这个名,此时系统没有为其分配tty,不算一个完整交互式会话,只不过bash 接受输入,然后有输出,让我们误以为是交互式会话,其实不然,你可以将/bin/bash 替换成//bin/ls 试一下,就是简单执行以下就退出了
7.还有一种看起来更像是交互式会话的,但实际却不是的一种登录技巧,这种方式也会将登录行为隐藏于w和last 命令
ssh -T root 192.168.1.111 /bin/bash -i
-T 表示不分配伪终端 (正常的会话,在分配伪终端之后才会调用utmp和wtmp的日志接口)
/bin/bash -i 表示在登录之后 调用bash命令
-i 表示是交互式shell
二、如何发现隐匿的ssh登录行为
如果是隐藏的ssh正在进行连接,可以通过lsof 或者 netstat 或者ps 命令发现
1.通过lsof发觉异常ssh登录
lsof -i:22 | grep EST
sshd 26627 root 3u IPv4 114971667 0t0 TCP 192.168.1.111:22->192.168.1.21:64035 (ESTABLISHED)
sshd 1788 root 3u IPv4 114723410 0t0 TCP 192.168.1.111:22->192.168.1.23:50812 (ESTABLISHED)
两条已建立的连接,一条是通过pts/0正常登录的,一条就是隐藏于w和last的ssh登录
2.通过ps命令发现异常ssh登录
ps -ef | grep ssh
root 26627 1777 0 17:08 ? 00:00:00 sshd: root@notty
这里有个notty的 sshd 进程,说明就是通过上面隐藏于w和last命令的ssh登录行为
3.如果是历史ssh 隐藏登录行为,如何找出历史登录行为呢
通过分析/var/log/auth.log 日志(有的系统是/var/log/secure)
cat /var/log/auth.log
Feb 7 17:08:28 GR-TR sshd[26627]: Accepted password for root from 192.168.1.23 port 62035 ssh2
Feb 7 17:17:19 GR-TR sshd[26627]: Disconnected from 192.168.1.23 port 62035
从 Accepted password for root from 192.168.1.21 一行看出ssh的登录时间
从Disconnected from 192.168.1.21 一行看出ssh的退出时间
从auth.log中的分析和 last 对不上,那么这些对不上的登录行为有可能就是隐藏方式登录
以上是关于Ubuntu16.04如何发现隐藏的ssh登录行为的主要内容,如果未能解决你的问题,请参考以下文章