Как защитить свой сайт, Пётр Волков, лекция в Школе...
Post on 15-Apr-2017
560 Views
Preview:
TRANSCRIPT
Сайт Школы
Канал на YouTube
Типы атак на сайты
Массовые:
• По большей части автоматизированы
• Постэксплуатация вне контекста сайта
• Подвержены в основном сайты с распространенными инструментами,
либо пренебрежением базовой гигиены
(словарные/стандартные пароли и т.п.)
Целевые:
• Выполняются человеком
• Максимально возможный ущерб в случае успеха атаки
• Подвержены крупные сайты
Схема получения несанкционированного доступа
Поисковые «дорки»
Сканирование ( порты + web )
Загрузка шелла
Укрепление
Эксплуатация
Места естественного обитания вредоносного кода
• Серверные скрипты
• Конфиги веб-сервера
• БД
• Статика
• Исполняемый файл/процесс веб-сервера,
модули веб-сервера, модифицированный sshd
Монетизация
Целевые атаки:
• Похищение клиентской базы
• Похищение коммерчески значимых кода и данных
• Дискредитация конкурентов
Массовые атаки:
• Чёрная поисковая оптимизация
• Заражение посетителей
• DDoS-платформа
• Вымогательство
• Рассылка спама
• Серверные ресурсы (проксирование и т.п.)
Отказ в обслуживании, он же DDoS
DoS/DDoS - Атака с целью вывода сервиса из строя
Основные мотивы: Конкуренция и вымогательство
Атака на приложение
Атака на транспортном уровне
Пример атаки на TCP: syn flood
Атака на канал
Пример: (DNS/NTP/*)-amplification атака
Управление рисками
Расчёт бюджета: сколько ресурсов потратить
на снижение рисков?
Распределение бюджета:
• Снижение вероятности проведения успешной атаки
• Снижение потенциального ущерба от последствий атаки
Управление рисками
Снижение вероятности нежелательного события:
• Обновления безопасности для CMS
и остальных программ на сервере
• Парольная гигиена
• Отсутствие отладочных артефактов на сервере
• Минимизация точек входа (443 порта хватит всем)
• …
Управление рисками
Снижение возможного ущерба от наступления
нежелательного события:
• Хеширование (с солью) паролей пользователей
• Процесс резервного копирования
• Контроль целостности
• Минимизация привилегий
• Система обнаружения вторжений
• Виртуализация/контейнеризация
• …
Чек-листы и методологии
Топ-10 проблем безопасности вебсайтов по версии OWASP:
•A1 Внедрение постороннего кода на серверной стороне
•A2 Ошибки системы аутентификации и управления сессиями
•A3 Внедрение постороннего кода на клиентской стороне (XSS)
•A4 Прямой доступ к критичным объектам
•A5 Ошибки конфигурации
•A6 Открытие критичных данных
•A7 Проблемы авторизации операций
•A8 Межсайтовая подделка запросов (CSRF)
•A9 Использование компонентов с известными уязвимостями
•A10 Открытые редиректы
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
Устранение последствий
Поменять пароли и ключи к ftp- и ssh-сервисам сайта
Поменять пароли к базе данных сайта (phpmyadmin)
Поменять пароли к панели администратора сайта
Установить обновления CMS и плагинов
Установить обновления / обновления безопасности
ключевых сервисов сайта и ОС
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
Используйте Вебмастер,
чтобы:
Вовремя узнавать о
заражении сайта
Посмотреть примеры
кода, которые
актуальны для вердикта
Отправить сайт на
перепроверку, и
связаться с поддержкой
Раздел безопасности Яндекс.Вебмастер
Сайт Школы
Канал на YouTube
top related