使用shc提高Shell指令碼的安全性

2021-08-30 06:04:19 字數 2830 閱讀 8426

如果你的shell指令碼包含了敏感的口令或者其它重要資訊, 而且你不希望使用者通過ps -ef(檢視系統每個程序的狀態)捕獲敏感資訊. 你可以使用shc工具來給shell指令碼增加一層額外的安全保護. shc是乙個指令碼編譯工具, 使用rc4加密演算法, 它能夠把shell程式轉換成二進位制可執行檔案(支援靜態鏈結和動態鏈結). 該工具能夠很好的支援: 需要加密, 解密, 或者通過命令引數傳遞口令的環境.

shc主頁:

現在的版本是3.8.6(shc-3.8.6.tgz), 以此為例介紹shc的安裝及應用:

準備:

首先你需要檢查系統是否安裝了gcc編譯器, 以fedora core 6為例介紹gcc的檢查和安裝:

# rpm -qa|grep compat-gcc

compat-gcc-34-3.4.6-4

如果沒有安裝, 按下面步驟安裝gcc

# wget

然後 # ln -s /usr/bin/gcc34 /usr/bin/cc

安裝:

# wget sources/shc-3.8.6.tgz

# tar vxf shc-3.8.6.tgz

# cd shc-3.8.6

# make test

# make strings

# make install

應用:

下面以mysql資料庫備份(備份檔案通過ftp上傳到一台遠端的伺服器)指令碼為例:

############################### mysql_backup.sh ##############################

#!/bin/sh

newtime=`date +%m-%d-%y_%i%m%p`

mysqldump -u ****** -p ****** dbname | gzip > /users/****/documents/dbname_$newtime.sql.gz

echo 「backup of dbname」

curl –upload-file dbname$newtime.sql.gz –url 「ftp://*****:*****@host/」

echo 「ftp of dbname done」

############################### mysql_backup.sh ##############################

1). 加密指令碼.

# shc -v -f mysql_backup.sh

-v: 是verbose模式,輸出更詳細編譯日誌. -f: 指定指令碼的名稱.

上面命令在螢幕上的輸出:

shc shll=sh

shc [-i]=-c

shc [-x]=exec 『%s』 「$@」

shc [-l]=

shc opts=

shc: cc mysql_backup.sh.x.c -o mysql_backup.sh.x

shc: strip mysql_backup.sh.x

shc: chmod go-r mysql_backup.sh.x

我們可以看到生成了動態鏈結可執行二進位制檔案mysql_back.sh.x和c原始檔mysql_backup.sh.x.c, 注意生成的二進位制檔案因為是動態鏈結形式, 所以在其它平台上不能執行:

mysql_backup.sh.x: elf 32-bit lsb executable, intel 80386, version 1 (sysv),

dynamically linked (uses shared libs), for gnu/linux 2.6.9, stripped

2). 生成靜態鏈結的二進位制可執行檔案.

不過, 我們可以通過下面的方法生成乙個靜態鏈結的二進位制可執行檔案:

# cflags=-static shc -r -f mysql_backup.sh

# file mysql_backup.sh.x

mysql_backup.sh.x: elf 32-bit lsb executable, intel 80386, version 1 (sysv),

statically linked, for gnu/linux 2.6.9, stripped

另外, sch還可以設定指令碼的執行期限和自定義返回資訊:

shc -e 03/31/2007 -m 「the mysql backup script is now out of date.」 -f mysql_back.sh

-e表示指令碼將在2023年3月31日前失效, 並根據-m定義的資訊返回給終端使用者.

3). 二進位制檔案的剖析

有興趣的朋友可以參閱下面的文章:

paranoid penguin - limitations of shc, a shell encryption utility

你好 shc 能不能在64位的機子上執行

我有臺64位的伺服器 os 為64位的rhel4up2

執行加密後的指令碼出錯

test.sh.x: has expired!

please contact your provider

是什麼問題 估計在執行命令的時候-e選項指定的日期已經失效, 注意看一下伺服器的時間是否正確.

在64(os為64位)位的機子加-e 和不加 -e

還是報那樣的錯誤

,伺服器的時間沒有問題,我在32位的機子上測試完全正常,

你 可以在64位測試以下

使用shc加密shell指令碼

採用shc工具加密shell指令碼,以提高shell指令碼檔案的安全性。介紹 當我們寫的shell指令碼,存在有敏感資訊如賬號密碼,於是想加強指令碼的安全性 還有不想讓別人檢視 修改您的shell核心 等等情況。都可使用以下工具進行加密。shc是乙個指令碼編譯工具,使用rc4加密演算法,它能夠把sh...

shc加密shell指令碼

1.加壓shc 3.8.9b.tgz tar xzvf shc 3.8.9b.tgz cd shc 3.8.9b 2.建立幫助文件目錄 mkdir p usr local man man1 3.安裝 make install 4.安裝完,加密test.sh shc r t f test.sh 如果要...

Shell 指令碼加密工具 shc

為什麼要加密shell指令碼呢?當然是為了安全!可能指令碼裡面涉及到密碼之類的就需要進行加密了 要保護自己編寫的shell指令碼程式,方法有很多,最簡單的方法有兩種 1 加密 2 設定過期時間,下面以shc工具為例說明 shc是乙個加密shell指令碼的工具.它的作用是把shell指令碼轉換為乙個可...