• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Linux 以 hosts.allow 與 hosts.deny 限制連線來源 IP 位址教學與範例

介紹如何在 Linux 系統上使用 hosts.allow 與 hosts.deny 的設定來限制各種服務的連線來源 IP 位址。

確認 TCP Wrappers 支援性

並不是每一種服務都支援 TCP Wrappers,若要檢查特定服務是否有支援 TCP Wrappers,可以使用 ldd 來查閱該服務執行檔有沒有需要用到 libwrap,若要確認 sshd 是否支援 TCP Wrappers 則可執行:

# 確認 sshd 支援 TCP Wrappers
ldd `which sshd` | grep libwrap
libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007fd85b09e000)

若有出現類似這樣的 libwrap 路徑資訊,就代表該服務執行檔有支援 TCP Wrappers,可以使用 hosts.allow 與 hosts.deny 來限制連線 IP 位址。

設定 hosts.allow 與 hosts.deny

TCP Wrappers 可透過以下兩個設定檔案來連線來源的 IP 位址:

設定檔 優先順序 說明
hosts.allow 高 允許的來源 IP 位址。
hosts.deny 低 拒絕的來源 IP 位址。

在優先順序上,hosts.allow 高於 hosts.deny,也就是說如果寫在 hosts.allow 中被允許的 IP 位址,就一定可以連線,如果 hosts.allow 沒有寫到的,才再去檢查 hosts.deny。如果這兩個檔案都沒有寫到的 IP 位址,預設也是可以進行連線的。

這裡我們希望只有我們指定的 IP 位址可以進行連線(白名單),所以我們將允許連線的 IP 位址寫在 hosts.allow 中,例如若希望 sshd 服務允許接受 192.168.0.0/24 這個 IP 網段連線,就可以加入以下設定:

# 允許 sshd 接受 192.168.0.0/24 網段 IP 連線
sshd: 192.168.0.0/24

# 允許 sshd 接受本機連線
sshd: 127.0.0.1
sshd: [::1]

通常服務都會允許本機自己的連線,如果感覺沒必要的話,可以自行移除。

接著在 hosts.deny 中加入以下設定,禁止其他所有來源 IP 的連線:

# 禁止所有來源 IP 的連線
sshd: ANY

這樣設定完 hosts.allow 與 hosts.deny 之後,就只有 192.168.0.0/24 這個 IP 網段連線能夠透過 SSH 連線至伺服器了。

常用 hosts.allow 範例

以下是一些常用的 hosts.allow 寫法範例:

# 允許 sshd 接受 192.168.0.1 與 192.168.0.2 的連線
sshd: 192.168.0.1, 192.168.0.2

# 允許 sshd 接受相同網域的機器連線
sshd: LOCAL

# 允許 sshd 接受 .officeguide.cc 網域的機器連線
sshd: .officeguide.cc

# 允許 sshd 接受 .officeguide.cc 網域的機器連線,但 cracker.officeguide.cc 除外
sshd: .officeguide.cc EXCEPT cracker.officeguide.cc

# 允許任何服務接受 192.168.0.1 與 192.168.0.2 的連線
ALL: 192.168.0.1, 192.168.0.2

參考資料

  • CloudCone:How To Restrict SSH Access Only To Specific IPs
  • StackExchange:Limit SSH access to specific clients by IP address
  • 鳥哥的 Linux 私房菜:限制連接上您 Linux 主機的電腦網域
  • LINUX 技術手札:/etc/hosts.allow 及 /etc/hosts.deny 限制 IP 連線

  • iT邦幫忙:邁向 RHCE 之路 (Day21) – 主機基礎安全防護 TCP Wrappers

分類:Linux 標籤:資訊安全

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide