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

Безопасность пользователей, имеющих доступ к sudo

Как защитить мой список паролей (например, в разных базах данных) в среде UNIX, где у большинства пользователей есть sudo доступ к другим идентификаторам пользователей?

У меня есть сценарий (main.sh) со следующим содержанием в моем $HOME:

$ cat main.sh

mysql --skip-column-names -hmysql_host -umy_user -pmy_password -ADmysql_db << EOF >> /home/my_user/mysql.log
select current_date;
EOF

когда другой пользователь (another_user) пытается sudo su - my_user, то он / она сможет увидеть мои пароли для базы данных MySQL.

Даже если я введу пароль .bashrc и получить к нему доступ через некоторую переменную в моем скрипте, он сможет увидеть мой пароль в .bashrc файл.

Как я могу защитить свой пароль MySQL от этого пользователя another_user?

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

Поскольку каждый, у кого есть root, также имеет доступ ко всем файлам на сервере - нет, вы не можете. Если вы не доверяете людям, у которых есть root, то вам не следует запускать с этого сервера что-либо важное.

Однако вы все равно можете защитить свой сервер MySQL. Вы можете использовать определенные учетные записи для определенных вещей, чтобы, например, есть сценарий, который выполняет поиск, учетная запись, используемая для этого, также не может использоваться для удаления вещей. Вы можете разрешить доступ для учетной записи только с одного IP-адреса, так что даже если кто-то получит ваш пароль, он все равно сможет использовать его только с этого одного компьютера. Или вы можете настроить его так, чтобы вместо этого задание script / cron выполнялось на сервере MySQL, и чтобы оно подключалось к другому серверу для получения необходимых данных, например. используя SSH-ключи без пароля.

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