رمزگذاری فایل Openssl. رمزگذاری فایل ها با رمز عبور با استفاده از OpenSSL. آرشیو دایرکتوری و رمزگذاری

رمزگذاری یک فایل واحد

# openssl aes-128-cbc -salt -in file -out file.aes # فایل را رمزگذاری کنید# openssl aes-128-cbc -d -salt -in file.aes ​​-out file. # فایل رمزگشاییطبیعتا فایل می تواند آرشیو هم باشد.

آرشیو دایرکتوری و رمزگذاری

# tar -cf - فهرست | openssl aes-128-cbc -salt -out directory.tar.aes # openssl aes-128-cbc -d -salt -in directory.tar.aes | tar -x -f -

همان، فقط آرشیو تایپ کنید tar.gz

# tar -zcf - فهرست | openssl aes-128-cbc -salt -out directory.tar.gz.aes # پوشه ها را فشرده و رمزگذاری کنید# openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | tar -xz -f - # دایرکتوری ها را رمزگشایی کنید و بایگانی را باز کنید
  • استفاده کنید -k mysecretpasswordبعد از aes-128-cbc، به طوری که از شما رمز عبور خواسته نمی شود، اما به خاطر داشته باشید که این بسیار ناامن است.
  • استفاده کنید aes-256-cbcبجای aes-128-cbcبرای به دست آوردن رمز پایدارتر، مصرف پردازنده افزایش می یابد.

رمزگذاری GPG

جایگزین PGPدارای مجوز GPL(مجوز عمومی عمومی گنو). GnuPG یک روش بسیار معروف برای رمزگذاری و امضای ایمیل ها یا سایر داده ها است و gpg همچنین یک سیستم مدیریت کلید پیشرفته را ارائه می دهد. این نمونه ها فقط رمزگذاری فایل را پوشش می دهند. ساده ترین رمز متقارن است. در این حالت، فایل با استفاده از رمز عبور رمزگذاری می‌شود، بنابراین شخصی که رمز عبور را می‌داند می‌تواند آن را رمزگشایی کند، هیچ کلیدی لازم نیست. GPGپسوند "* .gpg" را به نام فایل رمزگذاری شده اضافه می کند. # فایل gpg -c # رمزگذاری فایل با رمز عبور# gpg file.gpg # رمزگشایی فایل ( -oیک فایل دیگر)

رمزگذاری با استفاده از یک جفت کلید

برای اطلاعات بیشتر به مستندات GPG Quick Start، GPG / PGP Basics و gnupg مراجعه کنید. کلید خصوصی و کلید عمومی، اساس رمزنگاری نامتقارن. چیز هایی برای به یاد آوردن:
  • کلید عمومی شما توسط دیگران برای رمزگذاری فایل هایی استفاده می شود که به عنوان گیرنده، فقط شما می توانید رمزگشایی کنید (حتی کسی که آن را رمزگذاری کرده است).
  • کلید خصوصی شما با رمز عبور رمزگذاری می شود و برای رمزگشایی فایل های رمزگذاری شده با کلید عمومی شما استفاده می شود. کلید خصوصی باید در مکانی امن نگهداری شود. به یاد داشته باشید، اگر کلید خصوصی یا رمز عبور گم شود، فایل های رمزگذاری شده نیز به همراه آنها ناپدید می شوند.
  • یک فایل کلید می تواند حاوی چندین کلید باشد.
ابتدا باید یک جفت کلید ایجاد کنید. پیش فرض ها خوب هستند، اما باید نام، آدرس ایمیل و نظر (اختیاری) را وارد کنید. نظر هنگام ایجاد بیش از یک کلید برای یک نام / ایمیل خاص مفید است. همچنین، باید یک عبارت کلیدی (دقیقا یک عبارت و نه یک کلمه) را مشخص کنید. # gpg --gen-key # ممکن است کمی وقت بگیردکلیدها در ~ / .gnupg /در و در ج: / اسناد و تنظیمات /٪ USERNAME٪ / داده های برنامه / gnupg /... روی ویندوز ~ / .gnupg / pubring.gpg # شامل کلید عمومی و کلیدهای وارد شده شما است~ / .gnupg / secring.gpg # می تواند حاوی بیش از یک کلید باشدبرخی از گزینه های رایج:
  • -eداده ها را رمزگذاری کنید
  • رمزگشایی داده ها
  • -rرمزگذاری NAME برای گیرنده NAME (یا "نام کامل" یا " [ایمیل محافظت شده]")
  • خروجی کلید "ascii armored" را تولید کنید
  • -oخروجی به فایل

رمزگذاری فقط برای استفاده شخصی

نیازی به صادرات/وارد کردن هیچ کلیدی ندارد، شما قبلاً آنها را دارید. # gpg -e -r فایل "نام شما". # رمزگذاری با کلید عمومی# gpg -o file -d file.gpg # رمزگشایی گزینه استفاده شده -o، در غیر این صورت به stdout

رمزگذاری - رمزگشایی با استفاده از کلیدها

ابتدا باید کلید عمومی خود را صادر کنید تا بتوان از آن برای رمزگشایی داده ها استفاده کرد. همچنین باید کلید عمومی را از آلیس وارد کنید تا فایل ها را برای او رمزگذاری کنید. کلیدها را می توان در یک فایل ascii معمولی منتقل کرد. به عنوان مثال، آلیس یک کلید را صادر می کند، شما آن را برای خود وارد می کنید، اکنون می توانید فایل ها را برای او رمزگذاری کنید و فقط او می تواند آنها را رمزگشایی کند. # gpg -a -o alicekey.asc --export "Alice" # آلیس کلید را به یک فایل ascii صادر می کند.# gpg --send-keys --keyserver subkeys.pgp.net KEYID # آلیس کلید را روی سرور قرار می دهد.# gpg --import alicekey.asc # کلید را خودتان وارد می کنید.# gpg --search-keys --keyserver subkeys.pgp.net "Alice" # یا آن را در سرور انتخاب کنید.# فایل gpg -e -r "Alice". # فایل را برای آلیس رمزگذاری کنید.# فایل gpg -d file.gpg -o # فایل رمزگذاری شده توسط آلیس را برای شما رمزگشایی کنید.

مدیریت کلیدی

# gpg --list-keys # فهرست کلیدهای عمومی با KEYIDS KEYID از "/" پیروی می کند، به عنوان مثال برای: pub 1024D / D12B77CE - KEYID D12B77CE است# gpg --gen-revoke "نام شما" # ایجاد CRL (فهرست ابطال گواهی)# gpg --list-secret-keys # فهرست کلیدهای خصوصی# gpg --delete-keys NAME # کلید عمومی را از "keychain" محلی حذف کنید# gpg --delete-secret-key NAME # کلید خصوصی را از "keychain" محلی حذف کنید# gpg --fingerprint KEYID # نمایش اثر انگشت کلید# gpg --edit-key KEYID # کلید ویرایش (به عنوان مثال، امضا یا اضافه کردن / حذف ایمیل)

موقعیت های زیادی وجود دارد که شما نیاز به رمزگذاری یک فایل یا پوشه خاص دارید. به عنوان مثال، اگر داده ها از طریق کانال های باز منتقل شوند یا در یک رسانه خارجی ذخیره شوند. خیلی ها (از جمله خودم) از truecrypt استفاده می کنند، اما هدف اصلی این برنامه کار با پارتیشن های رمزگذاری شده است، بنابراین در این مورد خیلی خوب نیست.

برای چنین کارهایی، OpenSSL کاملاً مناسب است - یک راه حل متقابل پلت فرم قابل اعتماد. OpenSSL از الگوریتم‌های رمزگذاری مختلف پشتیبانی می‌کند، به‌علاوه به‌طور پیش‌فرض روی بسیاری از سیستم‌عامل‌ها نصب می‌شود و نصب بر روی سایر سیستم‌ها آسان است.

Under habrakat - اصول استفاده از رمزگذاری متقارن و نامتقارن در OpenSSL، و همچنین چند اسکریپت که رمزگذاری نامتقارن را با یک کلید یکبار مصرف ساده می کند.

ساده ترین راه برای محافظت از داده های خود با OpenSSL رمزگذاری متقارن است. دستورات زیر فایل document.zip را با استفاده از AES با یک کلید 256 بیتی رمزگذاری و رمزگشایی می کنند:

Openssl enc -aes-256-cbc -salt -in document.zip -out document.enc
openssl enc -d -aes-256-cbc -in document.enc -out document.zip

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

رمزگذاری کلید عمومی برای چنین مواردی اختراع شد. به طور کلی، شما باید کلیدهای عمومی و خصوصی ایجاد کنید. دستور اول کلید خصوصی private.pem را ایجاد می کند، دستور دوم کلید عمومی public.pem را ایجاد می کند:

Openssl genrsa -out private.pem -aes256 2048
openssl rsa -in private.pem -pubout -out public.pem

در نتیجه، یک جفت کلید RSA 2048 بیتی دریافت می کنید. متأسفانه در سیستم RSA، حجم داده های رمزگذاری شده با اندازه کلید محدود می شود، بنابراین نمی توانید بیش از 2 کیلوبایت داده را رمزگذاری کنید. راهی برای دور زدن این موضوع وجود دارد - اطلاعات ابتدا با یک الگوریتم متقارن (مانند مورد استفاده شده در بالا) با استفاده از یک کلید یکبار مصرف رمزگذاری می شوند. سپس این کلید یکبار مصرف با کلید عمومی رمزگذاری می شود. در طول رمزگشایی، کلید یکبار مصرف خصوصی رمزگشایی می شود. بیشتر در این مورد قبلاً به خوبی نوشته شده است.

اسکریپت زیر به رمزگذاری خودکار کمک می کند که در خروجی آن یک کلید یکبار مصرف و داده ها (encrypt.sh) را به صورت رمزگذاری شده دریافت خواهید کرد:

FILENAME = "$1"
PUBLICKEY = "2 دلار"
SESSIONKEY = "3 دلار"
نتیجه = "4 دلار"

# کلید متقارن تصادفی را تولید کنید
PASSIZE = 30
اگر [-c / dev / urandom]؛ سپس
KEY = `head -c 30 / dev / urandom | openssl enc -base64`
دیگر
KEY = `openssl rand -base64 30`
فی
صادرات کلید

# کلید متقارن را با استفاده از کلید عمومی رمزگذاری کنید
openssl rsautl -encrypt -inkey "$ PUBLICKEY" -out "$ SESSIONKEY" -pubin<کلید $
EOF

# فایل را رمزگذاری کنید
openssl enc -aes-256-cbc -pass env: KEY -in "$ FILENAME" -out "$ RESULT"

دستور زیر از کلید عمومی public.pem برای رمزگذاری فایل document.zip استفاده می کند. این یک کلید رمزگذاری شده یکبار مصرف، session.key و داده های رمزگذاری شده document.enc ایجاد می کند:

./encrypt.sh document.zip public.pem session.key document.enc

اسکریپت رمزگشایی (decrypt.sh):

PRIVATEKEY = "1 دلار"
SESSIONKEY = "2 دلار"
رمزگذاری شده = "3 دلار"
DECRYPTED = "4 دلار"

# کلید متقارن را با استفاده از کلید خصوصی رمزگشایی کنید
KEY = `openssl rsautl -decrypt -inkey" $ PRIVATEKEY "-in" $ SESSIONKEY "`
صادرات کلید

# فایل را رمزگشایی کنید
openssl enc -aes-256-cbc -d -pass env: KEY -in "$ ENCRYPTED" -out "$ DECRYPTED"

دستور رمزگشایی از کلید خصوصی private.pem و کلید یکبار مصرف session.key برای رمزگشایی فایل document.enc استفاده می کند. یک فایل document.zip ایجاد می کند:

./decrypt.sh private.pem session.key documents.enc documents.zip

همانطور که می بینید، رمزگذاری کلید عمومی می تواند تقریباً به سادگی رمزگذاری متقارن باشد. اما یک راه ساده تر وجود دارد. وبلاگ SbF₅ من را ترغیب کرد که این پست را بنویسم. نویسنده آن (بدون شک در bash پیچیده‌تر از من) اسکریپتی نوشت که یک پوشه را بایگانی می‌کند، آن را با یک کلید عمومی رمزگذاری می‌کند و اسکریپت دیگری را تولید می‌کند که شامل همه چیزهایی است که شما نیاز دارید: یک کلید یکبار مصرف، داده‌ها و دستورات رمزگشایی واقعی. علاوه بر این، اسکریپت می تواند یک جفت کلید RSA برای شما ایجاد کند:

./encrypt-file.sh -keys public.pem private.pem
./encrypt-file.sh پوشه public.pem> decrypt-folder.sh
chmod + x decrypt-folder.sh
./decrypt-folder.sh private.pem> folder.tar

در این مثال ابتدا یک جفت کلید ایجاد کردیم. پس از آن، پوشه پوشه در اسکریپت decrypt-folder.sh رمزگذاری شد و سپس در آرشیو folder.tar رمزگشایی شد. یک عیب احتمالی این روش این است که داده های موجود در decrypt-folder.sh با فرمت BASE64 ذخیره می شوند و در نتیجه اندازه آنها افزایش می یابد.

UPDبه وبلاگ امنیت اطلاعات منتقل شد.

موقعیت های زیادی وجود دارد که شما نیاز به رمزگذاری یک فایل یا پوشه خاص دارید. به عنوان مثال، اگر داده ها از طریق کانال های باز منتقل شوند یا در یک رسانه خارجی ذخیره شوند. خیلی ها (از جمله خودم) از truecrypt استفاده می کنند، اما هدف اصلی این برنامه کار با پارتیشن های رمزگذاری شده است، بنابراین در این مورد خیلی خوب نیست.

برای چنین کارهایی، OpenSSL کاملاً مناسب است - یک راه حل متقابل پلت فرم قابل اعتماد. OpenSSL از الگوریتم‌های رمزگذاری مختلف پشتیبانی می‌کند، به‌علاوه به‌طور پیش‌فرض روی بسیاری از سیستم‌عامل‌ها نصب می‌شود و نصب بر روی سایر سیستم‌ها آسان است.

Under habrakat - اصول استفاده از رمزگذاری متقارن و نامتقارن در OpenSSL، و همچنین چند اسکریپت که رمزگذاری نامتقارن را با یک کلید یکبار مصرف ساده می کند.

ساده ترین راه برای محافظت از داده های خود با OpenSSL رمزگذاری متقارن است. دستورات زیر فایل document.zip را با استفاده از AES با یک کلید 256 بیتی رمزگذاری و رمزگشایی می کنند:

Openssl enc -aes-256-cbc -salt -in document.zip -out document.enc
openssl enc -d -aes-256-cbc -in document.enc -out document.zip

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

رمزگذاری کلید عمومی برای چنین مواردی اختراع شد. به طور کلی، شما باید کلیدهای عمومی و خصوصی ایجاد کنید. دستور اول کلید خصوصی private.pem را ایجاد می کند، دستور دوم کلید عمومی public.pem را ایجاد می کند:

Openssl genrsa -out private.pem -aes256 2048
openssl rsa -in private.pem -pubout -out public.pem

در نتیجه، یک جفت کلید RSA 2048 بیتی دریافت می کنید. متأسفانه در سیستم RSA، حجم داده های رمزگذاری شده با اندازه کلید محدود می شود، بنابراین نمی توانید بیش از 2 کیلوبایت داده را رمزگذاری کنید. راهی برای دور زدن این موضوع وجود دارد - اطلاعات ابتدا با یک الگوریتم متقارن (مانند مورد استفاده شده در بالا) با استفاده از یک کلید یکبار مصرف رمزگذاری می شوند. سپس این کلید یکبار مصرف با کلید عمومی رمزگذاری می شود. در طول رمزگشایی، کلید یکبار مصرف خصوصی رمزگشایی می شود. جزئیات بیشتر در مورد این قبلاً به خوبی در مقاله Habré نوشته شده است.

اسکریپت زیر به رمزگذاری خودکار کمک می کند که در خروجی آن یک کلید یکبار مصرف و داده ها (encrypt.sh) را به صورت رمزگذاری شده دریافت خواهید کرد:

FILENAME = "$1"
PUBLICKEY = "2 دلار"
SESSIONKEY = "3 دلار"
نتیجه = "4 دلار"

# کلید متقارن تصادفی را تولید کنید
PASSIZE = 30
اگر [-c / dev / urandom]؛ سپس
KEY = `head -c 30 / dev / urandom | openssl enc -base64`
دیگر
KEY = `openssl rand -base64 30`
فی
صادرات کلید

# کلید متقارن را با استفاده از کلید عمومی رمزگذاری کنید
openssl rsautl -encrypt -inkey "$ PUBLICKEY" -out "$ SESSIONKEY" -pubin<کلید $
EOF

# فایل را رمزگذاری کنید
openssl enc -aes-256-cbc -pass env: KEY -in "$ FILENAME" -out "$ RESULT"

دستور زیر از کلید عمومی public.pem برای رمزگذاری فایل document.zip استفاده می کند. این یک کلید رمزگذاری شده یکبار مصرف، session.key و داده های رمزگذاری شده document.enc ایجاد می کند:

./encrypt.sh document.zip public.pem session.key document.enc

اسکریپت رمزگشایی (decrypt.sh):

PRIVATEKEY = "1 دلار"
SESSIONKEY = "2 دلار"
رمزگذاری شده = "3 دلار"
DECRYPTED = "4 دلار"

# کلید متقارن را با استفاده از کلید خصوصی رمزگشایی کنید
KEY = `openssl rsautl -decrypt -inkey" $ PRIVATEKEY "-in" $ SESSIONKEY "`
صادرات کلید

# فایل را رمزگشایی کنید
openssl enc -aes-256-cbc -d -pass env: KEY -in "$ ENCRYPTED" -out "$ DECRYPTED"

دستور رمزگشایی از کلید خصوصی private.pem و کلید یکبار مصرف session.key برای رمزگشایی فایل document.enc استفاده می کند. یک فایل document.zip ایجاد می کند:

./decrypt.sh private.pem session.key documents.enc documents.zip

همانطور که می بینید، رمزگذاری کلید عمومی می تواند تقریباً به سادگی رمزگذاری متقارن باشد. اما یک راه ساده تر وجود دارد. وبلاگ SbF₅ من را ترغیب کرد که این پست را بنویسم. نویسنده آن (بدون شک در bash پیچیده‌تر از من) اسکریپتی نوشت که یک پوشه را بایگانی می‌کند، آن را با یک کلید عمومی رمزگذاری می‌کند و اسکریپت دیگری را تولید می‌کند که شامل همه چیزهایی است که شما نیاز دارید: یک کلید یکبار مصرف، داده‌ها و دستورات رمزگشایی واقعی. علاوه بر این، اسکریپت می تواند یک جفت کلید RSA برای شما ایجاد کند:

./encrypt-file.sh -keys public.pem private.pem
./encrypt-file.sh پوشه public.pem> decrypt-folder.sh
chmod + x decrypt-folder.sh
./decrypt-folder.sh private.pem> folder.tar

در این مثال ابتدا یک جفت کلید ایجاد کردیم. پس از آن، پوشه پوشه در اسکریپت decrypt-folder.sh رمزگذاری شد و سپس در آرشیو folder.tar رمزگشایی شد. یک عیب احتمالی این روش این است که داده های موجود در decrypt-folder.sh با فرمت BASE64 ذخیره می شوند و در نتیجه اندازه آنها افزایش می یابد.

UPDبه وبلاگ امنیت اطلاعات منتقل شد.

OpenSSLمجموعه ای قدرتمند از ابزارهایی است که می توان از آنها استفاده کرد رمزگذاری فایل ها و پیام ها.

اگر می خواهید از همان رمز عبور استفاده کنید رمزگذاری متن ساده، و برای بعدی آن رمزگشایی، سپس باید استفاده کنید الگوریتم رمزگذاری متقارن.

از این مقاله یاد خواهید گرفت که چگونه رمزگذاری و رمزگشایی فایل ها و پیام هابا یک رمز عبور از خط فرمان در لینوکس با استفاده از OpenSSL.

چگونه: فایل را رمزگذاری کنید

$ openssl enc -aes-256-cbc -salt -in file.txt-خارج file.txt.enc

256 بیت AES یک الگوریتم رمزنگاری است که توسط دولت ایالات متحده برای رمزگذاری اطلاعات در مخفی ترین سطح آن استفاده می شود.

گزینه -نمک(نمک) استفاده شود همیشهاگر کلید مخفی از یک رمز عبور ایجاد شده باشد.

بدون استفاده از گزینه -نمک، امکان انجام یک حمله فرهنگ لغت بسیار مؤثر وجود دارد که منجر به افشای داده های رمزگذاری شده می شود. دلیل این امر این است که بدون افزودن "salt"، رمز عبور یکسان همیشه همان کلید مخفی را ایجاد می کند.

هنگامی که از نمک استفاده می شود، 8 بایت اول برای نمک ذخیره می شود. هنگامی که فایل رمزگذاری شده است به طور تصادفی تولید می شود و در طول رمزگشایی از فایل رمزگذاری شده خوانده می شود.

نحوه انجام: رمزگشایی فایل

$ openssl enc -aes-256-cbc -که در file.txt.enc-خارج file.txt

کدگذاری و رمزگشایی Base64

رمزگذاری Base64 یک روش استاندارد برای تبدیل اطلاعات باینری 8 بیتی به زیر مجموعه محدودی از کاراکترهای ASCII برای انتقال ایمن در سیستم های ایمیل و سایر سیستم هایی است که از فرمت 8 بیتی پشتیبانی نمی کنند.

به طور پیش فرض، فایل رمزگذاری شده در فرمت باینری ایجاد می شود. اگر قصد دارید آن را از طریق ایمیل، IRC و غیره ارسال کنید، باید آن را به صورت کدگذاری شده Base64 ذخیره کنید. برای رمزگذاری یک فایل رمزگذاری شده Base64، این گزینه را اضافه کنید :

$ openssl enc -aes-256-cbc -salt -که در file.txt-خارج file.txt.enc

گزینه ها شرح
به OpenSSL می گوید که داده های رمزگذاری شده Base64 کدگذاری شده است.

همچنین، گزینه ، باید در هنگام رمزگشایی مشخص شود:

$ openssl enc -aes-256-cbc -که در file.txt.enc-خارج file.txt

رمزگذاری / رمزگشایی بدون درخواست رمز عبور

از آنجایی که رمز عبور قابل مشاهده است، این روش فقط باید در جایی استفاده شود ایمنی مهم نیست.

به طور پیش فرض، از کاربر به صورت تعاملی رمز عبور خواسته می شود.

هنگام نوشتن یک اسکریپت BASH، ممکن است بخواهید ترتیبی دهید که رمز عبور به صورت غیر تعاملی با استفاده از این گزینه وارد شود. -k.

رمزگذاری کلید عمومی برای چنین مواردی ابداع شد.

فایل را با استفاده از رمز عبور ارائه شده رمزگذاری کنید:

$ openssl enc -aes-256-cbc -salt -in file.txt -out file.txt.enc -k PASS

رمزگشایی فایل با استفاده از رمز عبور ارائه شده:

$ openssl enc -aes-256-cbc -d -in file.txt.enc -out file.txt -k PASS

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

OpenSSH

OpenSSH با جایگزینی Telnet درز، هنوز هم شماره 1 سیستم مدیریت از راه دور برای امنیت و سهولت استفاده است. همه قادر به درک آن هستند، حتی اکثر قوری های کروم اندود، اما اکثریت قریب به اتفاق کاربران از حداقل قابلیت های آن استفاده می کنند. بیایید از داستان های کلیدها، ارسال پورت، پروکسی و سایر ترفندهای مفید، اما شناخته شده بگذریم و روش های واقعا جالب و نه چندان رایج استفاده از این ابزار را در نظر بگیریم.

اطلاعات

فهرست کاملی از دستورات OpenSSL را می توان با استفاده از پارامترهای زیر مشاهده کرد: دستورات فهرست-استاندارد، دستورات فهرست-پیام-همه، دستورات فهرست-رمز.

بنابراین ترفند شماره یک اتصالات متعدد است. OpenSSH قادر به مدیریت بسیاری از اتصالات همزمان به یک دستگاه است. به طور معمول، کاربران فقط یک دستور را اجرا می کنند و منتظر می مانند تا کامل شود تا دستور بعدی را اجرا کنند. خوشبختانه، این مشکل را می توان به راحتی با تقسیم یک اتصال به چندین جلسه دور زد. فقط خطوط زیر را به پیکربندی ssh اضافه کنید (~ / .ssh / config):

ControlMaster خودکار ControlPath ~ / .ssh / mux_% h_% p_% r

می‌توانید هر تعداد اتصال به همان سروری که مناسب می‌دانید ایجاد کنید، بدون نیاز به صرف زمان برای احراز هویت مجدد.


ترفند شماره دو پروکسی کردن اتصالات است. فرض کنید نمی‌توانید مستقیماً به سرور SSH اتصال ایجاد کنید، اما می‌توانید از میزبان دیگری برای این کار استفاده کنید که به آن دسترسی SSH نیز دارید. خطوط زیر را به تنظیمات خود اضافه کنید:

ForwardAgent بله میزبان میزبان HostName host.com ProxyCommand ssh proxy-host.com \ netcat -q 600% h% p

دستور ssh host از طریق سرور proxy-host.com یک اتصال به سرور host.com ایجاد می کند.

ترفند شماره سه فراتر از انزوای HTTP است. بسیاری از سازمان ها نه تنها ترافیکی را که دوست ندارند کاهش می دهند، بلکه کاربران را مجبور می کنند فقط با استفاده از پروتکل HTTP آنلاین شوند. این بی عدالتی به راحتی با چوب پنبه باز می شود (www.agroman.net/corkscrew/)، که می تواند ترافیک SSH را از طریق HTTP تونل کند. فقط آن را روی دستگاه خود نصب کنید و خطوط زیر را به پیکربندی اضافه کنید (که در آن proxy.com و 80 آدرس و پورت پراکسی HTTP خارجی هستند):

میزبان * ProxyCommand corkscrew proxy.com 80% h% p

اکنون همه اتصالات از طریق پروکسی HTTP مشخص شده انجام می شود.

ترفند شماره چهار - تست پهنای باند شبکه. برای تست سرعت اتصال، نیازی به نصب نرم افزار تخصصی نیست، ابزار pv و SSH خوب قدیمی کافی است:

$ sudo apt-get نصب pv $ بله | pv | ssh host.com "cat> / dev / null"

ترفند شماره پنج - تجزیه و تحلیل ترافیک شبکه از راه دور. تقریباً هر سیستم یونیکس دارای sniffer شبکه tcpdump است، اما خواندن گزارش های آن بسیار خسته کننده است. ویژگی های OpenSSH به ساده سازی تحلیل ترافیک کمک می کند:

$ ssh [ایمیل محافظت شده] tcpdump -w - "port! 22" \ | wireshark -k -i -

اکنون تمام ترافیکی که از host.com عبور می کند در پنجره گرافیکی wireshark در دستگاه شما قابل مشاهده خواهد بود.

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

$ sudo apt-get نصب cstream $ tar -cj / پشتیبان | cstream -t 512k | \ ssh میزبان "tar -xj -C / backup"

ترفند شماره هفت - همیشه جلسه SSH را باز کنید. کاربران لپ‌تاپ که ممکن است اتصال آنها به شبکه دائمی نباشد، هر بار که شبکه ظاهر می‌شود باید کلاینت SSH را مجددا راه‌اندازی کنند و زمانی که اتصال قطع شد، آن را از بین ببرند. می توان با استفاده از ابزار autossh که توهم اتصال دائمی به سرور را حفظ می کند و در صورت در دسترس بودن شبکه اتصال را بازیابی می کند، از این امر جلوگیری کرد:

$ sudo apt-get install autossh $ autossh -M50000 -t server.example.com \ "screen -raAd mysession"

ترفند شماره هشت - اجرای یک فرمان بر روی چندین سرور به طور همزمان. نظرات اضافی است:

$ echo "uptime" | pee "ssh host1" "ssh host2" \ "ssh host3"

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

$ ssh [ایمیل محافظت شده]گربه / مسیر / به / از راه دور / فایل | \ تفاوت / مسیر / به / محلی / فایل -

همین کار را می توان برای دو فایل واقع در سرورهای مختلف انجام داد:

$ تفاوت<(ssh host1 cat /etc/apt/sources.list) \ <(ssh host2 cat /etc/apt/sources.list)

cpu0: RNG AES

نتایج معیار ابزارهای رمزنگاری ساخته شده در CPU پلت فرم VIA Eden (دستورالعمل های پردازنده برای کار با الگوریتم رمزگذاری متقارن بلوک AES):

% سرعت openssl -سپری شده -evp aes-256-cbc نوع 16 بایت 64 بایت 256 بایت 1024 بایت 8192 بایت aes-256-cbc 21780.33k79591.78k 198578.0108.030.000.

ترفند شماره 10 - مشاهده سیاهههای مربوط از چندین ماشین به طور همزمان. با استفاده از Multitail و SSH، می توانید به راحتی گزارش ها را از دو سرور به طور همزمان مشاهده کنید:

$ sudo apt-get install multitail $ multitail -l "ssh host1" tail -f \ /var/log/apache2/error.log "" -l "ssh host2 \" tail -f / var / log / apache2 / خطا. ورود به سیستم ""

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

$ ssh [ایمیل محافظت شده]"cd / directory && tar -cf -." | \ ssh [ایمیل محافظت شده]"cd / فهرست && tar -xf -"

ترفند شماره 12 - کپی کردن خروجی یک فرمان از راه دور در کلیپ بورد. اغلب لازم است که خروجی یک فرمان از راه دور را در کلیپ بورد کپی کنید تا آن را در ایمیل، پست انجمن و غیره جایگذاری کنید. ساده ترین راه برای انجام این کار استفاده از ابزار xclip است:

$ ssh [ایمیل محافظت شده] cat /file.txt | xclip

ترفند شماره 13 - همگام سازی زمان با SSH. اگر دستگاه به سرور NTP دسترسی ندارد یا کلاینت NTP روی آن نصب نشده است، می توانید زمان بین دستگاه ها را به صورت زیر همگام سازی کنید:

# date --set = "$ (ssh [ایمیل محافظت شده]تاریخ) "

ترفند شماره 14 - نصب بسته ها از یک ماشین راه دور به یک ماشین محلی. اغلب لازم است دو دستگاه را به گونه‌ای هماهنگ کنیم که مجموعه‌ای از بسته‌های یکسان نصب شده باشند. انجام این کار با استفاده از روش های استاندارد دشوار است، اما استفاده از SSH به آسانی پوست اندازی گلابی است:

# ssh remotehost "dpkg --get-selections" | \ dpkg --set-selections && install را از حالت انتخاب خارج کنید

ترفند شماره 15 - اسکرین شات از راه دور. دریافت تصویری از سرور X از یک ماشین راه دور با استفاده از بسته گرافیکی استاندارد ImageMagick بسیار آسان است:

# ssh [ایمیل محافظت شده]"DISPLAY =: 0.0 import -window \ root -format png -" | نمایش با فرمت png -

ترفند شماره 16 - سرعت انتقال داده ها. اگر ماشین هایی که اتصال به آنها برقرار شده است در داخل یک شبکه امن شناخته شده (مثلاً یک دفتر یا خانه) باشند، می توان با استفاده از یک الگوریتم رمزگذاری قوی تر، انتقال داده SSH را کمی تسریع کرد. برای انجام این کار، خطوط زیر را به فایل پیکربندی اضافه کنید:

میزبان host.com رمزهای arcfour256 MAC [ایمیل محافظت شده]

ترفند شماره 17 - خروجی صدا از یک دستگاه از راه دور به یک دستگاه محلی. گاهی اوقات می خواهید صدا را همراه با تصویر دسکتاپ دستگاه از راه دور دریافت کنید. این کار با dd بی اهمیت انجام می شود:

$ dd اگر = / dev / dsp | ssh -c arcfour -C \ [ایمیل محافظت شده] dd = / dev / dsp

ترفند شماره 18 - اجرای یک اسکریپت محلی روی یک ماشین راه دور. اغلب شما نیاز دارید که یک اسکریپت را روی یک ماشین راه دور اجرا کنید، اما کپی کردن آن در آنجا اصلا ضروری نیست، فقط دستور ساده زیر را اجرا کنید:

$ ssh -T [ایمیل محافظت شده] < script.sh

OpenSSL

OpenSSL یک سیستم حفاظت از داده و گواهی است که در پاسخ به ایجاد لایه سوکت امن (SSL) توسط Netscape توسعه یافته است. بر خلاف تصور عمومی، OpenSSL به هیچ وجه ابزاری برای پیاده سازی پروتکل SSL نیست و می تواند عملکردهای بسیار متنوعی از جمله مدیریت کلیدها و گواهی ها، محاسبه هش و غیره را انجام دهد. در اینجا فقط لیست ناقصی از قابلیت های این برداشت کننده رمزنگاری وجود دارد. :

  • ایجاد و مدیریت کلیدهای RSA و DSA (دستورهای rsa، dsa، dsaparam)؛
  • ایجاد گواهینامه ها در قالب x509، تولید درخواست های صدور گواهینامه، بازیابی (فرمان های x509، req، verify، ca، crl، pks12، pks7).
  • رمزگذاری داده های متقارن و نامتقارن (فرمان های enc، rsautl)؛
  • محاسبه هش (فرمان dgst)؛
  • با S / MIME (فرمان s / mime) کار کنید.

همچنین OpenSSL می تواند برای بررسی سرورهای SSL و کلاینت ها با استفاده از دستورات خاص استفاده شود مشتری / هاسرور و برای تست سرعت الگوریتم های مختلف (سرعت فرمان).

ما بیش از یک بار در مورد کار با بسته OpenSSL نوشته‌ایم، بنابراین نمونه‌های استاندارد استفاده از آن، مانند ایجاد هش و گواهی‌ها را در نظر نخواهیم گرفت، بلکه بلافاصله به سراغ ترفندهای جدی‌تری خواهیم رفت.


وقت طلاست

یکی از ویژگی های جالب OpenSSL این است که می تواند الگوریتم های مورد استفاده و سرعت برقراری ارتباط SSL را محک بزند. دستور استاندارد s_time برای این منظور در نظر گرفته شده است. برای تخمین سرعت ایجاد یک اتصال SSL، باید آن را در دستور openssl اعمال کنید:

$ openssl s_time -connect gmail.com:443 \ -www /test.html -103 اتصال جدید در 0.75 ثانیه. 137.33 اتصال / ثانیه کاربر، بایت خواندن 42436 103 اتصال در 31 ثانیه واقعی، 412 بایت خواندن در هر اتصال

همین کار را می توان با قوی ترین الگوریتم ها انجام داد:

$ openssl s_time -ssl3 -cipher HIGH \ -connect gmail.com:443 -www / -99 اتصال جدید در 0.73 ثانیه. 135.62 اتصال / ثانیه کاربر، خواندن بایت 40 788 99 اتصال در 31 ثانیه واقعی، 412 بایت خواندن در هر اتصال

این دو دستور به شما اجازه می دهد تا حداکثر توان عملیاتی سرور SSL را تعیین کنید. اما راه جالب تر، آزمایش همه الگوریتم های پشتیبانی شده است. برای انجام این کار، ما باید به اسکریپت متوسل شویم:

IFS = ":" برای c در $ (openssl ciphers -ssl3 RSA); echo $ c openssl s_time -connect host: 443 -www / -new \ -time 10 -cipher $ c 2> & 1 | بازتاب بایت های grep انجام شد

این دستور به شما امکان می دهد سرعت برقراری یک اتصال SSL را با استفاده از الگوریتم های رمزگذاری مختلف اندازه گیری کنید، که می توان از آن ها برای مثال برای تنظیم یک سرور SSL استفاده کرد. اگر از قبل سرور SSL ندارید، شبیه سازی آن با استفاده از خود OpenSSL آسان است. سرور OpenSSL را روی دستگاه سرور راه اندازی کنید: