歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux維護

Linux 7.x TCP Wrapper and xinetd

  第一節 概述

  RedHat 7.2 的系統服務存取控制機制主要有兩種:一種是以ipchains或iptables為具體實現的firewall機制,另一種是以TCP Wrapper為具體實現的xinetd機制。本文檔主要論述後一種機制的具體實現。

  1 關於TCP Wrapper

  象Telnet、SSH、FTP、POP和SMTP等很多網絡服務都會用到TCP Wrapper,它被設計為一個介於外來服務請求和系統服務回應的中間處理軟件。它的基本過程是這樣的:當系統接收到一個外來服務請求的時候,先由TCP Wrapper處理這個請求,TCP Wrapper根據這個請求所請求的服務和針對這個服務所定制的存取控制規則來判斷對方是否有使用這個服務的權限,如果有,TCP Wrapper將該請求按照配置文件定義的規則轉交給相應的守護進程去處理同時記錄這個請求動作,然後自己就等待下一個請求的處理。

  TCP Wrapper機制的主要目的在於,來自客戶端的請求只被允許同一個獨立的守護進程(xinetd)直接通信,而它請求的目標服務被TCP Wrapper包裹起來,這樣就提高了系統的安全性和系統管理的方便性。

  一方面,TCP Wrapper 提高了系統的安全性。系統安全性的具體體現主要有兩點,一個是獲取訪問權限前的控制,一個是獲取訪問後的處理。獲取權限前,它會根據/etc/hosts.allow和/etc/hosts.deny定制的規則來判斷對方是否有權限;獲取權限後,通過bind、redirect等屬性的設置,可能已經由另一台主機或者另一個服務在處理了對方的請求,而對方並不會感知中間經過了這樣的處理。

  另一方面,TCP Wrapper更加方便了系統管理。一方面可以抽取系統所有服務共有的屬性放到/etc/xinetd.conf中,另一方面,將每一個服務具體的配置放到/etc/inetd.d目錄下,而每個配置文件都遵循同樣的語法和規則。

  TCP Wrapper的功能來自於libwrap.a,它是一個網絡服務庫,象xinetd、sshd和portmap等許多系統服務編譯時都依賴於它,其他的網路服務程序甚至你自己編寫的網絡服務程序都可以加上這個編譯選項來提供TCP Wrapper的功能。

  2 關於xinetd

  然而,TCP Wrapper機制並不是僅僅有了libwrap.a庫就起作用,只有當libwrap.a庫和xinetd服務結合使用的時候才能發揮出TCP Wrapper機制的作用。xinetd是RedHat 7.x的超級守護進程,它提供諸如訪問控制、請求記錄、地址綁定、重定向和資源利用控制等服務。

  RedHat Linux 7.x版本中的很多系統服務都用到了xinetd,象FTP, IMAP, POP, 和 telnet.等。/etc/services中所有的服務通過他們的端口來訪問服務器的時候,先由xinetd來處理,在喚起對方請求的服務之前,xinetd先檢驗請求者是否滿足配置文件中指定的訪問控制規則,當前的訪問是否超多了指定的同時訪問數目,還有配置文件中指定的其他規則等,檢查通過,xinetd將這個請求交付到相應的服務去處理,自己就進入sleep狀態,等待下一個請求的處理。

  Rredhat 7.x開始更加注重系統安全,最大的特征就是用xinetd.conf代替原來的inetd.conf

  並且7.x中默認安裝沒有開ftp,telnet等熟悉的服務,而是更安全的ssh,7.x還加入firewall等服務增強了系統的安全性。xinetd(eXtended InterNET services daemon)提供類似於inetd+tcp_wrapper的功能,但是更加強大和安全。它能提供以下特色:

  1、 強大的存取控制功能:

  

  • 內置對惡意用戶和善意用戶的差別待遇設定;

      

  • 使用libwrap支持,其效能更甚於tcpd

      

  • 可以限制連接等級,基於主機的連接數和基於服務的連接數

      

  • 設置特定的連接時間

      

  • 將某個服務設置到特定的主機提供服務
  2、 有效防止DOS攻擊

  

  • 可以限制連接的等級

      

  • 可以限制一個主機的最大連接數,從而防止某個主機獨占某個服務

      

  • 可以限制日志文件的大小,防止磁盤空間被填滿

  3、 強大的日志功能

  

  • 可以為每一個服務就syslog設定日志等級

      

  • 如果不使用syslog,也可以為每個服務建立日志文件

      

  • 可以記錄請求的起止時間以決定對方的訪問時間

      

  • 可以記錄試圖非法訪問的請求

  4、 轉向功能

  • 可以將客戶端的請求轉發到另一台主機去處理

  5、 支持IPv6

  • xinetd 自 xinetd 2.1.8.8pre* 起的版本支持 IPv6

  6、與客戶端的交互功能

  • 無論客戶端請求是否成功,xinetd都會有提示告知連接狀態

  當前,它最大的缺點是對RPC支持的不穩定性,但是可以啟動protmap與xinetd共存來解決這個問題。

  何時使用xinetd?

  原則上任何系統服務都可以使用xinetd,然而,我認為,最適合應該是哪些常用的internet服務,同時,這個服務的請求數目和頻繁程度不會太高。象DNS和Apache就不適合采用這種方式,而象Ftp、telnet、 SSH等就很適合使用xinetd方式,至於pop、imap等郵件服務是否適合使用這種方式,我自己也很難下結論,系統默認使用xinetd,很多人也是這樣做的,但我沒有這方面的測試。

  系統默認使用xinetd的服務可以分為如下幾類:

  1、標准internet服務:telnet ftp

  2、信息服務:finger netstat systat

  3、郵件服務:imap imaps pop2 pop3 pops

  4、RPC服務:rquotad rstatd rusersd sprayd walld

  5、BSD服務:comsat exec login ntalk shell talk

  6、內部服務:chargen daytime echo servers services time

  7、安全服務:irc

  8、其他服務:name tftp uucp

  第二節 獲取、編譯與安裝

  xinetd在RedHat 7.2是默認安裝的,所以一般說來,你無需自己去安裝。然而,如果你在低版本的RedHat上,你可能需要下面的安裝步驟。

  1 軟件的獲取

  Xinetd當前最新的版本是2.3.5,發布於May.28.2002。你可以從下面的地址獲取它的源代碼包:http://www.xinetd.org/xinetd-2.3.5.tar.gz

  2 編譯安裝

  現在假設你將該軟件下載到/home/src目錄,安裝步驟如下:

  cd /home/src

  tar xvzf xinetd*

  cd xinetd*

  ./configure -prefix=/etc -with-libwrap -with-loadavg -with-inet6

  make

  make install

  cp xinetd/sample.conf /etc/xinetd.conf

  如果你在舊版本的RedHat上安裝,你可能會用到下面的指令,這個perl腳本可以將inetd.conf轉換為xinetd.conf:

  xinetd/xconv.pl < /etc/inetd.conf > /tmp/xinetd.conf

  下面是編譯參數說明:

  --prefix 指定安裝目錄

  --with-libwrap 加載libwrap.a庫,使之可以使用TCP Wrapper功能

  --with-loadavg 使之具有限定連接數的功能,避免DOS攻擊

  --with-inet6 使之支持ipv6

  說明:

  如果您使用的是RedHat 7.x版本,建議你無需自己安裝,這一點跟別的服務不同,如果你自行安裝,可能會出現意想不到的麻煩。

Copyright © Linux教程網 All Rights Reserved