跳至主要内容

設定Telegram存取通知

PortGuard Server 可以在有效的 SPA 封包添加一個後發送 Telegram 訊息 防火墙规则。通知包括伺服器主機名稱、允許的來源 IP、 資料包來源IP、SPA用戶名、請求存取、開放時間、過期時間 时间和超时。

1.創建一個Telegram機器人​

  1. 開啟Telegram中的@BotFather。 2.發送/newbot並依照指示操作。 3.複製BotFather回傳的Bot Token。看起來像 123456789:AAExampleToken。

將 Bot Token 視為密碼。不要將其提交到原始碼管理,並貼上它 進入支援訊息,或在螢幕截圖中公開。

2.找到目的地Chat ID​

對於私人聊天,請打開新機器人,選擇“開始”,然後向其發送訊息。 對於群組,將機器人新增至群組並發送訊息或命令以指示機器人 可以收到。

在伺服器上,輸入 Bot Token 而不將其保存在 shell 歷史記錄中:

read -rsp 'Telegram Bot Token: ' TG_TOKEN; echo

閱讀機器人的最新更新:

curl --config - <<EOF
silent
show-error
fail
url = "https://api.telegram.org/bot${TG_TOKEN}/getUpdates"
EOF
unset TG_TOKEN

在 JSON 回應中尋找 message.chat.id。私有 Chat ID 通常是 正數。組 Chat ID 通常為負,超組 ID 通常為負 以 -100 開頭。

如果 result 為空,則向機器人發送另一個訊息並再次執行請求。 對於頻道,將機器人加入頻道後可以使用 @channel_username 具有發布訊息權限的管理員。

3.配置PortGuard Server​

以 root 身分啟動防火牆控制台:

sudo portguard-fwknopd --fw-console

選擇5. Configure Telegram notifications,然後輸入:

  • 機器人代幣: BotFather 提供的代幣。
  • Chat ID: 數位私有/群組 ID 或 @channel_username。
  • 最小通知間隔: 0 每發送一次通知 成功敲门。較大的值會抑制期間的額外通知 那么多秒。

確認配置並在要求發送測試時選擇 y 通知。控制台將設定儲存在 /etc/fwknop/fwknopd.conf 中 模式為 600 並重新載入正在執行的守護程式。

4.手動配置​

相同的設定可以直接加入到/etc/fwknop/fwknopd.conf:

PORTGUARD_TG_BOT_TOKEN       123456789:replace_with_bot_token;
PORTGUARD_TG_CHAT_ID -1001234567890;
PORTGUARD_TG_NOTIFY_INTERVAL 0;

Bot Token 和 Chat ID 都是必備的。保护配置和 手動更改後重新啟動服務:

sudo chmod 600 /etc/fwknop/fwknopd.conf
sudo portguard-fwknopd --exit-parse-config \
-c /etc/fwknop/fwknopd.conf \
-a /etc/fwknop/access.conf
sudo systemctl restart fwknopd

5. 验证通知​

從 PortGuard Client 傳送有效的 SPA 資料包時,請遵循守護程式日誌:

sudo journalctl -u fwknopd -f

僅當 SPA 封包被接受且防火牆通過後,通知才會排隊 規則添加成功。重複敲門,而同樣的規則仍然存在 活動的可能不會建立另一個規則。等待之前的規則過期 再次測試。

如果控制台測試失敗或接受的敲擊未發送訊息,請檢查:

  • 伺服器可以解析 api.telegram.org 並建立出站 HTTPS 連線。
  • 私人聊天已開始,或機器人有權限在 目标组或频道。
  • Chat ID 屬於與 getUpdates 使用的相同機器人對話。
  • PORTGUARD_TG_NOTIFY_INTERVAL 未抑制通知。
  • fwknopd 在手動設定變更後重新載入或重新啟動。

6. 禁用通知​

再次運行控制台,選擇選項 5,輸入 disable 作為 Bot Token,然後 確認。 PortGuard 刪除所有三個 Telegram 設定並重新載入守護程式。