xinetd 是 inetd 的安全加强版,它内置了自己的 TCP wrapper, 可以完全替代 inetd 与 tcpd 的组合。为了因应新增的功能,xinetd 改用了一种较有灵活性的配置文件格式,但是新格式与 inetd.conf 的格式并不兼容。
xinetd 的配置文件是 /etc/xinetd.conf,其内容有多个区段构成,每个区段各定义一种网络服务的操作参数:
service name {
attribute1 = value
attribute2 = value1 value2 ...
}
默认内容:
# # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { instances = 60 <==同一服務的同時連線數最多可達 60 個 log_type = SYSLOG authpriv <==登錄後,會被紀錄到登錄檔的資訊 log_on_success = HOST PID <==若成功的登入時,記錄的資訊有哪些? log_on_failure = HOST <==若登入失敗,則記錄的資訊又是如何? cps = 25 30 <==同一秒鐘內最大連線數量為 25 個,若超過 25 個, 則該服務會暫時停止 30 秒! } includedir /etc/xinetd.d <==更多的設定值在 /etc/xinetd.d 那個目錄內
示例:telnet 服务
service telnet { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = yes }
常见参数
| attribute (功能)  | 
assing_op (允許的動作)  | 
說明與範例 | 
| 一般設定項目: | ||
| disable | yes no  | 
允許該 server 可以執行或者是不能執行!當設定為 yes 表示該服務不能執行! 這個設定是一定要的啦。如果我想要啟動某個服務,那麼這裡就要設定成為: | 
| socket_type | stream dgram raw  | 
stream 為連線機制較為可靠的 TCP 封包,若為 UDP 封包則使用 dgram 機制。 raw 代表 server 需要與 IP 直接對談!例如 telnet 使用 TCP ,所以: | 
| protocol | tcp udp ....  | 
這個東西說的是,連線的狀態使用的是哪一種協定!?各個協定的代號可以參考 /etc/protocols 內容!此外,除非是你自己設定的服務,否則這個可以不用設定啦! | 
| wait | yes no  | 
這就是我們剛剛提到的 Multi-threaded 與 single-threaded 的方式啦!一般來說,我們希望大家的要求都可以同時被啟用,所以可以設定 | 
| user | UID root  | 
還記得我們在 帳號管理 那一篇提到的 UID 概念嗎?對啦!這個 UID 就是那個 UID 啦!要注意的是,假如你的服務啟動者不要以 root 為主的話,那麼這個地方就可以改變其他的使用者,例如 nobody !這個咚咚也會有安全防護的機制存在!此外,需要注意這個 UID 必須存在於 /etc/passwd 。 | 
| group | GID | 跟 user 的意思相同!只是這個 GID 的使用者也必須存在於 /etc/group 當中! | 
| instances | number UNLIMITED  | 
這個是『在同一時間之內,同一個服務可以允許的連線數目』的意思, 你可以寫入一個『數字』來控制連線數目,也可以使用 UNLIMITED 來告訴系統『沒有上限』囉!例如你在同時段之內僅允許 ftp 連線有 30 個,那麼這裡就可以輸入 30 啦! | 
| nice | -19 ~ 19 | 還記得我們在 程序管理 裡面談到的那個 nice 指令嗎?!對啦!這裡就是這個東西囉!數字越小( 負值 )代表該程序越優先被執行! | 
| server | program 完整檔名  | 
這個就是指出這個服務的啟動程式!例如要啟動 telnet 的話,其實就是 in.telnetd 這支程式啦!所以這個時候在這裡輸入 | 
| server_args | program 一些參數  | 
這裡應該輸入的就是你的 server 那裡需要輸入的一些參數啦!例如 in.telnetd 當中,我們還可以加入某些參數! | 
| log_on_success | PID HOST USERID EXIT DURATION  | 
在『成功登入』之後,需要記錄的項目:PID 為紀錄該 server 啟動時候的 process ID , HOST 為遠端主機的 IP、USERID 為登入者的帳號、EXTI 為離開的時候記錄的項目、 DURATION 為該使用者使用此服務多久? | 
| log_on_failure | HOST USERID ATTEMPT RECORD  | 
當登入失敗之後被 syslog 登入的項目:HOST為遠端主機的 IP,USERID為登入者帳號、 ATTEMPT為記錄登入失敗者企圖的意圖為何、RECORD為記錄遠端主機的資訊!以及為何本機 server 不能啟動的原因!主要有 login, shell, exec, finger 等指令可以使用在這裡!( 基本上,可以在 /etc/hosts.allow 或 /etc/hosts.deny 書寫內容 )。 | 
| id | 赋予服务一个专用标识符。 | |
| 進階設定項目: | ||
| env | ‘name=value‘ | 這一個項目可以讓你設定環境變數,環境變數的設定規則可以參考 認識 BASH Shell 。 | 
| port | number | 這裡可以設定不同的服務與對應的 port ,但是請記住你的 port 與服務名稱必須與 /etc/services 內記載的相同才行! | 
| redirect | IP_Address port | 將 client 端對我們 server 的要求,轉到另一部主機上去!呵呵!這個好玩呦! 例如當有人要使用你的 ftp 時,你可以將他轉到另一部機器上面去!那個 IP_Address 就代表另一部遠端主機的 IP 囉! | 
| includedir | directory | 表示將某個目錄底下的所有檔案都給他塞進來 xinetd.conf 這個設定裡頭!這東西有用多了, 如此一來我們可以一個一個設定不同的項目!而不需要將所有的服務都寫在 xinetd.conf 當中!你可以在 /etc/xinetd.conf 發現這個設定呦! | 
| 安全控管項目: | ||
| bind | IP_Address | 這個是設定『允許使用此一服務的介面卡』的意思!舉個例子來說,你的 Linux 主機上面有兩個 IP ,而你只想要讓 IP1 可以使用此一服務,但 IP2 不能使用此服務,這裡就可以將 IP1 寫入即可!那麼 IP2 就不可以使用此一 server 囉 | 
| interface | IP_Address | 與 bind 相同 | 
| only_from | 0.0.0.0 192.168.1.0/24 host_name domain_name  | 
這東西用在安全機制上面,也就是管制『只有這裡面規定的 IP 或者是主機名稱可以登入!』如果是 0.0.0.0 表示所有的 PC 皆可登入,如果是 192.168.1.0/24 則表示為 C class 的網域!亦即由 192.168.1.1 ~ 192.168.1.255 皆可登入!另外,也可以選擇 domain name ,例如 .ev.ncku.edu.tw 就可以允許成大環工系的網域 IP 登入你的主機使用該 server ! | 
| no_access | 0.0.0.0 192.168.1.0/24 host_name domain_name  | 
跟 only_from 差不多啦!就是用來管理可否進入你的 Linux 主機啟用你的 server 服務的管理項目! no_access 表示『不可登入』的 PC 囉! | 
| access_times | 00:00-12:00 HH:MM-HH:MM  | 
這個項目在設定『該服務 server 啟動的時間』,使用的是 24 小時的設定!例如你的 ftp 要在 8 點到 16 點開放的話,就是: 08:00-16:00。 | 
| umask | 000 777 022  | 
還記得在 檔案權限 裡面約略提過的 umask 這個東西嗎?呵呵!沒錯!就是那個鬼玩意兒囉! 可以設定使用者建立目錄或者是檔案時候的屬性!系統建議值是 022 。 | 
| per_source | 此参数限制来自同一地址的连接数上限。搭配 instances 选项是,可避免同一位用户用掉所有链接。 | |
/etc/xinetd.conf 和 /etc/xinetd.d/*
原文:http://www.cnblogs.com/ivantang/p/4728902.html