亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4299 | 回復(fù): 7
打印 上一主題 下一主題

[已解決]SSH 登錄類型ssh/sftp統(tǒng)計 開啟fingerprint [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-16 15:15 |只看該作者 |倒序瀏覽
本帖最后由 可可火山 于 2011-12-16 21:46 編輯

上次統(tǒng)計 登錄用戶,IP和 fingerprint 用一句 awk 語句就搞定了
http://72891.cn/thread-3629504-1-1.html

現(xiàn)在需要多統(tǒng)計些東西,我需要區(qū)分登錄的是交互式ssh還是 sftp/scp。
  1. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.info] Accepted publickey for user1 from 192.168.1.2 port 61880 ssh2
  2. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.info] subsystem request for sftp  
復(fù)制代碼

  1. { if( $0 ~ /Found matching/ ) { fingerprint[$5]=$13 } else if ( $0 ~ /Accepted publickey/ && $12 != "root" ) { print fingerprint[$5],$12,$14;delete fingerprint[$5] } }
復(fù)制代碼
對我上次awk腳本多做些邏輯,一般情況下如果"Accepted publickey"下一行是“subsystem request for sftp”的話就是 sftp。這個用 awk 的 getline讀入下一行并做判斷就可以了。
  1. {
  2.     if( $0 ~ /Found matching/ )
  3.     { FINGERPRINT[$5]=$13;OK="false" }
  4.     else if ( $0 ~ /Accepted publickey/ && $12 != "root" )
  5.     { USER[$5]=$12;IP[$5]=$14;TYPE[$5]="ssh"
  6.        getline
  7.        if ( $0 ~ /subsystem request for sftp/ )
  8.            TYPE[$5]="sftp"
  9.        OK="true"
  10.     }
  11.     if ( OK == "true" )
  12.     { print USER[$5],TYPE[$5],IP[$5],FINGERPRINT[$5];OK="false" }
  13. }
復(fù)制代碼
不過如果當(dāng)某一時刻有很多連接時,腳本工作就不正常了,因為不是每條"Accepted publickey"對應(yīng)的session下一行是“subsystem request for sftp”
在awk中如何靈活的判斷下面幾行的內(nèi)容來加些邏輯?

  1. [user@srever (1)]$cat messages_part
  2. Dec 13 03:30:56 server sshd[27212]: [ID 800047 auth.info] Connection from 192.168.1.2 port 61878
  3. Dec 13 03:30:56 server sshd[27214]: [ID 800047 auth.info] Connection from 192.168.1.2 port 61879
  4. Dec 13 03:30:57 server sshd[27237]: [ID 800047 auth.info] Connection from 192.168.1.2 port 61880
  5. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.notice] Failed none for user1 from 192.168.1.2 port 61879 ssh2
  6. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.notice] Failed none for user1 from 192.168.1.2 port 61878 ssh2
  7. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] Found matching DSA key: 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  8. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] Found matching DSA key: 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  9. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] Found matching DSA key: 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  10. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] Found matching DSA key: 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  11. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] Accepted publickey for user1 from 192.168.1.2 port 61879 ssh2
  12. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] Accepted publickey for user1 from 192.168.1.2 port 61878 ssh2
  13. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] subsystem request for sftp
  14. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] subsystem request for sftp
  15. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] Connection closed by 192.168.1.2
  16. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] Closing connection to 192.168.1.2
  17. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] Connection closed by 192.168.1.2
  18. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] Closing connection to 192.168.1.2
  19. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.notice] Failed none for user1 from 192.168.1.2 port 61880 ssh2
  20. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.info] Found matching DSA key: 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  21. Dec 13 03:30:57 server last message repeated 1 time
  22. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.info] Accepted publickey for user1 from 192.168.1.2 port 61880 ssh2
  23. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.info] subsystem request for sftp
  24. Dec 13 03:30:58 server sshd[27238]: [ID 800047 auth.info] Connection closed by 192.168.1.2
  25. Dec 13 03:30:58 server sshd[27238]: [ID 800047 auth.info] Closing connection to 192.168.1.2
  26. Dec 13 03:31:02 server sshd[27436]: [ID 800047 auth.info] Connection from 192.168.1.2 port 61918
  27. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.notice] Failed none for user1 from 192.168.1.2 port 61918 ssh2
  28. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.info] Found matching DSA key: 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  29. Dec 13 03:31:03 server last message repeated 1 time
  30. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.info] Accepted publickey for user1 from 192.168.1.2 port 61918 ssh2
  31. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.info] subsystem request for sftp
  32. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.info] Connection closed by 192.168.1.2
  33. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.info] Closing connection to 192.168.1.2
  34. Dec 13 03:31:50 server sshd[29329]: [ID 800047 auth.info] Connection from 192.168.1.2 port 61996
  35. [user@srever (1)]$awk -f extract.awk messages_part
  36.    44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  37. user1 sftp 192.168.1.2 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
  38. user1 sftp 192.168.1.2 44:8f:08:ff:ff:ff:ff:be:e3:de:62:32:8d:b4:6d:c1
復(fù)制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2011-12-16 18:23 |只看該作者
  1. {
  2.     if( $0 ~ /Found matching/ )
  3.     { FINGERPRINT[$5]=$13 }
  4.     else if ( $0 ~ /Accepted publickey/ && $12 != "root" )
  5.     { USER[$5]=$12;IP[$5]=$14;TYPE[$5]="ssh"}
  6.     else if ( $0 ~ /subsystem request for sftp/ )
  7.     {  TYPE[$5]="sftp" }
  8. }
  9. END {
  10.     for ( SSHDSESSION in USER )
  11.         print USER[SSHDSESSION],TYPE[SSHDSESSION],IP[SSHDSESSION],FINGERPRINT[SSHDSESSION]
  12. }
復(fù)制代碼
上面的awk腳本可以把每次的ssh session 記錄到 數(shù)組中,并且在END部分都打印出來。代碼邏輯基本OK,但是我以前碰到過 sshd[xxxxxx] 部分在一天的log可能重復(fù),而我目前的腳本還沒考慮到這個情況。
這個問題參見
http://72891.cn/thread-3629504-1-1.html
代碼還需要在考慮全面些

  1. [user@server (0)]$awk -f extract.awk messages_part
  2. user1 sftp 192.168.1.2 44:8f:08:28:ff:ff:ff:ff:e3:de:62:32:8d:b4:6d:c1
  3. user1 sftp 192.168.1.2 44:8f:08:28:ff:ff:ff:ff:e3:de:62:32:8d:b4:6d:c1
  4. user1 sftp 192.168.1.2 44:8f:08:28:ff:ff:ff:ff:e3:de:62:32:8d:b4:6d:c1
  5. user1 sftp 192.168.1.2 44:8f:08:28:ff:ff:ff:ff:e3:de:62:32:8d:b4:6d:c1

  6. [user@server (0)]$grep sftp messages_part
  7. Dec 13 03:30:57 server sshd[27218]: [ID 800047 auth.info] subsystem request for sftp
  8. Dec 13 03:30:57 server sshd[27213]: [ID 800047 auth.info] subsystem request for sftp
  9. Dec 13 03:30:57 server sshd[27238]: [ID 800047 auth.info] subsystem request for sftp
  10. Dec 13 03:31:03 server sshd[27437]: [ID 800047 auth.info] subsystem request for sftp
復(fù)制代碼

論壇徽章:
15
2015年辭舊歲徽章
日期:2015-03-03 16:54:15雙魚座
日期:2015-01-15 17:29:44午馬
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉雞
日期:2014-04-02 12:24:51雙子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥豬
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
3 [報告]
發(fā)表于 2011-12-16 19:44 |只看該作者
看不到scp 的例子,缺省認(rèn)為和sftp 格式一樣。 subsystem request for scp

以下代碼會自動給出ssh,sftp 或scp類型。
  1. awk '/Found matching/ {FINGERPRINT[$5]=$13}
  2.      /Accepted publickey/ && $12 != "root"{ USER[$5]=$12;IP[$5]=$14;TYPE[$5]=$NF}
  3.      /subsystem request/ {TYPE[$5]=$NF}
  4.      END { for ( SSHDSESSION in USER )
  5.                print USER[SSHDSESSION],TYPE[SSHDSESSION],IP[SSHDSESSION],FINGERPRINT[SSHDSESSION]
  6.          }' messages_part
復(fù)制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2011-12-16 21:25 |只看該作者
看不到scp 的例子,缺省認(rèn)為和sftp 格式一樣。 subsystem request for scp

以下代碼會自動給出ssh,sftp  ...
rdcwayx 發(fā)表于 2011-12-16 19:44


謝謝你的回復(fù),我覺得奇怪的是scp是不產(chǎn)生 subsystem log的,以下是一次scp localhost的log。

Dec 16 21:21:57 server sshd[1219]: [ID 800047 auth.info] Failed none for user from ::1 port 55486 ssh2
Dec 16 21:21:57 server sshd[1219]: [ID 800047 auth.info] Found matching DSA key: b6:ff:ff:ff:ff:72:f5:18:1b:f6:d0:f8:6f:1c:40:6f
Dec 16 21:21:57 server last message repeated 1 time
Dec 16 21:21:57 server sshd[1219]: [ID 800047 auth.info] Accepted publickey for user from ::1 port 55486 ssh2
Dec 16 21:21:57 server sshd[1219]: [ID 800047 auth.info] Connection closed by ::1
Dec 16 21:21:57 server sshd[1219]: [ID 800047 auth.info] Closing connection to ::1

論壇徽章:
0
5 [報告]
發(fā)表于 2011-12-16 21:34 |只看該作者
目前下面的awk腳本基本滿足了我的需求
ssh登錄log里可能會存在同時登錄導(dǎo)致日志是相互疊加的。
還有就是 sshd[xxxxx]的session id (我自己叫的)在一天的log里可能會重復(fù)。
  1. {
  2.     if( $0 ~ /Found matching/ ) {
  3.         if ( FINGERPRINT[$5] != $13 && USER[$5]!="" && USER[$5]!="root" )
  4.         { print USER[$5],IP[$5],FINGERPRINT[$5],TYPE[$5] }
  5.         FINGERPRINT[$5]=$13
  6.     }
  7.     else if ( $0 ~ /Accepted publickey/ )
  8.     { USER[$5]=$12;IP[$5]=$14;TYPE[$5]="ssh" }
  9.     else if ( $0 ~ /subsystem request for sftp/ && USER[$5] !="" )
  10.     { TYPE[$5]="sftp" }
  11. }
  12. END {
  13.     for ( SSHDSESSION in USER ){
  14.         if ( USER[SSHDSESSION]!="" && USER[SSHDSESSION] !="root" )
  15.             print USER[SSHDSESSION],IP[SSHDSESSION],FINGERPRINT[SSHDSESSION],TYPE[SSHDSESSION]
  16.     }
  17. }
復(fù)制代碼
不過我對awk內(nèi)的數(shù)組使用還有些疑問:(awk沒法調(diào)試,所以都是打print來看的)
如果我在END外對 USER[sshd[xxxx]]做了判斷,這里原來sshd[xxxx]為下標(biāo)的元素是沒有的,這樣會導(dǎo)致加個下標(biāo)為 sshd[xxxx]的元素到USER數(shù)組么?
雖然自覺告訴我不會,但是我調(diào)試一個問題時表現(xiàn)好像這樣的。

論壇徽章:
15
2015年辭舊歲徽章
日期:2015-03-03 16:54:15雙魚座
日期:2015-01-15 17:29:44午馬
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉雞
日期:2014-04-02 12:24:51雙子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥豬
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大;照
日期:2013-04-17 11:48:45
6 [報告]
發(fā)表于 2011-12-19 07:23 |只看該作者
雖說你自己標(biāo)了“已解決”, 但其實你沒有明白我改了你的代碼的目的。 尤其是對TYPE 數(shù)組進(jìn)行直接賦值的部分。

論壇徽章:
0
7 [報告]
發(fā)表于 2011-12-19 11:28 |只看該作者
回復(fù) 6# rdcwayx

我加了不少自己的判斷實現(xiàn)了邏輯。
確實忽略了TYPE部分,其實sshd的log已經(jīng)包含了type信息!! 謝謝。我的這些判斷現(xiàn)在看起來是多余。


我開始也想深入了解下sshd log每個域的對應(yīng)信息,稍微看了下openssh的log未果,等下再仔細(xì)看看。

關(guān)于scp,我想不會生成 ubsystem request for scp的log,因為和sftp不同, sftp是sshd的subsystem。
//// file /etc/ssh/sshd_config
# sftp subsystem
Subsystem       sftp    /usr/lib/ssh/sftp-server

目前我們的sshd LogLevel是verbose,不能再往DEBUG這樣輸出大量log的level改了,如果能在這個級別的LogLevel分辨 scp和一般的ssh登錄,也是非常有意義的!

論壇徽章:
0
8 [報告]
發(fā)表于 2011-12-19 13:58 |只看該作者
確實可以直接那sshd log最后一個域來做 type。簡化了很多,我也曾嘗試了解下日志中每個域的意義,沒理解到這一層。謝謝。

我期望能分辨用戶登錄的用途,能分開ssh/sftp/scp就最好,但是scp應(yīng)該不會生成類似subsystem request for scp的日志,因為只有sftp是sshd的subsystem。

# sftp subsystem
Subsystem       sftp    /usr/lib/ssh/sftp-server

在目前的LogLevel下看起來不能區(qū)分。也不能再調(diào)高level了,DEBUG生成的日志太多,生產(chǎn)系統(tǒng)上這個修改不能接受。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP