xinetd

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

xinetd概述,配置檔案,
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

相關詞條

熱門詞條

聯絡我們