'\" t
.\" Title: fwknop
.\" Author: [بخش "نویسندگان" را ببینید]
.\" Generator: DocBook XSL Stylesheets v1.79.1
.\" Date: 08/06/2018
.\" Manual: Fwknop Client
.\" Source: Fwknop Client
.\" Language: Persian
.\"
.TH "FWKNOP" "8" "08/06/2018" "Fwknop Client" "Fwknop Client"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "نام (NAME)"
fwknop \- عملگر کوبش دیوار آتش (Firewall Knock Operator)
.SH "خلاصه دستور (SYNOPSIS)"
.sp
\fBfwknop\fR \fB\-A\fR <\*(Aqproto/ports\*(Aq> \fB\-R\fR|\fB\-a\fR|\fB\-s \-D\fR <\*(Aqhost\*(Aq> [\fIگزینهها\fR]
.SH "توضیحات (DESCRIPTION)"
.sp
\fBfwknop\fR یک طرح احراز هویت با نام «احراز هویت تکبستهای» (Single Packet Authorization یا SPA) را برای پنهانسازی قدرتمند سرویسها پیادهسازی میکند\&. روش SPA تنها به یک بسته رمزگذاریشده، غیرقابل بازپخش (non-replayable) و احراز هویتشده از طریق HMAC نیاز دارد تا درخواست دسترسی به سرویسی را که پشت یک دیوار آتش با سیاست پیشفرض مسدودسازی (default-drop) پنهان شده است، منتقل کند\&. کاربرد اصلی SPA استفاده از دیوار آتش برای مسدود کردن تمام تلاشها جهت اتصال به سرویسهایی نظیر \fISSH\fR است تا بهرهبرداری از آسیبپذیریها (چه آسیبپذیریهای روز صفر و چه کدهای وصلهنشده) دشوارتر شود\&. هر سرویسی که با SPA پنهان شده باشد، طبیعتاً توسط \fINmap\fR قابل پویش و شناسایی نیست\&. پروژه fwknop بهطور پیشفرض از چهار دیوار آتش مختلف پشتیبانی میکند: \fIiptables\fR، \fIfirewalld\fR، \fIPF\fR و \fIipfw\fR در لینوکس، OpenBSD، FreeBSD و Mac OS X\&. همچنین امکان استفاده از اسکریپتهای سفارشی وجود دارد تا بتوان fwknop را برای پشتیبانی از سایر زیرساختها مانند \fIipset\fR یا \fInftables\fR گسترش داد\&.
.sp
روش SPA اساساً نسل بعدی پورت ناکینگ (Port Knocking یا PK) است، اما بسیاری از محدودیتهای موجود در PK را برطرف کرده و در عین حال مزایای کلیدی آن را حفظ میکند\&. محدودیتهای PK عبارتند از: دشواری عمومی در محافظت برابر حملات بازپخش (replay attacks)، عدم امکان پشتیبانی مطمئن از الگوریتمهای رمزنگاری نامتقارن و طرحهای HMAC، و امکان بسیار ساده برای اجرای حمله محرومسازی از سرویس (DoS) علیه سرور PK تنها با تزریق یک بسته اضافی جعلی به توالی PK هنگام عبور از شبکه (که باعث میشود سرور PK تصور کند کلاینت توالی صحیح را نمیداند)\&. تمام این محدودیتها در SPA حل شدهاند\&. در عین حال، SPA سرویسها را پشت یک سیاست دیوار آتش default-drop پنهان میکند، دادههای SPA را بهصورت غیرفعال (passive) دریافت مینماید (معمولاً از طریق libpcap یا روشهای دیگر)، و عملیات استاندارد رمزنگاری را برای احراز هویت بستههای SPA و رمزگذاری/رمزگشایی پیادهسازی میکند\&.
.sp
این صفحه راهنما مربوط به کلاینت \fBfwknop\fR است که وظیفه ساخت بستههای SPA و ارسال آنها در شبکه را بر عهده دارد\&. سمت سرور توسط دیمن \fBfwknopd\fR پیادهسازی میشود که شبکه را برای بستههای SPA شنود (sniff) کرده و با دیوار آتش محلی تعامل میکند تا اتصالات احراز هویتشده با SPA را مجاز سازد\&. توصیه میشود صفحه راهنمای \fIfwknopd(8)\fR را نیز مطالعه کنید\&. اطلاعات تفصیلی بیشتر را میتوانید در راهنمای جامع آنلاین «Single Packet Authorization: A Comprehensive Guide to Strong Service Concealment with fwknop» بیابید (ببینید: \fIhttp://www\&.cipherdyne\&.org/fwknop/docs/fwknop\-tutorial\&.html\fR)\&.
.sp
بستههای SPA ایجادشده توسط \fBfwknop\fR از HMAC برای رمزنگاری احراز هویتشده در مدل «اول رمزگذاری سپس احراز هویت» (encrypt-then-authenticate) بهره میبرند\&. هرچند استفاده از HMAC در حال حاضر اختیاری است (از طریق سوئیچ خط فرمان \fB\-\-use\-hmac\fR فعال میشود)، اما به سه دلیل شدیداً توصیه میشود: \fI۱)\fR بدون HMAC، احراز هویت قوی رمزنگاریشده در \fBfwknop\fR امکانپذیر نیست مگر اینکه از GnuPG استفاده شود، که حتی در آن حالت نیز همچنان باید از HMAC استفاده گردد؛ \fI۲)\fR یک HMAC که پس از رمزگذاری اعمال میشود، در برابر حملات تحلیل رمزنگاری اوراکل لایهگذاری حالت CBC (مانند حمله Vaudenay و ترفندهای مرتبط نظیر حمله "Lucky 13" علیه SSL) محافظت میکند؛ و \fI۳)\fR کد مورد نیاز دیمن \fBfwknopd\fR برای تأیید HMAC بسیار سادهتر از کد مورد نیاز برای رمزگشایی بسته SPA است، بنابراین بسته SPA بدون HMAC معتبر اصلاً وارد توابع رمزگشایی نمیشود\&. دلیل \fI۳)\fR دقیقاً علت این است که چرا حتی هنگام استفاده از رمزگذاری GnuPG نیز باید از HMAC استفاده شود؛ زیرا دادههای SPA تا زمانی که HMAC بررسی و تأیید نشود، به توابع \fBlibgpgme\fR فرستاده نمیشوند\&. کدهای GnuPG و libgpgme نسبتاً پیچیده هستند و محدود کردن توانایی مهاجم احتمالی برای تعامل با این کدها از طریق عملیات HMAC به حفظ وضعیت امنیتی قویتر کمک میکند\&. ایجاد HMAC برای ارتباطات SPA علاوه بر کلید رمزگذاری عادی به یک کلید اختصاصی نیاز دارد و هر دو کلید را میتوان با گزینه \fB\-\-key\-gen\fR تولید کرد\&.
.sp
ابزار \fBfwknop\fR بستههای SPA را یا با رمز قالبی \fIRijndael\fR یا از طریق \fIGnuPG\fR و رمزهای نامتقارن مربوطه رمزگذاری میکند\&. اگر روش رمزگذاری متقارن انتخاب شود، طبق معمول کلید رمزگذاری بین کلاینت و سرور به اشتراک گذاشته میشود (برای جزئیات به فایل \fI/etc/fwknop/access\&.conf\fR در \fBfwknopd\fR مراجعه کنید)\&. کلید رمزگذاری واقعی که برای رمزگذاری Rijndael استفاده میشود، از طریق الگوریتم استاندارد مشتقسازی کلید PBKDF1 تولید شده و در حالت CBC تنظیم میگردد\&. اگر روش GnuPG انتخاب شود، کلیدهای رمزگذاری از دستهکلیدهای GnuPG مشتق میشوند\&. بستههای SPA تولیدشده توسط کلاینت fwknop از قالب زیر (پیش از رمزگذاری و اعمال HMAC) پیروی میکنند:
.sp
.if n \{\
.RS 4
.\}
.nf
random data (16 digits) [دادههای تصادفی ۱۶ رقمی]
username [نام کاربری]
timestamp [برچسب زمان]
software version [نسخه نرمافزار]
mode [حالت: حالت دستور (۰) یا حالت دسترسی (۱)]
if command mode => command to execute [در حالت دستور => دستور برای اجرا]
else access mode => IP,proto,port [در غیر این صورت حالت دسترسی => IP,proto,port]
message digest (SHA512 / SHA384 / SHA256 / SHA1 / MD5 / SHA3_256 / SHA3_512) [خلاصه پیام]
.fi
.if n \{\
.RE
.\}
.sp
هر یک از فیلدهای فوق به دلیل متغیر بودن طول چند فیلد، با نویسه ":" از یکدیگر جدا میشوند و فیلدهایی که ممکن است شامل نویسه ":" باشند بهصورت base64 کدگذاری میگردند\&. خلاصه پیام (بهطور پیشفرض \fBSHA256\fR) بخشی از دادههای در حال رمزگذاری است و مستقل از HMAC است که پس از رمزگذاری به دادههای بسته SPA ضمیمه میشود\&. دادههای تصادفی ۱۶ رقمی (حدود ۵۳ بیت) تضمین میکند که هیچ دو بسته SPA یکسان نباشند، و این مستقل از استفاده از PBKDF1 برای مشتقسازی کلید Rijndael در حالت CBC (که از مقدار نمک تصادفی ۸ بایتی استفاده میکند) است\&. از آنجا که \fBfwknopd\fR خلاصه SHA256 تمام بستههای معتبر ورودی SPA را ردیابی کرده و موارد تکراری را دور میاندازد، حملات بازپخش علیه \fBfwknop\fR امکانپذیر نیستند\&. در صورت تشخیص بازپخش، هشدارهای Syslog تولید میشوند\&.
.sp
بهطور پیشفرض، کلاینت \fBfwknop\fR بستههای مجازسازی را روی پورت UDP شماره 62201 ارسال میکند، اما این مقدار با آرگومان \fB\-\-server\-port\fR قابل تغییر است (این امر مستلزم آن است که \fBfwknopd\fR برای دریافت دادههای SPA روی پورت انتخابی پیکربندی شده باشد)\&. همچنین \fBfwknop\fR میتواند بسته SPA را از طریق آرگومان \fB\-\-rand\-port\fR روی یک پورت تصادفی ارسال کند\&. برای جزئیات بیشتر به \fIfwknopd(8)\fR مراجعه کنید\&. برای نمونههای فراخوانی کلاینت \fBfwknop\fR به بخش \fBمثالها (EXAMPLES)\fR مراجعه نمایید\&.
.sp
کلاینت \fBfwknop\fR بسیار سازگار و قابلحمل (portable) است و روی توزیعهای مختلف لینوکس (تمامی توزیعهای اصلی و توزیعهای تعبیهشده نظیر OpenWRT)، FreeBSD، OpenBSD، Mac OS X و Cygwin در ویندوز اجرا میشود\&. همچنین یک کتابخانه به نام \fBlibfko\fR وجود دارد که هر دو ابزار \fBfwknop\fR و \fBfwknopd\fR برای عملیات رمزگذاری/رمزگشایی بسته SPA و احراز هویت HMAC از آن استفاده میکنند\&. این کتابخانه میتواند برای استفاده برنامههای شخص ثالث از SPA تحت مجوز عمومی گنو (GPL v2+) به کار گرفته شود\&.
.SH "آرگومانهای الزامی (REQUIRED ARGUMENTS)"
.sp
این آرگومانهای الزامی را میتوان از طریق خط فرمان یا از داخل فایل \fI~/\&.fwknoprc\fR مشخص کرد (گزینه \fI\-n, \-\-named\-config\fR و بخش «فایل FWKNOPRC» در زیر را ببینید)\&.
.PP
\fB\-A, \-\-access\fR=\fI\fR
.RS 4
ارائه فهرستی از پورتها و پروتکلها برای دسترسی به یک رایانه راه دور که \fBfwknopd\fR را اجرا میکند\&. قالب این فهرست بهصورت \(lq+/\&.../+\(rq است، مانند \(lqtcp/22,udp/53\(rq\&.
\fBنکته:\fR
اکثریت قریب به اتفاق موارد استفاده از
\fBfwknop\fR
نیازمند آرگومان
\fB\-A\fR
هستند، اما ارسال دستورهای کامل با آرگومان
\fB\-\-server\-cmd\fR
از طریق بسته SPA برای اجرا توسط
\fBfwknopd\fR
به این آرگومان نیاز ندارد\&.
.RE
.PP
\fB\-D, \-\-destination\fR=\fI\fR
.RS 4
هدایت کلاینت
\fBfwknop\fR
برای احراز هویت با سرویس/دیمن
\fBfwknopd\fR
در نام میزبان یا نشانی IP مقصد مشخصشده\&. حالت اتصال توسط سرویس/دیمن
\fBfwknopd\fR
هنگام رمزگشایی و تجزیه بسته احراز هویت شناسایی میشود\&.
.RE
.PP
\fB\-R|\-a|\-s\fR
.RS 4
یکی از این گزینهها (توضیحات در ادامه) الزامی است تا به دیمن راه دور
\fBfwknopd\fR
اطلاع دهد چه نشانی IP باید از طریق دیوار آتش مجاز شود\&. توصیه میشود از گزینههای
\fB\-R\fR
یا
\fB\-a\fR
به جای
\fB\-s\fR
استفاده کنید تا ارتباطات SPA در برابر حملات احتمالی
\fIمرد میانی\fR
(MITM) ایمنسازی شوند، و در سمت سرور متغیر
\fIREQUIRE_SOURCE_ADDRESS\fR
در فایل
\fI/etc/fwknop/access\&.conf\fR
تنظیم گردد\&. توجه داشته باشید که امنترین گزینه
\fB\-a\fR
است تا
\fBfwknop\fR
مجبور به ارسال درخواست HTTPS به
\fIhttps://www\&.cipherdyne\&.org/cgi\-bin/myip\fR
برای تفکیک نشانی IP دارای قابلیت مسیریابی خارجی نباشد\&. استفاده از
\fB\-a\fR
مستلزم آن است که کاربر از قبل نشانی IP خارجی شبکهای را که fwknop روی آن اجرا میشود بداند\&.
.RE
.SH "گزینههای عمومی (GENERAL OPTIONS)"
.PP
\fB\-h, \-\-help\fR
.RS 4
چاپ پیام راهنمای خلاصه استفاده و خروج\&.
.RE
.PP
\fB\-G, \-\-get\-key\fR=\fI\fR
.RS 4
بارگیری کلید/گذرواژه رمزگذاری از فایل مشخصشده\&. فایل کلید برای هر نام میزبان یا نشانی IP مقصد شامل یک خط است که شامل دونقطه (":")، فاصله اختیاری و گذرواژه بوده و به یک خط جدید ختم میشود\&. توجه داشته باشید که خط آخر باید دارای نویسه خط جدید پایانی باشد\&. همچنین توجه داشته باشید: اگرچه این یک تسهیلات است، اما داشتن فایلی با گذرواژههای متن آشکار روی سیستم ایده خوبی نبوده و توصیه نمیشود\&. اینکه کلاینت
\fBfwknop\fR
کلید را از شما درخواست (prompt) کند، عموماً امنتر است\&. همچنین توجه داشته باشید که اگر کلیدی روی دیسک ذخیره شود، فایل rc ابزار
\fBfwknop\fR
سازوکار بسیار قدرتمندتری برای تعیین نه تنها کلید بلکه سایر گزینهها نیز به شمار میرود\&.
.RE
.PP
\fB\-\-stdin\fR
.RS 4
خواندن کلید/گذرواژه رمزگذاری از ورودی استاندارد (stdin)\&. این گزینه میتواند مثلاً برای ارسال دادهها از طریق لوله (pipe) استفاده شود\&. این دستور شبیه به \-\-fd 0 است\&.
.RE
.PP
\fB\-\-fd\fR=\fI\fR
.RS 4
تعیین شماره توصیفگر فایل برای خواندن کلید/گذرواژه از آن\&. این دستور مانع از درخواست گذرواژه از کاربر میشود، در صورتی که گذرواژهای در بخش (stanza) اختصاصی کاربر یافت نشده باشد یا در خط فرمان ارائه نشده باشد\&. تنظیم توصیفگر فایل روی ۰ شبیه به دستور stdin است\&.
.RE
.PP
\fB\-\-get\-hmac\-key\fR=\fI\fR
.RS 4
بارگیری کلید/گذرواژه HMAC از فایل مشخصشده\&. مشابه قالب گزینه
\fB\-\-get\-key\fR،
فایل کلید HMAC شامل یک خط برای هر نام میزبان یا نشانی IP مقصد، یک دونقطه (":")، فاصله اختیاری و گذرواژه است که به یک خط جدید ختم میشود\&. توجه داشته باشید که خط آخر باید دارای نویسه خط جدید پایانی باشد\&. همچنین توجه کنید: داشتن فایلی با گذرواژههای متن آشکار روی سیستم توصیه نمیشود\&. درخواست کلید HMAC توسط کلاینت
\fBfwknop\fR
عموماً امنتر است\&. همچنین اگر کلیدی روی دیسک ذخیره میشود، فایل rc ابزار
\fBfwknop\fR
سازوکار قدرتمندتری است\&.
.RE
.PP
\fB\-\-key\-gen\fR
.RS 4
وادار کردن
\fBfwknop\fR
به تولید هر دو کلید Rijndael و HMAC که میتوانند برای رمزگذاری و احراز هویت بسته SPA استفاده شوند\&. این کلیدها از /dev/urandom مشتق شده و پیش از چاپ در خروجی استاندارد بهصورت base64 کدگذاری میشوند و برای درج در فایل \(lq$HOME/\&.fwknoprc\(rq (یا فایل ارجاع دادهشده با
\fB\-\-get\-key\fR)
در نظر گرفته شدهاند\&. چنین کلیدهایی عموماً بسیار امنتر از عبارات عبوری هستند که از طریق خط فرمان تایپ میشوند\&.
.RE
.PP
\fB\-\-key\-gen\-file\fR=\fI\fR
.RS 4
نوشتن کلیدهای تولیدشده در فایل مشخصشده\&. توجه داشته باشید که اگر فایل از قبل وجود داشته باشد، بازنویسی میشود\&. اگر این گزینه داده نشود،
\fB\-\-key\-gen\fR
کلیدها را در خروجی استاندارد مینویسد\&.
.RE
.PP
\fB\-\-key\-len\fR=\fI\fR
.RS 4
تعیین تعداد بایتها برای کلید تولیدشده Rijndael\&. حداکثر اندازه در حال حاضر ۱۲۸ بایت است\&.
.RE
.PP
\fB\-\-hmac\-key\-len\fR=\fI\fR
.RS 4
تعیین تعداد بایتها برای کلید تولیدشده HMAC\&. حداکثر اندازه در حال حاضر ۱۲۸ بایت است\&.
.RE
.PP
\fB\-l, \-\-last\-cmd\fR
.RS 4
اجرای
\fBfwknop\fR
با آرگومانهای خط فرمان فراخوانی قبلی (در صورت وجود)\&. آرگومانهای قبلی از فایل
\fI~/\&.fwknop\&.run\fR
استخراج میشوند\&.
.RE
.PP
\fB\-n, \-\-named\-config\fR=\fI\fR
.RS 4
تعیین نام بخش پیکربندی در فایل \(lq$HOME/\&.fwknoprc\(rq برای دریافت دستورالعملهای پیکربندی و اجرا\&. این بخشهای نامگذاریشده نیاز به بهخاطرسپاری آرگومانهای مختلف خط فرمان را برای فراخوانیهای پرکاربرد
\fBfwknop\fR
برطرف میکنند\&. برای فهرستی از دستورالعملهای معتبر پیکربندی در فایل
\fI\&.fwknoprc\fR،
بخش با عنوان «فایل FWKNOPRC» را در ادامه ببینید\&.
.RE
.PP
\fB\-\-key\-rijndael\fR=\fI\fR
.RS 4
تعیین کلید Rijndael در خط فرمان\&. از آنجا که ممکن است کلید برای ابزارهایی مانند
\fIps\fR
در یونیکس قابل مشاهده باشد، این حالت فقط باید در مواردی استفاده شود که امنیت حیاتی نیست\&. درخواست کلید توسط کلاینت
\fBfwknop\fR
یا دریافت آن از طریق فایل \(lq$HOME/\&.fwknoprc\(rq عموماً امنتر است\&.
.RE
.PP
\fB\-\-key\-base64\-rijndael\fR=\fI\fR
.RS 4
تعیین کلید کدگذاریشده با base64 برای Rijndael\&. از آنجا که ممکن است کلید برای ابزارهایی مانند
\fIps\fR
در یونیکس قابل مشاهده باشد، این فرم فقط باید در مواردی که امنیت بحرانی نیست استفاده شود\&. دریافت کلید از فایل \(lq$HOME/\&.fwknoprc\(rq یا درخواست کلاینت امنتر است\&.
.RE
.PP
\fB\-\-key\-base64\-hmac\fR=\fI\fR
.RS 4
تعیین کلید کدگذاریشده با base64 برای HMAC\&. از آنجا که ممکن است کلید برای ابزارهایی نظیر
\fIps\fR
قابل مشاهده باشد، این فرم فقط باید در موارد غیرحساس استفاده شود\&.
.RE
.PP
\fB\-\-key\-hmac\fR=\fI\fR
.RS 4
تعیین کلید خام HMAC (کدگذارینشده با base64)\&. از آنجا که کلید ممکن است برای ابزارهایی نظیر
\fIps\fR
قابل مشاهده باشد، این فرم تنها در شرایط غیرحساس کاربرد دارد\&.
.RE
.PP
\fB\-\-rc\-file\fR=\fI\fR
.RS 4
تعیین مسیر فایل rc ابزار
\fBfwknop\fR
(پیشفرض \(lq$HOME/\&.fwknoprc\(rq است)\&.
.RE
.PP
\fB\-\-no\-rc\-file\fR
.RS 4
انجام عملیات کلاینت
\fBfwknop\fR
بدون ارجاع به فایل \(lq$HOME/\&.fwknoprc\(rq\&.
.RE
.PP
\fB\-\-no\-home\-dir\fR
.RS 4
جلوگیری از جستجوی کلاینت
\fBfwknop\fR
برای پوشه خانگی کاربر\&.
.RE
.PP
\fB\-\-save\-rc\-stanza\fR=\fI\fR
.RS 4
ذخیره آرگومانهای خط فرمان در بخش مشخصشده فایل \(lq$HOME/\&.fwknoprc\(rq با گزینه
\fB\-n\fR\&.
اگر گزینه
\fB\-n\fR
حذف شود، نام بخش بهطور پیشفرض برابر با مقدار سرور مقصد (نام میزبان یا IP) دادهشده در آرگومان
\fB\-D\fR
خواهد بود\&.
.RE
.PP
\fB\-\-force\-stanza\fR
.RS 4
همراه با
\fB\-\-save\-rc\-stanza\fR
برای بازنویسی تمام متغیرهای بخش مشخصشده استفاده میشود\&.
.RE
.PP
\fB\-\-stanza\-list\fR
.RS 4
تخلیه فهرستی از بخشهای موجود در \(lq$HOME/\&.fwknoprc\(rq\&.
.RE
.PP
\fB\-\-show\-last\fR
.RS 4
نمایش آخرین آرگومانهای خط فرمان استفادهشده توسط
\fBfwknop\fR\&.
.RE
.PP
\fB\-E, \-\-save\-args\-file\fR=\fI\fR
.RS 4
ذخیره آرگومانهای خط فرمان در مسیر فایل مشخصشده\&. بدون این گزینه، و زمانی که
\fB\-\-no\-save\-args\fR
نیز مشخص نشده باشد، مسیر پیشفرض ذخیره آرگومانها
\fI~/\&.fwknop\&.run\fR
است\&.
.RE
.PP
\fB\-\-no\-save\-args\fR
.RS 4
آرگومانهای خط فرمان ارائهشده هنگام اجرای
\fBfwknop\fR
را ذخیره نکند\&.
.RE
.PP
\fB\-T, \-\-test\fR
.RS 4
حالت آزمایشی\&. تولید دادههای بسته SPA، اما بدون ارسال آن\&. در عوض، تفکیک فیلدهای داده SPA را چاپ کرده، سپس دادهها را از فرایند رمزگشایی و کدگشایی عبور داده و دوباره تفکیک آنها را چاپ میکند\&. این در درجه اول یک ویژگی اشکالزدایی است\&.
.RE
.PP
\fB\-B, \-\-save\-packet\fR=\fI\fR
.RS 4
دستور به کلاینت
\fBfwknop\fR
برای نوشتن بسته جدیداً ایجادشده SPA در فایل مشخصشده تا بتوان آن را بهصورت آفلاین بررسی کرد\&.
.RE
.PP
\fB\-b, \-\-save\-packet\-append\fR
.RS 4
پیوست کردن دادههای بسته تولیدشده به فایل مشخصشده با گزینه
\fB\-B\fR\&.
.RE
.PP
\fB\-\-fault\-injection\-tag\fR=\fI\fR
.RS 4
این گزینه تنها برای آزمون تزریق خطا در زمانی استفاده میشود که
\fBfwknop\fR
برای پشتیبانی از کتابخانه libfiu کامپایل شده باشد (ببینید:
\fIhttp://blitiri\&.com\&.ar/p/libfiu/\fR)\&. در شرایط عادی این گزینه استفاده نمیشود و هیچ نسخه بستهبندیشدهای از fwknop این کد را بهصورت کامپایلشده ندارد، بنابراین این قابلیت در زمان اجرا فعال نیست\&. برای کامل بودن مستندات در اینجا ذکر شده است\&.
.RE
.PP
\fB\-v, \-\-verbose\fR
.RS 4
اجرای کلاینت
\fBfwknop\fR
در حالت پرگویی (verbose)\&. این امر باعث میشود
\fBfwknop\fR
اطلاعات اضافی درباره دستور فعلی و دادههای حاصل از SPA چاپ کند\&.
.RE
.PP
\fB\-V, \-\-version\fR
.RS 4
نمایش اطلاعات نسخه و خروج\&.
.RE
.SH "گزینههای SPA (SPA OPTIONS)"
.PP
\fB\-\-use\-hmac\fR
.RS 4
تنظیم حالت HMAC برای رمزنگاری احراز هویتشده در ارتباطات SPA\&. از نسخه
\fBfwknop\fR
2\&.5، این یک ویژگی اختیاری است، اما در نسخههای بعدی به حالت پیشفرض تبدیل خواهد شد\&.
.RE
.PP
\fB\-a, \-\-allow\-ip\fR=\fI\fR
.RS 4
تعیین نشانی IP که باید از طریق دیوار آتش سرور مقصد
\fBfwknopd\fR
مجاز شود (این IP درون خود بسته SPA رمزگذاری میشود)\&. این گزینه برای جلوگیری از حمله مرد میانی (MITM) مفید است که در آن بسته SPA میتواند در مسیر رهگیری شده و از یک IP متفاوت با نسخه اصلی ارسال شود\&. بنابراین اگر سرور
\fBfwknopd\fR
به نشانی مبدأ در هدر IP بسته SPA اعتماد کند، مهاجم دسترسی پیدا خواهد کرد\&. گزینه
\fB\-a\fR
نشانی مبدأ را درون بسته رمزگذاریشده SPA قرار میدهد و بنابراین این حمله را خنثی میسازد\&. گزینه
\fB\-a\fR
همچنین برای تعیین IP که هنگام جعل بسته SPA با گزینه
\fB\-\-spoof\-src\fR
دسترسی به آن داده میشود، کاربرد دارد\&. گزینه مرتبط دیگر
\fB\-R\fR
است (در ادامه را ببینید) که به کلاینت
\fBfwknop\fR
دستور میدهد نشانی IP دارای قابلیت مسیریابی خارجی متصل به سیستم محلی را با پرسوجو از
\fIhttps://www\&.cipherdyne\&.org/cgi\-bin/myip\fR
بهطور خودکار تفکیک کند\&. این کار نشانی IP واقعی دیدهشده از سیستم فراخواننده را برمیگرداند\&.
.RE
.PP
\fB\-g, \-\-gpg\-encryption\fR
.RS 4
استفاده از رمزگذاری GPG روی بسته SPA (پیشفرض در صورت عدم تعیین، Rijndael است)\&.
\fBنکته:\fR
استفاده از این گزینه همچنین نیازمند گیرنده GPG است (گزینه
\fB\-\-gpg\-recipient\fR
را به همراه سایر گزینههای مرتبط با GPG در زیر ببینید)\&.
.RE
.PP
\fB\-\-hmac\-digest\-type\fR=\fI\fR
.RS 4
تنظیم الگوریتم خلاصه HMAC برای رمزنگاری احراز هویتشده بستههای SPA\&. انتخابها عبارتند از:
\fBMD5\fR،
\fBSHA1\fR،
\fBSHA256\fR
(پیشفرض)،
\fBSHA384\fR،
\fBSHA512\fR،
\fBSHA3_256\fR و
\fBSHA3_512\fR\&.
.RE
.PP
\fB\-N, \-\-nat\-access\fR=\fI\fR
.RS 4
سرور
\fBfwknopd\fR
امکان ارائه دسترسی SPA از طریق دیوار آتش iptables به یک سرویس داخلی را از طریق تعامل با قابلیتهای NAT در iptables فراهم میکند\&. بنابراین اگر سرور
\fBfwknopd\fR
از یک شبکه داخلی روی فضای آدرس RFC-1918 محافظت میکند، یک کلاینت خارجی
\fBfwknop\fR
میتواند درخواست کند که سرور یک پورت خارجی را به یک IP داخلی فوروارد کند، به عنوان مثال \(lq+\-\-NAT\-access 192\&.168\&.10\&.2,55000+\(rq\&. در این حالت، دسترسی به 192\&.168\&.10\&.2 از طریق پورت 55000 به هر سرویسی که از طریق آرگومان
\fB\-\-access\fR
درخواست شده است (معمولاً tcp/22) اعطا میشود\&. بنابراین پس از ارسال چنین بسته SPA، کاربر دستور \(lqssh \-p 55000 user@host\(rq را اجرا میکند و اتصال بهطور خودکار به سیستم داخلی 192\&.168\&.10\&.2 هدایت میشود\&. توجه داشته باشید که پورت \(lq55000\(rq میتواند بهصورت تصادفی از طریق آرگومان
\fB\-\-nat\-rand\-port\fR
(که بعداً توضیح داده شده) تولید شود\&.
.RE
.PP
\fB\-\-nat\-local\fR
.RS 4
روی سرور
\fBfwknopd\fR،
عملیات NAT میتواند بهجای فوروارد شدن به سیستمهای دیگر، روی سیستم محلی اعمال شود\&. یعنی برای دیوارهای آتش iptables، اتصال به مثلاً پورت 55000 میتواند به پورت 22 روی سیستم محلی ترجمه شود\&. با استفاده از آرگومان
\fB\-\-nat\-local\fR،
میتوان کلاینت
\fBfwknop\fR
را وادار به درخواست چنین دسترسی کرد\&. این بدان معناست که هر مهاجم خارجی پس از ارسال بسته SPA، تنها اتصالی روی پورت 55000 را مشاهده میکند به جای پورت مورد انتظار 22\&.
.RE
.PP
\fB\-\-nat\-port\fR
.RS 4
معمولاً
\fBfwknop\fR
برای درخواست دسترسی به یک پورت خاص مانند tcp/22 روی سیستمی که
\fBfwknopd\fR
را اجرا میکند استفاده میشود\&. با این حال با استفاده از آرگومان
\fB\-\-nat\-port\fR،
امکان درخواست دسترسی به یک سرویس (مجدداً مانند tcp/22) وجود دارد، اما این دسترسی از طریق پورت مشخصشده اعطا میشود (بنابراین آرگومان
\fB\-p\fR
سپس در خط فرمان کلاینت
\fISSH\fR
استفاده خواهد شد)\&. آرگومانهای خط فرمان
\fB\-\-nat\-local\fR
و
\fB\-\-nat\-access\fR
در
\fBfwknop\fR
را برای جزئیات بیشتر در مورد دسترسی به سرویسها از طریق عملیات NAT ببینید\&.
.RE
.PP
\fB\-\-nat\-rand\-port\fR
.RS 4
معمولاً
\fBfwknop\fR
برای درخواست دسترسی به یک پورت خاص مانند tcp/22 روی سیستمی که
\fBfwknopd\fR
را اجرا میکند استفاده میشود\&. با این حال با استفاده از آرگومان
\fB\-\-nat\-rand\-port\fR،
میتوان دسترسی به یک سرویس خاص (مجدداً مانند tcp/22) را درخواست کرد اما این دسترسی از طریق یک پورت تصادفی ترجمهشده اعطا شود\&. یعنی هنگامی که کلاینت
\fBfwknop\fR
در این حالت اجرا شد و پورت تصادفی انتخابشده توسط
\fBfwknop\fR
نمایش داده شد، پورت مقصد استفادهشده توسط کلاینت بعدی باید طوری تغییر کند که با این پورت تصادفی مطابقت داشته باشد\&. برای
\fISSH\fR،
این کار از طریق آرگومان
\fB\-p\fR
انجام میشود\&. آرگومانهای خط فرمان
\fB\-\-nat\-local\fR
و
\fB\-\-nat\-access\fR
را برای جزئیات بیشتر ببینید\&.
.RE
.PP
\fB\-p, \-\-server\-port\fR=\fI\fR
.RS 4
تعیین شماره پورتی که
\fBfwknopd\fR
بستهها را از طریق libpcap یا ulogd pcap writer روی آن میپذیرد\&. بهطور پیشفرض
\fBfwknopd\fR
بستههای مجازسازی را روی پورت UDP شماره 62201 جستجو میکند\&.
.RE
.PP
\fB\-P, \-\-server\-proto\fR=\fI\fR
.RS 4
تنظیم پروتکل (udp، tcp، http، udpraw، tcpraw یا icmp) برای بسته خروجی SPA\&. نکته: حالتهای
\fBudpraw\fR،
\fBtcpraw\fR
و
\fBicmp\fR
از سوکتهای خام (raw sockets) استفاده میکنند و بنابراین برای اجرا نیازمند دسترسی ریشه (root) هستند\&. همچنین توجه کنید: حالت
\fBtcp\fR
انتظار دارد قبل از ارسال بسته SPA یک اتصال TCP با سرور برقرار کند\&. این کار معمولاً انجام نمیشود، اما برای سازگاری با Tor جهت ناشناسی قوی مفید است؛ ببینید:
\fIhttp://tor\&.eff\&.org/\fR\&.
در این حالت، سرور
\fBfwknopd\fR
باید پیکربندی شود تا روی پورت TCP هدف (که بهطور پیشفرض 62201 است) گوش فرا دهد\&.
.RE
.PP
\fB\-Q, \-\-spoof\-src\fR=\fI\fR
.RS 4
جعل نشانی مبدأ که کلاینت
\fBfwknop\fR
بستههای SPA را از آن ارسال میکند\&. این کار در سمت کلاینت نیازمند دسترسی root است زیرا به یک سوکت خام نیاز دارد\&. توجه داشته باشید که آرگومان
\fB\-\-spoof\-user\fR
را میتوان در این حالت مشخص کرد تا هرگونه کلیدواژه
\fBREQUIRE_USERNAME\fR
را که ممکن است در
\fI/etc/fwknop/access\&.conf\fR
تعیین شده باشد برآورده سازد\&.
.RE
.PP
\fB\-r, \-\-rand\-port\fR
.RS 4
دستور به کلاینت
\fBfwknop\fR
برای ارسال یک بسته SPA روی یک پورت مقصد تصادفی بین 10000 تا 65535\&. سرور
\fBfwknopd\fR
باید از متغیر
\fBPCAP_FILTER\fR
استفاده کند که برای پذیرش چنین بستههایی پیکربندی شده باشد\&. برای مثال، متغیر
\fBPCAP_FILTER\fR
میتواند روی این مقدار تنظیم شود: \(lq+udp dst portrange 10000\-65535+\(rq\&.
.RE
.PP
\fB\-R, \-\-resolve\-ip\-https\fR
.RS 4
این یک گزینه مهم است و به کلاینت
\fBfwknop\fR
دستور میدهد یک درخواست HTTPS به اسکریپتی که روی
\fIcipherdyne\&.org\fR
اجرا میشود ارسال کند که نشانی IP کلاینت را (همانطور که وبسرور میبیند) برمیگرداند\&. در برخی موارد، این کار برای تعیین نشانی IP که باید از طریق سیاست دیوار آتش در سمت سرور راه دور
\fBfwknopd\fR
مجاز شود لازم است\&. این گزینه زمانی مفید است که کلاینت
\fBfwknop\fR
روی سیستمی پشت یک نشانی نامشخص NAT استفاده میشود و IP خارجی رو به اینترنت برای کاربر شناختهشده نیست\&. نشانی کامل تفکیک برابر است با:
\fIhttps://www\&.cipherdyne\&.org/cgi\-bin/myip\fR،
و توسط
\fBfwknop\fR
از طریق
\fIwget\fR
در حالت
\fB\-\-secure\-protocol\fR
دسترسی پیدا میکند\&. توجه داشته باشید که اگر نشانی IP با قابلیت مسیریابی خارجی کلاینت از قبل برای کاربر مشخص باشد، استفاده از گزینه
\fB\-a\fR
عموماً امنتر است زیرا نیاز
\fBfwknop\fR
به ارسال هرگونه درخواست HTTPS را از بین میبرد\&.
.RE
.PP
\fB\-\-resolve\-url\fR \fI\fR
.RS 4
جایگزینی URL پیشفرض مورد استفاده برای تفکیک نشانی IP مبدأ\&. برای بهترین نتایج، URL مشخصشده در اینجا باید به یک سرویس وب اشاره کند که فقط یک نشانی IP را در بدنه پاسخ HTTP ارائه میدهد\&.
.RE
.PP
\fB\-\-resolve\-http\-only\fR
.RS 4
این گزینه کلاینت
\fBfwknop\fR
را وادار میکند نشانی IP خارجی را از طریق HTTP به جای HTTPS تفکیک کند\&. شرایطی وجود دارد که ممکن است این کار ضروری باشد، مانند زمانی که
\fIwget\fR
در دسترس نیست (یا با پشتیبانی SSL کامپایل نشده است)، اما بهطور کلی این کار توصیه نمیشود زیرا امکان حمله MITM را از طریق دستکاری پاسخ HTTP تفکیک IP فراهم میسازد\&. یا IP را بهصورت دستی با
\fB\-a\fR
مشخص کنید، یا از
\fB\-R\fR
استفاده کرده و این گزینه را نادیده بگیرید\&.
.RE
.PP
\fB\-w, \-\-wget\-cmd\fR=\fI\fR
.RS 4
تنظیم دستی مسیر کامل دستور
\fIwget\fR\&.
بهطور معمول اسکریپت
\fIconfigure\fR
دستور
\fIwget\fR
را پیدا میکند، اما این گزینه میتواند برای تعیین مسیر در صورتی که در مکانی غیر استاندارد قرار داشته باشد استفاده شود\&.
.RE
.PP
\fB\-s, \-\-source\-ip\fR
.RS 4
دستور به کلاینت
\fBfwknop\fR
برای تشکیل یک بسته SPA که شامل نشانی IP حالت خاص \(lq+0\&.0\&.0\&.0+\(rq است که به سرور SPA مقصد
\fBfwknopd\fR
اطلاع میدهد از نشانی IP مبدأ که بسته SPA از آن سرچشمه میگیرد به عنوان IP مجاز پس از تغییر مجموعه قوانین دیوار آتش استفاده کند\&. این گزینه در صورتی مفید است که کلاینت
\fBfwknop\fR
روی ماشینی پشت یک دستگاه NAT مستقر باشد و IP خارجی مشخص نباشد\&. با این حال، استفاده از این گزینه توصیه نمیشود و در عوض باید از گزینههای
\fB\-a\fR
یا
\fB\-R\fR
استفاده کرد\&. گزینههای نشانی مجاز
\fB\-s\fR،
\fB\-R\fR
و
\fB\-a\fR
مانعةالجمع (mutually exclusive) هستند\&.
.RE
.PP
\fB\-S, \-\-source\-port\fR=\fI\fR
.RS 4
تنظیم پورت مبدأ برای بسته خروجی SPA\&.
.RE
.PP
\fB\-\-server\-resolve\-ipv4\fR
.RS 4
این گزینه کلاینت
\fBfwknop\fR
را وادار میکند هنگامی که از نام میزبان برای سرور SPA استفاده میشود، تنها یک نشانی IPv4 را از DNS بپذیرد\&. این امر در برخی موارد که DNS ممکن است هر دو نشانی IPv6 و IPv4 را برگرداند ضروری است\&.
.RE
.PP
\fB\-f, \-\-fw\-timeout\fR=\fI\fR
.RS 4
تعیین مدت زمانی (به ثانیه) که قانون دیوار آتش راه دور که دسترسی به یک سرویس را اعطا میکند باید فعال بماند\&. مقدار پیشفرض نگهداریشده توسط
\fBfwknopd\fR
برابر ۳۰ ثانیه است، اما هر اتصال برقرارشده میتواند پس از حذف قانون اولیه پذیرش، از طریق سازوکار ردیابی اتصال (connection tracking) که ممکن است توسط دیوار آتش ارائه شود، باز بماند\&.
.RE
.PP
\fB\-C, \-\-server\-cmd\fR=\fI\fR
.RS 4
به جای درخواست دسترسی به یک سرویس با بسته SPA، آرگومان
\fB\-\-server\-cmd\fR
دستوری را مشخص میکند که توسط سرور
\fBfwknopd\fR
اجرا خواهد شد\&. این دستور درون بسته SPA رمزگذاری شده و طبق معمول توسط سرور
\fBfwknopd\fR
از روی شبکه شنود میشود\&.
.RE
.PP
\fB\-H, \-\-http\-proxy\fR=\fI[:port]\fR
.RS 4
تعیین یک پراکسی HTTP که کلاینت
\fBfwknop\fR
بسته SPA را از طریق آن ارسال خواهد کرد\&. استفاده از این گزینه بهطور خودکار حالت انتقال بسته SPA (که معمولاً از طریق آرگومان
\fB\-\-server\-proto\fR
تنظیم میشود) را روی "http" قرار میدهد\&. همچنین میتوانید با افزودن ":" به نام یا IP میزبان پراکسی، پورت پراکسی را تعیین کنید\&.
.RE
.PP
\fB\-m, \-\-digest\-type\fR=\fI\fR
.RS 4
تعیین الگوریتم خلاصه پیام برای استفاده در دادههای SPA\&. انتخابها عبارتند از:
\fBMD5\fR،
\fBSHA1\fR،
\fBSHA256\fR
(پیشفرض)،
\fBSHA384\fR،
\fBSHA512\fR،
\fBSHA3_256\fR و
\fBSHA3_512\fR\&.
.RE
.PP
\fB\-M, \-\-encryption\-mode\fR=\fI\fR
.RS 4
تعیین حالت رمزگذاری هنگامی که AES برای رمزگذاری بستههای SPA استفاده میشود\&. پیشفرض حالت CBC است، اما حالتهای دیگری نظیر CFB یا OFB نیز قابل انتخاب هستند به شرطی که در سمت سرور نیز در فایل
\fI/etc/fwknop/access\&.conf\fR
از طریق متغیر ENCRYPTION_MODE تعیین شده باشند\&. بهطور کلی، توصیه میشود این آرگومان را درج نکرده و بگذارید حالت پیشفرض (CBC) اعمال شود\&. توجه داشته باشید که میتوان رشته \(lqlegacy\(rq را تعیین کرد تا بستههای SPA با راهبرد بردار مقداردهی اولیه قدیمی که در نسخههای
\fBfwknop\fR
پیش از 2\&.5 استفاده میشد تولید شوند\&. با انتشار نسخه 2\&.5،
\fBfwknop\fR
بردارهای مقداردهی اولیه را به شیوهای سازگار با OpenSSL از طریق الگوریتم PBKDF1 تولید میکند\&.
.RE
.PP
\fB\-\-time\-offset\-plus\fR=\fI