歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

管理Linux的inetd服務器

最重要的網絡服務進程,即inetd服務器程序,實際上,大部分請求不太頻繁的服務都是 由它啟動的。 inetd程序在系統中是作為一個服務進程出現,它監聽許多端口並且在得到客戶請求時 啟動這個端口的服務程序。由於它的通用性,我們把它放到這一章來介紹。 inetd程序可以由命令行來啟動: inetd [-d] -d選項用於打開調試信息。 inetd的工作方式是由/etc/inetd.conf和/etc/services文件設定的,下面我們來解釋 一下這兩個文件。 services文件的格式基本上是這樣: netstat 15/tcp qotd 17/tcpquote msp 18/tcp# message send protocol msp 18/udp# message send protocol chargen19/tcpttytst source chargen19/udpttytst source FTP21/tcp # 22 - unassigned telnet23/tcp 每一行都是兩欄或者三欄,第一欄是服務的名字,第二行是使用的端口和協議,例如 ,這裡的telnet 23/tcp是表示telnet服務應該使用端口23,協議類型為tcp。第三 欄是服務的別名,通常可以省略。 inetd.conf是依賴於services文件的,它也是個文本文件,每行代表一種服務的工作 方式,由"#"引導的行表示注釋行,非注釋行的格式大體是這樣: 服務名 數據類型協議監聽方式用戶身份服務程序參數 例如,要啟動telnet的服務,應該加入這樣一行: telnetstreamtcp nowaitroot/usr/sbin/tcpdin.telnetd 服務的名字就是telnet,這個名字按照/etc/services的定義將在23端口提供服務;s tream表示數據的發送和接收將使用簡單的流式文件讀寫來完成(fscanf和fprintf); tcp表示使用tcp協議,監聽方式這一欄可以由兩個選項,即wait和nowait。簡單地說, 如果相應的服務程序是多進程的,那麼要設置為nowait,這時inetd會每接受到一個請求 之後啟動一個服務程序進程,例如telnet就是這樣工作的,每個獨立的telnet對話都會 啟動一個telnet服務進程。相反,如果是單進程的,就可以設置為wait。 用戶身份表示對應服務進程啟動時所使用的uid/euid,因為telnet可以是任何用戶發 出,而且用戶可以通過telnet執行任何命令,所以使用root用戶身份。 /usr/sbin/tcpd 是實際啟動的程序,這個程序實際是一個通用的TCP連接處理程序, 參數使用in.telnetd,連起來就是當有23端口的連接請求時,inetd去執行/usr/sbin/t cpd in.telnetd。 通常情況下,各種服務都已經寫在inetd.conf中,不啟用的服務使用注釋#使之失效。 如果需要打開這服務,只要把引導的#注釋符號刪除就可以了。 值得一提的是/usr/sbin/tcpd程序,它是一個TCP連接過濾程序,通常大部分需要做連 接驗證的服務都應該通過tcpd程序啟動,這個程序能夠自動對客戶機器的IP地址進行驗 證並且進行某些安全性過濾,其中最主要的功能是禁止某些地址來的連接。例如,按照 上面的形式,in.telnetd程序就是通過/usr/sbin/tcpd程序啟動的,因此可以對telnet 請求進行地址檢驗。 tcpd的地址檢驗是通過/etc/hosts.deny和/etc/hosts.allow文件完成的,如果不存在 這樣的文件,你可以自己建立一個,兩者的語法幾乎是一樣的,只是hosts.allow是允許 某個地址來的連接,而hosts.deny是禁止某個地方來的連接。 基本的語法是: 服務程序:客戶地址 服務程序是通過tcpd程序被啟動的程序名字,客戶地址是相關地址的一個列表,例如 ,在/etc/hosts.allow文件中加入這樣一行: in.telnetd:10.0.0.2 將允許10.0.0.2處的機器使用本地的telnet服務,如果這一行加入到/etc/hosts.den y重將禁止10.0.0.2處的機器登錄上來。 地址可以使用集合形式,常用的集合形式主要有下列幾種: 以逗點開頭的字符串定義一個域,例如.edu.cn表示所有域名後綴是.edu.cn的機器。 以逗點結束的字符串定義一串IP地址,如202.199.248.代表202.199.248.0到202.199 .248.255。 以/分開的字符串解釋為網絡地址/子網掩碼的形式,例如172.13.0.0/255.255.0.0代 表172.13.0.0到172.13.255.255。 另外,地址和服務程序都可以使用通配符,通配符有下列幾種: ALL 代表所有,所有的服務程序或者所有的地址。經常和EXCEPT子句連用,EXCEPT代 表“除了”。例如,在hosts.deny中寫上ALL:ALL EXCEPT 202.199.248.將禁止除了202 .199.248.*的機器之外的所有客戶機器使用任何基於tcpd的服務。寫上ALL EXPECT in. telnetd:ALL將使得除了telnet以外的所有基於tcpd的服務都被禁止。 LOCAL 指代所有沒有名字後綴的機器。 KNOWN 所有IP地址和域名都知道的機器 UNKNOWN IP地址或者域名無法確定的機器 PARANOID IP地址和從域名服務返回的名字不匹配的機器。


[1] 

表“除了”。例如,在hosts.deny中寫上ALL:ALL EXCEPT 202.199.248.將禁止除了202 .199.248.*的機器之外的所有客戶機器使用任何基於tcpd的服務。寫上ALL EXPECT in. telnetd:ALL將使得除了telnet以外的所有基於tcpd的服務都被禁止。 LOCAL 指代所有沒有名字後綴的機器。 KNOWN 所有IP地址和域名都知道的機器 UNKNOWN IP地址或者域名無法確定的機器 PARANOID IP地址和從域名服務返回的名字不匹配的機器。



Copyright © Linux教程網 All Rights Reserved