Поддержка сайтов пивоварни Knightberg

, поддержка

Поддержка сайтов пивоварни Knightberg

Knightberg — крафтовая пивоварня из Санкт-Петербурга, которая варит с 2007 года. У неё целое семейство сайтов: сайт самой пивоварни, сестринская Rock'N'Beer, шуточный «Жигулевский Пивздрав» в трёхлитровой банке с авоськой, журнал о пиве RealBrew и сайты фестивалей — СидрФест, Baltic Porter Day и «Настоящая выдержка». Все они живут на одном сервере, и с 2023 года я их поддерживаю.

knightberg-glavnaya.png1280×800, 287 КБ
Сайт пивоварни: каталог сортов с фильтрами — регулярные, сезонные, сидры, экспериментальные, безалкогольные
Сайт пивоварни: каталог сортов с фильтрами — регулярные, сезонные, сидры, экспериментальные, безалкогольные

Экскурсии с билетами

Пивоварня водит экскурсии: от амбара с солодом до бродильных танков и линии розлива, с дегустацией в конце. Билеты продаются через сервис qtickets, и раньше расписание на сайт приходилось переносить руками.

Я написал плагин, который сам забирает экскурсии из qtickets и выводит их на сайте:

  • расписание обновляется само, а ответ сервиса запоминается на пять минут;
  • если qtickets не отвечает, на сайте остаются последние удачные данные, а не пустой блок;
  • если сбой случился на середине ответа, неполный список не попадёт в кэш и не покажется посетителям;
  • экскурсии «с открытой датой» размечаются отдельно, а в админке есть диагностика, которая показывает, почему конкретное событие видно или скрыто на сайте.

Сервер после взлома

В сентябре 2026 года сайты взломали через уязвимость WordPress, известную как wp2shell. 24–25 сентября я провёл полную расчистку сервера:

  • на всех семи сайтах удалил многочисленные вредоносные файлы, следы атаки и мусор в базах данных, которого было очень много;
  • закрыл точку входа, через которую шла атака, запретил выполнение PHP в папках загрузок и закрыл xmlrpc;
  • сменил пароли администраторов и баз данных, обновил ключи WordPress;
  • обновил WordPress, все плагины, пакеты сервера, ядро, базу данных и панель управления хостингом;
  • оставил только PHP 8.3, а каждый сайт перевёл в отдельный процесс под своим пользователем с отключёнными опасными функциями;
  • отключил лишние службы и удалил ненужное ПО, настроил TLS 1.2+ и редиректы на HTTPS, перевыпустил просроченный сертификат;
  • починил сбой загрузки сервера, из-за которого после перезагрузки не поднимался файрвол;
  • настроил кэш Redis и OPcache, оптимизировал базу данных, веб-сервер и сетевой стек;
  • перевёл планировщик WordPress на системный cron, настроил ротацию логов и ежедневные резервные копии;
  • удалил из почтовой очереди 520 тысяч писем, которые сайты пытались разослать после взлома.

Заодно нашлась старая загадка: WordPress месяцами «не видел» обновлений плагинов. Виноват оказался доработанный кем-то плагин, который отправлял на сервер обновлений пустой список.

После расчистки все сайты работают в штатном режиме и загружаются ощутимо быстрее.