前言:
TCP Wrappers 在 Unix 或 Linux 世界中已經使用了很多年。 它是用來限制遠端IP Address權限,和是否能夠獲得基於TCP的服務。 telnetd 和 ftpd 都是 TCP services,當然還有很多。 有了 TCP Wrappers,你就可以控制那些IP Address可以使用 telnetd 服務,和那些不可以。 在沒有 ssh 之前,TCP Wrappers 可說是謂一的保賬系統安全的方法。 需然,這個是一個很老舊的系統安全功能,但到現在還有很多人在使用它。 不要看它舊,最起碼Hacker沒辦法知道你容許那一個IP Address可以使用TCP Service。 就算知道了IP Address,Hacker們也不能除意使用你的IP Address,Hacker 假裝IP Address也沒用。
由 Solaris 9 開始,TCP Wrappers已經開始加入到系統中。對inetd為基礎的服務進行保護,但系統預設是沒有打開這個功能。所以,你如果需要這個TCP Wrappers功能,你便需要人手打開TCP Wrappers對那一個 TCP Services產生作用。
TCP Wrappers 的 IP 限制規則,是透過 /etc/hosts.allow 和 /etc/hosts.deny 來決定。 要了解更多 TCP Wrappers 的 IP 限制規則方法,可在 Solaris 10 系統中,輸入以下指令:
$ man -M /usr/sfw/man -s 4 hosts_access
Solaris 10 以前的版本:
Soalris 10 和 Solaris 9或以前的版本,啟動 TCP Wrappers 方法是有很大的分別。 Solaris 9或以前的版本如果需要啟動 TCP Wrappers,就必須要修改 /etc/inetd.conf 來達到目標。 可參考:
Service Management Facility (SMF):
Solaris 10 已經開始使用 Service Management Facility (SMF) 來代替修改 inetd.conf 來管理 TCP Service。所以,如果你已前習慣了修改 inetd.conf 來控制 daemon 的運作的話,在使用 Solaris 10 後你可能會覺得很難使用。 新的方法可以使用 inetadm 來處理 deamon的運作。
inetadm 的簡單介紹:
檢查 daemon (services) 是否安裝或啟動
舊版本 Solaris |
Solaris 10 |
編輯 /etc/inetd.conf 來檢查安裝了什麼 daemon和啟動了什麼 daemon |
執行 inetadm 便可檢查安裝了什麼 services 和啟動了什麼 services
執行 inetadm -l 便可以了解該 services 的詳細資料。 e.g. : inetadm -l telnet |
svcadm 的簡單介紹:
停止 Telnetd service 運作:
舊版本 Solaris |
Solaris 10 |
編輯 /etc/inetd.conf
把要停用的 services 前加上一個 # 號
telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
改成
#telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
離開編輯程式並存檔
執行 /etc/init.d/inetsvc restart |
$ inetadm | grep telnet enable online svc:/network/telnet:default
$ svcadm disable network/telnet |
開啟 Telnetd service 運作:
舊版本 Solaris |
Solaris 10 |
編輯 /etc/inetd.conf
把要啟用的 services 前的 # 號刪去
#telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
改成
telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
離開編輯程式並存檔
執行 /etc/init.d/inetsvc restart |
$ inetadm | grep telnet enable online svc:/network/telnet:default
$ svcadm enable network/telnet |
設定 Telnetd 使用 TCP Wrappers:
以下例子,將會說明如何使用 TCP Wrappers 在 telnetd 上,並且使用 SMF 來操作。 如果要了解更多TCP Wrappers在Solaris 10上的其它操作資料,可參考:
1. 查詢 Telnetd 的 services 全名。
$ inetadm | grep telnet enabled online svc:/network/telnet:default
services 名為 network/telnet
2. 檢查 telnet 的 tcp_wrappers 功能是否開啟,如果是FALSE就代表還未開啟。
$ inetadm -l telnet | grep tcp_wrappers tcp_wrappers=FALSE
3. 開啟 telnet 的 tcp_wrappers 功能。
$ inetadm -m telnet tcp_wrappers=TRUE
4. 再檢查 telnet 的 tcp_wrappers 功能是否開啟,如果是TRUE就代表已經開啟。
$ inetadm -l telnet | grep tcp_wrappers tcp_wrappers=TRUE
5. 檢查 telnetd 的執行程式名稱。
$ inetadm -l telnet | grep exec exec="/usr/sbin/in.telentd"
執行程式為 in.telentd
6. 建立 /etc/hosts.deny,用來拒絕任何人使用 telnet services,否則你還是可以 telnet 進去 server裡。
hosts.deny 是 TCP Wrappers 設定檔,用來設定那些services需要拒絕 。
備注: ::DENY
編輯 /etc/hosts.deny,並把 in.telnetd 加進去。
in.telnetd:ALL:DENY
離開並存檔
7. 建立 /etc/hosts.allow,用來允許某些 IP 可以使用 telnet services,否則你便不可以 telnet 進去 server裡。
hosts.allow 是 TCP Wrappers 設定檔,用來設定某些IP允許使用某些services 。
備注: ::ALLOW
以下例子,將會允許 202.134.101.110 和 192.168.30.1 至 192.168.30.255 使用 telnet services。
編輯 /etc/hosts.allow,並把 in.telnetd 加進去。
in.telnetd:202.134.101.110:ALLOW in.telnetd:192.168.30.0/255.255.255.0:ALLOW
離開並存檔
設定已經完成,你可以開始測試 Telnet 功能了。 |