Ssh

通過 iptables 或 /etc/hosts.allow 限制 ubuntu 12.04 上的 ssh、sftp 訪問

  • October 2, 2015

我試圖限制對 ubuntu 伺服器的訪問,但我仍然不確定該走哪條路。情況:我們想在 ubuntu 12.04 伺服器上將 ssh 和 sftp 的訪問限制為 4 個沒有靜態 IP 的客戶端。因此每個客戶都有一個 dyndns 帳戶。伺服器將使用共享防火牆,遺憾的是它不能使用 dyndns 帳戶作為允許規則。

想法:允許訪問共享防火牆中的 ssh 和 sftp,但阻止所有伺服器端的 4 個 dyndns 帳戶。

但是實現這一目標的最簡單方法是什麼?

第一個解決方案是在此腳本中使用 iptabels :由 cronjob 執行,它檢查 dyndns ips 並使用以下內容更新 iptable 規則:

# All connectsion from address 1.2.3.4 to SSH (port 22)
iptables -A INPUT -p tcp -m state --state NEW --source DYNDNS_IP --dport 22 -j ACCEPT

# Deny all other SSH connections
iptables -A INPUT -p tcp --dport 22 -j DROP

第二種解決方案是通過拒絕主機 fe 進行限制:

# /etc/hosts.allow
sshd: client.dyndns.org

# /etc/hosts.deny
sshd: ALL

但我不確定denyhosts 是否也能夠限制ftp 訪問。如果是這樣,這個解決方案看起來會更容易管理。

感謝每一個想法,

親切的問候,

托尼

如果客戶端沒有靜態 IP,那麼下一個最佳解決方案是使用帶有或不帶有密碼片語和禁用密碼的 SSH 密鑰。 這是 SSH 密鑰的一個很好的入門

在伺服器上,您可以將 SSH 調整為僅publickey通過調整PreferredAuthenticationsin /etc/ssh/ssh_config(在 Ubuntu 12.04 中)來接受。在這裡 SSH 伺服器端選項的一個很好的解釋

過去,我仍然會使用它iptables來進一步限制埠以使事情更加安全。

imo,越靠近堆棧底部,實現安全性就越好。如果您在 iptables 處阻塞,則數據包甚至不會超過第 3 層/第 4 層,這樣會更好。然而,最好的是分層洋蔥安全模型,具有基於網路和主機的防火牆,以及拒絕主機/tcpwrappers,以及特定於協議的安全性(即 apache 上的 htaccess 規則)。

伺服器將使用共享防火牆,遺憾的是它不能使用 dyndns 帳戶作為允許規則。

你總是可以用 iptables 或 pfsense 替換你的外圍防火牆。

引用自:https://serverfault.com/questions/551827