xinetd

xinetd已經取代了inetd,並且提供了訪問控制、加強的日誌和資源管理功能,已經成了Red Hat 7 和 Mandrake 7.2的Internet標準超級守護進程。

xinetd(eXtended InterNET services daemon)

xinetd概述

* 支持對tcp、udp、RPC服務(但是當前對RPC的支持不夠穩定)

* 基於時間段的訪問控制

* 功能完備的log功能,即可以記錄連線成功也可以記錄連線失敗的行為

* 能有效的防止DoS攻擊(Denial of Services)

* 能限制同時運行的同一類型的伺服器數目

* 能限制啟動的所有伺服器數目

* 能限制log檔案大小

* 將某個服務綁定在特定的系統接口上,從而能實現只允許私有網路訪問某項服務

* 能實現作為其他系統的代理。如果和ip偽裝結合可以實現對內部私有網路的訪問

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

xinetd用括弧括起的、擴展了的語法取代了inetd中的通用的行。另外,還添加了日誌和訪問控制功能。 雖然inetd可以使用Venema的 tcp_wrappers軟體(tcpd) 控制 TCP 的連線,但是你不能用它來控制 UDP 連線。此外,inetd對RPC(portmapper)類型的服務也處理不好。另外,雖然使用 inetd 你可以控制連線速度 ( 通過給wait或是no wait 變數附加一個數值,例如nowait.1表示每隔一秒鐘一個實例),你不能控制實例的最大數。這能導致進程表攻擊(例如,一個有效的拒絕服務攻擊)。通過使用xinetd,我們可以防止Dos。

xinetd 對所有的服務都進行紀錄,日誌保存到檔案 /var/adm/xinetd.log中,並且使用配置檔案/etc/xinetd.conf。

配置檔案

xinetd 配置檔案,通常可以手工或是自動從inetd.conf檔案生成。前者費時間且容易出錯;後者可以通過 itox軟體或者xconv. pl 腳本輕易完成。雖然itox軟體正在被取消而傾向於使用 xconv. pl 腳本,它仍是很有用的。但是,要注意重複的運行它會覆蓋原有的配置檔案。itox和 xconv都以同樣的方式工作,我們用 itox來進行演示:

$ itox < /etc/inetd.conf > xinetd.conf 新一些的工具(xconv)可以理解注釋,並且在對tcpd的使用上要比itox做得更好,使用itox,你不得不指定守護進程的路徑 (如 /usr/sbin)。 你想要包含的第一段就是默認的段,就像名字暗示的那樣,默認的xinetd服務。

defaults

{

instances = 25

log_type = FILE /var/adm/servicelog

log_on_success = PID HOST EXIT

flags = NORETRY

log_on_failure = HOST RECORD ATTEMPT

only_from = 129.22.0.0

no_access = 129.22.210.61

disabled = nntp uucp tftp bootps who

shell login exec

disabled += finger

}

我們可以了解 xinetd 設定參數的語法:<指示(directive)> <操作符(operator)> <值(value)>。xinetd所能理解的指示列在表一中,在這裡我們將忽略 flags、type、env 和passenv指示符。 我對將對 only_from 和 no_access以及額外的日誌選項加以更多的討論。

表 1. xinetd的指示符
指示符 描述
socket_type 網路套接字類型, 流或者數據包
socket_type 網路套接字類型, 流或者數據包
protocol IP 協定, 通常是TCP或者 UDP
wait yes/no, 等同於inetd的wait/nowait
user 運行進程的用戶 ID
server 執行的完整路徑
server_args 傳遞給server的變數,或者是值
instances 可以啟動的實例的最大的值
start max_load 負載均衡
log_on_success 成功啟動的登記選項
log_on_failure 在線上失敗的時候的日誌信息
only_from 接受的網路或是主機
no_access 拒絕訪問的網路或是主機
disabled 用在默認的 {} 中 禁止服務
log_type 日誌的類型和路徑 FILE /SYSLOG
nice 運行服務的優先權
id 日誌中使用的服務名

操作符非常簡單,“=”、“+=”、“-=”。用 =,右邊給定的值傳給左邊的指示符。+=也是非常直接的,用於給一個已經指定的指示符添加一個值。-=表示在原來的參數中捨棄這裡要輸入的參數。沒有它,原先的指示符就會被覆蓋,這樣可以用來展開訪問列表,或者跨越多行。

用如下的格式描述服務:

服務名

{

指示符 = 值

指示符 += 值

指示符 -= 值

}

服務名一定要在 /etc/services列出 ,並且要使用合適的socket和協定。

註:Linux系統中,inetd服務的默認配置檔案為:/etc/inetd.conf

Linux系統中,默認情況下,xinetd所管理伺服器的配置檔案存放在:/etc/xinetd.d

相關詞條

相關搜尋

熱門詞條

聯絡我們