4. 44
D2D D2IMPROVE YOUR SECURITY, DUDE
Многие проекты начинаются с MVP
● MVP (minimum viable product) — минимально жизнеспособный продукт,
который позволяет получить осмысленную обратную связь от
пользователей, понять что им нужно, понять пути дальнейшего развития
продукта.
8. 88
D2D D2IMPROVE YOUR SECURITY, DUDE
Многие проекты начинаются с MVP
● Цели MVP:
● Тестирование гипотез о продукте с минимальными затратами.
● Ускоренное получение информации, требуемой для создания решения.
● Экономия времени на разработку.
● Быстрое предоставление продукта, решающего, как минимум, одну
проблему, ранним пользователям.
9. 99
D2D D2IMPROVE YOUR SECURITY, DUDE
Многие проекты начинаются с MVP
Одна из целей MVP:
Экономия времени на разработку.
Следовательно:
Мы стараемся не разворачивать инфраструктуру уровня гигантов, а
обходимся малым
10. 1010
D2D D2IMPROVE YOUR SECURITY, DUDE
Не нужно гигантов на старте, если вы не гигант
Obama for America AWS Architecture https://s3.amazonaws.com/OM-SHARE/AWSOFA-Print-27x240.pdf
11. 1111
D2D D2IMPROVE YOUR SECURITY, DUDE
Обходимся малым
● Пара-другая виртуальных машин
● Одна база данных. Возможно, кеш
● Повторяем то же самое, но для demo или qa целей
● И всё это в рамках одной сети
● Используем SaaS платформы для хранения кода и сборки приложения
● Используем простой менеджер паролей
● Используем хранилище для “артефактов” (Google Drive, Dropbox)
13. 1313
D2D D2IMPROVE YOUR SECURITY, DUDE
К проекту в стадии MVP может неожиданно прийти успех
● Могут появиться
● Серьёзный инвестор с серьёзными намерениями
● Серьёзный клиент с серьёзными требованиями к безопасности
● Серьёзный компания, желающая купить стартап
14. 1414
D2D D2IMPROVE YOUR SECURITY, DUDE
Серьёзные ребята — серьёзные правила
● Пересмотреть и усилить безопасность
● Выполнять требования стандартов и региональных законов
− HIPAA, HIPAA-HITECH
− PCI-DSS (Payment Card Industry’s Data Security Standard)
− ISO/IEC 15408, ISO/IEC 18045
− Другие нормативные и подзаконные акты
− GDPR
● Пройти проверку внешним security-аудитором
15.
16. 1616
D2D D2IMPROVE YOUR SECURITY, DUDE
Серьёзные ребята — серьёзные правила
Зачастую вы оказываетесь не готовы следовать таким правилам
Зачастую результаты security-аудита могут быть неутешительными
18. 1818
D2D D2IMPROVE YOUR SECURITY, DUDE
Как улучшить безопасность вашего проекта
● Ревизия имеющейся системы
● Сетевое разделение
● Все critical сервисы — self-hosted
− и обеспечение high availability этих сервисов
(дублирование, multi-az, мониторинг и т.д.)
● Менеджмент паролей
● Single Sign On
● Обучение сотрудников, создание правил поведения и следование им
● …
20. 2020
D2D D2IMPROVE YOUR SECURITY, DUDE
● Проблемы в development/qa окружении не влияют на prod
● Исключается вероятность испортить данные в prod БД из-за “миссконфига”
приложения (ситуации ряда “случайно указали хост prod БД, вместо qa”)
● Если, всё же, скомпрометируют dev или qa, то не получат доступа к
данным в prod
Зачем нужно сетевое разделение
25. 2525
D2D D2IMPROVE YOUR SECURITY, DUDE
● Разделение production окружение и development окружений
● Развязать зависимости между dev-окружениями (qa, devel)
● Ограничение доступа извне к development окружениям
● Контроль доступа извне к production окружению
● Ограничить количество production-сервисов, которые доступны извне по
публичной сети
●
Какие изменения были необходимы
27. 2727
D2D D2IMPROVE YOUR SECURITY, DUDE
Возможные и рассматриваемые решения для ограничения доступа
к сервисам внутри AWS VPC
● Машины с публичными IP-адресами
− Белые списки
● Машины только с приватными IP-адресами
− Single ssh-entrypoint, т.н. “Bastion”
− VPN
28. 2828
D2D D2IMPROVE YOUR SECURITY, DUDE
Зачем нужно ограничение доступа
● Меньше точек воздействия на ваш сервис со стороны злоумышленников
− Нет нагрузки от брутфорса паролей
− Нет нагрузки от скана портов
● Страхуемся от случая “подняли новый сервис, не настроили секьюрити, а
потом забыли, и в таком виде стали использовать для прода”
● Страхуемся от 0-day уязвимостей
30. 3030
D2D D2IMPROVE YOUR SECURITY, DUDE
Что использовать для менеджмента разделенных окружений
● Вариант 1
− Terraform
− Docker/EC2 instances
● Вариант 2
− AWS ECS (Elastic Container Service)
− Куча CloudFormation темплейтов
− Docker/EC2 instances
● Вариант 3
− Convox, который скрывает за собой работу с AWS ECS и генерацию
CloudFormation магии
− Docker
● Вариант N
− ...
31. 3131
D2D D2IMPROVE YOUR SECURITY, DUDE
Какие ограничения накладывает ограничение доступа
● Вы не можете подключиться к сервисам/серверам с произвольного
компьютера
● На всех ваших рабочих станциях настроен VPN
●
34. 3434
D2D D2IMPROVE YOUR SECURITY, DUDE
Почему вам могут быть нужны self-hosted решения
● HIPAA, HIPAA-HITECH
● Другие нормативные и подзаконные акты, требующие или иметь свою
собственную инфраструктуру, или подписывать расширенные соглашения
с поставщиками инфраструктурных решений и сервисов
● Хотим держать всё под личным контролем
35. 3535
D2D D2IMPROVE YOUR SECURITY, DUDE
Что именно можно развернуть в self-hosted варианте
● Система управления версиями
Version Control System (VCS):
− Git, Mercurial, SVN
● Системы непрерывной интеграции и непрерывной доставки
Continuous integration (CI) & Continuous delivery (CD) systems
● Репозитории пакетов языка программирования
● Репозитории пакетов операционной системы
● Репозитории Docker образов
● etc…
37. 3737
D2D D2IMPROVE YOUR SECURITY, DUDE
Зачем использовать self-hosted решения для Git
● Код доступен только сотрудникам компании
● Не зависим от глобального интернета
● Не зависим от “живучести” внешних сервисов
− 2017: GitLab.com database incident
● Не зависим от security багов публичной SaaS платформы
− 2012: Коммитать в github без прав из-за “бага” в Rails
https://habrahabr.ru/post/139399/
− 2012: Добавить свой SSH ключ в чужой аккаунт
https://habrahabr.ru/sandbox/41974/
− 2014: Получить доступ к приватным репозиториям
https://habrahabr.ru/post/211845/
39. 3939
D2D D2IMPROVE YOUR SECURITY, DUDE
Как это меняет вашу жизнь
● Нужно следить за живучестью вашего git-сервера самостоятельно
● Своевременно обновлять
● Своевременно бекапить
● И проверять бекапы
● …
●
● Но теперь нет ограничения на количество репозиториев
● Нет ограничения на количество человек в команде
41. 4141
D2D D2IMPROVE YOUR SECURITY, DUDE
Зачем использовать self-hosted CI/CD решения
● Код доступен только сотрудникам компании
● Не зависим от глобального интернета
● Не зависим от “живучести” внешних сервисов
● Не зависим от security багов публичной SaaS платформы
− 2018: Travis CI поломали свою базу, а при восстановлении случайно
выдали некоторым пользователям доступ к коду чужих проектов
https://www.opennet.ru/opennews/art.shtml?num=48414
42. 4242
D2D D2IMPROVE YOUR SECURITY, DUDE
Что использовать для CI
Drone.io
Gitlab CI
Jenkins
SimpleCI
CircleCI
43. 4343
D2D D2IMPROVE YOUR SECURITY, DUDE
Как это меняет вашу жизнь
● Нужно следить за живучестью вашего ci-сервера самостоятельно
● Следить, чтобы не отвалилась интеграция
● Своевременно обновлять
45. 4545
D2D D2IMPROVE YOUR SECURITY, DUDE
Зачем приватная копия репозитория пакетов
● Защищаемся от таких проблем, как:
− Удаление пакета из основного репозитория
− Перезаливка пакета с новым кодом, но без изменения версии
● Не зависим от глобальной сети
● Не зависим от “живучести” основного репозитория
● Можем публиковать и распространять свои приватные пакеты
приватно
46. 4646
D2D D2IMPROVE YOUR SECURITY, DUDE
Что использовать для приватного репозитория пакетов
S3PyPI
pypiserver
pypiclouddjangopypi
47. 4747
D2D D2IMPROVE YOUR SECURITY, DUDE
Как это меняет вашу жизнь
develop:$ cat requirements.txt
aiohttp==2.1.0
MYutils==1.0.0
MYstubs==1.0.0
aiotools==0.0.2
develop:$ cat ~/.pip/pip.conf
[global]
index_url = https://my-devpi.my.org/my-org/devel/+simple/
[search]
index = https://my-devpi.my.org/my-org/devel/
develop:$ cat ~/.pydistutils.cfg
[easy_install]
index_url = https://my-devpi.my.org/my-org/devel/+simple/
48. 4848
D2D D2IMPROVE YOUR SECURITY, DUDE
SaaS vs Self-Hosted
SaaS
+ легче на старте
+ не нужно девопсить
+ дешевле в начале
- лежит SaaS — работа стоит
- популярный SaaS — популярен
у “исследователей уязвимостей”
- может сильно дорожать с вашим
ростом
Self-Hosted
- порог входа повыше
- нужно девопсить
- дороже в начале
+ живучесть в ваших руках
+ пытаемся быть неуловимыми,
как Джо
+ может оказаться дешевле,
когда вы выросли
+ выше гибкость
50. 5050
D2D D2IMPROVE YOUR SECURITY, DUDE
Password Managers
● Нужно помнить только один пароль — мастер-пароль
● Можно шарить доступ между людьми и группами
● Администратор может контролировать надёжность используемых
паролей
● Список всех используемых сервисов в одном месте
● Легче подключать к работе нового сотрудника
● Можно использовать Single Sign On
51. 5151
D2D D2IMPROVE YOUR SECURITY, DUDE
Как это меняет вашу жизнь
● Все нужные пароли быстро доступны
● Нужно не забывать добавлять новые пароли в менеджер
● Нужно следить, чтобы остальные члены команды не забывали добавлять
новые пароли в менеджер
53. 5353
D2D D2IMPROVE YOUR SECURITY, DUDE
Single Sign On
● логин в сервисы одним кликом
● легко отозвать доступ к сервисам компании у сотрудников
(в теории)
54. 5454
D2D D2IMPROVE YOUR SECURITY, DUDE
Почему отзыв доступа может не работать
● Не все сервисы поддерживают SSO в полном объёме
● Некоторые сервисы позволяют пользователю переключаться с SSO на
обычный доступ по логину и паролю
● Прикрутить к некоторым сервисам SSO может быть затратно или по
деньгам, или по усилиям
● Многие сервисы не поддерживают SSO вовсе
60. 6060
D2D D2IMPROVE YOUR SECURITY, DUDE
SUMMARY
● Гаражные развлечения
− Следуем рекомендациям вашего фреймворка и базовым best practices
− Настраиваем доступ по ssh правильно, не ходим по паролям
− Используем SaaS платформы для Git, не ходим туда по паролям,
используем ssh-ключи
− Используем простой менеджер паролей (LastPass Free)
− Не работаем с банковскими картами самостоятельно (Stripe, Recurly)
● Серьёзные игры
− “Физически” отделяем prod окружение от окружения разработки (да и qa
отделяем от development)
− Устанавливаем VPN
− Ставим self-hosted инструменты для Git, CI, пакетного менеджера
− Используем корпоративный менеджер паролей/доступа с поддержкой SSO
− … а дальше ...
− Отдельный Amazon-аккаунт для prod-окружения
Хакеры сломали аккаунт Tesla на Amazon и майнили биткоины
https://www.securitylab.ru/news/491663.php
− ...
61. 6161
D2D D2IMPROVE YOUR SECURITY, DUDE
Выводы
● Не надейтесь, что вы — Неуловимый Джо
− Существует множество ботнетов, которые бьют по площадям, выискивая
уязвимости по всем публично доступным адресам
− Вы можете перестать быть “Джо”
● Применяйте различные технические, архитектурные и организационные
решения тогда, когда это необходимо
− На разных стадиях проекта необходимы разные решения
● Следование хорошим практикам обеспечения безопасности требует
серьёзных ежедневных волевых усилий и контроля
62. 6262
D2D D2IMPROVE YOUR SECURITY, DUDE
Многие проекты начинаются с MVP
● Одна из целей MVP:
● Экономия времени на разработку.
●
Следовательно:
Мы стараемся не разворачивать инфраструктуру уровня гигантов, а
обходимся малым:
● Пара-другая виртуальных машин
● Одна база данных. Возможно, кеш
● Повторяем то же самое, но для demo или qa целей
● И всё это в рамках одной сети
● Используем SaaS платформы для хранения кода и сборки приложения
● Используем простой менеджер паролей
● Используем хранилище для “артефактов” (Google Drive, Dropbox)
63. 6363
D2D D2IMPROVE YOUR SECURITY, DUDE
“Сцена после титров”
● A developers guide to HIPAA compliance and application development
https://github.com/truevault/hipaa-compliance-developers-guide
●
● ISO/IEC 15408 https://www.iso.org/standard/46413.html
● ISO/IEC 18045 https://www.iso.org/standard/30830.html
● Инструмент проверки базовых правил безопасности для #django:
https://www.ponycheckup.com/
● Obama for America AWS Architecture
https://s3.amazonaws.com/OM-SHARE/AWSOFA-Print-27x240.pdf
● Open Web Application Security Project
https://www.owasp.org/index.php/Top_10-2017_Top_10