自動 IPTables 暴力破解規則

自動 IPTables 暴力破解規則

我對網路管理非常陌生,所以請注意我還沒有那麼豐富的經驗。

我有一個帶有 Plesk 面板的 Ubuntu 根伺服器。

昨天我和我的朋友注意到我們的 TS3 的語音品質變得非常糟糕。我向伺服器發送了一些 ping,發現丟包率非常高。之後我用谷歌搜尋了一下,發現有一個auth.log.我下載了它並滾動了一下,然後我發現了這個:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

似乎有人多次嘗試透過 SSH 登入。我滾動了一下,發現這個人嘗試使用許多不同的用戶名:student, tech, psi, news,...

文件中顯示了數百個此類登入資訊。

我在我的資料中心的網站上查找了流量統計資料。每小時僅為 17MB。我有一個 100Mbit 主幹網,所以資料傳輸本身似乎不是問題。

目前我無法以任何方式存取伺服器。

我的問題是:我怎麼能再次獲得訪問權限,如何抑制這次攻擊並防止後續攻擊?

答案1

如何獲得存取權限?

目前尚不清楚您為何無法存取您的帳戶。

如果您的電腦受到攻擊或高負載,您應該與您的提供者討論限制存取(IP 限制)或將伺服器離線(斷開與 Internet 的連線)。

您可能還需要帶外訪問,您的提供者可能可以提供協助。

如果有人破壞了您的伺服器,您可能需要從備份中還原或使用復原映像。

如何防止對伺服器的攻擊,特別是 SSH

防止暴力登入的最佳方法?

首先不要讓他們到達您的機器!有很多方法可以在暴力嘗試到達您的主機之前阻止它們,甚至可以在 SSH 層級阻止它們。

話雖如此,使用諸如fail2ban之類的東西來保護您的作業系統是一個好主意。http://en.wikipedia.org/wiki/Fail2ban

Fail2ban 類似於 DenyHosts ...但與專注於 SSH 的 DenyHosts 不同,fail2ban 可以設定為監視將登入嘗試寫入日誌檔案的任何服務,而不是僅使用 /etc/hosts.deny 來封鎖 IP 位址/主機、fail2ban可以使用Netfilter/iptables和TCP Wrappers /etc/hosts.deny。

您應該考慮許多重要的安全技術來幫助防止暴力登入:

SSH:

  • 不允許root登入
  • 不允許 ssh 密碼(使用私鑰驗證)
  • 不要監聽每個介面
  • 建立 SSH 網路介面(例如 eth1),該介面與您處理請求的介面(例如 eth0)不同
  • 不要使用常見的用戶名
  • 使用允許列表,僅允許需要 SSH 存取的用戶
  • 如果您需要網路存取...限制對有限 IP 集的存取。一個靜態 IP 是理想的選擇,但將其鎖定到 xx0.0/16 比 0.0.0.0/0 更好
  • 如果可能的話,找到一種無需 Internet 存取即可進行連接的方法,這樣您就可以拒絕 SSH 的所有 Internet 流量(例如,使用 AWS,您可以獲得繞過 Internet 的直接連接,稱為 Direct Connect)
  • 使用fail2ban等軟體來捕捉任何暴力攻擊
  • 確保作業系統始終是最新的,特別是安全性和 ssh 軟體包

應用:

  • 確保您的應用程式始終是最新的,特別是安全包
  • 鎖定您的應用程式「管理」頁面。上面的許多建議也適用於您的應用程式的管理區域。
  • 密碼保護您的管理區域,像用於 Web 控制台的 htpasswd 之類的東西將投射任何潛在的應用程式漏洞並創建額外的進入障礙
  • 鎖定檔案權限。 「上傳資料夾」因成為各種令人討厭的東西的入口點而臭名昭著。
  • 考慮將您的應用程式放在專用網路後面,並且僅公開您的前端負載平衡器和跳線盒(這是使用 VPC 的 AWS 中的典型設定)

答案2

我怎麼能抑制這種攻擊並防止後續攻擊

通常我將預設的 ssh 連接埠從 22 更改為 1122 之類的另一個連接埠。反正:

vi /etc/ssh/sshd_config

並編輯埠22埠 1122,但這還不夠。

自動 IPTables 暴力破解規則

我用log2iptables https://github.com/theMiddleBlue/log2iptables相反,Fail2ban,因為它是一個簡單的 Bash 腳本,可以使用正規表示式解析任何日誌檔案並執行 iptables。例如,當出現 5 個符合項目時,log2iptables 會刪除特定的 IP 位址。這很酷,因為使用 Telegram API,當他發現問題時可以在手機上向我發送訊息:)

希望這會有所幫助!

答案3

我剛剛將其放在一起,作為 cronjob 等每 15 分鐘運行一次:

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

答案4

這是我針對 SSH 攻擊的替代方案。這個想法是如果不使用則繼續關閉 SSH 守護程式。沒有開放埠就沒有攻擊。你可以嘗試一下。它是開源的 https://github.com/indy99/nnet_port_guard

相關內容