وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

چطور کدهای Bash را رمزنگاری (Encrypt) کنیم

چطور کدهای اجرایی Bash در محیط لینوکس را رمزنگاری کنیم

0 ۱۵۲
زمان لازم برای مطالعه: 5 دقیقه

سوال : چطور میتواند کدهای شل بش اسکرییپ را در محیط لینوکس رمز نگاری ( انکریپت ) کنم  ؟ فایل شِل حاوی پسورد است و من نمیخواهم کسانی که دسترسی اجرا دارند کد شل را ببینند و پسورد را بدست بیاورند ، راهی هست که شل اسکریپت را انکریپت کنیم ؟

پاسخ : ابتدا ، بهترین راه حل این است که فایل بش را رمزنگاری نکنید ، بهتر است کد خود را به خوبی مستند کنید تا هر کس که آن را مشاهده می کند کاری که کد انجام میدهد را دقیقا درک کند ، اگر حاوی اطلاعات حساس مانند پسورد است ، بهتر است راه دگیری برای نوشتن کد پیدا کنید تا نیاز به کد کردن آن نباشد

اگر همچنان اصرار دارید که کد خود را رمزنگاری کنید ، از ابزاری SHC به شکلی در ادامه خواهیم گفت استفاده نمائید ، لطفا توجه کنید که کد رمزنگاری شده Bash Script توسط shc توسط کاربران عادی قابل خواندن نیست ، اما کسی که بداند دقیقا چطور کار میکند میتواند کد اصلی Bash را از باینری کد شده با shc استخراج کند

SHC مخفف  shell script compiler می‎باشد

SHC چطور کار می‎کند ؟

SHC یک نسخه قابل اجرای باینری از اسکریپت تعین شده با آپشن -f در خط دستور ایجاد می کند ، فایل ایجاد شده پسوند .x خواهد داشت و معمولا از فایل اصلی bash بزرگتر خواهد بود ، همچنین یک نسخه سورس کد فایل با پسوند .c نیز تهیه خواهد شد

دانلود و نصب SHC

نصب پیش نیازها

با

shc را دانلود و نصب نمائید

مطمئن باشید shc به درستی کامپیال شده است

اگر میخواهید باینتری SHC هم نصب شود ، کد زیر را اجرا کنید تا نصب و همیشه قابل اجرا شود

اگر خطای زیر را دریافت کردید 

به این دلیل است که در نصب minimal بسته man نصب نیست ، میتوانید از این خطا چشم پوشی کنید و یا دایرکتوری man را ایجاد و مجدد دستور make install را اجرا کنید

پیشنهاد می‎کنیم بخوانید:
آموزش نصب مجدد یا تغییر سیستم عامل VPS

با اجرای دستور زیر مطمون شوید که به دسترسی نصب شده است 

آموزش استفاده از SHC برای رمزنگاری Bash Script

 یک اسکریپت Shell نمونه ایجاد کنید

یک فایل نمونه بش اسکریپت که بخواهیم برای تست با SHC آن را انکریپت کنیم ایچاد کنید

برای تست ، یک فایل به اسم random.sh ایجاد میکنیم که خروجی اجرای آن ایجاد اعداد تصادفی ( بختکی ) است ، شما باید مشخص کنید که چه تعداد عدد تصادفی میخواهید ایجاد کنید





کد شل اسکریپت را با استفاده از SHC رمزنگاری کنید

فایل random.sh را با اجرای shc به شکل زیر رمزنگاری کنید

این دستور دو فایل ایجاد خواهد کرد که با اجرای ls آنها را مشاهده خواهید کرد که آنها به شرح زیر است

  • random.sh فایل اصلی و بدون رمزنگاری است
  • random.sh.x فایل انکریپت شده شِل اسکریپت در فرمت باینری است
  • random.sh.x.c سورس کد فایل random.sh به زبان c هست ، فایل سورس زبان c برای ایجاد فایل انکریپت شده بالا کامپایل شده است ، کل منطق پشت shc تبدیل فایل random.sh  به برنامه  random.sh.x.c است ( و البته کامپایل کردن آن فایل برای ایجاد فایل اجرای random.sh.x )

فایل رمز نگاری Shell شده را اجرا کنید

حال فایل رمزنگاری شده را برای اینکه مطمئن شویم همانگونه که باید کار می‎کند اجرا می‎کنیم

پیشنهاد می‎کنیم بخوانید:
آموزش ریست کردن پسورد CentOS

لطفا توجه داشته باشید که فایل باینری به تنهایی وابسته به در دسترس بودن shell مورد استفاده برای اجرا است ( اولین خط تعین شده در فایل random.sh در اینجا : /bin/bash )

ست کردن تاریخ انقضا برای اسکریپت Shell

با استفاده از shc شما میتوانید تاریخ انقضا برای اسکریپت bash تعریف کنید ، بعد از تاریخ انقضا اگر کسی کد را اجرا کند پیام خطا دریافت خواهند کرد. 

فرض میکنیم شما نمی‎خواهید کاربر کد را بعد از 31/12/2017 اجرا کند ( من از تاریخی که الان گذشته برای تست استفاده کردم)  یک فایل شِل اسکریپت جدید با shc -c جهت تعیین تاریخ انقضا ایجاد کنید فرمت تاریخ انقضا باید به شکل dd/mm/yyyy باشد

 

در این مثال اگر کسی بخواهد کد را بعد از تاریخ ذکر شده اجرا کند ، خطای زیر را دریافت خواهد رکد

اگر بخواهید پیام سفارش در زمان انقضا نمایش بدهیدمیتوانید از آپشن -m استفاده کنید ( به همراه آپشن -e که بالاتر توضیح داده شد و در پائین هم نمونه ذکر شده است)

 

ایجاد فایل رمزنگاری شده Bash با قابلیت توزیع مجدد

به غیر از آپشن های -e و -m میتوانید از آپشنهای زیر هم استفاده کنید

  • r امنیت را طوری تنظیم میکند که یک فایل باینری قابل اجرای مجدد و توزیع روی سیستم های دیگر که سیستم عامل یکسان با سیستمی که روی آن کامپایل شده است را تولید کند
  • T اجازه میدهد که فایل باینری تولید شده با برنامه هایی مانند strace و ltrace قابل trace باشد
  • v خروجی توضیحی فرایند

معمولا  ممکن است بخواهید از هر دو آپشن -T و -r برای تولید کد رمزنگاری شده قابل trace و توزیع مجدد Shell Script به شکلی که در ادامه نشان داده شده ست استفاده کنید

در نهایت ارزش تکرار داد که بگویم : در وهله اول نباید کد شل را رمزنگاری کنید ، اما اگر تصمیم گرفتید آن را با shc رمزنگاری (encrypt ) کنید ، لطفا مد نظر داشته باشید که یک فرد باهوش میتواند کد اصلی شِل اسکریپت را  از فایل باینتری رمزنگاری شده با shc تولید کند

موفق باشید، مهران صالحی ، رسانگار

 

دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید