轉:使用xinetd管理網路應用服務

來源:互聯網
上載者:User

 

使用xinetd管理網路應用服務

■ 中科院計算所 李洋

本文著重講述在Linux系統中如何使用xinetd(擴充的超級伺服器)機制來管理網路應用服務,講述如何增加和刪除網路服務,從而有效地保證Linux系統安全。

目前,從WWW伺服器到流行的遊戲伺服器,絕大多數都在採用Linux作為服務平台。一方面,Linux為使用者提供了多種優質的網路服務,包括Http、Ftp、Smtp、Pop3等;另一方面,服務的增多意味著更多的風險。每種服務本身都必然存在著某些缺陷,而這些缺陷很有可能被高明的駭客利用,從而對系統進行攻擊。所以,提供特定服務的伺服器應該儘可能開放提供服務必不可少的連接埠,而將與伺服器服務無關的服務關閉,比如一台作為www和ftp伺服器的機器,應該只開放80和25連接埠,而將其他無關的服務關掉,以減少系統漏洞。

Xinetd機制介紹

在Linux系統的早期版本中,有一種稱為inetd的網路服務管理程式,也叫做“超級伺服器”,就是監視一些網路請求的守護進程,它根據網路請求來調用相應的服務進程來處理串連請求。inetd.conf則是inetd的設定檔,它告訴inetd監聽哪些網路連接埠,為每個連接埠啟動哪個服務。在任何的網路環境中使用Linux系統,第一件要做的事就是瞭解一下伺服器到底要提供哪些服務。不需要的那些服務應該被禁止掉,這樣駭客就少了一些攻擊系統的機會,因為服務越多,意味著遭受攻擊的風險就越大。使用者可以查看“/etc/inetd.conf”檔案,瞭解一下inetd提供和開放了哪些服務,以根據實際情況進行相應的處理。

而在Linux 7.x的版本當中則使用xinetd(擴充的超級伺服器)的概念對inetd進行了擴充和替代。xinetd的預設設定檔是/etc/xinetd.conf。其文法和/etc/inetd.conf完全不同且不相容。它本質上是/etc/inetd.conf和/etc/hosts.allow、 /etc/hosts.deny功能的組合。

系統預設使用xinetd的服務可以分為如下幾類:標準internet服務,如http、telnet、ftp等; 資訊服務,如finger、netstat、systat;郵件服務,如imap、pop3、smtp;RPC服務,如rquotad 、rstatd、rusersd、sprayd、walld; BSD服務,如comsat、exec、login、ntalk、shell talk;內部服務,如chargen、daytime、echo等;安全服務,如irc; 還有其他服務,如name、tftp、uucp、wu-ftp。下面是一個典型的/etc/xinetd.conf檔案的例子:

# vi xinetd.conf

  # Simple configuration file for xinetd

  # Some defaults, and include /etc/xinetd.d/

  defaults

  {

   instances = 60

   log_type = SYSLOG authpriv

   log_on_success = HOST PID

   log_on_failure = HOST

   cps = 25 30

  }

  includedir /etc/xinetd.d

從檔案最後一行可以清楚地看到, /etc/xinetd.d目錄是存放各項網路服務(包括http、ftp等)的核心目錄,因而系統管理員需要對其中的設定檔進行熟悉和瞭解。一般說來,在/etc/xinetd.d的各個網路服務設定檔中,每一項都有下列形式:

  service service-name

  {

  Disabled //表明是否禁用該服務

  Flags //可重用標誌

  Socket_type //TCP/IP資料流的類型,包括stream,datagram,raw等

  Wait //是否阻塞服務,即單線程或多線程

  User //服務進程的uid

  Server //伺服器守護進程的完整路徑

  log_on_failure //登陸錯誤記錄檔記錄

  }

其中service是必需的關鍵字,且屬性工作表必須用大括弧括起來。每一項都定義了由service-name定義的服務。Service-name是任意的,但通常是標準網路服務名,也可增加其他非標準的服務,只要它們能通過網路請求啟用,包括localhost自身發出的網路請求。每一個service有很多可以使用的attribute(屬性),操作符可以是“=”、“+=”或“-=”。所有屬性可以使用“=”,其作用是分配一個或多個值,某些屬性可以使用“+=”或“-=”的形式,其作用分別是將其值增加到某個現存的值表中,或將其值從現存值表中刪除。

使用者應該特別注意的是:每一項使用者想新添加的網路服務描述既可以追加到現有的/etc/xinetd.conf中,也可以在/etc/xinetd.conf中指定的目錄中分別建立單獨的檔案。RedHat 7.x以上的版本都建議採用後一種做法,因為這樣做的可擴充性很好,管理起來也比較方便,使用者只需要添加相應服務的描述資訊即可追加新的網路服務。RedHat 7.x預設的服務組態檔目錄是/etc/xinetd.d,在該目錄中使用如下命令可以看到許多系統提供的服務:

#cd /etc/xinetd.d

#ls

chargen cvspserver daytime-udp echo-udp ntalk qmail-pop3 rexec rsh sgi_fam telnet time-udp chargen-udp daytime echo finger pop3 qmail-smtp rlogin rsync talk time wu-ftpd

然而,上述的許多服務,預設都是關閉的,看看如下檔案內容:

#cat telnet

# default: off //表明預設該服務是關閉的

# description: The telnet server serves telnet sessions; it uses /

# unencrypted username/password pairs for authentication.

service telnet

{

   disable = yes //表明預設該服務是關閉的

   flags = REUSE

   socket_type = stream

   wait = no

   user = root

   server = /usr/sbin/in.telnetd

   log_on_failure += USERID

}

服務的開啟與關閉

一般說來,使用者可以使用兩種辦法來對網路服務進行開啟或關閉,下面分別進行介紹。

1.使用/etc/xinetd.d目錄下的檔案進行配置

針對上面列出的關於Telnet的例子,使用者想要開啟服務,只需要通過使用vi 編輯器改寫該檔案為如下內容。然後,需要使用/etc/rc.d/init.d/xinetd restart來啟用Telnet服務即可。

  service telnet

  {

   disable = no //將該域置為“no”,則表明開啟該服務

   flags = REUSE

   socket_type = stream

   wait = no

   user = root

   server = /usr/sbin/in.telnetd

   log_on_failure += USERID

  }

相對應的,如果使用者想要關閉某個不需要的服務,則將上述的“disable = no”改為“disable = yes”即可,這樣就修改了服務配置,並且再次使用/etc/rc.d/init.d/xinetd restart來啟用最新的配置。

 

在suse linux 中重啟xinetd方法:
cd /etc/init.d/
./xinetd restart

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.