Взлом через phpMyAdmin

Hope

Premium
Сообщения
48,318
Решения
22
Реакции
71,959
Баллы
40,905
На почту пришло... Может кому-то будет полезно. :)

Данная информация будет особенно полезна владельцам VPS/VDS или выделенных серверов, которые зачастую оставляют настройки сервера по умолчанию.

Среди элементов управления базой данных MySQL распространена утилита phpMyAdmin, которая при дефолтных настройках никак не защищена. Именно этим и пользуются хакеры и взломщики, пытаясь получить доступ к вашим базам данных через phpMyAdmin. Наверняка, изучая логи ошибок на своем сервере вы встречали записи о сканировании вашего сервера на наличие на нем папок /pma, /myadmin, /phpmyadmin, /phpMyAdmin.

Чем опасен открытый интерфейс phpMyAdmin?
Оставляя открытым доступ к этому инструменту, вы даете возможность хакеру без особого труда взломать ваш ресурс и скомпрометировать данные в базе данных.

При помощи phpMyAdmin возможно:
• загрузить хакерский шелл или любой произвольный файл на сервер;
• прочитать произвольный файл на сервере;
• выполнить произвольный код на сервере;
• извлечь или модифицировать данные в базе данных.

Все это может привести не только к заражению вашего сервера вирусом, но и к возможности получить все ваши данные из базы.

phpMyAdmin свободно распространяемая утилита, а это значит, что в ней встречаются уязвимости.

Как проверить – открыт ли у меня доступ к phpMyAdmin?
Попробуйте зайти в phpMyAdmin с незнакомого IP адреса, например через прокси. Если дополнительная авторизация отсутствует (не выскакивает окно с просьбой ввести логин или пароль) и не сообщается ошибка 403 Forbidden и при этом появляется форма входа в phpMyAdmin – значит доступ к phpMyAdmin у вас открыт.

Как закрыть доступ к phpMyAdmin?
Достаточно ограничить доступ к phpMyAdmin по IP адресу для этого разместив .htaccess файл в каталоге phpMyAdmin с кодом:

Order Deny,Allow
Deny from All
Allow from 123.456.789.123

Где 123.456.789.123 – это ваш IP с которого разрешен доступ

У VPS серверов с ISPManager .htaccess нужно размещать в папке /usr/share/phpmyadmin.

Кроме того, будет так же полезно сделать серверную авторизацию при помощи файла .htpasswd – тогда ограничивать по IP нет необходимости. Для этого нужно прописать в .htaccess файле следующий код:

Require valid-user
AuthType Basic
AuthName "PLease Login"
AuthUserFile /usr/share/phpmyadmin/.htpasswd

Там же в /usr/share/phpmyadmin создайте файл с паролем .htpasswd и внесите в него логин и пароль для доступа. Сгенерировать его можно, например,

Таким образом, закрыв доступ к phpMyAdmin извне, вы сократите риск взлома своего сервера.
 
серверную авторизацию при помощи файла .htpasswd
Именно такой вариант использую, удобно. Вообще все серверные скрипты на отдельный поддомен (Sypex Dumper, PMA и т.п.) и под пароль :sneaky:
 
  • Мне нравится
Реакции: Hope
Гораздо эффективней прятать урл подобных скриптов, а по классическим урлам парсим лог и отстреливаем в бан.
Т.к. обычно pma цепляется алиасом, то том же апаче меняем
Код:
Alias /ixuxyhhht /usr/local/www/phpMyAdmin
И рестартуем апач - все, наш pma по адресу site.com/ixuxyhhht/

Теперь про бан по ip. Тут в примере nginx, то же самое есть и в апаче.
У меня есть статик ip, с которого обычно работаю и динамики, с которых иногда, но тоже нужно поработать, а вводить постоянно пароль надоедает. Нет ничего проще - используем опцию atisfy, разрешаем доступ по ip, а если не срабатывает правило по ip - спрашиваем пароль. Локейшн будет выглядеть примерно так (но можно и на уровне сервера)
Код:
                                      location ^~ /session_admin/ {
                                         atisfy any;
                                         allow xxx.xxx.xxx.xxx/32;
                                         deny  all;
                                         auth_basic "Hello, Admin, please login";
                                         auth_basic_user_file /home/урл_к_файлу_с_паролем/
Надеюсь, ставить пароль на nginx учить не нужно? Аналог в апаче - директива Satisfy:
Код:
<Directory /home/www/site/session_admin>
AuthUserFile /home/www/.passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow,deny
Allow from xxx.xxx.xxx.xxx
Satisfy all
</Directory>
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу