Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Информационная безопасность и web-приложения

3 185 vues

Publié le

Встреча группы GetDev.net от 17 марта 2012 года.

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

Информационная безопасность и web-приложения

  1. 1. Информационная безопасность иweb-приложения
  2. 2. У нас опять есть план!1. Что такое инфобез и с чем его едят• Аутентификация, авторизация и аккаунтинг• Основные типы атак на web и как с ними бороться
  3. 3. Информационная безопасность
  4. 4. Цель Абсолютно защитить информацию от несанкционированного доступа - сказок не бывает.Защитить информацию так, чтобы получение доступа к ней стоило на порядки больше той ценности, которую эта информация имеет.
  5. 5. Парадокс Черной* королевы* - но мы-то знаем, что королева на самом делекрасная
  6. 6. Если вас еще не взломали -это не ваша заслуга, а чья-тонедоработкаПаранойя - не профессиональная болезнь, аестественное состояние организма
  7. 7. Проблема чаще всегорасположена междукомпьютером и стулом
  8. 8. НИКОМУ НЕЛЬЗЯ ВЕРИТЬ!Даже себе. Мне - можно.
  9. 9. Методы работы инфобезовцев1. создание формального описания системы;2. построение модели угроз;3. классификация и оценка рисков;4. выбор и установка средств технической защиты;5. разработка регламентов и административных правил по защите;– контроль выполнения регламентов, корректировки согласно новым требованиями и изменениям в законодательстве, аудит безопасности. Защищают не отдельные приложения или аспекты, а информационные системы в целом.
  10. 10. Аутентификация,авторизация и аккаунтинг AAA
  11. 11. Пароли - плохо, очень плохо
  12. 12. Байка
  13. 13. Данные с потолка• 95% пользователей имеет два, максимум - три пароля на все;• генерация паролей на каждый ресурс - удел истинных параноиков;• пароли чаще всего содержат номера телефонов и даты рождения;• показатель защищенности пароля - бесполезный и раздражающий элемент;• хранить пароли в едином хранилище (пусть даже защищенном) - все равно, что класть все ключи от разных мест в одну банку;• хешированные пароли - иллюзия защищенности.
  14. 14. И если все-таки пароли• не давайте пользователю вводить пароль, генерируйте его принудительно, максимум - смена;• сброс пароля - двушаговый (сначала ссылка- подтверждение, затем генерация нового пароля);• запоминать - ни в коем случае не сам пароль или хэш от него, лучше отдельный токен (и периодически менять) или пароль + "соль";• учет входов и последующий анализ - если пользователь зашел с иного (необычного для него) сегмента сети или из другой страны (параноики из i2p и tor будут недовольны);• дополнительные средства защиты offline - например, через мобильный телефон.
  15. 15. АльтернативыOpenID, OAuth, PKI
  16. 16. OAuth
  17. 17. Public Key Infrastructure
  18. 18. Не реклама
  19. 19. Задача на 1М$ Крипторалгоритмы: • RSA - факторизация • DSA - логарифмы на конечных полях • ECDSA - DSA на группе точек эллиптической кривой Хеши: (однозначное необратимое преобразование) • MD5 (самый популярный из MD*) • SHA-1 и SHA-2 • ГОСТ Р 34.11-94
  20. 20. Шифрование
  21. 21. Подпись
  22. 22. Применение • Аутентификация и авторизация o HTTPS o SSH o VPN (IPSec) • Проверка целостности и надежности o данных (юридически значимых документов) o программного кода (Java Applets, .NET, мобильные приложения Android и iOS)
  23. 23. Получение сертификата
  24. 24. Как сделать авторизацию по HTTPSчерез nginxСоздадим пару ключей и сертификат CAopenssl genrsa -des3 -out ca.key 4096openssl req -new -x509 -days 365 -key ca.key -out ca.crtДалее создадим сертификат сервераopenssl genrsa -out server.key 1024openssl req -new -key server.key -out server.csropenssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
  25. 25. .. и клиентаopenssl genrsa -out с.key 1024openssl req -new -key с.key -out с.csropenssl x509 -req -days 365 -in с.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out с.crtopenssl pkcs12 -export -out с.pfx -inkey с.key -in с.crt -certfile ca.crtСконфигурируем серверserver { listen 443; ssl on; server_name example.com; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; ssl_client_certificate /etc/nginx/certs/ca.crt; ssl_verify_client on; }
  26. 26. ...и попробуем авторизоваться, предварительнодобавив сертификат в браузер Сертификат можно хранить не только в хранилище браузера (в некоторых системах - централизованно), но и на специальных устройствах:
  27. 27. Применимость различных методоваутентификациинебольшие web-системы,CMS Паролипубличные массовые web- OAuthприложения OpenIDфинансовые системысистемы, содержащие PKIкоммерческую илигосударственную тайну
  28. 28. Основные типы атак на web Да-да, те самые страшные аббревиатуры
  29. 29. КлассификацияПо назначению: По механизму: • переполнение буфера;• получение доступа к • подмена указателя; системе; • SQL-инъекции;• повышение уровня • инъекции кода; привилегий; • перехват трафика;• приведение в • просмотр директорий неработоспособное • крос-сайтовое исполнение состояние; сценариев • инъекции HTTP-заголовков;• разрушение системы или • заделение HTTP-ответа отдельных элементов; • организации гонок;• похищение информации и • подделка межсайтовых персональных данных; запросов• использование системы • подстановка невидимых для совершения атак или элементов других сайтов; анонимизации. • фишинг.
  30. 30. SQL инъекции
  31. 31. Пример statement = "SELECT * FROM users WHERE name = " + userName + ";" куда легко можно подкинуть: or 1=1 or 1=1 -- or 1=1 ({ or 1=1 /* a;DROP TABLE users; SELECT * FROM userinfo WHERE t = t
  32. 32. Способы защиты• экранирование входных данных;• проверка входных данных регулярными выражениями;• параметризованный запрос: java.sql.PreparedStatement stmt = connection.prepareStatement("SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?"); stmt.setString(1, username); stmt.setString(2, password); stmt.executeQuery();• ORM;• использование средств защиты (mod_security);• ограничение прав доступа к БД;• использование NoSQL. :)
  33. 33. Крос-сайтовое исполнение сценариев (XSS) и немного про C/XSRF
  34. 34. Внедрение JS: Cross-site request forgery• компрометация пользователя <img (перехват cookies и сессии); src="http://bank.example.com• повышение привилегий с /withdraw? последующим выполнением account=bob&amount=1000000&f неавторизованных действий. or=Fred"> Clickjacking
  35. 35. Способы защиты • экранирование, экранирование и экранирование - желательно перед тем, как положить в базу; • фильтрация HTML-тегов (если ввод их предполагает); • токены на CRUD-операции; • понадеяться на средства технической защиты в браузерах (NoScript, Mozillas Content Security Policy).
  36. 36. Отказ в обслуживании DoS и DDoS
  37. 37. Методки• флуд;• генерация большого числа запросов (например, через ботнет);• "тяжелые" запросы;• эксплуатация ошибок в ПО.
  38. 38. Способы защиты • закрыться от атаки сетью VDS с фильтрами (например, по geoip), особыми настройками TCP/IP и traffic shaping; • воспользоваться antiDDoS-сервисом (например, QRator); • изначально проектировать в расчете на нагрузку, на два порядка превышающую предполагаемую; • оптимизировать тяжелые запросы; • не впадать в излишества (где достаточно статического HTML - там должен быть статический HTML); • использовать ресурсы тех, кто постоянно под DDoS; • кеширование, кеширование, кеширование (и не забудьте запихнуть в сервера максимум RAM); • позвонить провайдеру. :)
  39. 39. Общие рекомендации побезопасности web систем
  40. 40. – нельзя никому верить;2. пользователям - в первую очередь;3. разработчикам и тестерам - вообще нельзя;4. администраторам - совсем;5. подписка на списки рассылки по уязвимостям и security бюллетени для используемой ОС;6. постоянные обновления (используйте LTS);7. использование средств обнаружения и защиты от атак (IDS);8. постоянный анализ событий и действий пользователей;9. периодический аудит инфраструктуры приглашенными специалистами;10.защиты никогда не бывает мало (если есть возможность сделать DMZ - не стесняйтесь);11.если вы что-то не понимаете - это скорее всего небезопасно и приведет к компрометации систем.
  41. 41. ??? Это не кодировка побилась, апредложение задать докладчику вопросы :)

×