UK Security - KnevS/Tesla-Carview GitHub Wiki
Безпека — Аутентифікація, MFA і найкращі практики IT
🤖 Цей український переклад створений з AI-підтримкою з англійського оригіналу. Виправлення приймаються на GitHub.
🌐 Мова: EN · DE · FR · ES · TR · EL · UK
Tesla Carview обробляє чутливі дані: локацію автомобіля, історію заряджання та команди керування вашим авто. Ця сторінка охоплює, як це захищено і що ви повинні робити, щоб ваша інсталяція залишалася безпечною.
Опції входу
1. Ім'я користувача + пароль (стандарт)
- Пароль хешується bcrypt (cost factor 12)
- Невдалі входи мають обмеження швидкості: після 5 невдалих спроб обліковий запис блокується на 15 хвилин
- Усі події входу записуються в audit log
Хороші практики паролів:
- Використовуйте парольну фразу:
Sonne-Berg-Auto-Kaffee(4+ слова, легко запам'ятати, важко зламати) - Мінімум 12 символів — довше краще
- Не використовуйте повторно паролі з інших сервісів
- Використовуйте менеджер паролів (Bitwarden, 1Password, KeePass)
2. Passkey (без пароля, рекомендовано)
Passkey використовують біометрію вашого пристрою (відбиток пальця, Face ID) замість пароля. Вони стійкі до фішингу та значно безпечніші.
Налаштування:
- Settings → Security → Add Passkey
- Ваш браузер відкриває біометричний запит — підтвердьте пальцем або обличчям
- Готово — тепер ви можете входити лише за допомогою біометрії
Passkey працюють на:
- Mac (Touch ID)
- iPhone/iPad (Face ID / Touch ID)
- Android (відбиток пальця)
- Windows (Windows Hello)
- Апаратні ключі (YubiKey)
⚠️ Браузер автомобіля Tesla не підтримує Passkey. Використовуйте ім'я користувача + пароль із "Stay signed in" у автомобілі.
3. MFA / Двофакторна аутентифікація (TOTP)
Додайте додатковий рівень із застосунком-автентифікатором:
- Settings → Security → Enable MFA
- Скануйте QR-код у Google Authenticator, Authy, Bitwarden або подібному
- Введіть 6-значний код для підтвердження
Після налаштування: кожен вхід вимагає вашого пароля + 6-значний код.
Адміністратори можуть вимагати MFA для всіх користувачів:
# .env — примушує MFA для всіх нових користувачів:
MFA_REQUIRED_FOR_NEW_USERS=true
Безпека сесії
| Налаштування | Значення |
|---|---|
| Час життя access-токена | 15 хвилин (короткочасний) |
| Refresh-токен — стандарт | 7 днів |
| Refresh-токен — "Stay signed in" | 90 днів |
| Зберігання refresh-токена | httpOnly, Secure, SameSite=Lax cookie |
| Ротація токенів | Новий refresh-токен при кожному використанні |
Токени зберігаються як SHA-256 хеші — відкритий текст ніколи не торкається бази даних.
Найкращі практики IT-безпеки для вашого сервера
Поза вбудованою безпекою Tesla Carview ваш сервер також потребує захисту.
🔒 Зміцнення SSH
Вимкніть аутентифікацію паролем — використовуйте лише ключі:
# Згенеруйте пару ключів на вашому ЛОКАЛЬНОМУ комп'ютері:
ssh-keygen -t ed25519 -C "tesla-server"
# Скопіюйте публічний ключ на сервер:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@YOUR-SERVER-IP
# На сервері вимкніть аутентифікацію паролем:
nano /etc/ssh/sshd_config
Змініть ці рядки:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
systemctl restart sshd
⚠️ Перевірте, що вхід за ключем працює, перш ніж закривати вашу поточну сесію SSH.
Змініть стандартний SSH-порт (опціонально, зменшує шум у журналі):
# У /etc/ssh/sshd_config:
Port 2222 # Будь-який нестандартний порт
# Оновіть фаєрвол:
ufw allow 2222/tcp
ufw delete allow 22/tcp
systemctl restart sshd
🔥 Фаєрвол (UFW)
Скрипт налаштування налаштовує UFW автоматично. Перевірте, чи правильно:
ufw status verbose
Має показати:
Status: active
To Action From
-- ------ ----
22/tcp (або ваш SSH-порт) ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
Заблокуйте все інше — жодні інші порти не повинні бути відкритими публічно.
🛡️ Fail2ban (захист від брутфорсу)
Fail2ban автоматично банить IP, які повторно зазнають невдачі при SSH або веб-входах. Скрипт налаштування встановлює та налаштовує його.
Перевірте статус:
fail2ban-client status
fail2ban-client status sshd
fail2ban-client status nginx-http-auth
Розбаньте IP (якщо ви заблокували себе):
fail2ban-client set sshd unbanip YOUR-IP
🔄 Тримайте все оновленим
Авто-оновлення для OS:
apt install unattended-upgrades -y
dpkg-reconfigure unattended-upgrades # Виберіть yes
Авто-оновлення для Tesla Carview:
# У /opt/tesla-carview/backend/.env:
AUTO_UPDATE_ENABLED=true
Оновлення запускаються щовечора о 03:30 (Europe/Berlin), якщо ввімкнено.
Оновлення образів Docker:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml pull
docker compose -f /opt/tesla-carview/docker-compose.prod.yml up -d
🌐 HTTPS і поновлення сертифікатів
Сертифікати Let's Encrypt закінчуються кожні 90 днів і поновлюються автоматично через cron-завдання (налаштоване скриптом установки).
Перевірте статус сертифіката:
certbot certificates
Перевірка поновлення (dry run, без змін):
certbot renew --dry-run
Примусово поновіть за потреби:
certbot renew --force-renewal
systemctl restart nginx
🔑 Захистіть ваш .env файл
Ваш .env файл містить Tesla Client ID, Client Secret і JWT secret. Він ніколи не повинен бути:
- Закомічений до git (він у
.gitignore— не перевизначайте це) - Доступний публічно
- Поширений у скріншотах або запитах підтримки
# Перевірте дозволи — мають бути 600 (читання/запис лише для власника):
ls -la /opt/tesla-carview/backend/.env
# Виправте, якщо неправильно:
chmod 600 /opt/tesla-carview/backend/.env
📝 Audit log
Tesla Carview записує всі чутливі дії:
- Спроби входу (успіх і невдача)
- Блокування облікових записів
- Зміни пароля
- Виконання команд автомобіля
- Видалення даних
- Дії адміністратора
Переглядайте на: Admin → Audit Log
Експорт для аналізу: Admin → Audit Log → Export CSV
Заголовки безпеки
Конфігурація nginx Tesla Carview включає сучасні заголовки безпеки:
Content-Security-Policy(CSP) — запобігає XSSStrict-Transport-Security(HSTS) — примушує HTTPSX-Frame-Options: DENY— запобігає clickjackingX-Content-Type-Options: nosniffPermissions-Policy— обмежує функції браузера
Перевірте свої заголовки: securityheaders.com
Повідомлення про вразливість безпеки
Знайшли проблему безпеки? Будь ласка, повідомте про це відповідально:
- Не відкривайте публічне GitHub issue
- Email: див. SECURITY.md у репозиторії
- Ми прагнемо відповісти протягом 48 годин
Чек-лист безпеки для нових інсталяцій
- SSH-аутентифікація за ключем увімкнена, аутентифікація паролем вимкнена
- Фаєрвол активний (UFW), відкриті лише порти 22/80/443
- Fail2ban працює
- Сильний пароль адміна (16+ символів або парольна фраза)
- MFA увімкнено для облікового запису адміна
- Дозволи файлу
.envвстановлено на 600 - Авто-оновлення увімкнено (OS + Tesla Carview)
- Регулярні резервні копії налаштовані (див. Резервне копіювання та відновлення)
- Audit log періодично переглядається