четверг, 31 июля 2014 г.

Восстановление пароля MySQL

Останавливаем службу MySQL:
# service mysql stop

Запускаем службу с опцией --skip-grant-tables:
# mysqld_safe --skip-grant-tables &
[1] 6518
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[5722]: started


Или в конфиге my.cnf прописываем:
skip-grant-tables

Подключаемся с серверу MySQL при помощи клиента mysql:
# mysql -u root
mysql>


Вводим новый пароль для root:
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-PASS") where User='root';
mysql> flush privileges;
mysql> quit


В Percona 5,7 например это будет выглядить так:
mysql> update user set authentication_string=password('NEW-PASS') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

Останавливаем сервер MySQL:
# ps aufx | grep mysql | awk '{print $2}' | xargs kill -9

Запускаем MySQL-сервер и логинимся с новым паролем:
# service mysql start
# mysql -u root -p
Enter password: NEW-PASS

понедельник, 7 июля 2014 г.

Обнаружение источника спама с сервера и устранение проблемы

В связи с многочисленными уязвимостями в некоторых плагинах популярных CMS, сервер был подвержен вводу в систему вредоносного скрипта.
Скрипт отправлял письма (как правило прон-содержания) с генерируемых адресов, а-ля [email protected], [email protected] домена взломанного сайта. Таких взломанных сайтов было несколько.

В этой заметке я опишу, как я выявлял источник спама и боролся с последствиями работы вредоносных скриптов.

воскресенье, 6 июля 2014 г.

Оптимизация PHP. apc и memcache

Четвёртая, скорее всего последняя заметка из цикла оптимизации веб-сервера на базе apache+nginx+mysql+php.

Сервер работает в режиме CGI. Локальные конфиги создаются в ISPmanager.

среда, 2 июля 2014 г.

Оптимизация nginx

Третья заметка из цикла оптимизации веб-сервера на базе apache+nginx+mysql+php.

Перед изменением конфигурационного файла необходимо сделать его резервную копию:
# cp nginx.conf nginx.conf.bak

Для замера производительности до оптимизации и после можно использовать этот сервис: developers.google.com/speed/pagespeed/insights

вторник, 1 июля 2014 г.

Скрипт блокировки брутфорсеров WordPress и Joomla

Я где-то писал, как можно блокировать ip-адреса с помощью nginx. Я смотрел адреса, которые имеют больше всего запросов за время ротации лога, вручную смотрел к каким страницам идёт соединение и если это были админки WordPress или Joomla, добавлял их в чёрный список и отдавал ошибку.
Автоматизировать это я решил самописным скриптом.
Скрипт анализирует лог, выделяет ip-адреса, которые более 3000 раз обращались к админке WordPress и Joomla и если этих ip-адресов ещё нет в чёрном списке, то добавляет их туда.
Скрипт запускается каждый час кроном.