Linux

Почему плохо иметь слабый пароль пользователя mysql в доверенной сети?

Мне был представлен аргумент в духе «вам не нужен надежный пароль пользователя mysql, потому что для его использования у пользователей уже есть доступ к вашему серверу». Мы говорим о 4-значном пароле, который является стандартным английским словарным словом на живом бизнес-сайте. Не влияя на ответы своими собственными знаниями и опытом, я хотел бы показать некоторые ответы из незаинтересованного стороннего источника. Кто-нибудь может ответить на этот вопрос? Программирование/практические ответы будут приняты с благодарностью.

Ответ 1

Это во многом зависит от того, как настроен ваш сервер MySQL. Если он принимает запросы только с домашнего (127.0.0.1) IP, это делает его умеренно более безопасным. В случае если вы разрешаете удаленные IP, это становится гораздо более серьезной проблемой. Кроме того, всегда полезно иметь надежную защиту на случай вторжения лучше, если они уйдут с минимальными потерями.

 Ответ 2

На самом деле, все может быть наоборот: если у них есть доступ к mysql, они могут получить доступ к самой ОС сервера.

  1. Запросы MySQL LOAD_FILE и SELECT ... INTO OUTFILE позволяют пользователям mysql читать и записывать файлы в базовой файловой системе. Любой файл, к которому пользователь mysql имеет доступ (ваш MySQL работает от имени root?). Если вы работаете под linux/UNIX, просто выполните запрос SELECT LOAD_FILE('/etc/passwd') и увидите, что получится. Если mysqld запущен от имени root, вы можете попробовать SELECT LOAD_FILE('/etc/shadow') и посмотреть, как ваш сисадмин будет недоволен.

  2. Много раз в linux пользователь mysql «root» имеет тот же пароль, что и пользователь сервера «mysql» (тот, который запускает mysqld). Тогда, если этот пароль тривиален (или его можно подобрать с помощью автоматических инструментов, таких как medusa/hydra), вы можете просто подключиться по SSH/telnet непосредственно к серверу баз данных и поэкспериментировать.

Ответ 3

Если кто-то получит root-доступ к вашему серверу, то ему не понадобится никакой пароль MySQL. Но если они могут выполнять приложения на вашем сервере только как пользователи, не имеющие root-доступа, то надежный пароль MySQL все равно может спасти ваши данные. Но да, большинство взломов происходит из интернета, а это означает, что хакер получит доступ к вашему веб-аккаунту и, следовательно, сможет извлечь пароль БД из файлов PHP. Все это при условии, что ваш сервер MySQL не принимает соединения ни с какого другого сервера, кроме localhost. Если это так, то вам нужен надежный пароль.

Ответ 4

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

Честно говоря, я не доверяю, потому что знаю, каким я был, когда начинал работать в ИТ. Я лез и лез туда, куда не имел права, и, честно говоря, слабый пароль MySQL был бы для меня просто подарком, поскольку я бы воспользовался шансом на удачу, получил бы доступ и мог бы посеять хаос (случайно, конечно).

Что если кто-то использует социальную инженерию, чтобы попасть в вашу доверенную сеть? Что тогда делать? Если они находятся на машине за брандмауэром, то все, ваша надежная защита брандмауэра разрушена, а они попадают прямо в машину.

Надежные пароли так просто сделать, и существует множество инструментов управления паролями, которые упрощают их защиту, поэтому нет никаких оправданий тому, что вы этого не делаете.

Ответ 5

Если ваш сервер заблокирован по IP и ваш пользователь ограничен SELECT на набор таблиц, где вам не важна информация, это не является большой проблемой.

Зачем упрощать? Если пароль привязан к ограниченной локальной учетной записи (как и должно быть), то зачем вы его вводите? Если это не так, то пароль должен быть таким, чтобы его надежность была соотносима с ценностью данных, которые вы защищаете.

Ответ 6

Потому что требования меняются...

Так что сервер, который сегодня ограничен приемом соединений MySQL только с локальной машиной, завтра может быть открыт для того, чтобы внешний инструмент мог использоваться для управления базой данных. Человек, выполняющий эту настройку, может не знать, что используются очень слабые пароли.

Если вашему пользователю неудобно запоминать хороший, надежный (например, длинный, случайный) пароль, подумайте о том, чтобы сделать его очень надежным и хранить в .my.cnf — это даже удобнее, чем иметь слабый пароль, который придется набирать. Конечно, это тоже связано с безопасностью, но вам придется где-то хранить пароль, например, в приложениях, которые к нему обращаются, так что вы уже обеспечиваете безопасность копий пароля.

Ответ 7

В mysql очень легко выдать себя за другого человека. Имея идентификатор пользователя без пароля (самая слабая защита), просто используйте mysql -u userid. Если у него есть пароль, это немного сложнее, но слабый пароль упрощает задачу. Если у root нет пароля, я могу получить доступ к root как mysql -u root. Тогда я могу делать в базе данных все, что может root. Использование спецификаций хоста в защите также является хорошей идеей, особенно если есть или может быть доступен удаленный доступ. Пароли в файлах могут и должны быть в некоторой степени защищены правами доступа. Доступ root или владельца файла паролей является тривиальным. Если возможно, следует использовать шифрование пароля на диске. Это несколько затрудняет доступ к нему, но все равно делает его уязвимым.

 

Схожие статьи

Linux

Как сгенерировать дамп ядра в Linux при ошибке сегментации

Linux

Как используется брандмауэр?

Linux

Как сделать так, чтобы дочерний процесс завершался после завершения родительского

Linux

Стоит ли блокировать ICMP?