歡迎您光臨本站 註冊首頁

古老的finger服務---詳細講解

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

版權聲明:可以自由轉載本文,但請務必保留本文的完整性。
作者:張子堅email:zhangzijian@163.com 說明:本文所涉及示例均在fedora core3下得到。


--------------------------------------------------------------------------------


概述


在這篇文檔里我將介紹finger服務的基本知識與運行原理。用大量篇幅詳細演示了finger命令的使用,並對其返回信息進行了解釋。還有修改用戶finger信息的方法。最後,講述了finger的安全隱患(可被黑客利用,獲取系統大量有用信息),及其處理方法。有意思的是,文章中還穿插了一些關於finger服務的小故事。


--------------------------------------------------------------------------------


什麼是finger服務


finger服務就是finger伺服器提供一項查詢本地或遠程主機用戶公開信息的服務。在RFC1288里,它的名字是用戶信息查找程序。

在早期的UNIX系統上,很多學生,研究人員利用finger服務來公開自己的某些特定信息,以便進行交流。比如有些研究人員用其公開自己的課題研究情況,有些老師公開一些課程時間安排。還有的主機播報球賽的情況,有的發布一些當前地震活動的信息。不過,finger服務更多的用處的是公開某人的特定信息。


某些返回信息如下:


用戶登陸名
真實姓名
辦公地點
家庭電話
辦公室電話
用戶主目錄
所使用的shell
計劃


說明:以上返回信息只是finger伺服器返回信息的某些,還有其他未給出。finger伺服器返回給你的信息根據不同系統而異。



--------------------------------------------------------------------------------


有關finger的歷史

finger命令最早出現在BSD3.0。後來很多unix版本都移植了這個程序,我所使用的fedora core3也有finger的客戶端。不過fc3默認情況下是關閉遠程finger服務的。現在,很多主機已經關閉這項服務(安全性原因,下面會提到)。不過,在美國的有些大學里還提供這項古老的服務。

coke伺服器的故事

在七十年代中期,卡內基-梅窿大學計算機系安裝了一台可口可樂機,後來這個系擴大,從這個機房分出一些程序員到不同樓層的辦公室。他們常常走了很遠,來到那台機器旁才發現沒有可口可樂。或者同樣糟糕,他們發現在機器中有可口可樂,但時間不夠,還是熱的。 他們的解決辦法是:在機器中安裝開關,以判斷可得到多少瓶碳酸飲料,並跟蹤還需多長時間每瓶飲料才冷卻。為了讓人們遠距離檢查這台機器,設立了一個專用Finger伺服器。當你Finger一個專用的用戶標識(coke),它將顯示這台coke機器容量的狀態。


--------------------------------------------------------------------------------



說明


不過現在它們的coke伺服器我已經finger不到了。也許是他們換了我不知道的伺服器,或者是已經關閉了這項服務。不過可以給你提供一個做finger實驗的finger伺服器,在下面會見到。


--------------------------------------------------------------------------------


finger服務基本原理


finger基於傳輸控制協議,用TCP埠79。本地主機打開一個遠程主機在Finger埠的連接。遠程主機的RUIP(遠程用戶信息程序)變成有效來處理請求。本地主機發送給RUIP一行基於Finger查詢說明的請求,然後等待RUIP響應。RUIP接收處理這個請求,返回應答,然後發起連接的關閉。本地主機接收到應答和關閉信號,然後執行本地端的關閉。


說明

此原理引自RFC1288原文。簡單點說,finger服務就是一套客戶機/伺服器系統。伺服器提供用戶信息,客戶機進行查詢。


--------------------------------------------------------------------------------


詳細演示finger的使用


使用finger服務只需要知道遠程主機名,用戶登陸名或者用戶的真實姓名。其基本格式為:finger user@host或finger@host。
以下示例中,遠程主機都為卡內基--梅隆大學計算機學院的finger伺服器。


示例1

不帶選項的finger命令

[root@localhost ~]# finger @cs.cmu.edu
Login Name TTY Idle When Where
root Super-User pts/2 13d Wed 10:53 venera.fac.cs.cmu.edu


講解


第一列Login是用戶登陸名,在此為root。

第二列Name是用戶真實姓名,在此為Super-User。

第三列TTY是終端名,在此為pts/2。

第四列Idle顯示用戶在此終端上的活動時間。如果記錄是空白,則表示那個人正在使用自己的終端。否則,你將看見終端空閑了多長時間。在此是空閑了13天。

第五列When顯示用戶登陸的日期和時間,在此為星期三的10點53分。

第六列Where顯示用戶是如何登錄的。如果此項為空白,則表示這個人正在使用直接連接到主機的終端。否則這個人通過給定名字的計算機或終端伺服器連接主機。在此為通過主機venera.fac.cs.cmu.edu。

示例2


帶-l參數的finger命令

[root@localhost ~]# finger -l @cs.cmu.edu
Login name: root In real life: Super-User
Directory: / Shell: /sbin/sh
On since May 10 10:53:14 on pts/2 from venera.fac.cs.cmu.edu
13 days Idle Time
No unread mail
No Plan.


講解


帶-l參數的finger命令返回的是比較詳細的信息。在這裡,多出了用戶主目錄,用戶shell,用戶是否有未讀郵件,用戶計劃等項目。

示例3


以下這個示例,有比較多的內容,可以仔細看看。可以看到一個中國人Hu Ning在他的計劃里畫上了一直狐狸(這隻狐狸很可能就是他)。更多的關於finger命令的講解可以參照下一節的內容。

[root@localhost ~]# finger h@cs.cmu.edu
Search limit exceeded, first 10 entries displayed using fuzzy name match
No entries found for exact uid match
No entries found for exact name match
Login: hhfu Name: Hui Hua Fu
Directory: /afs/cs.cmu.edu/user/hhfu
Mail is forwarded to hhfu+@imap-ns.srv.cs.cmu.edu
No Plan
Login: dwilson Name: Dan Wilson
Daniel H Wilson
Directory: /afs/cs.cmu.edu/user/dwilson
Mail is forwarded to dhw@alumni.cmu.edu
Plan:
Second year graduate student, Robotics Institute / CALD
Advisor: Chris Atkeson

Web Page: http://www.cs.cmu.edu/~dwilson/

Office: NSH A525
(412) 268-5909

Home: (412) 363-7462
Cell: (412) 478-2421
Login: ninghu Name: Ning Hu
Directory: /afs/cs.cmu.edu/user/ninghu
Mail is forwarded to ninghu+@imap.srv.cs.cmu.edu
Plan:
.% ^"b e$$ Ning Hu Ph.D. Student
F $$e L d$$"'F --------------------------------------
.% $$$r L J$$P 4% Computer Science Department
4 .$$$$ ^r ..J$$P $ Carnegie Mellon University
J 4$$$$ ^*$$$$$$e.d 5000 Forbes Ave
P 3$$$F $$ $$$$$$$$$e. Pittsburgh, PA 15213
* ^$$$z$$$$$$$$$$$$$$.b
d J$$$$$$$$$$$$$$$$$' Email: ninghu@cs.cmu.edu
J$F ^"$$$$$P""**$$$L $ F
4$$ -$$$$$e." $$$$zdFd Phone: (412)268-1557(O)
$$$ $$$$$$$$$$$$$$.$.% (412)243-6285(H)
4$$$" 4$P*$$$$$$$$$$$$.*
$$$% $$$$$$$$$$$$$$c" Home Page: www.cs.cmu.edu/~ninghu
$$% "" ^*$$$$J$$b^.
$% 4$$$b. " *$$* F :::::::::: :::::::: ::: ::: ::: :::
% ^$ee**"" :+: :+: :+: :+: :+: :+: :+:
4 F +:+ +:+ +:+ +:+ +:+ +:+ +:+
L .d :#::+::# +#+ +:+ +#++:+ +#++:
'*" d$ +#+ +#+ +#+ +#+ +#+ +#+
" .r$$%P%.@$" #+# #+# #+# #+# #+# #+#
### ######## ### ### ###
Login: yihchun Name: Yih-Chun Hu
Directory: /afs/cs.cmu.edu/user/yihchun
Mail is forwarded to yihchun@uiuc.edu
Plan:
I hope to graduate from CMU's Ph.D. program in Computer Science... eventually.

Office: 4114 Wean Hall, (412) 268-3075
Lab: 3418 Wean Hall, (412) 268-6972
Fax: (412) 268-5576
Home: (412) 688-0661
Web: http://www.cs.cmu.edu/~yihchun/
Snail: Yih-Chun Hu
Department of Computer Science
5000 Forbes Avenue
Carnegie Mellon University
Pittsburgh, PA 15213

Travel:
Login: jennylo Name: Hiu Yu Lo
Directory: /afs/cs.cmu.edu/user/jennylo
No Plan
Login: janiceb Name: Janice H. Brochetti
Directory: /afs/cs.cmu.edu/user/janiceb
Mail is forwarded to janiceb+@imap.srv.cs.cmu.edu
No Plan
Login: changbo Name: Changbo Hu
Directory: /afs/cs.cmu.edu/user/changbo
Mail is forwarded to changbo+@imap-ns.srv.cs.cmu.edu
No Plan
Login: hzhang Name: Hui Zhang
Directory: /afs/cs.cmu.edu/user/hzhang
Mail is forwarded to hzhang+@imap-ns.srv.cs.cmu.edu
Plan:
Professor

School of Computer Science Office: 7126 Wean Hall
Carnegie Mellon University Number: (412)268-8945
5000 Forbes Ave Email: hzhang@cs.cmu.edu
Pittsburgh, PA 15213-3891 URL: http://www.cs.cmu.edu/~hzhang


Administrative Associate: Kathy McNiff

Phone: (412) 268-5099
Fax: (412) 268-6714
Email: kmm@cs.cmu.edu





Login: hou Name: Lily Hou
Directory: /afs/cs.cmu.edu/user/hou
Mail is forwarded to hou+@imap.srv.cs.cmu.edu
Plan:

Login: hyu Name: Hua Yu
Directory: /afs/cs.cmu.edu/user/hyu
Mail is forwarded to hyu2000@gmail.com
Project:Remodel the wheel
Plan:
Hua Yu (thesis mode, reloaded)

Office:
2602B Newell Simon Hall (412) 268-5479
Language Technology Institute (LTI a.k.a. CMT)

Fax: (412) 268-6298

Delivery:
4502 Newell Simon Hall (LTI)
Carnegie Mellon Univ., 5000 Forbes Ave.
Pittsburgh, PA 15213

Home:
Apt.301, 5628 Hempstead St. (412) 422-2762
Pittsburgh, PA 15217

hyu@cs.cmu.edu http://www.cs.cmu.edu/~hyu


"Be who you are and say what you feel because the people who mind
don't matter and the people who matter don't mind." - Dr. Seuss

"I contend, that the Negro is the creative voice of America, is creative
America, and it was a happy day ... when the first unhappy slave landed
on its shores." - Duke Ellington

--------------------------------------------------------------------------------


finger命令使用方法

finger

finger [options]users

顯示有關一個或多個用戶的數據,包括每個用戶目錄下文件.plan和.project所列出的信息。可以把每個用戶指定為一個登陸名(完全匹配)或指定為姓或名(顯示所有匹配名字的信息)。網路環境中可識別參數的形式為user@host或@host。

選項

-s

顯示短格式,包括登錄名,真實名字,終端名,寫狀態,空閑時間,辦公地點和辦公室電話。

-l

強制採用長格式(默認),顯示由-s選項所包含的所有信息,以及主目錄,家庭電話,登錄shell,郵件狀態,.plan,.project和.forward。

-p

在顯示中省略.plan和.project文件中的內容。

-m

禁止對用戶「真實」名字的匹配。

說明

不指定finger的選項如果提供用戶名的話,默認設為-l輸出風格,否則為-s風格。注意在兩種格式中,如果信息不足,都有一些域可能丟失,如果沒有指定參數finger會為當前登錄的每個用戶列印一個條目。finger可以用來查看遠程機器上的用戶信息,格式是指定user為user@host或@host。前者的默認輸出為-l風格,後者的默認輸出為-s風格。-l是唯一的向遠地機器傳遞的選項。
--------------------------------------------------------------------------------


如何改變finger信息內容


可以使用chfn命令修改finger的內容。看以下示例:

[root@localhost ~]# chfn zhangzijian
Changing finger information for zhangzijian.
Name [zhangzijian]: laojian
Office [11229]: China
Office Phone [13888888888]:
Home Phone [13888888888]:

Finger information changed.


講解:不帶選項的chfn命令進入了交互模式。在每個項目里,不輸入任何內容會保持原值。

--------------------------------------------------------------------------------



使用-o選項


[root@localhost ~]# chfn -o 13800138000 zhangzijian
Changing finger information for zhangzijian.
Finger information changed.
講解:在這裡,我指定中國移動的充值電話為我的辦公室電話。



--------------------------------------------------------------------------------


chfn命令使用方法
chfn [options][username]


當用戶被驗證后,可以修改存放在/etc/passwd中並被顯示的信息。如果沒有options 選項,那麼chfn進入交互模式並提示可進行修改。為了得到一空白區域,輸入關鍵字none。只有特權用戶才可以為另一個用戶改變信息,對於普通用戶,在修改之前,chfn提示用戶輸入密碼。


選項


-f,--full-name

指定新的全名。


-h,--home-phone


指定新的家庭電話號碼。


-o,--office


指定新的辦公室號。


-p,--office-phone


指定新的辦公室電話號碼。


-u,--help


顯示幫助信息並退出。


-v,--version


顯示版本信息並退出。


--------------------------------------------------------------------------------


安全性

最流行的finger應用是美國加州大學Berkeley分校開發的。但是,BSD版本提供很少選項針對特定站點安全政策的詳細Finger RUIP(遠程用戶信息程序)或者保護用戶以免受到危險數據的攻擊。而且,它存在許多用戶和管理員需要注意的安全隱患,特別因為協議的目的是返回系統用戶信息,最有可能發生問題的部分。

某些Unix系統自帶的fingerd實現上存在安全問題,遠程攻擊者可能通過利用此漏洞得到系統用戶相關信息。以數字為用戶名提交一個請求,遠程攻擊者可能獲取系統上的某些帳號名。比如:finger 0@host 。

比如在以上卡內基--梅隆大學的示例中,可以獲得cs.cmu.edu這台主機的管理員所使用的shell信息,以及他什麼時候活動在這台主機上。這樣就為不法者提供了很多關於主機的信息。在下面的例子里,著名的morris蠕蟲,在1988年,導致占互聯網1/10的約6000台unix主機崩潰,損失為1500萬美圓。

回顧歷史[Robert tappan morris的網路蠕蟲用到了finger daemon。finger daemon允許從遠端主機發送至多512比特作為Finger請求。然而,finger卻有緩存溢出的漏洞,這是因為缺少正確的邊界檢查。被finger的主機將任何超過512比特的東西解釋成在本地執行的指令,無論finger daemon的許可權是什麼。]
對策

如果有可能,就關閉掉finger的遠程服務,可以保留本地服務。如果想禁止本地服務,可以直接刪除掉finger命令。

關閉遠程服務(linux下)

可以在inetd.d/xinetd.d中設置fingerd的啟動腳本,把disable項設置為yes即可。

關閉遠程服務(solaris下)

打開/etc/inetd.conf文件,找到如下行:
finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd

在該行的開始處增加#號來將其註釋
#finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd

3. 重新啟動inetd
# ps -ef|grep inetd
root 167 1 0 Oct 07 ? 0:07 /usr/sbin/inetd -s -t
# kill -HUP 167 (上面的例子中,167是inetd的pid)


--------------------------------------------------------------------------------

如果還想保留finger服務,那麼就要經常注意伺服器版本的更新。並且要把嘗試連接該伺服器的ip地址記錄到日誌里。


--------------------------------------------------------------------------------


關於finger的更多信息
《finger的故事》http://lib.wyu.edu.cn/internet/internet_dc_8.html


RFC1288(中文)http://www.cnpaf.net/rfc/rfc1288.txt


RFC1288(英文)http://www.ietf.org/rfc/rfc1288.txt?number=1288


--------------------------------------------------------------------------------


參考文獻
man-page中文版
http://cmpp.linuxforum.net/cman-html/man1/finger.1.html

[火星人 ] 古老的finger服務---詳細講解已經有1379次圍觀

http://coctec.com/docs/linux/show-post-204410.html