Сайт Школы
Канал на YouTube
Как защитить свой сайт
Пётр Волков
Школа вебмастеров
Типы атак на сайты
Массовые:
• По большей части автоматизированы
• Постэксплуатация вне контекста сайта
• Подвержены в основном сайты с распространенными инструментами,
либо пренебрежением базовой гигиены
(словарные/стандартные пароли и т.п.)
Целевые:
• Выполняются человеком
• Максимально возможный ущерб в случае успеха атаки
• Подвержены крупные сайты
Схема получения несанкционированного доступа
Поисковые «дорки»
Сканирование ( порты + 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/
Сайт Школы
Канал на YouTube

11 лекция, петр волков

  • 1.
  • 2.
    Как защитить свойсайт Пётр Волков Школа вебмастеров
  • 3.
    Типы атак насайты Массовые: • По большей части автоматизированы • Постэксплуатация вне контекста сайта • Подвержены в основном сайты с распространенными инструментами, либо пренебрежением базовой гигиены (словарные/стандартные пароли и т.п.) Целевые: • Выполняются человеком • Максимально возможный ущерб в случае успеха атаки • Подвержены крупные сайты
  • 4.
    Схема получения несанкционированногодоступа Поисковые «дорки» Сканирование ( порты + web ) Загрузка шелла Укрепление Эксплуатация
  • 9.
    Места естественного обитаниявредоносного кода • Серверные скрипты • Конфиги веб-сервера • БД • Статика • Исполняемый файл/процесс веб-сервера, модули веб-сервера, модифицированный sshd
  • 10.
    Монетизация Целевые атаки: • Похищениеклиентской базы • Похищение коммерчески значимых кода и данных • Дискредитация конкурентов Массовые атаки: • Чёрная поисковая оптимизация • Заражение посетителей • DDoS-платформа • Вымогательство • Рассылка спама • Серверные ресурсы (проксирование и т.п.)
  • 11.
  • 12.
    Отказ в обслуживании,он же DDoS DoS/DDoS - Атака с целью вывода сервиса из строя Основные мотивы: Конкуренция и вымогательство Атака на приложение Атака на транспортном уровне Пример атаки на TCP: syn flood Атака на канал Пример: (DNS/NTP/*)-amplification атака
  • 13.
  • 14.
    Управление рисками Расчёт бюджета:сколько ресурсов потратить на снижение рисков? Распределение бюджета: • Снижение вероятности проведения успешной атаки • Снижение потенциального ущерба от последствий атаки
  • 15.
    Управление рисками Снижение вероятностинежелательного события: • Обновления безопасности для CMS и остальных программ на сервере • Парольная гигиена • Отсутствие отладочных артефактов на сервере • Минимизация точек входа (443 порта хватит всем) • …
  • 16.
    Управление рисками Снижение возможногоущерба от наступления нежелательного события: • Хеширование (с солью) паролей пользователей • Процесс резервного копирования • Контроль целостности • Минимизация привилегий • Система обнаружения вторжений • Виртуализация/контейнеризация • …
  • 17.
    Доступный инструментарий и методикидля обеспечения безопасности 18
  • 18.
    Чек-листы и методологии Топ-10проблем безопасности вебсайтов по версии OWASP: •A1 Внедрение постороннего кода на серверной стороне •A2 Ошибки системы аутентификации и управления сессиями •A3 Внедрение постороннего кода на клиентской стороне (XSS) •A4 Прямой доступ к критичным объектам •A5 Ошибки конфигурации •A6 Открытие критичных данных •A7 Проблемы авторизации операций •A8 Межсайтовая подделка запросов (CSRF) •A9 Использование компонентов с известными уязвимостями •A10 Открытые редиректы
  • 19.
  • 20.
  • 21.
    Web application firewall Заплаткадля случая, когда на аудит кода ресурсов нет или код закрыт Пример: mod_security (плагин для Apache, Nginx, IIS) Набор регулярок для типичных шаблонов эксплуатации уязвимостей веб-приложения. Возвращает HTTP 406 в случае, если запрос попал под одно из правил.
  • 22.
  • 23.
  • 24.
    Борьба с перебором Мониторитлоги и обновляет правила межсетевого экрана
  • 25.
    Защита от DDoS Наращиваниересурсов – может оказаться экономически неэффективным Переезд к «облачному» хостеру – см. первый пункт Защита от атаки на уровне приложения – поиск аномалий, бан по ip, региону, капча Защита от атаки на TCP – syn cookies, бан по ip Защита от атаки на канал – переезд под защиту анти-DDoS сервиса
  • 26.
    Аудит безопасности • Whitebox Аудиторыисследуют исходные тексты веб-приложения и конфигурацию серверного окружения • Blackbox Аудиторы проводят исследование безопасности, не имея исходных текстов, не зная конфигурации • BugBounty Программа поощрения сообщений о найденных уязвимостях
  • 27.
    [15:27:03] Warning: Noswap 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
  • 28.
    Проверка целостности средствамиПМ 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)
  • 29.
    Проверка целостности средствамиПМ 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
  • 30.
    Tripwire Контроль целостности файловойсистемы • Шлет отчеты по почте • Выбор алгоритма хэширования • Гибкие политики контроля целостности: append и т.д. Проблемы: • /tmp • изменения между проверками Аналоги: AIDE, TAMU, ATP, Hobgoblin, sXid, L5, Gog&Magog
  • 31.
    Apr 6 06:46:26asterisk 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 Логирует выполняемые в терминале команды
  • 32.
    #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
  • 33.
    OSSEC • Анализ логов •Контроль целостности • Мониторинг конфигурации • Поиск руткитов • Готовое SIEM решение https://github.com/ossec/ossec-hids
  • 34.
  • 35.
    Устранение последствий Поменять паролии ключи к ftp- и ssh-сервисам сайта Поменять пароли к базе данных сайта (phpmyadmin) Поменять пароли к панели администратора сайта Установить обновления CMS и плагинов Установить обновления / обновления безопасности ключевых сервисов сайта и ОС
  • 36.
  • 37.
    YARA import "elf" rule single_section{ condition: elf.number_of_sections == 1 } rule elf_64 { condition: elf.machine == elf.EM_X86_64 }
  • 38.
    ClamAV MalwareName:FileType:Offset:HexSignature $clamscan mod_probe mod_probe: Linux.Flooder.AgentFOUND $ sigtool --md5 test.bin > test.hdb $ clamscan -d test.hdb test.bin Формат сигнатур:
  • 39.
    … "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
  • 40.
  • 41.
  • 42.
  • 43.
    Манул – простойинструмент для поиска и удаления вредоносного кода на сайтах https://yandex.ru/promo/manul
  • 44.
    Подмена содержимого настороне пользователя
  • 45.
    Подмена содержимого настороне пользователя
  • 46.
    Подмена содержимого настороне пользователя 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
  • 47.
    Подмена содержимого настороне пользователя
  • 48.
    Используйте Вебмастер, чтобы: Вовремя узнаватьо заражении сайта Посмотреть примеры кода, которые актуальны для вердикта Отправить сайт на перепроверку, и связаться с поддержкой Раздел безопасности Яндекс.Вебмастер
  • 49.
  • 50.
  • 51.