diff --git a/README.md b/README.md
index e06399f..2d56c02 100644
--- a/README.md
+++ b/README.md
@@ -1,72 +1,211 @@
-
+# 🤖 Telegram SSH Notifier
-
+[](https://git.grenu4.ru/y0zhyck/notification_ssh)
+[](LICENSE)
+[](https://t.me/Y0zhyck)
+**Telegram SSH Notifier** — это bash-скрипт для мониторинга SSH-входов на сервере и отправки уведомлений в Telegram.
+Он отслеживает успешные и неудачные попытки входа, определяет геолокацию IP-адресов (опционально) и может автоматически блокировать подозрительные IP.
-Сохраните скрипт
-sudo nano /usr/local/bin/telegram-ssh-notify.sh
+## 📦 Возможности
-Вставьте код и сделайте исполняемым: sudo chmod +x /usr/local/bin/telegram-ssh-notify.sh
+- ✅ Уведомления об **успешных** входах (кто, откуда, когда)
+- ⚠️ Уведомления о **неудачных** попытках (с подсчётом попыток с одного IP)
+- 🔥 **Критические оповещения** при множестве неудачных попыток за короткое время (брутфорс)
+- 🌍 Определение **геолокации** по IP (через ip-api.com или локальную базу GeoIP2)
+- 🛡️ **Белый и чёрный списки** IP (игнорирование доверенных / немедленная блокировка)
+- ⏱️ **Rate limiting** – защита от спама уведомлениями
+- 🔒 **Автоматическая блокировка** IP через iptables/fail2ban (опционально)
+- 📁 Хранение статистики неудачных попыток
+- 🧹 Автоматическая очистка старых логов
+- ⚙️ Гибкая конфигурация через файл или переменные окружения
+- 🚀 Работа в режиме **демона** (мониторинг логов) или интеграция через **PAM**
-Создайте конфигурационный файл
+## 📋 Требования
+
+- **ОС**: Linux (совместим с systemd, любым дистрибутивом)
+- **Утилиты**: `bash`, `curl`, `md5sum` (обычно есть везде)
+- **Для геолокации** (опционально): `jq` (для API ip-api.com) или `mmdblookup` с базой MaxMind GeoIP2
+- **Для автоблокировки** (опционально): `iptables`, `fail2ban` или другой инструмент
+
+## 🚀 Установка
+
+### 1. Скачайте скрипт
+
+```bash
+sudo curl -L -o /usr/local/bin/telegram-ssh-notify.sh https://raw.githubusercontent.com/your/repo/main/telegram-ssh-notify.sh
+sudo chmod +x /usr/local/bin/ssh-telegram.sh
+
+2. Создайте конфигурационный файл
sudo nano /etc/telegram-ssh-notify.conf
+Пример минимальной конфигурации:
+# Telegram Bot Token (получить у @BotFather)
TELEGRAM_TOKEN=
+
+# ID чата или группы (можно узнать у @userinfobot)
TELEGRAM_CHAT_ID=
+
+# Опционально: ID темы в группе (если используется супергруппа с темами)
TELEGRAM_TOPIC_ID=
+
+# Количество неудачных попыток за CRITICAL_TIME_WINDOW для критического оповещения
MAX_ATTEMPTS_BEFORE_CRITICAL=20
-CRITICAL_TIME_WINDOW=300
+CRITICAL_TIME_WINDOW=300 # секунд (5 минут)
+
+# Автоматически блокировать IP при критической атаке (требуется настройка BLOCK_COMMAND)
AUTO_BLOCK_CRITICAL=false
+
+# Команда для блокировки IP (используйте {ip} как плейсхолдер)
+BLOCK_COMMAND="iptables -A INPUT -s {ip} -j DROP"
+
+# Белый и чёрный списки (IP или подсети через пробел)
WHITELIST_IPS="127.0.0.1 10.0.0.0/8"
-BLACKLIST_IPS="1.2.3.4"
+BLACKLIST_IPS=""
-Откройте файл /etc/pam.d/sshd в редакторе (например, nano или vim):
+# Минимальный интервал между одинаковыми уведомлениями (секунды)
+RATE_LIMIT_SEC=60
-sudo nano /etc/pam.d/sshd
+3. Настройте PAM (для уведомлений об успешных входах и выходах)
-Добавьте в конец файла строку:
+Добавьте в файл /etc/pam.d/sshd строку:
-session optional pam_exec.so /usr/local/bin/telegram-ssh-notify.sh #(обратите внимание: если вы переименовали скрипт, укажите правильное имя)
+session optional pam_exec.so /usr/local/bin/telegram-ssh-notify.sh
-Сохраните файл и закройте редактор.
+Важно: строка добавляется без sudo в начале — вы редактируете файл через редактор.
-Перезапускать SSH не обязательно — PAM читает конфигурацию при каждой новой сессии.
+4. Запустите мониторинг неудачных попыток (демон)
-Создайте файл юнита (например, /etc/systemd/system/ssh-check.service):
+Создайте systemd-сервис:
-sudo nano /etc/systemd/system/ssh-check.service
-
-Вставьте следующее содержимое (подставьте правильный путь к вашему скрипту, если он называется иначе, например, telegram-ssh-notify.sh):
+sudo nano /etc/systemd/system/telegram-ssh-notify.service
[Unit]
-Description=SSH Login Monitor for Telegram Notifications
+Description=Telegram SSH Notifier Monitor
After=network.target
[Service]
-ExecStart=/usr/local/bin/ваш_скрипт.sh monitor
+ExecStart=/usr/local/bin/telegram-ssh-notify.sh monitor
Restart=always
User=root
[Install]
WantedBy=multi-user.target
-Обратите внимание: в ExecStart нужно указать команду с аргументом monitor (как в вашем скрипте).
-Если ваш скрипт называется telegram-ssh-notify.sh, то строка будет:
+Активируйте и запустите:
-ExecStart=/usr/local/bin/telegram-ssh-notify.sh monitor
-
-Перечитайте конфигурацию systemd и запустите сервис:
-
-bash
sudo systemctl daemon-reload
-sudo systemctl enable ssh-check.service # автозапуск при загрузке
-sudo systemctl start ssh-check.service
+sudo systemctl enable --now telegram-ssh-notify
Проверьте статус:
-bash
-sudo systemctl status ssh-check.service
+sudo systemctl status telegram-ssh-notify
-Теперь ваш монитор будет работать как демон.
\ No newline at end of file
+5. Проверьте работу
+
+Отправьте тестовое сообщение:
+
+bash
+sudo /usr/local/bin/telegram-ssh-notify.sh test
+Посмотрите статус:
+
+bash
+sudo /usr/local/bin/telegram-ssh-notify.sh status
+
+
+
+⚙️ Конфигурация
+Все параметры можно задать в файле /etc/telegram-ssh-notify.conf (одна строка = КЛЮЧ=значение) или через переменные окружения.
+
+Параметр Описание По умолчанию
+TELEGRAM_TOKEN Токен бота (обязательно) –
+TELEGRAM_CHAT_ID ID чата/группы (обязательно) –
+TELEGRAM_TOPIC_ID ID темы в супергруппе (опционально) –
+MAX_ATTEMPTS_BEFORE_CRITICAL Порог критических попыток 20
+CRITICAL_TIME_WINDOW Интервал для критических попыток (сек) 300
+AUTO_BLOCK_CRITICAL Блокировать IP при критической атаке (true/false) false
+BLOCK_COMMAND Команда блокировки (плейсхолдер {ip}) iptables -A INPUT -s {ip} -j DROP
+WHITELIST_IPS Список доверенных IP/подсетей (через пробел) –
+BLACKLIST_IPS Список IP для немедленной блокировки –
+RATE_LIMIT_SEC Интервал между повторными уведомлениями (сек, 0 = отключить) 60
+ENABLE_GEOIP Включить геолокацию (true/false) true
+ENABLE_NOTIFICATIONS Включить отправку уведомлений (true/false) true
+DEBUG Режим отладки (пишется больше логов) false
+LOG_FILE Путь к лог-файлу скрипта /var/log/telegram-ssh-notify.log
+CLEANUP_DAYS Хранить статистику неудачных попыток (дней) 7
+
+🧰 Использование
+
+Скрипт поддерживает несколько режимов работы:
+
+Режимы командной строки
+
+# Запуск мониторинга логов (обычно через systemd)
+telegram-ssh-notify.sh monitor
+
+# Очистка старых файлов статистики и кэша
+telegram-ssh-notify.sh cleanup
+
+# Просмотр статуса и статистики
+telegram-ssh-notify.sh status
+
+# Отправка тестового сообщения
+telegram-ssh-notify.sh test
+
+# Справка
+telegram-ssh-notify.sh --help
+
+PAM-режим (без аргументов)
+При вызове без аргументов скрипт работает в режиме PAM: читает переменные окружения PAM_TYPE, PAM_USER, PAM_RHOST и отправляет уведомления об успешных входах и выходах.
+
+Примеры уведомлений
+Успешный вход:
+
+
+
+Неудачная попытка (предупреждение):
+
+
+
+Критическая атака:
+
+img/image copy 2.png
+
+🔧 Устранение неполадок
+Логи скрипта
+Все события записываются в LOG_FILE (по умолчанию /var/log/telegram-ssh-notify.log). Просмотр:
+
+sudo tail -f /var/log/telegram-ssh-notify.log
+
+
+Не приходят уведомления
+Проверьте правильность токена и chat_id (тестовая команда test).
+
+Убедитесь, что бот добавлен в группу и имеет права на отправку сообщений.
+
+Проверьте лог скрипта на ошибки (например, таймауты curl).
+
+Включите DEBUG=true в конфиге для детального лога.
+
+Не работает геолокация
+Установите jq (sudo apt install jq) для работы с API ip-api.com.
+
+Или установите GeoIP2: sudo apt install mmdb-bin и скачайте базу GeoLite2-City.mmdb в /usr/share/GeoIP/.
+
+Если ничего не помогает, отключите GeoIP (ENABLE_GEOIP=false) – уведомления будут без геоданных.
+
+Не блокируются IP автоматически
+Убедитесь, что AUTO_BLOCK_CRITICAL=true.
+
+Проверьте, что команда BLOCK_COMMAND корректна и выполняется от root (скрипт запускается с правами root).
+
+Вместо прямой блокировки можно интегрировать с fail2ban: например, вызывать fail2ban-client set sshd banip {ip}.
+
+🤝 Вклад в развитие
+Если у вас есть идеи по улучшению скрипта или вы нашли баг, создайте Issue или Pull Request на GitHub.
+
+Автор: [Evgeniy Spirin / Y0zhyck]
+Версия: 3.0.0
+Дата: 2026
\ No newline at end of file
diff --git a/img/image copy 2.png b/img/image copy 2.png
new file mode 100644
index 0000000..0f2cca6
Binary files /dev/null and b/img/image copy 2.png differ
diff --git a/sshlogin.png b/sshlogin.png
deleted file mode 100644
index 379ef12..0000000
Binary files a/sshlogin.png and /dev/null differ