| SSH-AUDIT(1) | General Commands Manual | SSH-AUDIT(1) |
نام (NAME)
ssh-audit - ممیزی و ارزیابی پیکربندی کارساز و کارخواه SSH
خلاصه دستور (SYNOPSIS)
ssh-audit [options] <target_host>
توضیحات (DESCRIPTION)
ssh-audit پیکربندی کارسازها و کارخواههای SSH را تحلیل کرده و سپس کاربر را از وجود مولفههای رمزی (cryptographic primitives) ضعیف، منسوخ و/یا آزمایشنشده آگاه میسازد. این ابزار برای مقاومسازی تونلهای SSH بسیار مفید است؛ تونلهایی که بهطور پیشفرض بیشتر برای سازگاری بهینهسازی شدهاند تا امنیت.
برای راهنماهای رسمی مقاومسازی در پلتفرمهای رایج، https://www.ssh-audit.com را ببینید.
گزینهها (OPTIONS)
- -h, --help
-
نمایش چکیدهٔ کوتاهی از گزینهها. - -4, --ipv4
-
اولویت دادن به استفاده از IPv4. - -6, --ipv6
-
اولویت دادن به استفاده از IPv6. - -b, --batch
-
فعالسازی خروجی مناسب برای grep. - -c, --client-audit
-
راهاندازی یک کارساز روی درگاه 2222 جهت ممیزی پیکربندی نرمافزار کارخواه. از -p/--port=<port> برای تغییر درگاه و از -t/--timeout=<secs> برای تغییر مهلت زمانی شنود (listen timeout) استفاده کنید. - --conn-rate-test=N[:max_rate]
-
انجام آزمون نرخ اتصال (مفید برای جمعآوری معیارهای مربوط به میزان آسیبپذیری در برابر DHEat [CVE-2002-20001]). اتصال موفق زمانی شمرده میشود که کارساز یک بنر معتبر SSH برگرداند. آزمایش با N سوکت همزمان همراه با بیشینه نرخ اختیاری اتصال در هر ثانیه انجام میشود. - -d, --debug
-
فعالسازی خروجی اشکالزدایی. - --dheat=N[:kex[:e_len]]
-
اجرای حملهٔ انکار سرویس DHEat (شناسه CVE-2002-20001) علیه کارساز هدف (که تمام منابع موجود پردازنده را مصرف خواهد کرد). تعداد سوکتهای همزمان، N، مورد نیاز برای رسیدن به این نتیجه بهشدت به منابع پردازندهٔ در دسترس روی هدف و همچنین تاخیر زمانی میان ماشین مبدأ و مقصد وابسته خواهد بود. روش تبادل کلید بهطور خودکار بر پایهٔ بیشترین اثرگذاری انتخاب میشود، مگر اینکه در فیلد دوم بهصراحت مشخص شده باشد. در نهایت، یک گزینهٔ آزمایشی (experimental) اجازه میدهد طول مقادیر ساختگی e بر حسب بایت که به کارساز فرستاده میشود در فیلد سوم تعیین گردد. بهطور معمول، طول e تقریباً برابر با طول مدولوس تبادل دیفی-هلمن است (بنابراین هنگام هدفگیری الگوریتم diffie-hellman-group18-sha512، یک مقدار ۸۱۹۲ بیتی / ۱۰۲۴ بایتی از e در هر اتصال ارسال میشود). با این حال مشاهده شده است که بسیاری از پیادهسازیهای SSH مقادیر کوچک، مانند ۴ بایت را میپذیرند؛ این امر منجر به حملهای بسیار کارآمدتر از نظر ترافیک شبکه میشود. - --get-hardening-guide=<platform_name>
-
دریافت راهنمای مقاومسازی برای پلتفرم مشخصشده (برای مشاهدهٔ فهرست راهنماهای موجود از --list-hardening-guides استفاده کنید). - -g, --gex-test=<x[,y,...] | min1:pref1:max1[,min2:pref2:max2,...] | x-y[:step]>
-
اجرای آزمون اندازهٔ مدولوس تبادل گروهی دیفی-هلمن (Diffie-Hellman Group Exchange) در برابر یک کارساز.روش دیفی-هلمن مستلزم آن است که کارخواه و کارساز بر سر مقدار یک مولد (generator) و مقدار یک مدولوس (modulus) توافق کنند. در پیادهسازی "Group Exchange" دیفی-هلمن، کارخواه اندازهٔ مدولوس را بر حسب بیت با ارائهٔ مقادیر کمینه، ترجیحی و بیشینه به کارساز مشخص میکند. سپس کارساز گروهی را مییابد که به بهترین شکل با درخواست کارخواه مطابقت داشته باشد و مولد و مدولوس مربوطه را برمیگرداند. برای توضیح کامل این فرایند، RFC 4419 و اسناد پس از آن را ببینید.
این آزمون با ارائهٔ اندازهٔ مدولوس به یک کارساز SSH، مانند یک کارخواه عمل کرده و اندازهٔ مدولوس بازگرداندهشده از طرف کارساز را به دست میآورد.
سه نوع نحو (syntax) پشتیبانی میشود:
1. <x[,y,...]>
فهرستی از اندازههای مدولوس که با کاما از هم جدا شدهاند.
آزمونی برای هر مقدار در این فهرست انجام میشود که در آن، آن مقدار به عنوان اندازهٔ کمینه، ترجیحی و بیشینه عمل میکند.
2. <min:pref:max[,min:pref:max,...]>
مجموعهای از سه مقدار جداشده با دونقطه که اندازهٔ مدولوس کمینه، ترجیحی و بیشینه را نشان میدهند.
آزمایشی برای هر مجموعه انجام میشود.
میتوان چندین مجموعه را به عنوان یک فهرست جداشده با کاما مشخص کرد.
3. <x-y[:step]>
محدودهای از اندازههای مدولوس با یک مقدار گام (step) اختیاری. در صورت حذف، مقدار پیشفرض گام ۱ است.
اگر مقدار سمت چپ بزرگتر از مقدار سمت راست باشد، توالی از راست به چپ عمل میکند.
آزمونی برای هر مقدار در این محدوده انجام میشود که در آن، آن مقدار به عنوان اندازهٔ کمینه، ترجیحی و بیشینه عمل میکند.موارد تکراری از مقدار بازگشتی حذف میشوند.
- -j, --json
-
نمایش نتایج در قالب JSON. مشخص کردن این گزینه به صورت دو بار (-jj) خروجی با تورفتگی را فعال میکند (مفید برای اشکالزدایی). - -l, --level=<info|warn|fail>
-
تعیین سطح کمینهٔ خروجی. پیشفرض info است. - --list-hardening-guides
-
فهرست کردن تمام راهنماهای رسمی و توکار مقاومسازی برای سیستمهای متداول. نامهای کامل آنها را میتوان سپس به --get-hardening-guide ارسال کرد. افزودن -v به این گزینه امکان مشاهدهٔ گزارش تغییرات و نسخههای پیشین راهنماهای مقاومسازی را فراهم میکند. - -L, --list-policies
-
فهرست کردن تمام خطمشیهای رسمی و توکار برای سیستمهای متداول. نامهای کامل آنها را میتوان سپس به -P/--policy ارسال کرد. افزودن -v به -L برای مشاهدهٔ گزارش تغییرات خطمشیها به کار میرود. - --lookup=<alg1,alg2,...>
-
جستجوی اطلاعات امنیتی یک یا چند الگوریتم در پایگاه دادهٔ داخلی. به هیچ کارسازی متصل نمیشود. - -m, --manual
-
چاپ صفحهٔ راهنما (تنها در ساختهای Docker، PyPI، Snap و Windows). - -M, --make-policy=<custom_policy.txt>
-
ایجاد یک خطمشی بر اساس کارساز هدف. زمانی کاربرد دارد که بخواهید کارسازهای دیگر را با پیکربندی سفارشی کارساز هدف مقایسه کنید (مانند محیطهای خوشهای یا کلاستر). توجه داشته باشید که خطمشی تولیدشده را میتوان بهصورت دستی ویرایش کرد. - -n, --no-colors
-
غیرفعال کردن خروجی رنگی. در صورت مقداردهی متغیر محیطی NO_COLOR، این گزینه بهطور خودکار اعمال میشود. - -p, --port=<port>
-
درگاه TCP برای اتصال در هنگام ممیزی یک کارساز، یا درگاهی که در هنگام ممیزی یک کارخواه روی آن شنود میشود. - -P, --policy=<"built-in policy name" | path/to/custom_policy.txt>
-
اجرای ممیزی خطمشی روی یک هدف با استفاده از خطمشی مشخصشده (برای توضیح کامل این حالت عملکرد، بخش POLICY AUDIT را ببینید). برای ممیزی پیکربندی کارخواه به جای کارساز، این گزینه را با -c/--client-audit ترکیب کنید. برای مشاهدهٔ تمام خطمشیهای رسمی و توکار سیستمهای رایج، از -L/--list-policies استفاده کنید. - --skip-rate-test
-
نادیده گرفتن آزمون نرخ اتصال در طول ممیزیهای استاندارد. بهطور پیشفرض، چند ده اتصال TCP با میزبان هدف برقرار میشود تا مشخص گردد آیا محدودسازی نرخ اتصال (throttling) پیادهسازی شده است یا خیر (از این طریق میتوان با اطمینان پی برد که آیا هدف در برابر حملهٔ DHEat آسیبپذیر است یا خیر؛ شناسه CVE-2002-20001 را ببینید). - --socks5 host:port
-
برقراری اتصال از طریق پیشکار SOCKS5. آزمونهای نرخ بهطور خودکار لغو میشوند (به این معنا که متضمن --skip-rate-test است). - -t, --timeout=<secs>
-
مهلت زمانی بر حسب ثانیه، برای برقراری اتصالات و خواندن دادهها از سوکت. مقدار پیشفرض 5 است. - -T, --targets=<hosts.txt>
-
فایلی شامل فهرستی از میزبانهای هدف. هر خط باید حاوی یک میزبان در قالب HOST[:PORT] باشد (یا برای سوکتهای یونیکس، از "unix://path/to/socket" استفاده کنید). از -p/--port برای تعیین درگاه پیشفرض تمام میزبانها استفاده کنید. از --threads برای کنترل تعداد پایشهای همزمان بهره ببرید. - --threads=<threads>
-
تعداد رشتهها (threads) جهت استفاده در هنگام پایش چندین هدف (همراه با -T/--targets). پیشفرض 32 است. - -v, --verbose
-
فعالسازی خروجی پرجزئیات..SH "ممیزی استاندارد (STANDARD AUDIT)"
بهطور پیشفرض، ssh-audit یک ممیزی استاندارد انجام میدهد؛ به این صورت که تمام انواع کلیدهای میزبان (host key types)، روشهای تبادل کلید (key exchanges)، رمزها (ciphers)، کدهای MAC و سایر اطلاعات را شمارش و فهرست کرده، سپس در خروجی به کاربر آنها را با کدبندی رنگی نمایش میدهد. سازههای پایهای رمزنگاری (cryptographic primitives) دارای مشکلات احتمالی با رنگ زرد و موارد دارای نقصهای امنیتی جدی با رنگ قرمز نمایش داده میشوند.
ممیزی خطمشی (POLICY AUDIT)
هنگامی که از گزینه -P/--policy استفاده میشود، ssh-audit یک ممیزی خطمشی انجام میدهد. انواع کلیدهای میزبان، تبادلهای کلید، رمزها، MACها و سایر اطلاعات هدف با مجموعهای از مقادیر مورد انتظار تعریفشده در فایل خطمشی مشخص، مقایسه میشوند. در صورتی که همه چیز مطابقت داشته باشد، تنها یک پیام کوتاه مبنی بر موفقیتآمیز بودن نتیجه گزارش میشود. در غیر این صورت، فیلد(هایی) که مطابقت نداشتهاند گزارش میگردند.
ممیزی خطمشی برای اطمینان از اینکه گروهی از سرورهای مرتبط دقیقاً بر اساس مشخصات فنی معینی امنسازی (hardened) شدهاند، بسیار مفید است.
مجموعه خطمشیهای توکار رسمی را میتوان با -L/--list-policies مشاهده کرد. چندین سرور را میتوان با -T/--targets=<servers.txt> ممیزی نمود. همچنین خطمشیهای سفارشی را میتوان از روی یک سرور هدف ایدهآل با استفاده از -M/--make-policy=<custom_policy.txt> ایجاد کرد.
مثالها (EXAMPLES)
ممیزی پایه سرور:
ssh-audit localhost ssh-audit 127.0.0.1 ssh-audit 127.0.0.1:222 ssh-audit ::1 ssh-audit [::1]:222 ssh-audit unix:///run/ssh-unix-local/socket
اجرای ممیزی استاندارد روی چندین سرور (اهداف را در servers.txt قرار دهید، هر کدام در یک خط و در قالب HOST[:PORT]):
ssh-audit -T servers.txt
ممیزی پیکربندی کلاینت (بهطور پیشفرض روی پورت 2222 گوش میدهد؛ اتصال با استفاده از “ssh -p 2222 anything@localhost”):
ssh-audit -c
ممیزی پیکربندی کلاینت، با شنونده روی پورت 4567:
ssh-audit -c -p 4567
فهرست کردن تمام خطمشیهای توکار رسمی (راهنمایی: از نام کامل آنها با -P/--policy استفاده کنید):
ssh-audit -L
اجرای ممیزی خطمشی توکار روی یک سرور (راهنمایی: از -L برای مشاهده فهرست خطمشیهای توکار استفاده کنید):
ssh-audit -P "Hardened Ubuntu Server 20.04 LTS (version 1)" targetserver
اجرای ممیزی خطمشی سفارشی روی یک سرور (راهنمایی: از -M/--make-policy برای ایجاد یک فایل خطمشی سفارشی استفاده کنید):
ssh-audit -P path/to/server_policy.txt targetserver
اجرای ممیزی خطمشی روی یک کلاینت:
ssh-audit -c -P ["policy name" | path/to/client_policy.txt]
اجرای ممیزی خطمشی روی چندین سرور:
ssh-audit -T servers.txt -P ["policy name" | path/to/server_policy.txt]
ایجاد یک خطمشی بر اساس یک سرور هدف (که میتوان آن را بهطور دستی ویرایش کرد؛ برای نمونههای ساختار نحوی خطمشیهای توکار رسمی را ببینید):
ssh-audit -M new_policy.txt targetserver
اجرای آزمون اندازه مدول Diffie-Hellman Group Exchange با استفاده از مقادیر 2000 بیت، 3000 بیت، 4000 بیت و 5000 بیت:
ssh-audit targetserver --gex-test=2000,3000,4000,5000
اجرای آزمون اندازه مدول Diffie-Hellman Group Exchange که در آن 2048 بیت حداقل، 3072 بیت ترجیحی و 5000 بیت حداکثر است:
ssh-audit targetserver --gex-test=2048:3072:5000
اجرای آزمون اندازه مدول Diffie-Hellman Group Exchange از 0 بیت تا 5120 بیت با گامهای 1024 بیتی:
ssh-audit targetserver --gex-test=0-5120:1024
اجرای حمله DoS به روش DHEat (میزان مصرف پردازنده سرور هدف را برای تعیین تعداد بهینه سوکتهای همزمان پایش کنید):
ssh-audit targetserver --dheat=10
اجرای حمله DHEat و هدفگیری دستی الگوریتم diffie-hellman-group-exchange-sha256:
ssh-audit targetserver --dheat=10:diffie-hellman-group-exchange-sha256
اجرای حمله DHEat و هدفگیری دستی الگوریتم diffie-hellman-group-exchange-sha256 با طول بسیار کوچک برای e (که همان نتیجه را بدون نیاز به ارسال بستههای بزرگ در بر دارد):
ssh-audit targetserver --dheat=10:diffie-hellman-group-exchange-sha256:4
آزمایش تعداد اتصالات موفق در هر ثانیه که میتوان با استفاده از ۸ ریسه (thread) موازی با هدف برقرار کرد (مفید برای تشخیص اینکه آیا محدودسازی نرخ اتصال توسط هدف اعمال شده است یا خیر):
ssh-audit targetserver --conn-rate-test=8
استفاده از ۸ ریسه موازی برای ایجاد حداکثر ۱۰۰ اتصال در ثانیه با هدف (مفید برای درک اینکه چه مقدار بار پردازشی روی هدف صرفاً ناشی از مدیریت اتصالات جدید است در مقایسه با توانرسانی مدولار اضافی هنگام اجرای حمله DHEat):
ssh-audit targetserver --conn-rate-test=8:100هنگامی که یک اتصال موفق برقرار شود و تمام الگوریتمها به عنوان «خوب» ارزیابی شوند، ssh-audit مقدار 0 را برمیگرداند. سایر مقادیر بازگشتی ممکن عبارتند از:
1 = خطای اتصال 2 = حداقل یک هشدار در الگوریتمها یافت شد 3 = حداقل یک شکست در الگوریتمها یافت شد <هر مقدار غیرصفر دیگر> = خطای ناشناخته
راهنماهای امنسازی SSH (SSH HARDENING GUIDES)
راهنماهای امنسازی برای پلتفرمهای رایج را میتوان در نشانی زیر یافت: https://www.ssh-audit.com
گزارش باگها (BUG REPORTS)
لطفاً گزارش باگها را به صورت یک Issue در GitHub در نشانی زیر ثبت کنید: https://github.com/jtesta/ssh-audit/issues
نویسندگان (AUTHORS)
ssh-audit در
ابتدا توسط
Andris Raugulis <moo@arthepsy.eu>
نوشته شد و
از ۲۰۱۵ تا
۲۰۱۷
نگهداری شد.
مسئولیت نگهداری و ادامهٔ توسعه در سال ۲۰۱۷ توسط Joe Testa <jtesta@positronsecurity.com> از سر گرفته شد.
| June 20, 2026 |