Блог очередного разработчика

Sanasol

WordPress open_basedir restriction in effect

Если хостить много wordpress сайтов на одном сервере и закрывать их open_basedir, как например делает по дефолту ISPmanager, то иногда возникают ошибки  open_basedir restriction in effect.

При этом сайт пытается залезть в соседний по серверу.

Это случается при использовании xcache в php.

Кешер глобально кеширует пути к скриптам из-за этого сайт обращается не к своей корневой директории, а к случайному сайту на этом же сервере.

Его туда не пускает open_basedir и сайт показывает белую страницу, а так же зависает в режиме обновления, если попытаться обновить плагины/вордпресс.

Решение на данный момент: отключать xcache и жить счастливо.

Выполняем

И перезапускаем сервер

Для ISPmanager с apache:

Для nginx + php-fpm

 

WordPress безопасность

Сайты на WP ломают много и постоянно(пытаются по крайней мере с помощью толпы сканеров)

 

>>Зачем это все загружают? Там нечего на обычных сайтах тырить особо, никаких ботов вроде не создается и часто это виртуальные хостинги, т.е. рута к системе у них нет точно.

Ломают не для того чтобы украсть, а делают фейковые страницы, встраивают ссылки, рекламные редиректы. Ты их даже не увидишь, а гугл проиндексирует. А твои посетители с мобильных улетят на какую-нибудь рекламную ссылку, и опять же пока сам с мобильного не зайдешь даже не узнаешь об этом.

Такие сайты ломают тысячами — получают большие фермы из которых можно много чего выжать. В основном всё такое говно идёт с китайцев(с их серверов)

 

>>Что можно поставить на сервере для отслеживания постфактум — через какую хрень взломали?

Начальную точку заражению почти нереально найти. Дыры новые регулярно появляются, старые закрываются и так по кругу.
Тут уже только расследование на живом сайте который ломают. Т.е. чистишь сайт, опять вирусню заливают, пытаешься понять откуда.
Разные варианты пробуешь: плагины,закрыть доступ на запись куда-либо и т.д.

 

>> Через что лучше сканировать на предмет наличия вирусов?

Cканеры особо не помогают, вирусы на рандоме в основном. Т.е. набор буквоцифр. Многое упускается из виду.
Но как вариант ClamAV — это серверный антивирус. Он находит, но не всё.

 

Как избежать взломов мой рецепт

  • использовать меньше плагинов по возможности
  • желательно все плагины из более менее популярных.
  • обновляться постоянно(WP ядро, Плагины, Темы)
  • ну пароль само собой сложный у админа😂

 

Как лечить взломы

Шаг 1: Ставим Wordfence — сканируем файлы, все что заражено очищаем.

Чистим руками все что видим сами и через Wordfence.

Wordfence игнорирует вирусные файлы которые лежат например в корне сайта и не являются стандартными для WP.

Там конечно можно включить проверку вообще всех файлов, да еще и по базе вирусов, но тогда проверка никогда не закончится, если у вас старый сайт с большим количеством контента и файлов.

Поэтому проверяем сами вручную все папки стандартные на наличие аномалий. Вычищаем.

 

Шаг 2: Ждём какое-то время.

Если вирусня не появляется — значит все почистили хорошо.

Если появляется значит возвращаемся к Шагу 1. Чистим заново еще тщательнее.

 

Шаг 3: Снова ждём.

Если ничего нет — профит.

Если есть — начинаем подозревать плагины.

Тут уже подробнее особо не расписать, все индивидуально.

Пытаемся узнать какой плагин нас подставил, затем лечим или убиваем его.

 

Небольшая сноска: почти все повторные взломы это последствия плохой чистки после первоначального. Так что первоначальная дыра может быть уже закрыта обновлениями, а вирусы тем не менее размножаются через модифицированные/созданные при первом заражении файлы.

Mobile Chrome http streaming(m3u8) doesnt work

Wrong X-TARGETDURATION in m3u8 playlist causes error on Andorid Chrome.
Error not visible in console or everywhere else, so its really hard to detect.
Chrome Desktop ignore this error for some reason, but mobile sensitive to it.

I have wrongly thought that it should be full video duration.

Solution is: X-TARGETDURATION should contain duration of longest video fragment.

Here is an example of a Media Playlist:

#EXTM3U
#EXT-X-TARGETDURATION:10

#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

The first line is the format identifier tag #EXTM3U. The line
containing #EXT-X-TARGETDURATION says that all Media Segments will be
10 seconds long or less. Then three Media Segments are declared.
The first and second are 9.009 seconds long; the third is 3.003
seconds.

Specs

Debian Jessie bitcoind BerkeleyDB

Installing dependencies like here build unix

BerkeleyDB is required for the wallet.

Debian repository doesn’t contains libdb4.8. So need to get sources and compile it manually.

Get db4.8 source, compile and install:

Tell your system where to find db4.8

Then move to bitcoin sources folder and compile it:

Sources:
https://github.com/bitcoin/bitcoin/issues/3686#issuecomment-35211263
https://github.com/bitcoin/bitcoin/issues/3686#issuecomment-35236768

Ubuntu Gnome huge CPU usage of gnome-keyring-daemon when starting Google Chrome

gnome keyring cpu
gnome keyring cpu

I have a lot saved passwords in Google Chrome about 2000.
So when I try to sync it on any linux distr. I got high cpu usage from keyring daemon.

To prevent it we need disable password encryption ;(
1. Open Terminal
2.

or

3. Find these lines at end of file

4. Replace with

5. Save it.
6. Kill all keyring processes.
7. Restart Chrome, wait password sync.
8. Profit!

Отказоустойчивость use case

Схема серверов

VPS #1 — Франция

  • nginx+php
  • mysql-1
  • haproxy

VPS #2 — Канада

  • nginx+php
  • haproxy

VPS #3 — Нидерланды

  • nginx+php
  • mysql-2
  • haproxy

mysql — master-master репликация.

haproxy — балансирует запросы на два mysql мастера.

haproxy.cfg

На каждый сервер идёт свой поддомен.
Чтобы завалить сервис необходимо положить как минимум 2 хоста из 3.
Для этого надо знать какие хосты держат mysql сервера.
В противном случае класть придётся все хосты, дабы вывести из строя сервис.

Работает 🙂

How works deploy on my pet project

ea5e8eba38b1f022d4cc898bac48

Hello, %username%.

First english post here. Just for lulz 😀
Actually post related to gift i’ve got from DeployBot
Here some stickers and postcard with handwritten message.
Gift from DeployBot

So I decided to write little post about deploy on my pet project — vboro.de.
I also have work project on deploybot, but it works almost same. Only difference is servers amount, but I found some great servers for e-commerce at https://blog.servermania.com/ecommerce-site-performance-tips/ which would help me great with this project.
I use DeployBot about 9 months totally and last 3 months with the paid account.

So my deploy script is not canonical and not safe, but it works 🙂
After commit on master — github send info to DeployBot.
Then it just pulling data from github and then run/install/update composer and depencies.

How it looks on DeployBot

And here full script:

Thats all!
At current moment a have about 2500 deploys passed.

Сказ о том как я провел свой хакатон [1/2]

Сказ о том как я провел свой хакатон или два «сломанных» хостинга за одну ночь: часть первая Locum.

Прошло уже более полугода, а я только сейчас решил об этом написать.

Дело было вечером, делать было нечего. Так наверно можно начать большинство рассказов про исследование уязвимостей различных сервисов и софта.

(далее…)

WOT парсер «трастовых» доменов

Зачем нужен можно глянуть здесь: http://sarkazm.name/odnoklassniki/obhod-prokladki-v-odnoklassnikah/
Забрать можно здесь: https://github.com/S-anasol/sanasol/tree/master/web/wotparse
Собственно запускать через консоль: php index.php
В domains.txt будут записаны домены с рейтингом 1 и 2(зеленые кружки и чуть менее зеленые кружки)

Остается дело за малым, проверить наличие обратных ссылок с этих сайтов. Я не придумал простого автоматического способа без обхода капч поисковиков, так что думайте сами.
Прикладываю результат для 200-999 страниц 14к «трастовых» доменов: https://gist.github.com/S-anasol/888b370bf6234cce0134