Назад | Перейти на главную страницу

Запрещение интерактивного входа в систему для определенных пользователей mysql

Я хочу создать несколько пользователей mysql для разных веб-сайтов, но запретить им интерактивные соединения.

Если злоумышленник получает учетные данные mysql для входа на веб-сайт, создание соединения с терминала на сервер довольно просто, но загрузка PHP-скрипта на сервер - это другая проблема. Думаю, это ограничение не лишнее.

Короче говоря, как я могу запретить интерактивное соединение для определенного пользователя?

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

Так например

 GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'127.0.0.0.1';

Чтобы предоставить выбор и вставку только с локального хоста. Или скажите, что ваши веб-серверы подключены к отдельному vlan

 GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'10.128.10.%';

Это позволит выбрать и вставить из 10.128.10.0/24

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

Вы не можете. MySQL не может различать сеанс CLI и соединение из библиотеки или, по крайней мере, не имеет модели разрешений, чтобы действовать в соответствии с этой разницей.

Как правило, вы должны сделать разрешения как можно более конкретными. Соединение, которое должно быть разрешено с определенного веб-сервера, должно быть ограничено только этим сервером. Это значительно снижает поверхность атаки.

Также по возможности не устанавливайте mysql Программа CLI на этом сервере, чтобы еще больше ограничить поверхность атаки.