Не доступен сайт, личный кабинет.

Skip to end of metadata
Go to start of metadata

Wordpress attack

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

/app/asr_cabinet/var/log/httpd/error_log

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

[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

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

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

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

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

#!/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

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

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

Формат вывода скрипта: количество обращений, IP, регион по данным RIPE.

Пример скрипта
#!/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

TCP Flood

В операционной системе linux есть ограничение на количество одновременно открытых TCP соединений. Намеренно или случайно на сервер с личным кабинетом может прийти большое количество TCP соединений, что блокирует обработку новых соединений. Личный кабинет, как и сервер в целом будет недоступен по протоколам передоваемым TCP - http/https, ssh и другим. Для борьбы с проблемой необходимо заблокировать создание новых соединений. Это можно сделать в таблице raw цепочки PREROUTING. В примере мы блокируем трафик неавторизованных абонентов, который НАС перенапрвил на страницу неавторизованных TCP порт 442.

  1. Для начал узаем сколько открыто соединий по TCP порту 440
    conntrack -L | egrep 'tcp.*dport=440' | wc -l
    

    Максимальное количество соединений по умолчанию равно 65536. Посмотреть его можно командой:

    sysctl net.netfilter.nf_conntrack_max
    
  2. Можно было бы увеличить максимольное количество соединений, но это повлечёт дополнительную нагрузку на сервер. Поэтому лучше заблокировать создание соединий для оределённого вида трафика.
  3. Разместите в таблице raw правило блокировки.
    iptables -t raw -I PREROUTING -p tcp -m tcp --dport 440 -m addrtype --dst-type LOCAL -j DROP 
    
  4. Добавьте правило в hook /app/asr_cabinet/cfg/hooks , для его примения при запуске системы.
    #!/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
    
  5. Очистите таблицу соединений
    conntrack -F
    

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

Плагины

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

Модули

Для доработки сайта часто изменяют модули. При обновлении php необходимо проверить тестировать их на соответствие новой версии. Если после обновления платформы возникла проблема с одним из модулей, временно исключите его из сборки кабинета, переместив в папку пользователя.
Например, если файл с Вашим модулем называется "MyModule.php", его можно временно убрать из папки такой командой:

mv /app/asr_cabinet/usr/local/lib/cabinet_modules/modules/MyModule.php /root/

А если модулей несколько - нужно убрать их все.

После исправления модуля не забудьте разместить его в рабочем каталоге и каталог хранения:

Рабочий каталог
/app/asr_cabinet/usr/local/lib/cabinet_modules/modules/
Каталог хранения
/app/asr_cabinet/var/cabinet_modules/

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

.htaccess — это конфигурационный файл веб-сервера Apache. При изменении параметров сайта в него могут вноситься изменения.

Путь к файлу
/app/asr_cabinet/mnt/var/wordpress/.htaccess
Ошибка авторизации

При входе в личный кабинет, после ввода логина и пароля появляется ошибка.

Ошибка авторизации
module_token()?> Вы уже авторизованы.

Ошибка возникла из-за неверной конфигурации файла .htaccess. Указано использовать php5, хотя на данный момент используется php7.

Неверная конфигурация
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>

Для исправления ошибки:

  1. Отредактируйте файл по образцу:
    <IfModule mod_php7.c>
    php_value short_open_tag 1
    </IfModule>
    
  2. Перезапустите веб-сервер кабинета:
    chroot /app/asr_cabinet/ service httpd restart
    
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.