萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

RedHat 7.x xinetd 完全指南:取代 inetd 的超級伺服器設定詳解

許多人裝 RedHat 7.x 後感到手足無措。7.x 重視系統安全,最大變化是以 xinetd.conf 取代 inetd.conf。7.1 預設不開啟 FTP、Telnet 等傳統服務,改用更安全的 SSH,並新增防火牆服務。

超級伺服器 Inetd 監控主機網路連接。請求抵達 Inetd 管理埠時,轉發給 tcpd。tcpd 依 /etc/hosts.allow、/etc/hosts.deny 判斷允許與否,允許則啟動對應伺服器程式(ftpd、telnetd),此機制稱 tcp_wrapper。

xinetd(eXtended InterNET services daemon)提供類似 inetd+tcp_wrapper 功能但更強大安全。特色:

  • 支援 TCP、UDP、RPC 服務(RPC 支援尚不穩定)
  • 基於時間段存取控制
  • 完備日誌功能,記錄連線成功與失敗
  • 有效防止 DoS 攻擊
  • 限制同類型服務器同時運行數
  • 限制啟動所有服務器總數
  • 限制日誌檔案大小
  • 可將服務綁定特定系統介面,實現僅允許私有網路存取
  • 可作為其他系統代理,結合 IP 偽裝實現內部私有網路存取

最大缺點 RPC 支援不穩定,可啟動 portmap 與 xinetd 共存解決。

編譯安裝

從 https://www.xinetd.org 下載,最新版 xinetd 2.1.8.8p3。預設編譯安裝簡單:

# ./configure
# make
# make install

configure 實用選項:

  • --with-libwrap:啟用後 xinetd 檢視 tcpd 設定檔(hosts.allow/hosts.deny)進行存取控制,需系統安裝 tcp_wrapper 及相關函式庫。
  • --with-loadavg:支援 max-load 設定選項,系統負載過重時關閉某些服務進程,防護 DoS。
  • --with-inet6:支援 IPv6。

RedHat 7.0 預設已安裝 xinetd,無需自行編譯。

配置

預設配置檔 /etc/xinetd.conf,語法與 inetd.conf 完全不同不相容。本質上是 inetd.conf 與 hosts.allow/hosts.deny 功能組合。每項形式:

service service-name { <OPERATOR> <VALUE> ... }

service 為必需關鍵字,屬性表用大括號括起。service-name 為自訂名稱,通常為標準網路服務名,也可增加非標準服務。操作符可為 =、+=、-=。Value 為屬性參數。

表 1:擴展網路服務進程屬性

屬性描述與允許值
Socket_typeTCP/IP socket 類型:stream(TCP)、dgram(UDP)、raw、seqpacket
protocol指定協定,值必須在 /etc/protocols 定義,不指定用預設協定
Server啟動進程完整路徑
Server_args傳給進程參數,不含服務程式名
Port定義服務埠號,若在 /etc/services 列出必須匹配
Waityes:單線程,啟動進程並停止處理請求直到進程終止;no:多線程,每請求啟動一進程
User設定服務進程 UID,xinetd 有效 UID 非 0 時無效
Group設定進程 GID,xinetd 有效 UID 非 0 時無效
Nice指定進程 nice 值
Id唯一指定一服務,區分僅協定不同的服務(如 echo 同時支援 dgram/stream,設 id=echo_dgram、id=echo_stream)
TypeRPC、INTERNAL(xinetd 自身提供如 echo)、UNLISTED(未列在標準系統檔案服務)
Access_time服務可用時間區間,格式 hh:mm-hh:mm(如 08:00-18:00)
Banner連接建立時顯示給客戶端的檔案,無論允許與否
FlagsREUSE、INTERCEPT、NORETRY、IDONLY、NAMEINARGS、NODELAY 等組合
Rpc_versionRPC 版本號或範圍(如 2-3)
rpc_numberRPC 程式號不在 /etc/rpc 時指定
Env空格分隔 VAR=VALUE 表,傳給服務程式,支援 = 和 +=
Passenv空格分隔環境變數表,傳給服務程式,支援所有操作符
Only_from允許存取的客戶端列表,不指定值則拒絕存取,支援所有操作符
No_access拒絕存取的客戶端列表,支援所有操作符
Instances最大同時進程數(>=1 整數或 UNLIMITED)
Log_typeSYSLOG facility[level] 或 file[soft[hard]](KB 限制,soft 達到記錄訊息,hard 達到停止記錄,預設 soft 5MB,hard 不超過 20MB)
Redirectredirect=IPaddress:port,將 TCP 服務重導向其他系統,使用時忽略 server 屬性
Bindbind=IPaddress,將服務綁定特定介面,多介面主機可允許特定介面服務
Log_on_success成功時記錄資訊:PID、HOST、USERID、EXIT、DURATION,預設不記錄,支援所有操作符
Log_on_failure失敗時記錄資訊:ATTEMPT、HOST、USERID、RECORD,預設不記錄,支援所有操作符
Disabled僅用於 defaults 項,指定關閉服務列表,效果同註解該服務項

實例

以下簡單範例展示 /etc/xinetd.conf 配置格式。兩服務定義像 inetd.conf 是因用 itox 工具從 inetd.conf 轉換而來——只需將項目對應轉換成適當 xinetd 語法。大括號中 = 左邊屬性意義直接明瞭。

copyright © 萬盛學電腦網 all rights reserved