深入解析/etc/hosts.allow與 /etc/hosts.deny:靈活控制 Linux 網絡訪問權限

文章目錄

  • 深入解析/etc/hosts.allow與 /etc/hosts.deny:靈活控制 Linux 網絡訪問權限
  • 引言
  • 什么是 TCP Wrappers?
    • 工作原理
  • 什么是 /etc/hosts.allow 和 /etc/hosts.deny?
  • 匹配規則
  • 配置語法詳解
    • 配置示例
      • 允許特定 IP 訪問 SSH 服務
      • 拒絕整個子網訪問 FTP 服務
      • 允許內網,拒絕外網
      • 記錄非法訪問嘗試
    • 注意事項
  • 高級配置與技巧
    • 允許特定 IP 地址訪問服務
    • 拒絕某個網段的訪問
  • 混合使用/etc/hosts.allow和 /etc/hosts.deny
  • 常見問題及調試
  • 實際應用場景
    • 限制管理端口訪問
    • 防止暴力破解
    • 內外網隔離
  • 與防火墻的對比
  • 總結


深入解析/etc/hosts.allow與 /etc/hosts.deny:靈活控制 Linux 網絡訪問權限

引言

在 Linux 服務器管理中,保障服務的安全性至關重要。除了防火墻(如 iptablesfirewalld),TCP Wrappers 是一個輕量級但高效的工具,可通過 /etc/hosts.allow/etc/hosts.deny 文件快速定義網絡服務的訪問規則。本文將深入探討這兩個文件的作用、配置方法以及實際應用場景。

什么是 TCP Wrappers?

TCP Wrappers 是一個基于主機的訪問控制系統,通過封裝網絡服務(如 sshdvsftpd 等),在服務請求到達前進行權限驗證。只有支持 libwrap 庫的服務才能使用此機制(可以通過 ldd /usr/sbin/sshd | grep libwrap 來驗證服務是否啟用了 TCP Wrappers)。

工作原理

TCP Wrappers 通過檢查 /etc/hosts.allow/etc/hosts.deny 文件來決定是否允許遠程主機訪問本機服務。其工作流程如下:

  1. 系統首先檢查 /etc/hosts.allow 文件,查看是否有匹配的規則。如果匹配成功,則允許訪問。
  2. 如果 /etc/hosts.allow 中沒有匹配項,系統會繼續檢查 /etc/hosts.deny 文件。如果找到匹配項,則拒絕訪問。
  3. 如果兩個文件都沒有匹配項,系統默認允許訪問。

這種訪問控制機制簡單、直接,適用于大多數 Linux 系統服務。

什么是 /etc/hosts.allow 和 /etc/hosts.deny?

/etc/hosts.allow/etc/hosts.deny 文件是 TCP Wrappers 的一部分,用于控制主機對系統上服務的訪問權限。它們的主要作用是通過 IP 地址、主機名或網絡地址來允許或拒絕遠程主機的訪問。

  • /etc/hosts.allow:定義允許訪問指定服務的主機或網絡。
  • /etc/hosts.deny:定義拒絕訪問指定服務的主機或網絡。

匹配規則

  1. 客戶端發起請求時,系統首先檢查 /etc/hosts.allow
  2. 若匹配到允許規則,則直接放行。
  3. 若未匹配,則繼續檢查 /etc/hosts.deny
  4. 如果 hosts.deny 中有匹配規則,則拒絕訪問。
  5. 如果兩個文件都沒有匹配規則,默認情況下允許訪問。

這兩個文件的作用是互補的:如果 /etc/hosts.allow 中匹配到某個主機或 IP 地址,則允許訪問;如果 /etc/hosts.deny 中匹配到,則拒絕訪問。

配置語法詳解

/etc/hosts.allow/etc/hosts.deny 的配置格式類似,每一行都包含三個部分:

服務列表 : 客戶端列表 [: 操作選項]
  • 服務列表:多個服務用逗號分隔(如 sshd, vsftpd),或者使用 ALL 表示所有服務。
  • 客戶端列表:可以使用以下格式:
    • 單個 IP 地址(192.168.1.10
    • 網段(192.168.1.0/255.255.255.0192.168.1.
    • 域名(.example.com 匹配所有子域)
    • 特殊關鍵字:ALL(所有客戶端)、LOCAL(本地網絡)、KNOWN(可解析的主機名)等。
  • 操作選項:可以指定網絡接口、用戶名等額外限制。

配置示例

允許特定 IP 訪問 SSH 服務

sshd: 192.168.1.0/24
sshd: 192.168.1.20, 10.0.0.5
httpd: .mydomain.com
  • 允許 192.168.1.0/24 網段的主機訪問 SSH 服務(sshd
  • 允許 192.168.1.2010.0.0.5 訪問 SSH 服務(sshd
  • 允許來自 .mydomain.com 域名的所有主機訪問 HTTP 服務(httpd

拒絕整個子網訪問 FTP 服務

# /etc/hosts.deny
vsftpd: 192.168.2.0/255.255.255.0
ALL: ALL

這里一個ALL已經是全部了,我把vsftpd加到這,是表示可以拒絕FTP服務的意思

  • 拒絕 192.168.2.0/24 網段的所有主機訪問 FTP 服務(vsftpd)。
  • ALL: ALL 會拒絕所有未在 /etc/hosts.allow 中明確允許的訪問。

允許內網,拒絕外網

# /etc/hosts.allow
ALL: 192.168.1.0/24, LOCAL# /etc/hosts.deny
ALL: ALL
  • 允許 192.168.1.0/24 網段和本地網絡訪問所有服務。
  • 拒絕所有其他來源的訪問。

記錄非法訪問嘗試

# /etc/hosts.deny
sshd: ALL : spawn /bin/echo "Blocked %a at %d" >> /var/log/secure.log
  • 每次拒絕 SSH 訪問時,記錄拒絕的 IP 地址和時間到 /var/log/secure.log 文件中。

注意事項

  1. 優先級與順序/etc/hosts.allow 的規則優先于 /etc/hosts.deny。如果同一服務在兩個文件中都有配置,hosts.allow 中的規則將優先生效。
  2. 立即生效:修改后無需重啟服務,規則會自動生效。
  3. 服務兼容性:只有支持 TCP Wrappers 的服務(如 sshdxinetd 管理的服務)才會受此控制。可以通過 ldd 命令檢查服務是否鏈接了 libwrap 庫(例如:ldd /usr/sbin/sshd)。
  4. 避免沖突:如果同時在兩個文件中為同一服務配置規則,可能會導致意外的訪問控制行為,需確保規則清晰明確。

高級配置與技巧

允許特定 IP 地址訪問服務

如果希望只允許某個特定 IP 地址訪問某個服務,可以這樣配置:

sshd: 192.168.1.10

這表示只允許 IP 地址為 192.168.1.10 的主機訪問 SSH 服務。

拒絕某個網段的訪問

你可以拒絕某個網段的所有訪問:

ALL: 192.168.2.0/24

這表示拒絕 192.168.2.0/24 網段的主機訪問所有服務。

混合使用/etc/hosts.allow和 /etc/hosts.deny

你可以靈活配置這兩個文件。以下是允許特定 IP 地址訪問 SSH 服務,同時拒絕其他所有主機的配置:

  • /etc/hosts.allow
sshd: 192.168.1.10
  • /etc/hosts.deny
sshd: ALL

常見問題及調試

  1. 配置沒有生效

    • 如果修改后規則沒有生效,可能是因為使用的服務沒有啟用 TCP Wrappers 支持。你可以通過 ldd 命令檢查服務是否鏈接了 libwrap 庫。例如:ldd /usr/sbin/sshd
  2. 優先級問題
    /etc/hosts.allow 中的規則優先于 /etc/hosts.deny。因此,如果在 hosts.allow 中明確允許某個主機,而在 hosts.deny 中拒絕了該主機的訪問,hosts.allow 中的規則會優先生效。

  3. 服務未使用 TCP Wrappers
    不是所有服務都支持 TCP Wrappers 訪問控制。你需要查閱服務的文檔來確認是否支持此機制。如果不支持,建議使用防火墻(如 iptables)進行訪問控制。

實際應用場景

限制管理端口訪問

通過限制只允許特定 IP(如管理員 IP)訪問 SSH 服務,可以提高安全性:

  • /etc/hosts.allow
sshd: 192.168.1.0/24
  • /etc/hosts.deny
sshd: ALL

防止暴力破解

結合 Fail2Ban 動態更新 /etc/hosts.deny 來封禁暴力

破解攻擊者的 IP 地址。

內外網隔離

允許內網訪問數據庫服務,拒絕外網連接,以保護數據庫的安全。

與防火墻的對比

特性TCP Wrappers防火墻(iptables)
配置復雜度簡單,基于文本文件復雜,需學習規則語法
作用層級應用層(服務進程)網絡層(IP/端口)
適用場景快速控制服務訪問權限全面控制網絡流量

總結

/etc/hosts.allow/etc/hosts.deny 是 Linux 系統中簡單卻強大的訪問控制工具。它們適合快速配置黑白名單,尤其在小規模環境中效果顯著。對于復雜的網絡控制,仍然需要結合防火墻進行全面防護。掌握其用法,能夠在安全與便捷之間找到完美平衡。

提示:修改前務必備份原文件,并通過 telnetnc 等工具測試規則是否生效!在配置這些文件時,務必小心,避免誤配置導致合法用戶無法訪問系統。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72479.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring AI:開啟Java開發的智能新時代

目錄 一、引言二、什么是 Spring AI2.1 Spring AI 的背景2.2 Spring AI 的目標 三、Spring AI 的核心組件3.1 數據處理3.2 模型訓練3.3 模型部署3.4 模型監控 四、Spring AI 的核心功能4.1 支持的模型提供商與類型4.2 便攜 API 與同步、流式 API 選項4.3 將 AI 模型輸出映射到 …

大白話面試中應對自我介紹

在面試中,自我介紹是開場的關鍵環節,它就像你遞給面試官的一張“個人名片”,要讓面試官快速了解你并對你產生興趣。下面詳細講講應對自我介紹的要點及回答范例。 一、自我介紹的時間把控 一般面試中的自我介紹控制在1 - 3分鐘比較合適。時間…

postman請求后端接受List集合對象

后端集合 post請求,即前端請求方式

Spark基礎篇 RDD、DataFrame與DataSet的關系、適用場景與演進趨勢

一、核心概念與演進背景 1.1 RDD(彈性分布式數據集) 定義:RDD 是 Spark 最早的核心抽象(1.0版本引入),代表不可變、分區的分布式對象集合,支持函數式編程和容錯機制。特點: 無結構化信息:僅存儲對象本身,無法自動感知數據內部結構(如字段名、類型)。編譯時類型安全…

軟件測試人員在工作中如何運用Linux?

軟件測試的小伙們就會明白會使用Linux是多么重要的一件事,工作時需要用到,面試時會被問到,簡歷中需要寫到。 對于軟件測試人員來說,不需要你多么熟練使用Linux所有命令,也不需要你對Linux系統完全了解,你只…

數據結構秘籍(二)圖(含圖的概念、存儲以及圖的兩大搜索)

1 引言 線性數據結構的元素滿足唯一的線性關系,每個元素(初第一個和最后一個外)只有一個直接前趨和一個直接后繼。樹形數據結構的元素之間有著明顯的層次關系。但是圖形結構的元素之間的關系是任意的。 什么是圖? 簡單來說&…

printf 與前置++、后置++、前置--、后置-- 的關系

# 前置和前置-- 先看一段代碼 大家是不是認為printf輸出的是 2 3 3 2 1 1 但是實際輸出的是 3 3 3 1 1 1 在這兩行printf函數代碼里,編譯器會先計算 a 和 --a 的值,然后再 從右向左 開始輸出。 printf函數中,如果有多個…

永磁同步電機無速度算法--反電動勢觀測器

一、原理介紹 在眾多無位置傳感器控制方法中,低通濾波反電勢觀測器結構簡單,參數整定容易,易于編程實現。但是該方法估計出的反電勢會產生相位滯后,需要在估計永磁同步電機轉子位置時進行了相位補償。 二、仿真模型 在MATLAB/si…

VS2015 c++和cmake配置編程

Visual Studio 2015:確保安裝了C開發工具,并安裝“使用C的桌面開發”工作負載。CMake:可以從 CMake官網 下載并安裝,并將其添加到系統環境變量中。vs加載項目啟動Visual Studio。選擇“繼續但無代碼”。點擊“文件”。選擇 “打開…

大語言模型揭秘:從誕生到智能

引言 在人工智能飛速發展的今天,大語言模型(Large Language Models, LLMs)無疑是技術領域最耀眼的明星之一。它們不僅能夠理解人類的自然語言,還能生成流暢的文本,甚至在對話、翻譯、創作等任務中表現出接近人類的智能…

MongoDB 高級索引

MongoDB 高級索引 摘要 在數據庫管理中,索引是提高查詢效率的關鍵因素。MongoDB,作為一款流行的NoSQL數據庫,其索引功能尤為強大。本文將深入探討MongoDB的高級索引特性,包括復合索引、部分索引、文本索引、地理空間索引等,旨在幫助數據庫管理員和開發者更好地利用Mongo…

STM32MP1xx的啟動流程

https://wiki.st.com/stm32mpu/wiki/Boot_chain_overview 根據提供的知識庫內容,以下是STM32 MPU啟動鏈的詳細解析: 1. 通用啟動流程 STM32 MPU啟動分為多階段,逐步初始化外設和內存,并建立信任鏈: 1.1 ROM代碼&…

Collab-Overcooked:專注于多智能體協作的語言模型基準測試平臺

2025-02-27,由北京郵電大學和理想汽車公司聯合創建。該平臺基于《Overcooked-AI》游戲環境,設計了更具挑戰性和實用性的交互任務,目的通過自然語言溝通促進多智能體協作。 一、研究背景 近年來,基于大型語言模型的智能體系統在復…

QT——文件IO

QFile 類 構造函數 QFile() 無參構造 僅僅構建一個QFile 對象,不設定文件名 QFile(文件名) 構建一個QFile對象的同時,設定文件名 但是注意,僅僅設定文件名,并不會打開該文件 設定文件名 QFile file file.setFileName…

HTML第三節

一.初識CSS 1.CSS定義 A.內部樣式表 B.外部樣式表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&g…

xr-frame 3D Marker識別,揚州古牌坊 3D識別技術穩定調研

目錄 識別物體規范 3D Marker 識別目標文件 map 生成 生成任務狀態解析 服務耗時&#xff1a; 對傳入的視頻有如下要求&#xff1a; 對傳入的視頻建議&#xff1a; 識別物體規范 為提高Marker質量&#xff0c;保證算法識別效果&#xff0c;可參考Marker規范文檔 Marker規…

html+js 輪播圖

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>輪播圖示例</title><style>/* 基本樣式…

NAT 代理服務 內網穿透

&#x1f308; 個人主頁&#xff1a;Zfox_ &#x1f525; 系列專欄&#xff1a;Linux 目錄 一&#xff1a;&#x1f525; NAT 技術背景二&#xff1a;&#x1f525; NAT IP 轉換過程三&#xff1a;&#x1f525; NAPT四&#xff1a;&#x1f525; 代理服務器&#x1f98b; 正向…

[Web 安全] PHP 反序列化漏洞 —— PHP 魔術方法

關注這個專欄的其他相關筆記&#xff1a;[Web 安全] 反序列化漏洞 - 學習筆記-CSDN博客 PHP 魔術方法 - 簡介 - PHP 魔術方法 - 簡單教程&#xff0c;簡單編程PHP 中&#xff0c;以兩個下劃線 ( __ ) 開頭方法稱之為 「 魔術方法 」 這些 「 魔術方法 」 在 [PHP](/l/yufei/php…

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡為ext4格式

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡為ext4格式 2025/3/4 16:47 緣起&#xff1a;128GB的TF卡&#xff0c;只能格式化為NTFS/exFAT/ext4。 在飛凌的OK3588-C下&#xff0c;NTFS格式只讀。 exFAT需要改內核來支持。 現在只剩下ext4了。 linux R4默認不支持exFAT…