首先先來解釋一些相關名詞
- Daemon:
是一種專門傾聽通訊埠動靜的軟體,例如;http daemon(httpd)他會傾聽port 80.以等待client提出需求.至於哪些daemon傾聽哪些埠,在 /etc/service 中都有定義. - Inted:
Internet superdaemon ,通常某些 daemon不啟動去傾聽通訊埠,而是由Inted去傾聽,再由Inted去喚醒daemon,執行使用者的需求.已經被 Xinetd 所取代. - Xinted:
eXteneded initd 加強版的Inetd,內建 TCP Wrapper 的相似功能. - TCP Wrapper:
用來管理網路存取控制,由 /etc/hosts.allow & /etc/hosts.deny 的條件作為限制
啟動 Xinetd 下的 daemon 服務是否啟動
[root@benjr ~]# chkconfig –list xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off xinetd based services: chargen-udp: off talk: off telnet: off wu-ftpd: off
經由 xinetd 來啟動服務的 daemon 都會掛在 xinetd based services: 之下,如 telnet , wu-ftpd …..
啟動 Daemon (以 telnet 為範例),首先要先確認 xinetd 在目前執行 的 run level 有開啟,如上例中 xinetd 在 run level 3,4,5 都是開啟的如果未開啟請先將 xinetd 開啟.
[root@benjr ~]# chkconfig xinetd on [root@benjr ~]# service xinetd start
光執行 #chkconfig xinetd on 只會在開機時生效(執行 #chkconfig xinetd on 指令後系統會去修改 /etc/rc.d/rc?.d “? 由0,1,2,3,4,5,6 代表不同的 run level”,對 run level 有興趣的可以參考 Linux開機流程 , 所以要立即開啟服務便要執行
[root@benjr ~]# service xinetd start
接下來開啟 tetlnet
[root@benjr ~]# chkconfig telnet on
此時 telnet 就啟動了,檢查一下是否如此
[root@benjr ~]# chkconfig –list xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off xinetd based services: chargen-udp: off talk: off telnet: on wu-ftpd: off
可以看到 telnet 由 off 變 on 了,如果還是不能使用 telnet 那就手動執行 /etc/init.d/xinetd reload or #service xinetd reload 指令來重新載入設定檔.
Xinetd 的設定檔
首先先來看看 /etc/xinetd.conf 設定檔
[root@benjr ~]# vi /etc/xinetd.conf # # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
先看看最後一行 includedir /etc/xinetd.d 這目錄下有什麼嗎?
[root@benjr ~]# ll /etc/xinetd.d total 72 -rw-r–r– 1 root root 295 Jul 12 20:32 chargen -rw-r–r– 1 root root 315 Jul 12 20:32 chargen-udp -rw-r–r– 1 root root 295 Jul 12 20:32 daytime -rw-r–r– 1 root root 315 Jul 12 20:32 daytime-udp -rw-r–r– 1 root root 287 Jul 12 20:32 echo -rw-r–r– 1 root root 306 Jul 12 20:32 echo-udp -rw-r–r– 1 root root 317 Jul 12 20:32 finger -rw-r–r– 1 root root 257 Jul 12 20:32 ntalk -rw-r–r– 1 root root 359 Jul 12 20:32 rexec -rw-r–r– 1 root root 376 Jul 12 20:32 rlogin -rw-r–r– 1 root root 429 Jul 12 20:32 rsh -rw-r–r– 1 root root 317 Jul 12 20:32 rsync -rw-r–r– 1 root root 406 Jul 12 20:32 sgi_fam -rw-r–r– 1 root root 245 Jul 12 20:32 talk -rw-r–r– 1 root root 302 Jul 12 20:32 telnet -rw-r–r– 1 root root 319 Jul 12 20:32 time -rw-r–r– 1 root root 315 Jul 12 20:32 time-udp -rw-r–r– 1 root root 361 Jul 12 20:32 wu-ftpd
所有經由Xinetd所啟動的 daemon 設定檔都存放在這,也就是想用 Xinetd 來啟動 daemon 的都必須將設定檔放在這裡,那 Xinetd 怎知要將哪一個服務給誰,那就要參閱 /etc/services daemon 與 port number 相對應的關係.至於各個daemon的設定檔可以參考 telnet 的設定
再回頭看 /etc/xinetd.conf 檔的內容
- instances = 60
每種daemon的行程個數上限 - log_type = SYSLOG authpriv
依據 /etc/syslog.conf 檔的 authpriv訊息指定的日誌檔是存放在 /var/log/secure - log_on_success = HOST PID
當連線成功時,紀錄用戶端的主機名稱及帳號 - log_on_failure = HOST
當連線失敗時,只紀錄用戶端的主機名稱 - cps = 5 30
限制最多可同時接受連線數為5個,當超過此限制時該 daemon 將關閉30秒.為了檢視這項功能你可以在 window下寫一個 bat file,或在 linux 下寫個 script.
ex:
I.window下寫一個 telnet.bat 檔
start telnet 10.6.101.59
start telnet 10.6.101.59
start telnet 10.6.101.59
start telnet 10.6.101.59start telnet 10.6.101.59
start telnet 10.6.101.59
執行 telnet.bat
你會發現只有前面 5 個 telnet 會執行,其他的都被拒絕.
類似 TCP Wrapper 的功能的設定
no_access = 0.0.0.0/0
用以取代 /etc/hosts.deny 的功能.
only_from = client_list
用以取代 /etc/hosts.allow 的功能.他的效力高過no_access,因為xinetd會先檢查此檔.
還有其他的設定
disabled = telnet ftp
停止telnet,ftp 的daemon.名稱必須和/etc/services 相配合
instsances = 30
2 thoughts on “Linux – Xinted”