feat: watchdog Telegram shows server name (2.1.9-SAC)
Add shared server label helpers in ssh-monitor-perms.sh; roadmap marks phase 1 done and phase 2.2.0 as next release. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# ssh-monitor
|
# ssh-monitor
|
||||||
|
|
||||||
**Версия:** `2.1.8-SAC`
|
**Версия:** `2.1.9-SAC`
|
||||||
|
|
||||||
Bash-мониторинг **SSH**, **sudo**, **systemd-logind**: Telegram/email, бан IP (ipset), ежедневный отчёт, heartbeat.
|
Bash-мониторинг **SSH**, **sudo**, **systemd-logind**: Telegram/email, бан IP (ipset), ежедневный отчёт, heartbeat.
|
||||||
|
|
||||||
|
|||||||
@@ -24,11 +24,15 @@
|
|||||||
|--------|------|------|
|
|--------|------|------|
|
||||||
| **2.1.7-SAC** | Фаза 1 + выбранное из Фазы 4 | Права, `REPO_URL` обязателен, webhook, docs | ✅ реализовано |
|
| **2.1.7-SAC** | Фаза 1 + выбранное из Фазы 4 | Права, `REPO_URL` обязателен, webhook, docs | ✅ реализовано |
|
||||||
| **2.1.8-SAC** | Дополнение к 1.1 | SAC-first update: hardening прав на каждом прогоне updater | ✅ реализовано |
|
| **2.1.8-SAC** | Дополнение к 1.1 | SAC-first update: hardening прав на каждом прогоне updater | ✅ реализовано |
|
||||||
| **2.2.0-SAC** | Фаза 2 | Manifest, pinned ref, без слепого `reset --hard` |
|
| **2.1.9-SAC** | Дополнение к 1.x | Watchdog: `🖥️ Сервер:` в Telegram (как у агента) | ✅ реализовано |
|
||||||
|
| **2.2.0-SAC** | **Фаза 2** | Manifest, pinned ref, без слепого `reset --hard` | **следующий релиз** |
|
||||||
| **2.3.0-SAC** | Фаза 3 | Парсер конфига без `source` (minor breaking) |
|
| **2.3.0-SAC** | Фаза 3 | Парсер конфига без `source` (minor breaking) |
|
||||||
|
|
||||||
Bump: `ssh-monitor` (`SSH_MONITOR_VERSION`) + `version.txt` в каждом релизе.
|
Bump: `ssh-monitor` (`SSH_MONITOR_VERSION`) + `version.txt` в каждом релизе.
|
||||||
|
|
||||||
|
**Текущий статус (2026-07-08):** фаза 1 закрыта (2.1.7–2.1.9). **Дальше — фаза 2 → релиз 2.2.0-SAC.**
|
||||||
|
Backlog по ingest при массовом update (SAC + ops): [ingest-mass-update-backlog.ru.md](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/ingest-mass-update-backlog.ru.md) (отдельный ToDo, не блокирует 2.2.0).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Фаза 1 — 2.1.7-SAC
|
## Фаза 1 — 2.1.7-SAC
|
||||||
@@ -232,14 +236,12 @@ Bump: `ssh-monitor` (`SSH_MONITOR_VERSION`) + `version.txt` в каждом ре
|
|||||||
|
|
||||||
## Чек-лист «перед стартом работы завтра»
|
## Чек-лист «перед стартом работы завтра»
|
||||||
|
|
||||||
Утвердить галочками:
|
- [x] **Релиз 2.1.7–2.1.9** — фаза 1 + SAC-first + watchdog server label
|
||||||
|
- [ ] **Релиз 2.2.0** — scope: 2.1–2.3, 2.5, 4.5, 4.7(M7); **2.4 GPG отложить**
|
||||||
- [ ] **Релиз 2.1.7** — scope: 1.1, 1.2 (warn), 1.4, 1.5, 4.4, 4.3 + **1.3 вариант A/B/C**
|
|
||||||
- [ ] **Релиз 2.2.0** — scope: 2.1–2.3, 2.5, 4.5, 4.7(M7); **2.4 отложить**
|
|
||||||
- [ ] **Релиз 2.3.0** — scope: 3.1–3.3, удаление webhook (если A)
|
- [ ] **Релиз 2.3.0** — scope: 3.1–3.3, удаление webhook (если A)
|
||||||
- [ ] **Дефолт `GIT_REF`** в 2.2.0: тег из `version.txt` vs `main`
|
- [ ] **Дефолт `GIT_REF`** в 2.2.0: тег из `version.txt` vs `main`
|
||||||
- [ ] **Миграция хостов 2.1.7:** рассылка примера `Environment=REPO_URL=...` для systemd / SAC
|
- [x] **Миграция хостов:** SAC-first update, `known_hosts`, `REPO_URL` через SAC
|
||||||
- [ ] **GPG:** отложить до явного запроса
|
- [ ] **Ingest mass-update backlog** — см. security-alert-center `docs/ingest-mass-update-backlog.ru.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ IFS=$'\n\t'
|
|||||||
# ============================================
|
# ============================================
|
||||||
|
|
||||||
CONFIG_FILE="/etc/ssh-monitor.conf"
|
CONFIG_FILE="/etc/ssh-monitor.conf"
|
||||||
SSH_MONITOR_VERSION="2.1.8-SAC"
|
SSH_MONITOR_VERSION="2.1.9-SAC"
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
if [ -f "$SCRIPT_DIR/ssh-monitor-perms.sh" ]; then
|
if [ -f "$SCRIPT_DIR/ssh-monitor-perms.sh" ]; then
|
||||||
|
|||||||
@@ -132,3 +132,42 @@ ssh_monitor_check_config_file_perms() {
|
|||||||
esac
|
esac
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Подпись сервера в Telegram/webhook (как в ssh-monitor: SERVER_DISPLAY_NAME или hostname + IPv4).
|
||||||
|
ssh_monitor_server_display_name_with_ip() {
|
||||||
|
local hn ip
|
||||||
|
hn="${SERVER_DISPLAY_NAME:-}"
|
||||||
|
if [ -z "$hn" ]; then
|
||||||
|
hn="$(hostname 2>/dev/null | tr -d '\r\n')"
|
||||||
|
[ -z "$hn" ] && hn="(unknown)"
|
||||||
|
fi
|
||||||
|
ip="${SERVER_IPV4:-}"
|
||||||
|
if [ -z "$ip" ] && command -v ip >/dev/null 2>&1; then
|
||||||
|
ip="$(ip -4 route get 1.1.1.1 2>/dev/null | awk '/\bsrc\b/ {for (i = 1; i < NF; i++) if ($i == "src") { print $(i + 1); exit }}')"
|
||||||
|
[ -z "$ip" ] && ip="$(ip -4 route get 8.8.8.8 2>/dev/null | awk '/\bsrc\b/ {for (i = 1; i < NF; i++) if ($i == "src") { print $(i + 1); exit }}')"
|
||||||
|
fi
|
||||||
|
if [ -z "$ip" ] && command -v hostname >/dev/null 2>&1 && hostname -I >/dev/null 2>&1; then
|
||||||
|
ip="$(hostname -I 2>/dev/null | tr ' ' '\n' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | grep -Ev '^(127\.|0\.0\.0\.0)$' | head -n1)"
|
||||||
|
fi
|
||||||
|
if [ -n "$ip" ]; then
|
||||||
|
printf '%s (%s)' "$hn" "$ip"
|
||||||
|
else
|
||||||
|
printf '%s' "$hn"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ssh_monitor_message_ensure_server_line() {
|
||||||
|
local msg="$1"
|
||||||
|
if [[ "$msg" == *'🖥️ Сервер:'* ]]; then
|
||||||
|
printf '%s' "$msg"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local first rest
|
||||||
|
first="${msg%%$'\n'*}"
|
||||||
|
if [ "$first" = "$msg" ]; then
|
||||||
|
printf '%s\n🖥️ Сервер: %s' "$first" "$(ssh_monitor_server_display_name_with_ip)"
|
||||||
|
else
|
||||||
|
rest="${msg#*$'\n'}"
|
||||||
|
printf '%s\n🖥️ Сервер: %s\n%s' "$first" "$(ssh_monitor_server_display_name_with_ip)" "$rest"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ PY
|
|||||||
|
|
||||||
notify_send() {
|
notify_send() {
|
||||||
local message="$1"
|
local message="$1"
|
||||||
|
message="$(ssh_monitor_message_ensure_server_line "$message")"
|
||||||
if send_telegram_raw "$message"; then
|
if send_telegram_raw "$message"; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
2.1.8-SAC
|
2.1.9-SAC
|
||||||
|
|||||||
Reference in New Issue
Block a user