Как защитить свой сайт, Пётр Волков, лекция в Школе...

51
Сайт Школы Канал на YouTube

Upload: yandex

Post on 15-Apr-2017

562 views

Category:

Business


2 download

TRANSCRIPT

Как защитить свой сайт

Пётр Волков

Школа вебмастеров

Типы атак на сайты

Массовые:

• По большей части автоматизированы

• Постэксплуатация вне контекста сайта

• Подвержены в основном сайты с распространенными инструментами,

либо пренебрежением базовой гигиены

(словарные/стандартные пароли и т.п.)

Целевые:

• Выполняются человеком

• Максимально возможный ущерб в случае успеха атаки

• Подвержены крупные сайты

Схема получения несанкционированного доступа

Поисковые «дорки»

Сканирование ( порты + web )

Загрузка шелла

Укрепление

Эксплуатация

Места естественного обитания вредоносного кода

• Серверные скрипты

• Конфиги веб-сервера

• БД

• Статика

• Исполняемый файл/процесс веб-сервера,

модули веб-сервера, модифицированный sshd

Монетизация

Целевые атаки:

• Похищение клиентской базы

• Похищение коммерчески значимых кода и данных

• Дискредитация конкурентов

Массовые атаки:

• Чёрная поисковая оптимизация

• Заражение посетителей

• DDoS-платформа

• Вымогательство

• Рассылка спама

• Серверные ресурсы (проксирование и т.п.)

Атака на посетителей: drive-by download

Отказ в обслуживании, он же DDoS

DoS/DDoS - Атака с целью вывода сервиса из строя

Основные мотивы: Конкуренция и вымогательство

Атака на приложение

Атака на транспортном уровне

Пример атаки на TCP: syn flood

Атака на канал

Пример: (DNS/NTP/*)-amplification атака

Управление рисками

14

Управление рисками

Расчёт бюджета: сколько ресурсов потратить

на снижение рисков?

Распределение бюджета:

• Снижение вероятности проведения успешной атаки

• Снижение потенциального ущерба от последствий атаки

Управление рисками

Снижение вероятности нежелательного события:

• Обновления безопасности для CMS

и остальных программ на сервере

• Парольная гигиена

• Отсутствие отладочных артефактов на сервере

• Минимизация точек входа (443 порта хватит всем)

• …

Управление рисками

Снижение возможного ущерба от наступления

нежелательного события:

• Хеширование (с солью) паролей пользователей

• Процесс резервного копирования

• Контроль целостности

• Минимизация привилегий

• Система обнаружения вторжений

• Виртуализация/контейнеризация

• …

Доступный инструментарий и

методики для обеспечения

безопасности

18

Чек-листы и методологии

Топ-10 проблем безопасности вебсайтов по версии OWASP:

•A1 Внедрение постороннего кода на серверной стороне

•A2 Ошибки системы аутентификации и управления сессиями

•A3 Внедрение постороннего кода на клиентской стороне (XSS)

•A4 Прямой доступ к критичным объектам

•A5 Ошибки конфигурации

•A6 Открытие критичных данных

•A7 Проблемы авторизации операций

•A8 Межсайтовая подделка запросов (CSRF)

•A9 Использование компонентов с известными уязвимостями

•A10 Открытые редиректы

w3af: сканер веб-уязвимостей с открытым кодом

WebGoat: дырявое веб-приложение для тренировок

Web application firewall

Заплатка для случая, когда на аудит кода ресурсов нет

или код закрыт

Пример: mod_security (плагин для Apache, Nginx, IIS)

Набор регулярок для типичных шаблонов эксплуатации

уязвимостей веб-приложения.

Возвращает HTTP 406 в случае, если запрос попал

под одно из правил.

Использование уязвимых компонентов

https://exploit-db.com/

Использование уязвимых компонентов

Борьба с перебором

Мониторит логи и обновляет правила межсетевого экрана

Защита от DDoS

Наращивание ресурсов – может оказаться

экономически неэффективным

Переезд к «облачному» хостеру – см. первый пункт

Защита от атаки на уровне приложения – поиск аномалий,

бан по ip, региону, капча

Защита от атаки на TCP – syn cookies, бан по ip

Защита от атаки на канал – переезд под защиту

анти-DDoS сервиса

Аудит безопасности

• Whitebox

Аудиторы исследуют исходные тексты веб-приложения и

конфигурацию серверного окружения

• Blackbox

Аудиторы проводят исследование безопасности, не имея

исходных текстов, не зная конфигурации

• BugBounty

Программа поощрения сообщений о найденных уязвимостях

[15:27:03] Warning: No swap partion found in /etc/fstab [FILE-6332]

[15:27:24] Warning: Found one or more vulnerable packages. [PKGS-7392]

[15:27:25] Warning: Found mail_name in SMTP banner, and/or mail_name contains 'Postfix' [MAIL-8818]

[15:27:26] Warning: Root can directly login via SSH [SSH-7412]

[15:26:25] Suggestion: Set a password on GRUB bootloader. [BOOT-5122]

[15:27:01] Suggestion: Install a PAM module for password strength testing [AUTH-9262]

[15:27:01] Suggestion: Configure password aging limits to enforce password [AUTH-9286]

[15:27:25] Suggestion: Configure a firewall/packet filter to filter incoming and outgoing traffic [FIRE-4590]

[15:27:27] Suggestion: Enable process accounting [ACCT-9622]

[15:27:27] Suggestion: Enable sysstat to collect accounting (no results) [ACCT-9626]

[15:27:27] Suggestion: Enable auditd to collect audit information [ACCT-9628]

[15:27:30] Suggestion: Harden compilers like restricting access to root user only [HRDN-7222]

Lynis

Расширяемая проверка ошибок конфигурации

Дополнительно: Rootkit Hunter, chkrootkit

Проверка целостности средствами ПМ

sudo debsums -as debsums: changed file /etc/gnome/defaults.list (from desktop-file-utils package)

debsums: changed file /etc/default/rcS (from initscripts package)

debsums: changed file /etc/subuid (from login package)

debsums: changed file /etc/subgid (from login package)

debsums: changed file /etc/sudoers (from sudo package)

Проверка целостности средствами ПМ

sudo rpm -Va .M5....T /usr/X11R6/lib/X11/fonts/misc/fonts.dir

missing /var/spool/at/.lockfile

missing /var/spool/at/spool

S.5....T /usr/lib/rhs/glint/icon.pyc

..5....T c /etc/inittab

..5..... /usr/bin/loadkeys

rpm -Vf /etc/blunder

file /etc/blunder is not owned by any package

Tripwire

Контроль целостности файловой системы

• Шлет отчеты по почте

• Выбор алгоритма хэширования

• Гибкие политики контроля целостности: append и т.д.

Проблемы:

• /tmp

• изменения между проверками

Аналоги: AIDE, TAMU, ATP, Hobgoblin, sXid, L5,

Gog&Magog

Apr 6 06:46:26 asterisk snoopy[12664]: [uid:0 sid:12595 tty:/dev/pts/2 cwd:/home/develop filename:/usr/bin/nano]:

nano /etc/asterisk/extensions.conf

Apr 6 07:56:19 asterisk snoopy[13267]: [uid:0 sid:13166 tty:/dev/pts/3 cwd:/root filename:/sbin/ifconfig]: ifconfig

Apr 6 07:56:26 asterisk snoopy[13268]: [uid:0 sid:13166 tty:/dev/pts/3 cwd:/root filename:/bin/touch]: touch /opt/1.txt

Apr 6 07:57:56 asterisk sudo: felvis : TTY=pts/3 ; PWD=/home/felvis ; USER=root ; COMMAND=/sbin/ifconfig eth0

Apr 6 07:57:56 asterisk snoopy[13277]: [uid:0 sid:13166 tty:/dev/pts/3 cwd:/home/felvis filename:/sbin/ifconfig]:

/sbin/ifconfig eth0

Snoopy Logger

https://github.com/a2o/snoopy

Логирует выполняемые в терминале команды

#Cледить за изменениями в каталоге /servers/i/ auditctl -w /servers/i/ -p wa #Следить за обращениям к файлам в /etc auditctl -a exit,always -S open -F path=/etc/ #Cледить за модификациями /etc auditctl -a exit,always -S open -F path=/etc/ -F perm=aw #Cледить за модификациями /etc/passwd auditctl -w /etc/passwd -p wa vi /etc/audit/audit.rules #Следить веб-сервером и sshd -w /usr/local/apache/bin -p rwxa -w /etc/init.d/httpd -p rwxa -w /etc/init.d/sshd -p rwxa #Следить за ssh-сессиями ( 1084 – Pid main sshd ) -a entry,always -F arch=b64 -S fork -S vfork -S clone -F ppid=1084 -a entry,always -F arch=b64 -S execve -F ppid=1084 -a entry,always -F arch=b64 -S connect -S bind -F ppid=1084

auiditd

OSSEC

• Анализ логов

• Контроль целостности

• Мониторинг конфигурации

• Поиск руткитов

• Готовое SIEM решение

https://github.com/ossec/ossec-hids

OSSEC

Устранение последствий

Поменять пароли и ключи к ftp- и ssh-сервисам сайта

Поменять пароли к базе данных сайта (phpmyadmin)

Поменять пароли к панели администратора сайта

Установить обновления CMS и плагинов

Установить обновления / обновления безопасности

ключевых сервисов сайта и ОС

YARA

YARA

import "elf"

rule single_section {

condition: elf.number_of_sections == 1

}

rule elf_64 {

condition: elf.machine == elf.EM_X86_64

}

ClamAV

MalwareName:FileType:Offset:HexSignature

$clamscan mod_probe

mod_probe: Linux.Flooder.Agent FOUND

$ sigtool --md5 test.bin > test.hdb

$ clamscan -d test.hdb test.bin

Формат сигнатур:

"scan_date": "2011-11-08 19:44:53",

"permalink": "https://www.virustotal.com/url/d466...1eaf/analysis/1320781493/",

"scans": {

"nProtect": {"detected": true, "version": "2010-05-14.01", "result": "Trojan.Generic.3611249", "update":

"20100514"},

"CAT-QuickHeal": {"detected": true, "version": "10.00", "result": "Trojan.VB.acgy", "update": "20100514"},

"McAfee": {"detected": true, "version": "5.400.0.1158", "result": "Generic.dx!rkx", "update": "20100515"},

Virustotal Public API

• HTTPS API, ответ в json

• Готовые клиенты на 10 ЯП

• Сканирует файлы, URL, ip

Манул: сканер

Манул: анализатор логов

Манул: лечение сайта

Манул – простой инструмент для поиска и удаления вредоносного кода на сайтах https://yandex.ru/promo/manul

Подмена содержимого на стороне пользователя

Подмена содержимого на стороне пользователя

Подмена содержимого на стороне пользователя

Content Security Policy – технология для затруднения эксплуатации XSS,

по факту, на данный момент, помогает справляться и с внедрением

постороннего контента со стороны клиента. (Хотя не должна)

Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'

https://yastatic.net *.yandex.ru *.yandex.net yandex.st

*.yastatic.net wss://portal-xiva.yandex.net wss://push.yandex.ru;

img-src data: 'self' https://yastatic.net *.yandex.ru *.tns-counter.ru

*.gemius.pl yandex.st *.yandex.net *.yastatic.net;

report-uri https://csp.yandex.net/csp?from=big.ru&showid=22863

Подмена содержимого на стороне пользователя

Используйте Вебмастер,

чтобы:

Вовремя узнавать о

заражении сайта

Посмотреть примеры

кода, которые

актуальны для вердикта

Отправить сайт на

перепроверку, и

связаться с поддержкой

Раздел безопасности Яндекс.Вебмастер

Раздел безопасности Яндекс.Вебмастер

Рекомендации в Яндекс.Вебмастер http://help.yandex.ru/webmaster/