http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net
分类: LINUX
2011-09-24 19:30:01
[root@linux ~]# vi /etc/xinetd.conf |
基本上,這個預設參數檔的意義是:『當某個使用 super daemon 管理的服務啟動時,除非該服務已經設定好管理的項目,否則將以上述 xinetd.conf 內的預設參數帶入。』的意思,也就是說,這僅是預設值, 但我們可以自行指定新的設定值來取代 xinetd.conf 內的預設值啦! 也就是說,這個檔案設定成,在預設的狀態下『:一個服務最多可達 60 個連線,且同一秒內連接上的連線不可超過 25 個。而若登入的成功與否時,會分別記錄不同的資訊到登錄檔當中。』這樣說,可以比較清楚了吧? ^_^ 至於更多的參數說明,我們會在底下再強調的!
既然這只是個預設參數檔,那麼自然有更多的服務參數檔案囉~沒錯~而所有的服務參數檔都在 /etc/xinetd.d 裡面,這是因為上表當中的最後一行啊!這樣瞭了吧! ^_^。 那麼每個參數檔案的內容是怎樣呢?一般來說,他是這樣的:
service |
第一行一定都有個 service ,至於那個
= :表示後面的設定參數就是這樣啦!
+= : 表示後面的設定為『在原來的設定裡頭加入新的參數』
-+ :表示後面的設定為『在原來的參數捨棄這裡輸入的參數!』
用途不太相同,敬請留意呦!好了!底下再來說一說那些 attribute 與 value !
attribute |
assing_op |
說明與範例 |
一般設定項目: |
||
disable |
yes |
允許該 server 可以執行或者是不能執行!當設定為 yes 表示該服務不能執行!這個設定是一定要的啦。如果我想要啟動某個服務,那麼這裡就要設定成為: disable = no |
socket_type |
stream |
stream 為連線機制較為可靠的 TCP 封包,若為 UDP 封包則使用 dgram 機制。 raw 代表 server 需要與 IP 直接對談!例如 telnet 使用 TCP ,所以: socket_type = stream |
protocol |
tcp |
這個東西說的是,連線的狀態使用的是哪一種協定!?各個協定的代號可以參考 /etc/protocols 內容!此外,除非是你自己設定的服務,否則這個可以不用設定啦! |
wait |
yes |
這就是我們剛剛提到的 Multi-threaded 與 single-threaded 的方式啦!一般來說,我們希望大家的要求都可以同時被啟用,所以可以設定 wait = no |
user |
UID |
還記得我們在 那一篇提到的 UID 概念嗎?對啦!這個 UID 就是那個 UID 啦!要注意的是,假如你的服務啟動者不要以 root 為主的話,那麼這個地方就可以改變其他的使用者,例如 nobody !這個咚咚也會有安全防護的機制存在!此外,需要注意這個 UID 必須存在於 /etc/passwd 。 |
group |
GID |
跟 user 的意思相同!只是這個 GID 的使用者也必須存在於 /etc/group 當中! |
instances |
number |
這個是『在同一時間之內,同一個服務可以允許的連線數目』的意思, 你可以寫入一個『數字』來控制連線數目,也可以使用 UNLIMITED 來告訴系統『沒有上限』囉!例如你在同時段之內僅允許 ftp 連線有 30 個,那麼這裡就可以輸入 30 啦! |
nice |
-19 ~ 19 |
還記得我們在 裡面談到的那個 nice 指令嗎?!對啦!這裡就是這個東西囉!數字越小( 負值 )代表該程序越優先被執行! |
server |
program |
這個就是指出這個服務的啟動程式!例如要啟動 telnet 的話,其實就是 in.telnetd 這支程式啦!所以這個時候在這裡輸入 server = /usr/sbin/in.telnetd |
server_args |
program |
這裡應該輸入的就是你的 server 那裡需要輸入的一些參數啦!例如 in.telnetd 當中,我們還可以加入某些參數! |
log_on_success |
PID |
在『成功登入』之後,需要記錄的項目:PID 為紀錄該 server 啟動時候的 process ID , HOST 為遠端主機的 IP、USERID 為登入者的帳號、EXTI 為離開的時候記錄的項目、 DURATION 為該使用者使用此服務多久? |
log_on_failure |
HOST |
當登入失敗之後被 syslog 登入的項目:HOST為遠端主機的 IP,USERID為登入者帳號、 ATTEMPT為記錄登入失敗者企圖的意圖為何、RECORD為記錄遠端主機的資訊!以及為何本機 server 不能啟動的原因!主要有 login, shell, exec, finger 等指令可以使用在這裡!( 基本上,可以在 /etc/hosts.allow 或 /etc/hosts.deny 書寫內容 )。 |
進階設定項目: |
||
env |
'name=value' |
這一個項目可以讓你設定環境變數,環境變數的設定規則可以參考 。 |
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 |
這東西用在安全機制上面,也就是管制『只有這裡面規定的 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 |
跟 only_from 差不多啦!就是用來管理可否進入你的 Linux 主機啟用你的 server 服務的管理項目! no_access 表示『不可登入』的 PC 囉! |
access_times |
00:00-12:00 |
這個項目在設定『該服務 server 啟動的時間』,使用的是 24 小時的設定!例如你的 ftp 要在 8 點到 16 點開放的話,就是: 08:00-16:00。 |
umask |
000 |
還記得在 裡面約略提過的 umask 這個東西嗎?呵呵!沒錯!就是那個鬼玩意兒囉! 可以設定使用者建立目錄或者是檔案時候的屬性!系統建議值是 022 。 |
OK!我們就利用上面這些參數來架構出我們所需要的一些服務的設定吧! 參考看看底下的設定方法囉! ^_^
一個簡單的 telnet 範例設定
我們說過,使用 super daemon 來管理主機,最大的優點就是多了一道管理的手續,所以,可以進行比較多的監控動作,像上一個小節我們提到的相關參數當中, 就能夠發現到一些端倪了。在這裡,我們舉個簡單的例子來說明一下整個 super daemon 的管理吧!但是要設定 telnet 的話,就得要安裝 telnet 才行。 在 FC4 的版本上,我們安裝的是 telnet-server-0.17-35 這個套件資料,請您先以 來安裝喔! ^_^
在預設的 /etc/xinetd.d/telnet 內容是這樣的:
[root@linux ~]# vi /etc/xinetd.d/telnet |
其實,主要的參數可以參考上一小節的表格,也可以直接利用『 man xinetd.conf 』來查閱!不過,如果你對於這樣的設定並不滿意的話,其實還可以手動來修改呢! 因為我們知道, telnet 並不是個十分安全的服務,詳細機制可以參考 的 來查閱,所以,如果你想要更多的安全機制,舉例來說,你想要讓 telnet 在區域網路內與 Internet 上面的連線機制有差異時,例如這樣:
· 對內部網域開放較多權限的部分:
假設 Linux 主機有兩張網路卡,對內的這一張 IP 為 192.168.1.100 ,且僅針對 192.168.1.0/24 這個網段提供登入。然後開放所有與 telnet 有關的權限, 包含總連線數量與連線時間等。但是, 192.168.1.120 及 192.168.1.130 兩個 IP 不允許登入;
· 對外部網域較多限制的設定:
對外的 IP 假設為 140.116.44.125 ,且僅允許台南的校園網路 (140.116.0.0/16), 以及教育界的主機名稱 (.edu.tw),另外,僅開放早上 1~9 點及 20~24 兩個時段登入而已。 此外,最多容許十個連線進入。
在這樣的規劃情況下,我可以將剛剛上頭的 /etc/xinetd.d/telnet 這個檔案修改成為:
[root@linux ~]# vi /etc/xinetd.d/telnet |
在上面這個範例當中,我們用了很多的網路 IP 顯示方式,包括 192.168.1.0/24 , 以及 140.116.0.0/16 ,這代表『 192.168.1.0~192.168.1.255 的所有 IP 』以及 『 140.116.0.0 ~140.116.255.255 所有的 IP 』更詳細的說明,我們會在伺服器篇內詳談的。 用了這個設定值之後,你會發現你的 telnet 針對兩個網段來設計了! 設計完成之後,由於這是 xinetd 的設定檔,所以啟動的方式與觀察的方式為:
# 如果您的 telnet 本來就有啟動的話,那麼會發現有一個連線存在你的系統中 |
呵呵!如上面的設定,我們可以將 telnet 的啟動項目進行更多的限制!如此一來,將有助於我們的安全防護呢!尤其如果可以針對不同的介面來設定,嘿嘿!就更加的棒囉!不過,請注意喔!如果照上面的設定,那麼您的主機上面將會開了兩個 23 port 的介面,分別是給兩個介面來使用的呢!嗯!真好玩?同樣的, 你也可以針對自己的喜好來設定你的其他 daemon 使他掛在 xinetd 底下呢!