xinetd.conf可以說是預設值的設定檔。假設這邊啟動了rsync服務,但是在rsync此服務並沒有特別去設定參數,因此在設定值部份就會以xinetd.conf為主。
以下是預設定xinetd.conf
[root@localhost ~]# vim /etc/xinetd.conf defaults { # The next two items are intended to be a quick access place to # temporarily enable or disable services. # enabled = #啟用 # disabled = #禁用 # Define general logging characteristics. log_type = SYSLOG daemon info #登錄檔的記錄服務類型 log_on_failure = HOST #發生錯誤時需要記錄的資訊為主機 (HOST) log_on_success = PID HOST DURATION EXIT #成功啟動或登入時的記錄資訊 # Define access restriction defaults # no_access = # only_from = # max_load = 0 cps = 50 10 #同一秒內最大連線數為 50 個,超過則暫停 10 秒 instances = 50 #同一服務的最大同時連線數 per_source = 10 # 同一來源的用戶端的最大連線數 # Address and networking defaults # bind = # mdns = yes v6only = no #是否僅允許 IPv6 # setup environmental attributes # passenv = groups = yes umask = 002 # Generally, banners are not used. This sets up their global defaults # banner = # banner_fail = # banner_success = } includedir /etc/xinetd.d #在/etc/xinetd.d會有更多的設定值 |
以上的設定檔內容大概是說明:「同一個服務的最大連線數為50,而每秒內發起的「新」連線最多50個,若超過的話服務則會停止10秒,而在相同IP同時連線的情況下最多只有10個連線數。而在成功登入和登入失敗情況下所記錄的資訊會有所不同。並且不允許IPv6的連線。」
以下是預設的rsync
[root@localhost ~]# vim /etc/xinetd.d/rsync service rsync #服務名稱為 rsync { disable = yes #預設是關閉的 socket_type = stream #使用 TCP 的連線機制之故 wait = no #可以同時進行大量連線功能 user = root #啟動服務為 root server = /usr/bin/rsync #啟動服務的程式所存放的位置 server_args = --daemon #這是必要的選項 log_on_failure += USERID #登入錯誤時,額外記錄使用者 ID } |
在user這個項目,由於rsync所使用的port是873,小於1024。因此在要啟動此port的身份必須要是root。
底下就介紹一下個參數的用法吧。
= : 表示後面的設定參數就是這樣
+= : 表示後面的設定為『在原來的設定裡頭加入新的參數』
-= : 表示後面的設定為『在原來的參數捨棄這裡輸入的參數』
參數 功能 說明 一般設定項目:服務的識別、啟動與程式 disable (啟動與否) 設定值:[yes|no],預設 disable = yes disable 為取消的意思,此值可設定該服務是否要啟動 預設所有的 super daemon 管理的服務都不啟動的。若 要啟動就得要設定為『 disable = no 』 id (服務識別) 設定值:[服務的名稱] 雖然服務在設定檔開頭『 service 服務名稱』已經指定 了,不過有時後會有重複的設定值,此時可以用 id 來取 代服務名稱。 可以參考一下 /etc/xinetd.d/time-stream 來思考一下原理。 server (程式檔名) 設定值:[program 的完整檔名] 這個就是指出這個服務的啟動程式! 例如 /usr/bin/rsync 為啟動 rsync 服務的指令,所以這個設定值就會成為: 『 server = /usr/bin/rsync 』 server_args (程式參數) 設定值:[程式相關的參數] 這裡應該輸入的就是你的 server 那裡需要輸入的一些 參數。例如 rsync 需要加入 –daemon , 所以這裡就 設定:『 server_args = –daemon 』。與上面 server 搭配,最終啟動服務的方式 『/usr/bin/rsync –daemon』 user (服務所屬UID) 設定值:[使用者帳號] 如果 xinetd 是以 root 的身份啟動來管理的,那麼這 個項目可以設定為其他使用者。此時這個 daemon 將會 以此設定值指定的身份來啟動該服務的程序喔!舉例來 說,啟動 rsync 時會以這個設定值作為該程序的 UID
group 跟 user 的意思相同!此項目填入群組名稱即可。 一般設定項目:連線方式與連線封包協定 socket_type (封包類型) 設定值:[stream|dgram|raw],與封包有關 stream 為連線機制較為可靠的 TCP 封包,若為 UDP 封包則使用 dgram 機制。raw 代表 server 需要與 IP 直接對談!舉例來說 rsync 使用 TCP ,故設定 為『socket_type = stream 』 protocol (封包類型) 設定值:[tcp|udp],通常使用 socket_type 取代 使用的網路通訊協定,需參考 /etc/protocols 內的通 訊協定,一般使用 tcp 或 udp。由於與 socket_type 重複, 因此這個項目可以不指定。 wait (連線機制) 設定值:[yes(single)|no(multi)],預設 wait = no 這就是剛剛提到的 Multi-threaded 與 single-threaded !一般來說,希望大家的要求都 可以同時被啟用,所以可以設定『 wait = no 』 此 外,一般 udp 設定為 yes 而 tcp 設定為 no。 Instances (最大連線數) 設定值:[數字或 UNLIMITED] 這個服務可接受的最大連線數量。如果只想要開放 30 個人連線 rsync 時,可在設定檔內加入: 『 instances = 30 』 per_source (單一用戶來源) 設定值:[一個數字或 UNLIMITED] 如果想要控制每個來源 IP 僅能有一個最大的同時連線 數,就指定這個項目吧!例如同一個 IP 最多只能連 10 條連線『 per_source = 10 』 Cps (新連線限制) 設定值:[兩個數字] 為了避免短時間內大量的連線要求導致系統出現忙碌的 狀態而有這個 cps 的設定值。第一個數字為一秒內能 夠接受的最多新連線要求, 第二個數字則為,若超過 第一個數字那暫時關閉該服務的秒數。 一般設定項目:登錄檔的記錄 log_type (登錄檔類型) 設定值:[登錄項目 等級] 當資料記錄時,以什麼登錄項目記載?且需要記載的 等級為何(預設為 info 等級)。 log_on_success (登錄狀態) 設定值:[PID,HOST,USERID,EXIT,DURATION] log_on_failure 在『成功登入』或『失敗登入』之後,需要記錄的項目 :PID 為紀錄該 server 啟動時候的 process ID , HOST 為遠端主機的 IP、USERID 為登入者的帳號、 EXIT 為離開的時候記錄的項目、DURATION 為該使用者 使用此服務多久? 進階設定項目:環境、網路埠口與連線機制等 Env (額外變數設定) 設定值:[變數名稱=變數內容] 這一個項目可以讓你設定環境變數 Port (非正規埠號) 設定值:[一組數字(小於 65534)] 這裡可以設定不同的服務與對應的 port ,但是請記 住你的 port 與服務名稱必須與 /etc/services 內記 載的相同才行!不過,若服務名稱是你自訂的,那麼 這個 port 就可以隨你指定 Redirect (服務轉址) 設定值:[IP port] 將 client 端對我們 server 的要求,轉到另一部主 機上去!呵呵!這個好玩呦! 例如當有人要使用你的 ftp 時,你可以將他轉到另一部機器上面去!那個 IP_Address 就代表另一部遠端主機的 IP 囉! Ncludedir (呼叫外部設定) 設定值:[目錄名稱] 表示將某個目錄底下的所有檔案都給他塞進來 xinetd.conf 這個設定裡頭!這東西有用多了, 如 此一來我們可以一個一個設定不同的項目!而不需要 將所有的服務都寫在 xinetd.conf 當中!你可以在 /etc/xinetd.conf 發現這個設定呦! 安全控管項目: Bind (服務介面鎖定) 設定值:[IP] 這個是設定『允許使用此一服務的介面卡』的意思! 舉個例子來說,你的 Linux 主機上面有兩個 IP , 而你只想要讓 IP1 可以使用此一服務,但 IP2 不能 使用此服務,這裡就可以將 IP1 寫入即可!那麼 IP2 就不可以使用此一 server 囉 Interface 設定值:[IP] 與 bind 相同 only_from (防火牆機制) 設定值:[0.0.0.0, 192.168.1.0/24, hostname, domainname] 這東西用在安全機制上面,也就是管制『只有這裡面 規定的 IP 或者是主機名稱可以登入!』如果是 0.0.0.0表示所有的 PC 皆可登入,如果是 192.168.1.0/24 則表示為 C class 的網域!亦即 由 192.168.1.1 ~192.168.1.255 皆可登入!另外, 也可以選擇 domainname 的方式來做設定。 no_access (防火牆機制) 設定值:[0.0.0.0, 192.168.1.0/24, hostname, domainname] 跟 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] 可以設定使用者建立目錄或者是檔案時候的屬性!系 統建議值是 022 。 |
以下是修改rsync 的簡單範例說明
[root@localhost ~]# vim /etc/xinetd.d/rsync #先修改對內的設定 service rsync { disable = no #預設是yes關閉,請改為no開啟服務 bind = 127.0.0.1 #服務綁在這個介面上! only_from = 127.0.0.0/8 #只開放這個網域的來源登入 no_access = 127.0.0.{11,22,33} #限制不可登入的ip instances = UNLIMITED #取代 /etc/xinetd.conf 的設定值 socket_type = stream #使用 TCP 的連線機制之故 wait = no #可以同時進行大量連線功能 user = root #啟動服務為 root server = /usr/bin/rsync #啟動服務的程式所存放的位置 server_args = –daemon #這是必要的選項 log_on_failure += USERID #登入錯誤時,額外記錄使用者 ID } #再來對外部的連線來設定 service rsync { disable = no bind = 192.168.1.222 only_from = 10.116.0.0/16 #限制可使用的ip來源 only_from += .edu.tw #限制某網域內的可使用 因為累加,所以利用 += 設定 access_times = 01:00-9:00 20:00-23:59 #設定可使用的時段,有空格隔開 instances = 10 #設定最大連限數為 10 條 socket_type = stream #使用 TCP 的連線機制之故 wait = no #可以同時進行大量連線功能 user = root #啟動服務為 root server = /usr/bin/rsync #啟動服務的程式所存放的位置 server_args = --daemon #這是必要的選項 log_on_failure += USERID #登入錯誤時,額外記錄使用者 ID } |
設定完後在測試看看是否設定無誤
#在重啟前先看看原來873 port的狀態 [root@localhost ~]# netstat -tnlp | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 14005/xinetd #重啟xinetd,而不是rsync [root@localhost ~]# /etc/init.d/xinetd restart [root@localhost ~]# netstat -tnlp | grep 873 tcp 0 0 127.0.0.1:873 0.0.0.0:* LISTEN 14026/xinetd tcp 0 0 192.168.1.222:873 0.0.0.0:* LISTEN 14026/xinetd #會看到有兩個介面,而PID是同一個。 |
如此一來就可以針對不同的主機和服務,提供不一樣的設定。
參考資料 : 鳥哥 第十八章、認識系統服務 (daemons)
評論
此文章尚無評論。