Защита скриптов bash

Кто-нибудь знает, как лучше защитить bash-скрипты? У меня есть скрипт, который создает резервную копию базы данных и исходного кода и FTP его на другой сервер. И логин / пароль для назначения ftp - обычный текст. Мне нужно как-то зашифровать или спрятать его на случай взлома сайта. Или я должен создать скрипт, написанный на C, чтобы создать bash-файл, затем запустить его и удалить? Благодарю.


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

  1. Мы храним данные в файлах Rackspace Cloud.
  2. Мы не можем вытащить, поскольку облачные файлы не позволяют запустить скрипт.
  3. Мы можем написать скрипт для запуска на сервере A и получить данные FTP и MySQL на серверах B, C, D и т. Д. И мы хотим защитить пароли на A от ситуации, когда A взломан. Можем ли мы скомпилировать наш файл сценария, чтобы скрыть их?

Спасибо

4 ответа

Решение

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

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

(См. Также: мошенничество с кредитными картами, мошенничество с 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, ваш пароль уже передан в виде открытого текста...

Другие вопросы по тегам