有人知道保护 bash 脚本的最佳方法是什么吗?我有一个脚本,它可以创建数据库和源代码备份并将其通过 ftp 传输到其他服务器。目标 ftp 的登录名/密码是纯文本。我需要以某种方式加密或隐藏它,以防网站被黑客入侵。或者我应该创建用 C 编写的脚本来创建 bash 文件,然后运行并删除它?谢谢。
感谢您的回答,很抱歉,我的回答不够清楚。我想从以下几方面澄清我的问题。
- 我们将数据存储在 Rackspace Cloud 文件中。
- 我们无法提取,因为云文件不允许您运行脚本。
- 我们可以编写脚本在服务器 A 上运行,并提取服务器 B、C、D 等上的 FTP 和 MySQL 数据。并且我们希望保护 A 上的密码,以防 A 被黑客入侵。我们可以编译脚本文件来隐藏它们吗?
谢谢
答案1
当凭证必须以明文形式提供时,您无法“保护”凭证。对凭证进行模糊处理和编码(或者“加密”,如果您愿意使用这个术语的话)只不过是一种模糊的安全(这实际上并不是安全,而且可以说比什么都没有更糟糕,因为它会给您一种虚假的安全感)。
您最好重新考虑您的策略,从不太暴露的机器上执行某种类型的“拉取”数据,而不是试图“在显眼的地方”隐藏“凭证”。
(另请参阅:信用卡欺诈、ACH 欺诈、身份“盗窃”以及其他现实世界中愚蠢的隐秘安全案例,这些案例效果并不好。从定义上讲,必须公开分享的“秘密”并不是秘密。)
答案2
我使用以下方法来保护 bash 脚本中的密码。如果您希望隐藏用户名,同样的方法也适用于用户名。这种方法不是加密,但假设相关文件的权限设置正确,它将阻止普通系统用户看到您想要隐藏的详细信息。但是,如果您的系统被黑客入侵,那么这种方法就没什么用了,因为他们那时可能已经拥有 root 访问权限。
在脚本的顶部设置一个如下所示的变量。
MY_PASS=`cat /path/securepasswordfile`
创建一个仅包含密码的文本文件,然后使用文件权限保护它,以便只有运行脚本的帐户才能读取该文件。
然后,要在脚本中访问它,只需使用类似下面的内容。
$MYSQL_DUMP -A --host=$SERVER -u root -p$MY_PASS > $BACKUP_DIR/database/backup.sql
答案3
引用上面的 3dinfluence 的话:
$MYSQL_DUMP -A --host=$SERVER -u root -p$MY_PASS > $BACKUP_DIR/database/backup.sql
请注意,在某些发行版中,这将导致密码显示在“ps”的输出中。
答案4
无论你如何努力,你都无法完成你想做的事情,因为你正在努力去做。如果你仔细想想,无论你如何努力加密数据,最终所有的数据都是可用的。
也许更好的选择是让远程端 ssh 进入并运行这些命令?这就是我们在工作中所做的——一台非常安全的机器 ssh 进入客户端并备份它们。备份机器本身不允许远程 ssh 等。
顺便说一句,如果您使用 FTP,您的密码已经以纯文本传输了......