日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ssh被暴力猜解登录密码,利用pandas简单分析ssh登录失败记录

發(fā)布時(shí)間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssh被暴力猜解登录密码,利用pandas简单分析ssh登录失败记录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本人為了學(xué)習(xí)和使用VPS因此手中長期配置一到兩臺(tái)VPS,沒想到這點(diǎn)蒼蠅肉也成了黑客眼里的肥肉。

近來一個(gè)月發(fā)現(xiàn)被人正在暴力猜解ssh登錄密碼,心想,這準(zhǔn)是有人想要拿shell想要把這點(diǎn)蒼蠅肉都想占為己有。然而我也不是眼里能揉這種沙子的人。于是就有了分析一下登錄失敗記錄信息的念頭。首先我們執(zhí)行命令:

lastb >>faillog.txt

將所有登錄失敗信息導(dǎo)出來,然后我們下載faillog.txt文件到本地目錄,就地在此目錄中開vscode或jupyter并啟用python環(huán)境。

我們的faillog.txt文件是一個(gè)類似csv的一個(gè)文件,只是并非用逗號(hào)分割,而是用空格分割,格式如下:

root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 181.142.251.23.b Tue Apr 28 22:16 - 22:16 (00:00) xml ssh:notty 212.64.59.227 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) xml ssh:notty 212.64.59.227 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) lxk ssh:notty h-125-44.a400.pr Tue Apr 28 22:16 - 22:16 (00:00)

我們需要令pandas按一個(gè)或一個(gè)以上空格作為分隔符來讀取為DataFrame。我們下一步就要添加第一行作為整個(gè)表格的表頭:

于是前幾行就成了

user channel sourceip weekday month day starttime to endtime during root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 181.142.251.23.b Tue Apr 28 22:16 - 22:16 (00:00) xml ssh:notty 212.64.59.227 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) xml ssh:notty 212.64.59.227 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00) root ssh:notty 218.92.0.206 Tue Apr 28 22:16 - 22:16 (00:00)

注意,表頭要和下面的數(shù)據(jù)列一一對(duì)應(yīng)起來,表頭的列數(shù)要和數(shù)據(jù)的列數(shù)相同。需要注意的是,我們因?yàn)橐呀?jīng)決定以空格作為表分隔符,那么只要有空格分割的部分就要當(dāng)做一個(gè)列。比如“-”前后有空格,所以也要當(dāng)成一個(gè)數(shù)據(jù)列,大不了后面我們?nèi)サ粢恍┯貌坏降牧芯褪橇恕?/p>

安裝pandas:

$ pip install pandas

接下來我們開始導(dǎo)入到DataFrame,我們用read_csv或read_table以\s+模式讀入:

import pandas as pdcsvfile = pd.read_csv("faillog.txt",sep="\s+") data = pd.DataFrame(csvfile, columns=['user', 'sourceip']) data.head(15)

如之前我們所加的列名,我們只需要猜解時(shí)登錄的用戶名和來源IP地址讀入表中,我們只需要將這兩個(gè)列的列名作為DataFrame的columns的參數(shù)加進(jìn)來就可以了。

執(zhí)行了data.head(15)這句話以后,就會(huì)以表格的形式打印前15行數(shù)據(jù)。

?usersourceip01234567891011121314
root218.92.0.206
root181.142.251.23.b
xml212.64.59.227
root218.92.0.206
xml212.64.59.227
root218.92.0.206
root218.92.0.206
root218.92.0.206
lxkh-125-44.a400.pr
root218.92.0.206
lxkh-125-44.a400.pr
root120.92.88.227
root218.92.0.206
shashi106.54.205.236
shashi106.54.205.236

我們需要統(tǒng)計(jì)下,猜解次數(shù)最多的前10名IP地址:

ipcounts = data.loc[:,'sourceip'].value_counts() headip = pd.DataFrame(ipcounts.head(10)) headip

我們通過loc算符讀取所有行以及sourceip這一列,使用value_counts()函數(shù)進(jìn)行頻次統(tǒng)計(jì),然后輸出暴力猜解前10名IP:

?sourceip218.92.0.206218.92.0.20749.88.112.73112.85.42.72112.85.42.9449.88.112.7449.88.112.7058.198.177.4049.88.112.71112.85.42.195
82882
81502
24522
16506
14506
8302
6138
5204
4092
3980

接下來我們統(tǒng)計(jì)下一共多少IP在猜解攻擊:

ipcounts.shape

輸出為

5430

再看一下所有的這些IP總共進(jìn)行了多少次暴力猜解攻擊:

csvfile.shape

輸出為

783627

?

也就是說,這一個(gè)月里有5430個(gè)IP(肉雞)在嘗試分布式暴力猜解我這個(gè)小小的VPS的密碼,截止到收集數(shù)據(jù)為止一共猜解了78萬余次,按照25天計(jì),平均每天每分鐘21.7次猜解嘗試,真的是讓在下不勝惶恐以至汗顏。這是準(zhǔn)備把我的這臺(tái)蒼蠅肉VPS非要拿下不可?

算了,還是換掉SSH端口+安裝Fail2ban,順便改個(gè)超強(qiáng)密碼以絕后患。

故事就這么結(jié)束了……

?

才怪!

我還是很好奇,這些黑客究竟都嘗試了哪些用戶名進(jìn)行密碼猜解?

所以我還是手欠的統(tǒng)計(jì)了一下被嘗試猜解最多的用戶名排名:

usernamecounts = data.loc[:,'user'].value_counts() tb_usernamecounts = pd.DataFrame(usernamecounts.head(60)) tb_usernamecounts

這回我輸出了前60名,夠在這里閱讀的讀者做參考了

?userrootadmintestubuntupostgresuseroracledeploygitftpuserguesthadooptest1nagiosubntsupportteamspeatest2testerservertesteminecraftestftptestusertestingtomcatfirefartjenkinsbackupmysqluser1usuariopidevelopezabbixadministdevtswwwstudentts3apachetest3webmastewebdemoinfoansibleAdminwww-datasteamsinusbottombotodooAdministadmin1vncuftp1234
425035
28574
14836
11050
10580
6964
5108
4992
4568
4310
2160
2124
1522
1172
1024
1000
988
946
936
898
868
720
718
708
680
676
674
662
648
641
632
618
606
584
576
544
544
544
544
534
524
520
504
488
488
480
472
464
448
444
444
440
432
428
428
416
410
400
388
384

毫無疑問被猜解 的用戶名首當(dāng)其沖的就是root,因?yàn)閞oot不但是最高權(quán)限也是開發(fā)者最常用的ssh登錄用戶名。

然后就是

root admin test ubuntu postgres user oracle deploy git ftpuser guest hadoop

基本上就跟開發(fā)者習(xí)慣用的用戶名都卯上了…

還沒說完呢,如果查查看我前面的那個(gè)IP排名的話,你會(huì)發(fā)現(xiàn)很多東西,比如這些IP的歸屬地等等。

我在查這些IP的時(shí)候意外發(fā)現(xiàn)了用于記錄IP地址數(shù)據(jù)庫的站點(diǎn),里面記錄了很多受害者所受到攻擊的來源IP,都在這個(gè)網(wǎng)站上記錄了。

https://ip-46.com/

查一下,你就知道是哪來的黑客在攻擊你的VPS了。

對(duì)于企業(yè)來說,收集這些數(shù)據(jù)有個(gè)巨大的好處,就是收集安全大數(shù)據(jù),為自己的網(wǎng)站服務(wù)進(jìn)行防護(hù)可有的放矢的辨認(rèn)和識(shí)別這些黑客用戶,雖然算不上是金礦,但是也算是一種黑礦,保護(hù)自己企業(yè)服務(wù)的黑礦。

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的ssh被暴力猜解登录密码,利用pandas简单分析ssh登录失败记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。