Просмотр Исходного

{toc:maxLevel=3}

h2. Wordpress attack

Если локальный сайт недоступен, и при перезагрузке */app/asr_cabinet* он становится доступным на непродолжительное время. Нужно посмотреть лог:

{code}
/app/asr_cabinet/var/log/httpd/error_log

{code}

Если есть строчки вида:

{code}
[Thu Jul 12 13:04:26 2018] [error] [client 95.78.226.80] Invalid URI in request \xf8\xf2\xb5\xf2z\x8a\x89\x9b\x07Jk\xd8\xa6'\xa7\xf2S\xaf9\xd2\x11W\xff9Gs\xafF\x83\xb9w\xb1,\xf3\xb3\xe3b\x1b\x1c\xad\x02\x19D\x8d\xb8D\x97\xebK\x8cM\x808\xf2\\?\xf7\xd7a\x8f\x05\x1fA\xa0 \xfa(l1\xd4\x84\x0e\b!\xea\x1d\x9f\xce\xe9
[Thu Jul 12 13:06:27 2018] [error] [client 5.166.94.146] Invalid URI in request \xf5e\xfaw@d^\xe0\xee\xf8\x85\xba]\xacu\xc4q\x89J\x19\xaf\x0e>fA\x83\xa5\xd6~[\xf1\xa5u\xec\xa1\x99\xb4\x1eK\x04aK':\x9e4Z\xf2w\xd7t\x7f\xf3. "\xa7\x95\x8cL\xf9
[Thu Jul 12 13:15:59 2018] [error] [client 88.135.91.82] Invalid URI in request o9\xde\xa13\x12\x13\x980\xa5Q\x94\x01\xd3?'\x97\x98\x80\xa2\xa3\xe0\x90\x01,\xdd\xea;+4J\x18\xed\xca)\x0e\x16\xb5\xa6\xe2\xcc<v\x83p%\xeb\x98:\x91\x8c3\xb3\xfbx\x92V\xd1\xac\x98BC\xe5\xf0\xab\x04\x9c\x1d\x94O\x92\x88%N\xac\xaeq\xa8\xa3<\xec\xc4~\xe7\x1dv\x80K\tq\xa9\xbf\xee\xdd\xaaj\xe9\x8a#\x83\xb0j.\xb6yMYAzjq\xcf\x96t\xd2\xa5C\x9b\xb6\xf7\xdb\xd4uV]Z\xf5\x86\xa3\x01}|\x03f\x06@s

{code}

То имеет место атака на WordPress: с помощью эксплуатации уязвимости вывести его из строй или получить контроль над сервером.

Для решения проблемы нужно добавить IP адреса атакующего в Firewall. Например, если атака направлена с подсети 10.20.0.0/24 и с IP-адреса 10.30.1.5


{code}
iptables -I asr_cabinet_input -s 10.20.0.0/24 -j DROP
iptables -I asr_cabinet_input -s 10.30.1.5 -j DROP
conntrack -F

{code}

Не забудьте добавить правило в хук */app/asr_cabinet/cfg/hooks* по статье "[CarbonBilling:Дополнительные настройки. hooks. Хуки. Свои правила в firewall]"

{code}
#!/bin/bash


if [ "$1" = '/etc/init.d/firewall' -a "$2" = 'start' ]; then

iptables -I asr_cabinet_input -s <ip/net> -j DROP
fi

exit 0

{code}

h3. Как проанализировать логи и найти с каких IP идёт атака

Вы можете проанализировать лог HTTP-сервера, чтобы понять с каких адресов и стран проводится атака.
Скрипт из примера проанализирует 10 наиболее часто встречаемых в логе адресов.
Команда grep в скрипте исключает локальные адреса, добавьте IP адреса относящиеся к Вашей сети: первые два октета подсетей.

Формат вывода скрипта: количество обращений, IP, регион по данным RIPE.
{code:title=Пример скрипта}
#!/bin/bash

cat /app/asr_cabinet/var/log/httpd/access_log | \
grep -vE '169.254|10.' | \
awk '{print $1}' | sort | uniq -c | sed 's/^ *//g' | sort -h | tail -n 10 | \
while read num ip; do
if [ $num -gt '10' ]; then
origin=$(whois -h whois.ripe.net $ip | grep 'country:' | awk '$2{print $2}');
echo $num $ip $origin;
fi;
done{code}


h2. TCP Flood

В операционной системе linux есть ограничение на количество одновременно открытых TCP соединений. Намеренно или случайно на сервер с личным кабинетом может прийти большое количество TCP соединений, что блокирует обработку новых соединений. Личный кабинет, как и сервер в целом будет недоступен по протоколам передоваемым TCP - http/https, ssh и другим. Для борьбы с проблемой необходимо заблокировать создание новых соединений. Это можно сделать в таблице *raw* цепочки PREROUTING. В примере мы блокируем трафик неавторизованных абонентов, который НАС перенапрвил на страницу неавторизованных TCP порт 442.
# Для начал узаем сколько открыто соединий по TCP порту 440
{code}
conntrack -L | egrep 'tcp.*dport=440' | wc -l
{code}
Максимальное количество соединений по умолчанию равно 65536. Посмотреть его можно командой:
{code}
sysctl net.netfilter.nf_conntrack_max
{code}
# Можно было бы увеличить максимольное количество соединений, но это повлечёт дополнительную нагрузку на сервер. Поэтому лучше заблокировать создание соединий для оределённого вида трафика.
# Разместите в таблице raw правило блокировки.
{code}
iptables -t raw -I PREROUTING -p tcp -m tcp --dport 440 -m addrtype --dst-type LOCAL -j DROP
{code}
# Добавьте правило в [hook|Дополнительные настройки. hooks. Хуки. Свои правила в firewall] */app/asr_cabinet/cfg/hooks* , для его примения при запуске системы.
{code}
#!/bin/bash

if [ "$1" = '/etc/init.d/firewall' -a "$2" = 'start' ]; then
iptables -t raw -I PREROUTING -p tcp -m tcp --dport 440 -m addrtype --dst-type LOCAL -j DROP
fi

exit 0
{code}
# Очистите таблицу соединений
{code}
conntrack -F
{code}

h2. Сайт не работает после обновления платформы


h3. Плагины

Для редактирования локального сайта могут применяться [плагины|Пользовательские плагины]. Их работа зависит от версии WordPress и версии php установленной в контейнере */app/asr_cabinet/*. Версии этих пакетов могут обновляться в стандартной сборке биллинга, так как свежие версии содержат обновления безопасности. При этом [плагины|Пользовательские плагины] остаются неизменными. Разница версий плагина WordPress и php приводить к поломке сайта.
*Для восстановления сайта в работу обновите плагины на актуальную версию.*

h3. Модули

Для доработки сайта часто изменяют [модули|Пользовательские модули в cabinet_modules]. При обновлении *php* необходимо проверить тестировать их на соответствие новой версии. Если после обновления платформы возникла проблема с одним из модулей, временно исключите его из сборки кабинета, переместив в папку пользователя.
Например, если файл с Вашим модулем называется "MyModule.php", его можно временно убрать из папки такой командой:
{code}
mv /app/asr_cabinet/usr/local/lib/cabinet_modules/modules/MyModule.php /root/
{code}
А если модулей несколько - нужно убрать их все.

После исправления модуля не забудьте разместить его в рабочем каталоге и каталог хранения:
{code:title=Рабочий каталог}
/app/asr_cabinet/usr/local/lib/cabinet_modules/modules/
{code}
{code:title=Каталог хранения}
/app/asr_cabinet/var/cabinet_modules/
{code}

h3. Ошибка в файле .htaccess

*.htaccess* --- это конфигурационный файл веб-сервера Apache. При изменении параметров сайта в него могут вноситься изменения.
{code:title=Путь к файлу}
/app/asr_cabinet/mnt/var/wordpress/.htaccess
{code}

h5. Ошибка авторизации

При входе в личный кабинет, после ввода логина и пароля появляется ошибка.
{code:title=Ошибка авторизации}
module_token()?> Вы уже авторизованы.
{code}
Ошибка возникла из-за неверной конфигурации файла *.htaccess*. Указано использовать *php5*, хотя на данный момент используется *php7*.
{code:title=Неверная конфигурация}
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>
{code}
Для исправления ошибки:
# Отредактируйте файл по образцу:
{code}
<IfModule mod_php7.c>
php_value short_open_tag 1
</IfModule>
{code}
# Перезапустите веб-сервер кабинета:
{code}
chroot /app/asr_cabinet/ service httpd restart
{code}