Кто-нибудь знает, как лучше всего защитить сценарии bash. У меня есть сценарий, который создает резервную копию базы данных и исходного кода и отправляет его по ftp на другой сервер. И логин / пароль для FTP-назначения представляют собой обычный текст. Мне нужно как-то его зашифровать или скрыть на случай взлома сайта. Или мне следует создать сценарий, написанный на C, чтобы создать файл bash, затем запустить его и удалить? Спасибо.
Спасибо за ответы, и мне очень жаль, что я не совсем понял. Я хотел бы уточнить свой вопрос по следующим пунктам.
Спасибо
Вы не можете «защитить» учетные данные, когда они должны быть доступны в виде открытого текста для использования. Обфускация и кодирование (или «шифрование», если вы хотите использовать этот термин) - это не что иное, как защита от неизвестности (которая на самом деле не является безопасностью и, возможно, хуже, чем ничего, поскольку может дать вам ложное чувство безопасности).
Вам лучше переосмыслить свою стратегию, чтобы выполнить некоторый тип «извлечения» данных с менее уязвимого компьютера, чем пытаться «скрыть» учетные данные «на виду».
(См. Также: мошенничество с кредитными картами, мошенничество с ACH, «кража» личных данных и другие глупые примеры из реальной жизни, когда «безопасность за счет неясности» не работает особенно хорошо. «Секреты», которыми нужно делиться открыто, по определению не являются секретами .)
Я использовал следующий подход для защиты пароля в сценариях bash. Тот же подход будет работать и для имени пользователя, если вы хотите скрыть его. Этот подход не является шифрованием, но при условии, что разрешения на файлы, о которых идет речь, установлены правильно, он не позволит среднему пользователю системы увидеть детали, которые вы хотите скрыть. Однако, если ваша система взломана, этот подход мало что даст, поскольку в этот момент у них, вероятно, будет root-доступ.
Вверху скрипта установите переменную, которая выглядит так.
MY_PASS=`cat /path/securepasswordfile`
Создайте текстовый файл, содержащий только пароль, а затем защитите его разрешениями на доступ к файлам, чтобы только учетная запись, запускающая сценарий, могла прочитать этот файл.
Затем, чтобы получить доступ к этому в вашем скрипте, просто используйте что-то вроде следующего.
$MYSQL_DUMP -A --host=$SERVER -u root -p$MY_PASS > $BACKUP_DIR/database/backup.sql
Цитата из 3dinfluence выше:
$ MYSQL_DUMP -A --host = $ SERVER -u root -p $ MY_PASS> $ BACKUP_DIR / database / backup.sql
Обратите внимание, что в некоторых дистрибутивах это приведет к тому, что пароль будет отображаться в выводе «ps».
Независимо от того, что вы пытаетесь сделать, вы не можете делать то, что пытаетесь сделать, поскольку вы пытаетесь это сделать. Если задуматься, то, как бы сильно вы ни пытались зашифровать данные, в конечном итоге все данные доступны.
Возможно, лучший вариант - подключить удаленный ssh и запустить эти команды? Это то, что мы делаем на работе - одна очень безопасная машина ssh передает клиентам и поддерживает их. Сама машина для резервного копирования не поддерживает удаленный ssh и т. Д.
Кстати, если вы используете FTP, ваш пароль уже передается в виде открытого текста ...