Практичні налаштування для запобігання несанкціонованому доступу та витоку інформації.
Розбираємо на живій системі — реальні конфіги, реальні атаки, реальні захисти.
guest@bash-app.com:~$
Один замок ламається. Defense in depth — кожен рівень підстраховує наступний. Зловмиснику треба пройти всі — а вам досить, щоб один витримав.
Наведи/торкнись картки — приклад із реального життя.
Перемкни — і подивись, що бачить зловмисник у публічному Wi-Fi.
# Let's Encrypt, безкоштовно, авто-продовження sudo certbot --nginx \ -d bash-app.com -d www.bash-app.com
# nginx: весь :80 → :443 return 301 https://$host$request_uri; # заголовок: наступні 2 роки лише HTTPS Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Практика: TLS 1.2/1.3, редірект 80→443, HSTS (щоб не було навіть першого http-запиту), і Cloudflare у режимі Full (strict).
Це реальні заголовки відповіді bash-app.com. Клікни на будь-який — що він блокує.
<iframe> — захист від clickjacking (див. наступний слайд).Зловмисник кладе прозорий iframe справжнього сайту поверх принади. Перетягни повзунок — і побачиш, що насправді під пальцем жертви.
<iframe>Уяви форму коментаря. Введи «зловмисний» рядок і подивись різницю.
Правило: ніколи не довіряй вводу. Дані = дані, не код. Екранування на виводі + CSP як друга лінія.
Введи пароль — подивись, як його бачить база при різних підходах.
Два однакові паролі → різні хеші (сіль). Повільність — це фіча: 100 000 спроб/год замість мільярдів/сек.
Навіть із вкраденим паролем зловмисник не увійде без коду, що живе 30 секунд лише у твоєму телефоні.
Стань «зловмисником»: тисни «спробувати ввійти» швидко. Дивись, коли система скаже «досить».
Ліміт 5 спроб на IP+email, далі — блок на 15 хв. Мільйон паролів перетворюється на роки.
X-Real-IP від nginx (не з підробного заголовка)# .gitignore .env # генеруємо, не вигадуємо: openssl rand -hex 32 # AUTH_SECRET
550 This API key is not authorized to send from send.bash-app.com
База даних не має «дивитися» в інтернет. Єдина точка входу — зворотний проксі.
ufw — відкриті лише 22/80/443unattended-upgradesIf the address is available, a confirmation email has been sent.
І ніколи не логуй секрети/паролі/токени — логи теж витікають.
Цей сайт нещодавно втратив домен — реєстратор заблокував акаунт. Доступ до klebold.xyz зник за годину.
Безпека — це не лише «не пустити». Це ще й швидко відновитись, коли пустило.