xinetd.conf和rsync相關設定說明

由 Derek 發表於 十月 7, 2011 / 尚無評論

 

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所使用的port873,小於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 為遠端主機的 IPUSERID 為登入者的帳號、

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)

 

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*