Система захисту та оповіщення для валідатора HAQQ
Fail2Ban
Fail2Ban — програма захисту серверів від атаки грубою силою. Написана мовою програмування Python, може працювати на POSIX-системах що мають інтерфейс до системи контролю пакетів або файервола, наприклад, iptables або TCP Wrapper.
Метод «грубої сили» (від англ. brute force; або повний перебір) — метод рішення криптографічної задачі шляхом перебору всіх можливих варіантів ключа. Складність повного перебору залежить від кількості всіх можливих рішень задачі. Якщо простір рішень дуже великий, то повний перебір може не дати результатів протягом декількох років або навіть століть.
Принцип роботи
Fail2ban сканує файли журналів (наприклад, /var/log/apache2/error.log) і забороняє IP-адреси, активність з яких виявляє шкідливі ознаки — велика кількість спроб увійти з неправильно введеним паролем, виконати небезпечні або безглузді дії тощо. В разі виявлення таких аномальних дій, Fail2Ban оновлює правила брандмауера для блокування такої IP-адреси на певний проміжок часу. Програма може бути налаштована і на виконання іншої дії (наприклад, відправлення електронного листа).
TenderDuty v2 - моніторинг та оповіщення
Tenderduty - це комплексний інструмент моніторингу мереж Tendermint. Детальніше можна ознайомитися тут
Цей моніторинг TenderDuty v2 дає змогу здійснювати контроль за нодами і, зокрема, бачити висоту мережі, статус валідатора, аптайм, підписані та пропущені блоки. Також можливе підключення сповіщень у телеграм і дискорд.
Встановлення можливе різними способами, але я буду використовувати встановлення через Docker, хоча немає принципової різниці.
Отже, нам знадобиться окремий сервер (що однозначно дає плюс безпеки) або сервер з уже встановленою нодою (нодами). Також потрібно буде знайти відкриті RPC або відкрити свою на основній (не бажано) або резервній ноді.
Підготовка сервера
# оновлюємо репозиторії sudo apt update && sudo apt upgrade -y
# встановлюємо необхідні утиліти sudo apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
# встановлюємо і копіюємо конфіг, який матиме більший пріоритет apt install fail2ban -y && \ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \ nano /etc/fail2ban/jail.local # розкоментувати і додати свій IP: ignoreip = 127.0.0.1/8 ::1 <ip> systemctl restart fail2ban
# перевіряємо status systemctl status fail2ban # перевіряємо, які jails активні (за замовчуванням тільки sshd) fail2ban-client status # перевіряємо статистику по sshd fail2ban-client status sshd # дивимося логи tail /var/log/fail2ban.log # зупиняємо роботу і видаляємо з автозавантаження systemctl stop fail2ban && systemctl disable fail2ban
apt update && \ apt install apt-transport-https ca-certificates curl software-properties-common -y && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \ apt update && \ apt-cache policy docker-ce && \ sudo apt install docker-ce -y && \ docker --version
Налаштування
tmux new-session -s tenderduty
mkdir tenderduty && cd tenderduty docker run --rm ghcr.io/blockpane/tenderduty:latest -example-config >config.yml
Тепер можна завантажити конфіг з російською мовою і відредагувати його
wget -O $HOME/tenderduty/config.yml "https://raw.githubusercontent.com/lesnikutsa/lesnik_utsa/main/monitoring/TenderDuty(ru)/config.yml" nano $HOME/tenderduty/config.yml
Для простого моніторингу без сповіщень достатньо змінити в конфігурації:
Зміни які потрібно внести для HAQQ:
# Удобное для пользователя имя, которое будет использоваться для меток. Настоятельно рекомендую заключить в кавычки
замість aura пишемо haqq.
# chain_id проверяется на соответствие при подключении к конечной точке RPC, также используется в качестве метки в нескольких местах
в chain-id замість euphoria-1 пишемо haqq_54211-2
# Ура, в версии v2 мы выводим valcons из запросов abci, так что вам не придется прыгать через обручи, чтобы выяснить, как преобразовывать ключи ed25519 в соответствующий адрес bech32
valoper_address: auravaloper10… вписуєте свій валопер (haqqvaloper….), знайти його можна тут:https://haqq.explorers.guru/)
# URL-адрес конечной точки. Должен включать protocol://hostname:port тут замість https://snapshot-1.euphoria.aura.network:443 вставляємо наш RPC http://142.132.202.50:11601/
# Должны ли мы отправить предупреждение, если этот хост не отвечает?Замість yes пишемо no.
Зберігаємо файл (Ctrl+O ENTER CTRL+X)
Після налаштування конфіга запускаємо
docker run -d --name tenderduty -p "8888:8888" -p "28686:28686" --restart unless-stopped -v $(pwd)/config.yml:/var/lib/tenderduty/config.yml ghcr.io/blockpane/tenderduty:latest
docker logs -f --tail 20 tenderduty
Тепер саме час перевірити інформацію у браузері:
# дізнаємося адресу і вставляємо в браузер echo -e "\033[0;32mhttp://$(wget -qO- eth0.me):8888/\033[0m" # http://108.108.108.108:8888/
Для того щоб виконати завдання "False alarm!" надішліть посилання на написаний вами публічний гайд.