.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "INN-SECRETS.CONF 5" .TH INN-SECRETS.CONF 5 2023-03-07 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" inn\-secrets.conf \- داده‌های پیکربندی برای رازهای InterNetNews .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" فایل \&\fIinn\-secrets.conf\fR در \fIpathetc\fR یک فایل پیکربندی حاوی رازهای عمومی مورد استفاده توسط INN است. این فایل در INN\ 2.7.0 برای پیاده‌سازی Cancel-Lock اضافه شد. هدف این است که رازهای جدید مورد استفاده توسط INN به این فایل افزوده شوند و تمام رازهایی که در حال حاضر در چندین فایل پیکربندی دیگر ذخیره شده‌اند، در نهایت به این فایل منتقل گردند. .PP وجود فایل \fIinn\-secrets.conf\fR الزامی نیست. این فایل در حال حاضر تنها برای هدف Cancel-Lock کاربرد دارد. اگر وجود نداشته باشد یا خالی باشد، سامانه احراز اصالت Cancel-Lock برای ارسال‌های محلی غیرفعال خواهد شد. .PP این فایل قرار است عمدتاً ایستا باشد. هرگونه تغییری که در آن اعمال شود عموماً تا زمان راه‌اندازی مجدد برنامه‌های در حال اجرا، بر آن‌ها اثر نخواهد گذاشت. .PP تغییرات در رازهای Cancel-Lock زمانی اعمال خواهند شد که فرآیندهای جدید \fBnnrpd\fR ایجاد شوند (که با هر بار برقراری اتصال جدید توسط یک خواننده رخ می‌دهد). .PP خطوط خالی و خطوطی که با علامت هش (\f(CW\*(C`#\*(C'\fR) آغاز می‌شوند نادیده گرفته می‌شوند. تمام خطوط دیگر پارامترها را مشخص می‌کنند و در گروه‌ها سازمان‌دهی می‌شوند. ساختار کلی به شکل زیر است: .PP .Vb 3 \& { \& : \& } .Ve .PP (قرار دادن هر مقدار فاصله خالی پس از دو‌نقطه اختیاری و مجاز است.) اگر مقدار شامل فاصله‌های خالی یا هر یک از نویسه‌های \f(CW\*(C`[]<>{}"\e:;\*(C'\fR باشد، باید درون علامت نقل‌قول دوتایی ("") محصور شود. برای اسکیپ کردن نقل‌قول‌ها و بک‌اسلش‌ها درون علامت نقل‌قول دوتایی می‌توان از یک بک‌اسلش (\f(CW\*(C`\e\*(C'\fR) استفاده کرد. مقادیر و حساس به حروف کوچک و بزرگ هستند؛ عبارت \f(CW\*(C`cancels\*(C'\fR با \f(CW\*(C`Cancels\*(C'\fR یا \f(CW\*(C`CANCELS\*(C'\fR یکسان نیست. (گروه‌ها و پارامترهای \fIinn\-secrets.conf\fR عموماً همگی با حروف کوچک نوشته می‌شوند.) .PP دو پارامتری که در حال حاضر در این فایل تعریف شده‌اند، مقداری از نوع فهرستی از رشته‌ها دارند؛ یعنی عناصر جداشده با فاصله که درون براکت‌های کروشه محصور شده‌اند. مثال‌ها در ادامه مستندات آورده شده‌اند. .SH "پارامترها (PARAMETERS)" .IX Header "PARAMETERS" .SS "رازهای Cancel-Lock (Cancel-Lock secrets)" .IX Subsection "Cancel-Lock secrets" این رازها برای سامانه احراز اصالت Cancel-Lock که در RFC\ 8315 شرح داده شده است استفاده می‌شوند. این سازوکار امکان تأیید معتبر بودن پس‌گیری یا لغو یک مقاله را فراهم می‌کند؛ به این معنا که ارسال‌کننده، عامل ارسال، ناظر یا عامل تزریقی که مقاله اصلی را پردازش کرده است، از طریق استفاده از یک مقاله کنترلی لغو (cancel control article) یا فیلد سرآیند Supersedes درخواست پس‌گیری آن را داده باشد. .PP برای تعبیه پشتیبانی از Cancel-Lock، باید INN را با نسخه 3.3.0 یا جدیدتر کتابخانه libcanlock کامپایل کنید. این کتابخانه در نشانی در دسترس است. اگر اسکریپت \f(CW\*(C`configure\*(C'\fR کتابخانه libcanlock را پیدا کند، پشتیبانی از Cancel-Lock را به‌طور خودکار فعال خواهد کرد؛ ممکن است لازم باشد گزینه \fB\-\-with\-canlock\fR را مشخص کنید تا به \f(CW\*(C`configure\*(C'\fR در پیدا کردن آن کمک نماید. .PP گروه \f(CW\*(C`cancels\*(C'\fR به شکل زیر تعریف می‌شود (شما طبیعتاً باید از گذرواژه‌هایی به غیر از موارد زیر استفاده کنید): .PP .Vb 4 \& cancels { \& canlockadmin: [ "9kc3ZtAACpNZRGtmYiPlbfkDacqNwPbcEfzFodc5X48g" ] \& canlockuser: [ "TSrg41qEbp6AyZuQoIIHo6sUzFkBLOocJYN3KsUVdgft" ] \& } .Ve .PP اگر یکی از پارامترهای \fIcanlockadmin\fR یا \fIcanlockuser\fR یک فهرست خالی نباشد، \fBnnrpd\fR اطلاعاتی را به هر مقاله ارسال‌شده اضافه می‌کند که به سایر سرورهای خبری امکان می‌دهد تا بعداً مطمئن شوند تلاش برای لغو یا جایگزینی مقاله جعلی نبوده و واقعاً از فرستنده اصلی احراز اصالت‌شده یا مدیر سرور محلی سرچشمه می‌گیرد. .PP اگر کاربران شما به صورت فردی احراز اصالت نشده‌اند یا با یک IP ایستا و منحصربه‌فرد قابل شناسایی نیستند، نباید \fIcanlockuser\fR را تنظیم کنید؛ زیرا در غیر این صورت هر فردی قادر خواهد بود مقالات هر شخص دیگری با همان هویت انتساب‌یافته را لغو کند. اگر همه یا تنها برخی از کاربران شما به صورت فردی احراز اصالت شده یا قابل شناسایی هستند، می‌توانید \fIcanlockuser\fR را تنظیم کرده و اطمینان حاصل کنید که مقدار \&\fIaddcanlockuser\fR در تمام گروه‌های دسترسی در \fIreaders.conf\fR که بین چندین فرد مختلف با هویت یکسان به اشتراک گذاشته شده‌اند، روی \f(CW\*(C`none\*(C'\fR تنظیم شده باشد. .PP به طور مشخص‌تر، برای هر راز در \fIcanlockadmin\fR، برنامه \fBnnrpd\fR دو هش کدگذاری‌شده با Base64 را به یک فیلد سرآیند Cancel-Lock اضافه می‌کند. این هش‌ها بر اساس راز و Message-ID مقاله ساخته می‌شوند. اگر این فیلد از قبل وجود داشته باشد، هش‌های کدگذاری‌شده با Base64 را به انتهای آن الحاق می‌کند. یک هش از الگوریتم SHA\-1 استفاده می‌کند (به دلایل سازگاری، زیرا همه نرم‌افزارهای خبری SHA\-256 را پیاده‌سازی نکرده‌اند) و هش دیگر طبق RFC\ 8315 از الگوریتم الزامی SHA\-256 بهره می‌برد. علاوه بر این، \fBnnrpd\fR به طور مشابه دو هش کدگذاری‌شده با Base64 برای هر راز در \fIcanlockuser\fR اضافه خواهد کرد؛ این هش‌ها بر اساس راز، هویت اختصاص‌یافته در \fIreaders.conf\fR به اتصال یا IP ایستای آن (بسته به تنظیم \fIaddcanlockuser\fR) و Message-ID مقاله هستند. .PP هنگامی که یک مقاله لغو یا جایگزینی توسط یک کاربر احراز اصالت‌شده ارسال می‌شود، \&\fBnnrpd\fR برای هر راز در \fIcanlockuser\fR دو پیش‌تصویر (pre-image) به فیلد سرآیند Cancel-Key اضافه می‌کند. (به همین دلیل است که اگر \fIcanlockuser\fR را تنظیم کرده‌اید، اهمیت دارد که مقدار \fIaddcanlockuser\fR را در تمام گروه‌های دسترسی در \fIreaders.conf\fR که متناظر با اشخاص منفرد نیستند روی \f(CW\*(C`none\*(C'\fR قرار دهید.) سایر سرورهای خبری سپس می‌توانند یکی از این پیش‌تصویرها را با الگوریتم‌های SHA\-1 یا SHA\-256 هش کنند (یکی کافی است) و تأیید کنند که هش کدگذاری‌شده با Base64 حاصل، با هش موجود در فیلد سرآیند Cancel-Lock مقاله اصلی یکسان است. (الزاماً، همان کاربر احراز اصالت‌شده در همان سرور محلی مقاله اصلی را ارسال کرده است.) هنگام دریافت مقالات دارای فیلد سرآیند Cancel-Key (به صورت محلی یا از سایر همتایان)، \fBinnd\fR آن بررسی را برای اعتبارسنجی اصالت لغو پیش از تصمیم‌گیری درباره اعمال آن انجام می‌دهد. .PP طبیعتاً هیچ پیش‌تصویری برای رازهای موجود در \fIcanlockadmin\fR توسط \&\fBnnrpd\fR اضافه نمی‌شود. از آنجا که این پیش‌تصویرها بر اساس نام کاربری نیستند، تنها مدیر سرور خبر می‌تواند آن‌ها را (با ابزار \fBgencancel\fR که همراه با INN عرضه می‌شود) تولید کند و سپس درخواست لغو یا جایگزینی را مثلاً با \fBinews\fR تزریق نماید. بنابراین مدیر سرور خبر قادر است درخواست‌های لغو احراز اصالت‌شده را برای مقالات ارسال‌شده توسط تمامی کاربران سرور خبری خود، چه احراز اصالت شده باشند و چه نشده باشند، ارسال کند. .PP پس از این مقدمه (کوتاه) برای توضیح کاربرد Cancel-Lock، دو پارامتر مربوطه در ادامه آمده است: .IP \fIcanlockadmin\fR 4 .IX Item "canlockadmin" این پارامتر فهرستی از رشته‌ها را می‌پذیرد. به طور پیش‌فرض تنظیم نشده است (هیچ هش مدیریتی تولید نخواهد شد). .Sp اگر این پارامتر یک فهرست خالی نباشد، هر یک از رازهای ارائه‌شده برای تولید هش‌های مدیریتی به کار خواهند رفت. .Sp برای به حداکثر رساندن امنیت، طول رازها باید حداقل به اندازه اندازه خروجی تابع هش مورد استفاده باشد (۳۲ بایت برای SHA\-256). برای نمونه، می‌توانید با دستور زیر یک راز قوی بر پایه ۳۳ بایت تصادفی تولید کنید (به طوری که نویسه آخر به طور سیستماتیک \f(CW\*(C`=\*(C'\fR نباشد، همان‌طور که در کدگذاری Base64 برای ۳۲ بایت تصادفی رخ می‌دهد): .Sp .Vb 2 \& % openssl rand \-base64 33 \& nfwx6FS+U/dXXXqTOTp1Z5J9glV9UpjyhUcVcsDqXSC8 .Ve .Sp و آن را به صورت زیر استفاده کنید: .Sp .Vb 1 \& canlockadmin: [ "nfwx6FS+U/dXXXqTOTp1Z5J9glV9UpjyhUcVcsDqXSC8" ] .Ve .Sp هدف از ارائه چندین راز، مواردی است که می‌خواهید رازها را دوره‌ای تغییر دهید (چرخش کلیدها). برای مثال، اگر خط‌مشی شما تغییر سالانه رازها است، می‌توانید در طول یک دوره گذار از دو راز استفاده کنید: .Sp .Vb 2 \& canlockadmin: [ "rH5L8geEzkNVvpAZQMJJcd4AYkpSkkx5S/4qewPDA/U=" \& "nfwx6FS+U/dXXXqTOTp1Z5J9glV9UpjyhUcVcsDqXSC8" ] .Ve .Sp لغو مقالاتی که پیش‌تر ارسال شده‌اند همچنان با راز قدیمی کار خواهد کرد (که کماکان به فیلد سرآیند Cancel-Key اضافه می‌شود). .Sp از آنجا که تمام مقالات ارسال‌شده دارای فیلد سرآیند Cancel-Lock با راز مدیریتی خواهند بود، باید \fIcanlockuser\fR را نیز تنظیم کنید (و ارسال‌کنندگان را به صورت فردی احراز اصالت نمایید)؛ چرا که در غیر این صورت ممکن است ارسال‌کنندگان نتوانند مقالات خود را لغو کنند (مگر اینکه عوامل ارسال آن‌ها، خود فیلدهای سرآیند Cancel-Lock را با رازهای خودشان تولید کنند). .IP \fIcanlockuser\fR 4 .IX Item "canlockuser" این پارامتر فهرستی از رشته‌ها را می‌پذیرد. به طور پیش‌فرض تنظیم نشده است (هیچ هش مختص به کاربری تولید نخواهد شد). .Sp همان توصیه داشتن بیش از ۳۲ بایت تصادفی در اینجا نیز صدق می‌کند و این رازها نباید با \fIcanlockadmin\fR یکسان باشند. .Sp اگر این پارامتر یک فهرست خالی نباشد، هر یک از رازهای ارائه‌شده برای تولید هش‌ها بر پایه هویت اختصاص‌یافته به کاربران توسط \fIreaders.conf\fR یا IP ایستای آن‌ها (بسته به تنظیم \fIaddcanlockuser\fR) به کار گرفته خواهند شد. توجه داشته باشید که اگر کاربران شما به صورت فردی احراز اصالت نشده باشند، نباید \fIcanlockuser\fR را تنظیم کنید؛ زیرا در غیر این صورت هر فردی می‌تواند مقالات هر شخص دیگری با همان هویت یکسان را لغو کند. در صورت نیاز، می‌توانید تولید هش‌های مختص به کاربر را در گروه‌های دسترسی مشترک بین چندین شخص مختلف با هویت یکسان در \fIreaders.conf\fR، با تنظیم \fIaddcanlockuser\fR روی \f(CW\*(C`none\*(C'\fR در آن گروه‌های دسترسی غیرفعال کنید (این مورد برای مثال ممکن است برای اتصالات localhost صادق باشد، اگر برخی مقالات با \fBinews\fR از یک منبع خارجی تزریق شوند). .Sp هنگام استفاده از \fIcanlockuser\fR، باید \fIcanlockadmin\fR را نیز تنظیم کنید؛ زیرا در غیر این صورت ممکن است همیشه قادر به تولید هش لازم برای لغو مقاله‌ای که توسط کاربران سرور خبری شما ارسال شده است نباشید (به‌ویژه اگر نتوانید هویتی را که کاربر هنگام ارسال مقاله اصلی داشته است بیابید). .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" مستندات توسط Julien Elie برای InterNetNews نوشته شده است. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" gencancel(1), nnrpd(8), readers.conf(5).