xinetd使用指南(二)(轉)

post0發表於2007-08-11
xinetd使用指南(二)(轉)[@more@]

例1 檔案/etc/xinetd.conf中的一部分 

Serice ftp 

{ 

Socket_type=stream 

  protocol=tcp 

  wait=no 

  user=root 

  server=root 

  Server_args= - 1 - a 

} 

Service telnet 

{ 

  Socket_type=stream 

  protocol=tcp 

  wait=tcp 

  user=root 

  server=/usr/sbin/in.telnetd 

} 

建立/etc/xinetd.conf檔案最容易的方法是用itox工具(該例假定當前工作目錄是xinetd的編譯目錄): 

# xinetd/itox -daemon_dir /usr/sbin /etc/xinetd.conf。itox的引數-daemon_dir  /usr/sbin指定服務程式的目錄位置,如果實現了TCP_Wrappers,從/etc/inetd.conf中是不能確定它的,轉換完成以後,就開始增加屬性和值,以限制訪問並增加登記,最後要手工修改/etc/xinetd.conf以充分利用xinetd的特性;否則,如果只把 /etc/inetd.conf轉換為/etc/xinetd.conf, xinetd的行為就和inetd一樣了。 

表1詳述了在/etc/xinetd.conf中最常使用的一些屬性和值。當然還有許多其他屬性,詳細配置選項可以在安裝xinetd以後透過man xinetd.conf來得到。在本小節後面的“配置例項”中,將用一些例子闡明其中的許多屬性。 

表 2中給出only_from和no_access表的語法,定義了指定主機名,IP地址和網路的語法。注意表2中最後一項netmask的語法和之前看到的有所不同。它沒有采用傳統的十進位制或十六進位制netmask的表示方法,而是採用一個整數表示從netmask(用二進位制表示)的最高位(最左端)開始起每位都為1的位數。因此,給定例子的netmask值設定為20,意味著其最左端的20位都設定為1,而餘下12位設定為0,或 

11111111    11111111   11110000   00000000 

它是十進位制netmask255.255.240.0的二進位制表示。 

表2 /etc/xinetd.conf的訪問控制表的語法 

語  法 

描  述 

hostname 

可解析的主機名。使用和這個主機名相關的所有IP地址 

IPaddress 

點和十進位制形式的標準IP地址,如192.168.0.1 

Net_name 

/etc/networks中的網路名 

x.x.x.0 x.x.0.0 

x.0.0.0 0.0.0.0 

0作為萬用字元看待。如項88.3.92.0匹配從88.3.92.0到88.3.92.255的所有IP地址。項0.0.0.0匹配所有地址 

x.x.x.{a,b,…} 

x.x{a,b,…} 

x.{a,b,…} 

指定主機表。如172.19.32.{1,56,59}意味著含IP地址172,19.32.1,172.19.32.56和172.19.32.59的表 

Ipaddress/netmask  

定義要匹配的網路或子網。如172.19.16.0/20匹配從172.19.16.0到172.19.31.255的所有地址 

在看了這些基本屬性之後,下面我們仔細討論那些必需的屬性,特定服務和一些配置例項。 

必需的屬性 

對每種服務都必須指定某些屬性。一些服務比其他服務需要更多屬性,因為它們不被預設定義(即不在/etc/services或/etc/rpc中)。表3列出了必需的屬性。 

表3 必需的屬性 

語 法 

描 述 

Socket_type 

所有服務 

Wait 

所有服務 

User 

在/etc/services或/etc/rpc中列出的服務 

Server 

非內部服務 

Port 

不在/etc/services中的非RPC服務 

Protocol 

不在/etc/services中的所有RPC服務和所有其他服務 

Rpc_version 

所有RPC服務 

Rpc_number 

不列在/etc/rpc中的任何RPC服務 

特定的xinetd服務 /etc/xinetd.conf檔案中有4個特殊項。它們分別是defaults, servers,services和 xadmin。Defaults項不是一項服務,且不需要前置service關鍵字(否則它會被當成稱為defaults的服務對待)。這些特殊項在以下 4小段中描述。 

Defaults項 

/etc/xinetd.conf檔案中的defaults項是實現為該檔案中的所有服務指定某些屬性的預設值。這些預設值可被每個服務項取消或修改。表4中列出可在defaults項中指定的屬性。這個表也指明瞭具體服務項中可以修改哪些屬性。 

表4 defaults可用的屬性 

屬性 

服務修改 

Log_on_success 

Log-on_failure 

 Only_from 

 No_access 

 Passenv 

可以用=運算子改寫或用+ =或 - =運算子修改 

Instances 

Log_type 

可以用=運算子改寫 

disabled 

可註釋掉的服務,但disabled屬性可用於某個服務項內 

例 2是defaults項的一個例項。從中看到對所有服務而言,登記訊息將透過loca14.info有選擇地送到syslogd程式。對成功的服務連線,將登記PID,客戶機IP地址,中止狀態和連線時間。對不成功的連線企圖,將登記客戶機IP地址。每項服務的最大例項數設定為8。禁止兩項服務: in.tftpd和in.rexecd。 

defaults項從本質上提供了在整個檔案中建立某些屬性的預設值,它應用於沒有設定這些屬性的所有服務。 

例2 /etc/xinetd.conf中defaults項的示例 

Defaults 

{ 

Log_type = SYSLOG loca14 info 

Log_on_success = PID HOST EXIT DURATION 

Log_on_failure = HOST 

Instances =8 

Disabled = in.tftpd in.rexecd 

} 

注:如果在/etcxinetd.conf檔案中沒有defaults項,且之後決定增加這一項,你必須中止和重新啟動xinetd以使defaults生效。這對任何要增加到/etc/xinetd.conf中的新服務也是正確的。它可以如下完成。 

# kill-TERM xinetd 

#/ usr/sbin/xinetd 

或者如果使用了啟動指令碼,則只需要簡單執行。 

#/etc/rc.d/init.d/xinetd restart 

Servers 項 servers特殊服務是實現提供當前執行在伺服器上的程式表,以及有關這些程式的確切資訊。換句話說,它提供了活動連線的列表。這對排除故障和檢查 xinetd狀態是個有用機制。例3顯示了/etc/xinetd.conf檔案中的一個例項servers項。注意這項服務的型別是INTERNAL, UNLISTED,這意味著它是xinetd的內部功能,且不列在/etc/services中。使用的埠是完全任意的。 

例3 servers項的示例 

Service servers 

{ 

     type = INTERNAL UNLISTED 

     Socket_type = stream 

     Protocol = tcp 

     Port = 9997 

     Wait = no 

     Only_from = 172.17.33.111 

     Wait = no 

} 

注意這項服務僅用於特定IP地址172.17.33.111,它是伺服器自身的IP地址。這表示不允許任何其他主機從這個伺服器獲得當前執行在伺服器上的程式列表。這樣做的原因是顯而易見的:如果這條資訊可被其他系統上的主機獲取,基於對當前正在執行的程式的瞭解就加以利用。除用於除錯之外,一般不要執行該服務,因為172.17.33.111上的任何使用者透過執行例4中的telnet 172.17.33.111 9997都能獲取這條資訊。注意 xinetd僅提供這條資訊就退出,不提供互動連線。例4中的輸出告訴我們有兩個正在執行的telnet程式(第5行和第31行),一個程式PID為 5931,另一個為5961(分別為第6行和第32行),有一個ftp程式(第18行),其執行PID為5960(第19行)。 

例4 servers服務的輸出示例 

1 $ telnet topcat 9997 

2 Trying 172.17.33.111…… 

3 Connected to topcat 

4 Escape character is ‘^]’ 

5 telnet server 

6 Pid=5931 

7 Start_time=Sat Apr 17 10:32:15 1999 

8 Connection info: 

9 State=CLOSED 

10 Service=telnet 

11 Descriptor=20 

12 Flags=9 

13 Remote_address=10.48.3.2,39958 

14 Alternative services= 

15 Log_remote_user=YES 

16 Writes_to_log=YES 

17  

18 ftp server 

19 Pid=5960 

20 Start_time=Sat Apr 17 10:49:06 1999 

21 Connection info: 

22 State=CLOSED 

23 Service=ftp 

24 Descriptor=20 

25 Flags=9 

26 Remote_address=172.17.55.124,2320 

27 Alternative services= 

28 Log_remote_user=YES 

29 Writes_to_log=YES 

30 

31 telnet server 

32 Pid=5961 

33 Start_time=Sat Apr 17 10:49:20 1999 

34 Connection info: 

35 State=CLOSED 

36 Service=telnet 

37 Descriptor=20 

38 Flags=9 

39 Remote_address=172.17.1.3,35461 

40 Alternative services= 

41 Log_remote_user=YES 

42 Writes_to_log=YES 

43 

44 Connection closed by foreign host 

45 $ 

Services項 

 services特定項的目的是提供可用服務的列表。對services特定項來說,這是個有用的排除故障工具,但為了上述同樣的安全因素,可能不會去用它。儘管如此,還是要看一看它如何工作。 

例5是 services項的一個示例。埠號的選擇也是任意的。也應注意訪問限制於topcat,這是伺服器自身的主機名。 

例5 /etc/xinetd.conf中services項示例 

Service services 

{ 

    type = INTERNAL UNLISTED 

    Socket_type = stream 

    protocol = tcp 

    port = 8099 

    wait = no 

    Only_ from = topcat 

} 

對於servers服務來說,任何使用者可執行telnet topcat 8099,並獲得來自services服務的輸出。例6給出了連線8099埠的例項資訊資訊。注意xinetd僅提供這條資訊就退出,而不提供任何互動連線。 

例6 查詢services內部服務的輸出 

$ telnet topcat 8099 

Trying 172.17.33.111…… 

Connected to topcat. 

Escape character is ‘^]’ 

Servers tcp 9997 

Services tcp 8099 

ftp tcp 21 

telnet tcp 23 

Shell tcp 514 

Login tcp 513 

Talk udp 517 

Ntalk udp 518 

Pop-2 tcp 109 

Pop-3 tcp 110 

Imap tcp 143 

Linuxconf tcp 98 

Connection closed by foreign host. 

$ 

Xadmin項 

這個特定服務項提供以互動方式獲得services特定服務所提供資訊的方法。例7是/etc/xinetd.conf項的一個示例(埠號的選擇也是任意的),類似於services和servers服務,這項服務也沒有口令或其他保護,所以要謹慎設定服務的only_from項,以增強安全性。(linux知識寶庫

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945510/,如需轉載,請註明出處,否則將追究法律責任。

相關文章