编程是一门艺术

raptor.zh(at)gmail.com Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

archives 存档

01 Jan - 31 Dec 2018
01 Jan - 31 Dec 2017
01 Jan - 31 Dec 2016
01 Jan - 31 Dec 2015
01 Jan - 31 Dec 2014
01 Jan - 31 Dec 2013
01 Jan - 31 Dec 2012
01 Jan - 31 Dec 2011
01 Jan - 31 Dec 2010
01 Jan - 31 Dec 2009
01 Jan - 31 Dec 2008
01 Jan - 31 Dec 2007
01 Jan - 31 Dec 2006
01 Jan - 31 Dec 2005
01 Jan - 31 Dec 2004
01 Jan - 31 Dec 2003
01 Jan - 31 Dec 2002
01 Jan - 31 Dec 2001
01 Jan - 31 Dec 2000
01 Jan - 31 Dec 1999

--

links 链接

--

一次乌龙的SSH攻击处理

发现

FreeBSD有个很好的功能就是每天会自动给root用户发两封邮件,一封是日常报告,一封是安全报告。我一般都会把这个邮件转发到自己的邮箱,这样每天就可以在手机上关注一下系统状态了。

前几天在手机上看每日安全报告时发现家里的服务器有大量失败的SSH登录,回电脑上登上去一看:

grep error auth.log | tail

基本上每隔几分钟就出现一次,统计了一下IP,只有少数几个,并且都是来自于本市。

...
Mar 26 03:00:41 myserver sshd[33056]: error: PAM: authentication error for raptor from 117.25.180.xx
Mar 26 03:00:41 myserver sshd[33056]: error: maximum authentication attempts exceeded for raptor from 117.25.180.xx port 2423 ssh2 [preauth]
...

首先想到的就是:不会是黑客来攻击了吧?

但是分析下来又觉得不可能:

  1. 家里IP是动态的,除非知道我的动态域名
  2. 其次,我的SSH用的不是默认端口
  3. 第三,ROOT用户是禁止登录的,所以得知道我的用户名

除非我的电脑被黑,但是以我这么小心的人,可能性不太大啊,难道是某个国产软件在耍流氓?电脑里装的国产软件屈指可数,都是正经软件啊。

查了几天没有头绪,换了端口,加了一些屏蔽IP的配置也没什么用。

直到上周末忽然发现其中一个攻击IP居然就是自己家里的外网IP,才知道原来攻击来自自己的电脑。

排查

(假设SSH端口号为2222)

lsof -i :2222

然而并没有结果。看了一下日志,显示是每隔五分钟左右尝试登录,所以这个进程应该不是长期运行,而是定时运行,但是cron里并没有这样的东西,所以只能循环监控了:

while (( $? == 1 )) ; do lsof -i :2222 ; done;

等了五分钟,终于抓住一个:

ssh     25390 raptor    3u  IPv4 0x59231eed85a432f3      0t0  TCP 10.0.xxx.xxx:64077->217.180.xxx.xxx.broad.xm.fj.dynamic.163data.com.cn:2222 (SYN_SENT)

居然是SSH?看来还得抓一下它的父进程:

(while (( $? == 1 )) ; do lsof -i :2222 ; done; ) && ps -ef $(lsof -i :2222 | tail -n 1 | cut -b 8-14)

居然是HG?

  501 25390 25374   0 11:05上午 ??         0:00.04 ssh raptor@xxxxx hg -R hg/proj serve --stdio

得,继续排查。当然,到这一步基本上已经可猜到是谁了,要么是zsh,要么是pycharm。

不过单行命令已经不太好写了,写成一个脚本来跑吧:

#!/bin/bash

RES=1
while 
do
    lsof -i :2222
    RES=$?
done

PID=`lsof -i :2222 | tail -n 1 | cut -b 8-14`
PID1=`ps -ef $PID | tail -n 1 | cut -b 12-18`
PID2=`ps -ef $PID1 | tail -n 1 | cut -b 12-18`
ps aux | grep $PID2 | grep -v grep

果然是pycharm:

raptor            4806   0.0  9.7  7425152 812648   ??  S    五10下午  12:55.38 /Applications/PyCharm CE.app/Contents/MacOS/pycharm

解决

打开pycharm的Preferences-Version Control-Mercurial,将Check incomming and outgoing changesets的选中去掉。

观察了半小时,终于没有再出现那些“攻击”了。

原因是:

pycharm每隔五分钟会调用hg serve --studio连我的hg服务端检查更新,我又在这个项目的hgrc里配置了默认的ssh连接,但是这台电脑又没有配置ssh证书,需要登录密码,于是pycharm的这个操作就会立即失败,在服务端就留下了一次失败的ssh登录记录。

推送到[go4pro.org]

Trackback link:

Please enable javascript to generate a trackback url

No trackbacks

评论(0)


 
   
 
  表情图标 

 


提示: 除了 <b> 和 <i> 之外,其他的Html标签都将从您的评论中去除.url或mail地址会被自动加上链接.