.TH JAIL.CONF "5" "November 2015" "Fail2Ban" "پیکربندی Fail2Ban" .SH "نام (NAME)" jail.conf \- پیکربندی سرویس‌دهنده fail2ban .SH "خلاصه دستور (SYNOPSIS)" .I fail2ban.conf fail2ban.d/*.conf fail2ban.local fail2ban.d/*.local .I jail.conf jail.d/*.conf jail.local jail.d/*.local .I action.d/*.conf action.d/*.local action.d/*.py .I filter.d/*.conf filter.d/*.local .SH "توضیحات (DESCRIPTION)" برنامه Fail2ban دارای چهار نوع فایل پیکربندی است: .TP \fIfail2ban.conf\fR پیکربندی سراسری Fail2Ban (مانند ثبت لاگ‌ها و وقایع) .TP \fIfilter.d/*.conf\fR فیلترهایی که نحوه تشخیص شکست‌های احراز هویت را مشخص می‌کنند .TP \fIaction.d/*.conf\fR اقداماتی که دستورات لازم برای مسدودسازی (ban) و رفع مسدودیت (unban) نشانی IP را تعریف می‌کنند .TP \fIjail.conf\fR زندان‌هایی (Jails) که ترکیب فیلترها را با اقدامات تعریف می‌کنند. .SH "قالب فایل‌های پیکربندی (CONFIGURATION FILES FORMAT)" فایل‌های \fI*.conf\fR توسط Fail2Ban توزیع می‌شوند. توصیه می‌شود فایل‌های *.conf بدون تغییر باقی بمانند تا ارتقای برنامه در آینده آسان‌تر شود. در صورت نیاز، سفارشی‌سازی‌ها باید در فایل‌های \fI*.local\fR ارائه شوند. به عنوان مثال، اگر می‌خواهید زندان [ssh-iptables-ipset] مشخص‌شده در jail.conf را فعال کنید، فایل jail.local را با محتوای زیر ایجاد نمایید: .TP \fIjail.local\fR [ssh-iptables-ipset] enabled = true .PP در فایل‌های .local فقط تنظیماتی را مشخص کنید که مایل به تغییر آن‌ها هستید؛ باقی پیکربندی از فایل .conf متناظر که ابتدا تجزیه (parse) می‌شود فراخوانی خواهد شد. .TP \fIjail.d/\fR و \fIfail2ban.d/\fR علاوه بر .local، برای فایل‌های jail.conf یا fail2ban.conf می‌تواند یک دایرکتوری متناظر \fI.d/\fR حاوی فایل‌های .conf تکمیلی وجود داشته باشد. برای مثال، ترتیب اولویت برای پیکربندی \fIjail\fR به این صورت خواهد بود: .RS jail.conf .RE .RS jail.d/*.conf (به ترتیب الفبا) .RE .RS jail.local .RE .RS jail.d/*.local (به ترتیب الفبا). به این معنی که تمامی فایل‌های .local پس از فایل‌های .conf در فایل پیکربندی اصلی و فایل‌های درون دایرکتوری .d تجزیه می‌شوند. تنظیمات موجود در فایلی که دیرتر تجزیه شود بر ورودی‌های یکسان در فایل‌هایی که قبلاً تجزیه شده‌اند اولویت دارد. فایل‌ها به ترتیب حروف الفبا مرتب می‌شوند، به عنوان مثال: \fIfail2ban.d/01_custom_log.conf\fR - جهت استفاده از یک مسیر لاگ متفاوت .RE .RS \fIjail.d/01_enable.conf\fR - جهت فعال‌سازی یک زندان خاص .RE .RS \fIjail.d/02_custom_port.conf\fR - جهت تغییر پورت(های) یک زندان. .RE .RE .RE فایل‌های پیکربندی دارای بخش‌هایی هستند که با [نام بخش] مشخص می‌شوند، و همچنین شامل جفت‌های «نام = مقدار» می‌باشند. برای مواردی که چند مقدار را می‌پذیرند، مقادیر را با فاصله، یا در خطوط جداگانه با فاصله‌گذاری (indent) در ابتدای خط پیش از مقدار دوم مشخص کنید. .PP فایل‌های پیکربندی می‌توانند فایل‌های پیکربندی دیگر (تعریف‌کننده متغیرهای مشترک) را فراخوانی کنند، که این موضوع اغلب در فیلترها و اقدامات استفاده می‌شود. چنین مواردی در بخشی به نام [INCLUDES] تعریف می‌شوند: .TP .B before نشان می‌دهد که فایل مشخص‌شده باید پیش از فایل جاری تجزیه شود. .TP .B after نشان می‌دهد که فایل مشخص‌شده باید پس از فایل جاری تجزیه شود. .RE با استفاده از سازوکارهای «درون‌یابی رشته‌ای» (string interpolation) پایتون، تعاریف دیگر نیز مجاز هستند و می‌توانند بعداً درون تعاریف دیگر به صورت %(name)s استفاده شوند. برنامه Fail2ban دارای ساختار نحوی پیشرفته‌تری است (مشابه درون‌یابی بسط‌یافته در پایتون). این درون‌یابی بسط‌یافته از \fB%(section/parameter)s\fR برای اشاره به مقداری از یک بخش دیگر استفاده می‌کند. .br علاوه بر درون‌یابی میان بخش‌ها، مقدار پارامتر در بخش \fI[DEFAULT]\fR را می‌توان با \fB%(default/parameter)s\fR فراخوانی کرد. .br همچنین Fail2ban از قابلیت دیگری به نام \fB%(known/parameter)s\fR پشتیبانی می‌کند (به معنای آخرین گزینه شناخته‌شده با نام \fBparameter\fR). این درون‌یابی امکان بسط دادن یک فیلتر پیش‌فرض یا عبارت باقاعده (regexp) زندان را در فایل .local فراهم می‌سازد (در مقایسه با تنظیم ساده failregex/ignoreregex که آن را رونویسی و جایگزین می‌کند)، به عنوان مثال: .RS .nf baduseragents = IE|wget|%(my-settings/baduseragents)s failregex = %(known/failregex)s useragent=%(baduseragents)s .fi .RE علاوه بر درون‌یابی \fB%(known/parameter)s\fR که برای پارامترهای مقداردهی اولیه (init) فیلتر/اقدام کار نمی‌کند، می‌توان از برچسب درون‌یابی \fB\fR استفاده کرد (به معنای آخرین تعریف اولیه‌سازی شناخته‌شده فیلترها یا اقدامات با نام \fBparameter\fR). این درون‌یابی امکان بسط دادن پارامترهای یک فیلتر یا اقدام پیش‌فرض را مستقیماً درون فایل \fIjail.conf/jail.local\fR در خود زندان بدون نیاز به ایجاد یک فایل جداگانه filter.d/*.local فراهم می‌کند، به عنوان مثال: .RS # filter.d/test.conf: .nf [Init] test.method = GET baduseragents = IE|wget [Definition] failregex = ^%(__prefix_line)\s+""\s+test\s+regexp\s+-\s+useragent=(?:) # jail.local: [test] # use filter "test", overwrite method to "POST" and extend known bad agents with "badagent": filter = test[test.method=POST, baduseragents="badagent|"] .fi .RE توضیحات (کامنت‌ها): از '#' برای خطوط توضیح و از '; ' (وجود فاصله مهم است) برای توضیحات درون‌خطی استفاده کنید. .SH "فایل‌های پیکربندی FAIL2BAN (\fIfail2ban.conf\fB) (FAIL2BAN CONFIGURATION FILES)" مواردی که می‌توان در بخش [Definition] تنظیم کرد عبارتند از: .TP .B loglevel سطح جزئیات خروجی لاگ: CRITICAL، ERROR، WARNING، NOTICE، INFO، DEBUG، TRACEDEBUG، HEAVYDEBUG یا مقدار عددی متناظر (50-5). پیش‌فرض: INFO (معادل 20) .TP .B logtarget مقصد لاگ: نام فایل، SYSLOG، STDERR یا STDOUT. پیش‌فرض: در صورت عدم تنظیم در fail2ban.conf/fail2ban.local برابر STDOUT است. .br نکته: اگر fail2ban به عنوان سرویس systemd اجرا می‌شود، برای ثبت لاگ در ژورنال systemd می‌توان logtarget را روی STDOUT تنظیم کرد. .br تنها یک مقصد لاگ را می‌توان مشخص کرد. اگر logtarget را از مقدار پیش‌فرض تغییر دهید و از logrotate استفاده می‌کنید، چرخش لاگ را در فایل پیکربندی متناظر نیز تنظیم یا غیرفعال کنید (مانند /etc/logrotate.d/fail2ban در سیستم‌های دبیان). .TP .B socket نام فایل سوکت. پیش‌فرض: /var/run/fail2ban/fail2ban.sock .br این فایل برای برقراری ارتباط با دیمن سرور fail2ban استفاده می‌شود. هنگام اجرای Fail2ban این فایل را حذف نکنید؛ چرا که پس از آن برقراری ارتباط با سرور ممکن نخواهد بود. .TP .B pidfile نام فایل PID. پیش‌فرض: /var/run/fail2ban/fail2ban.pid .br این فایل برای ذخیره شناسه فرایند (PID) سرور fail2ban استفاده می‌شود. .TP .B allowipv6 گزینه‌ای برای مجاز شمردن رابط IPv6 \- به صورت auto، yes (یا on، true، 1) یا no (یا off، false، 0). پیش‌فرض: auto .br این مقدار می‌تواند برای اعلام به fail2ban درباره مجاز بودن یا نبودن IPv6 استفاده شود. .TP .B dbfile نام فایل پایگاه‌داده. پیش‌فرض: /var/lib/fail2ban/fail2ban.sqlite3 .br این گزینه محل ذخیره داده‌های ماندگار fail2ban را مشخص می‌کند. این داده‌های ماندگار به مسدودسازی‌ها امکان بازگردانی و ادامه خواندن فایل‌های لاگ از آخرین موقعیت خوانده‌شده را پس از راه‌اندازی مجدد fail2ban می‌دهد. مقدار \fINone\fR این قابلیت را غیرفعال می‌کند. .TP .B dbmaxmatches حداکثر تعداد تطابق‌های ذخیره‌شده در پایگاه‌داده به ازای هر بلیت. پیش‌فرض: 10 .br این گزینه حداکثر تعداد خطوط لاگ منطبق را که می‌توانند به ازای هر بلیت در پایگاه‌داده ذخیره شوند تنظیم می‌کند. این امر همچنین بر مقادیر قابل حل از طریق برچسب‌های \fB\fR و \fB\fR در اقدامات تأثیر می‌گذارد. .TP .B dbpurgeage مدت زمان پاک‌سازی پایگاه‌داده بر حسب ثانیه. پیش‌فرض: 86400 (۲۴ ساعت) .br این گزینه سنی را تعیین می‌کند که پس از آن مسدودسازی‌ها باید از پایگاه‌داده پاک شوند. .RE پارامترهای پیکربندی بخش [Thread] عبارتند از: .TP .B stacksize اندازه پشته هر ریسه در fail2ban. پیش‌فرض: 0 (پیش‌فرض پلتفرم یا پیکربندی‌شده) .br این گزینه اندازه پشته (بر حسب KiB) را برای ریسه‌هایی که بعداً ایجاد می‌شوند مشخص می‌کند، و باید 0 یا یک مقدار صحیح مثبت حداقل برابر با 32 باشد. .SH "فایل‌های پیکربندی زندان (\fIjail.conf\fB) (JAIL CONFIGURATION FILES)" گزینه‌های زیر برای هر زندانی قابل اعمال هستند. این گزینه‌ها در بخشی که نام زندان را مشخص می‌کند یا در بخش \fI[DEFAULT]\fR که مقادیر پیش‌فرض مورد استفاده در صورت عدم تعیین در بخش مجزا را مشخص می‌سازد، ظاهر می‌شوند. .sp همچنین می‌توان هر گزینه‌ای از فایل فیلتر را مستقیماً درون زندان مشخص کرد یا بازنویسی نمود (بخش FILTER FILES را ببینید). .TP .B filter نام فیلتر \-- نام فایل فیلتر در /etc/fail2ban/filter.d/ بدون پسوند .conf/.local. .br تنها یک فیلتر را می‌توان مشخص کرد. .TP .B logpath نام فایل(های) لاگ مورد نظارت، جداشده با خط جدید. .br الگوهای گلوب \-- مسیرهای حاوی * و ؟ یا [0-9] \-- می‌توانند استفاده شوند؛ با این حال تنها فایل‌هایی که هنگام شروع به کار برنامه با این الگوی گلوب تطابق دارند در نظر گرفته می‌شوند. گزینه اختیاری 'tail' جداشده با فاصله را می‌توان به انتهای مسیر اضافه کرد تا فایل لاگ از انتها خوانده شود؛ در غیر این صورت گزینه پیش‌فرض 'head' فایل را از ابتدا می‌خواند. اطمینان حاصل کنید که syslog یا برنامه‌ای که فایل لاگ را تولید می‌کند طوری پیکربندی نشده باشد که پیام‌های تکراری لاگ را به "\fI*last message repeated 5 times*\fR" فشرده سازد؛ در غیر این صورت تشخیص خطا با شکست مواجه می‌شود. این ویژگی در rsyslog با نام \fIRepeatedMsgReduction\fR شناخته می‌شود و باید برابر \fIOff\fR باشد. .TP .B skip_if_nologs اگر هیچ فایلی منطبق با logpath یافت نشود، در صورتی که \fIskip_if_nologs\fR روی true تنظیم شده باشد، زندان هنگام شروع fail2ban نادیده گرفته می‌شود؛ در غیر این صورت (پیش‌فرض: false) شروع fail2ban با خطای "Have not found any log file" مواجه خواهد شد، مگر اینکه موتور روی \fIauto\fR تنظیم شده باشد و زندان بتواند موتور را به \fIsystemd\fR تغییر دهد (بخش \fIauto\fR در قسمت \fBBackends\fR را در زیر ببینید). .TP .B systemd_if_nologs اگر هیچ فایلی منطبق با logpath یافت نشود، موتور \fIauto\fR را به \fIsystemd\fR تغییر می‌دهد (بخش \fBBackends\fR را ببینید)، مگر اینکه با \fBsystemd_if_nologs = false\fR غیرفعال شده باشد (پیش‌فرض \fBtrue\fR). .TP .B logencoding کدگذاری فایل‌های لاگ مورد استفاده برای رمزگشایی. مقدار پیش‌فرض "auto" از لوکال فعلی سیستم استفاده می‌کند. .TP .B logtimezone اجبار کردن منطقه زمانی برای خطوط لاگی که فاقد آن هستند. اگر این گزینه مشخص نشود، خطوط لاگی که منطقه زمانی صریحی در آن‌ها یافت نشده است توسط fail2ban بر اساس منطقه زمانی سیستم خودش تفسیر می‌شوند، که ممکن است نامناسب باشد. در حالی که بهترین روش این است که برنامه‌های تحت نظارت را برای درج اختلاف زمانی صریح پیکربندی کنید، این گزینه برای رسیدگی به مواردی در نظر گرفته شده که این کار امکان‌پذیر نیست. مناطق زمانی پشتیبانی‌شده در این گزینه مواردی با آفست ثابت هستند: Z، UTC[+-]hhmm (همچنین می‌توانید از GMT به عنوان نام مستعار UTC استفاده کنید). این گزینه بر روی خطوط لاگی که منطقه زمانی صریح دارند هیچ تأثیری ندارد. مثال‌ها: .RS .nf logtimezone = UTC logtimezone = UTC+0200 logtimezone = GMT-0100 .fi .RE .TP .B banaction اقدام مسدودسازی (پیش‌فرض iptables-multiport) که معمولاً در بخش \fI[DEFAULT]\fR برای تمام زندان‌ها مشخص می‌شود. .br این پارامتر توسط جایگزینی استاندارد \fIaction\fR استفاده خواهد شد و می‌تواند به طور متمرکز در بخش \fI[DEFAULT]\fR درون \fIjail.local\fR (جهت اعمال به تمام زندان‌ها به طور همزمان) یا به طور جداگانه در هر زندان که این جایگزینی در آن به کار می‌رود مجدداً تعریف شود. .TP .B banaction_allports مشابه \fIbanaction\fR، اما برای برخی زندان‌های "allports" مانند "pam-generic" یا "recidive" (پیش‌فرض iptables-allports). .TP .B action اقدام(های) موجود در \fI/etc/fail2ban/action.d/\fR بدون پسوند \fI.conf\fR/\fI.local\fR. .br می‌توان آرگومان‌هایی را به اقدامات ارسال کرد تا مقادیر پیش‌فرض بخش [Init] در فایل اقدام را بازنویسی کنند. آرگومان‌ها با ساختار زیر مشخص می‌شوند: .RS .RS [name=value,name2=value,name3="values,values"] .RE مقادیر می‌توانند داخل علامت نقل قول نیز قرار گیرند (هنگامی که مقدار شامل "," یا فاصله باشد الزامی است). بیش از یک اقدام را می‌توان (در خطوط جداگانه) مشخص کرد. .br آرگومان‌های ویژه اقدام می‌توانند بر پارامترهای شرطی نیز تأثیر بگذارند؛ بنابراین برای مثال جهت ارسال مقادیر مختلف به زنجیره‌های مختلف، ابتدا آرگومان مؤثر بر همه زنجیره‌ها را ارسال کنید، مانند \fIblocktype\fR، سپس مقدار مربوط به زنجیره IPv6 را ارسال نمایید، مانند \fIblocktype?family=inet6\fR. مثال‌ها: .RS .nf # ارسال blocktype به صورت DROP برای تمام زنجیره‌ها: banaction_allports = iptables-ipset[type=allports, blocktype=DROP] # ارسال blocktype متفاوت برای زنجیره‌های IPv4 و IPv6: banaction = iptables-ipset[type=multiport, blocktype="REJECT --reject-with icmp-host-unreachable", blocktype?family=inet6="REJECT --reject-with icmp6-host-unreachable"] .fi .RE .RE .TP .B ignoreself مقدار بولی (پیش‌فرض true) نشان می‌دهد که باید از مسدودسازی نشانی‌های IP خود سیستم جلوگیری شود. .TP .B ignoreip فهرستی از IPها که نباید مسدود شوند. این فهرست می‌تواند شامل ماسک CIDR یا DNS (FQDN)، یا حتی رشته خام باشد (اگر زندان شناسه‌ها را به جای IPها مسدود کند). این گزینه علاوه بر \fBignoreself\fR (در صورت true بودن) تأثیر می‌گذارد و نیازی به درج DNS یا IPهای هاست میزبان جاری در آن نیست. این گزینه همچنین می‌تواند شامل یک نام فایل (با پیشوند "file:") حاوی ورودی‌های قابل نادیده‌گیری باشد، که به صورت تنبل (lazy) در زمان اجرا بر حسب تقاضا در اولین مسدودسازی بارگذاری شده و پس از وقفه‌ای کوتاه با تغییر فایل به طور خودکار بازخوانی می‌شود. .TP .B ignorecommand دستوری که اجرا می‌شود تا تعیین کند آیا نشانی IP نامزد فعلی برای مسدودسازی (یا شناسه خطا برای شناسه‌های خام) نباید مسدود شود یا خیر. این گزینه در کنار گزینه‌های \fBignoreself\fR و \fBignoreip\fR عمل می‌کند. این دستور تنها در صورتی که نه \fBignoreself\fR و نه \fBignoreip\fR با معیارها تطابق نداشته باشند، ابتدا اجرا می‌شود. .br اگر دستور با موفقیت به پایان برسد (کد خروج 0)، نشانی IP مسدود نخواهد شد. مانند ACTION FILES، برچسب‌هایی مانند می‌توانند در مقدار ignorecommand گنجانده شوند و قبل از اجرا جایگزین خواهند شد. .TP .B ignorecache پارامترهای کش را (پیش‌فرض غیرفعال) برای بررسی نادیده‌گیری خطا فراهم می‌کند (کش کردن نتیجه حاصل از \fBignoreip\fR، \fBignoreself\fR و \fBignorecommand\fR)، ساختار دستوری: .RS .nf ignorecache = key="@", max-count=100, max-time=5m ignorecommand = if [ "" = "technical" ] && [ "" = "my-host.example.com" ]; then exit 0; fi; exit 1 .fi این کار نتیجه \fBignorecommand\fR را (بدون فراخوانی مکرر آن) به مدت ۵ دقیقه (زمان کش) برای حداکثر ۱۰۰ ورودی (اندازه کش) با استفاده از مقادیر جایگزین‌شده مانند "user@host" به عنوان کلیدهای کش ذخیره می‌کند. تنظیم گزینه \fBignorecache\fR با مقدار خالی، کش را غیرفعال می‌سازد. .RE .TP .B bantime مدت زمان مؤثر مسدودسازی (بر حسب ثانیه یا در قالب اختصاری زمان). .TP .B findtime بازه زمانی (بر حسب ثانیه یا در قالب اختصاری زمان) پیش از زمان فعلی که خطاهای رخ‌داده در آن برای مسدودسازی شمرده می‌شوند. .TP .B maxretry تعداد خطاهایی که باید در آخرین \fBfindtime\fR ثانیه رخ دهند تا نشانی IP مسدود شود. .TP .B backend موتور (بک‌اند) مورد استفاده برای تشخیص تغییرات در logpath. .br پیش‌فرض آن "auto" است که ابتدا "pyinotify" و سپس "polling" را امتحان می‌کند و در صورت عدم یافتن فایلی منطبق با \fBlogpath\fR ممکن است به "systemd" سوئیچ کند (بخش \fBBackends\fR را در زیر ببینید). هر یک از این موارد را می‌توان مشخص کرد. گزینه "pyinotify" تنها روی سیستم‌های لینوکسی دارای کتابخانه‌های پایتون "pyinotify" معتبر است. .TP .B usedns استفاده از DNS برای ترجمه نام‌های میزبان (HOST) که در لاگ‌ها ظاهر می‌شوند. به طور پیش‌فرض روی "warn" تنظیم شده که نام‌های میزبان را به IP ترجمه می‌کند اما هشداری نیز ثبت می‌نماید. اگر در اینجا از DNS استفاده کنید ممکن است نشانی‌های IP نادرستی را به دلیل ماهیت نامتقارن DNS معکوس (که برنامه برای نوشتن نام دامنه در لاگ به کار برده) در مقایسه با DNS مستقیم که fail2ban برای ترجمه مجدد آن به IP استفاده می‌کند (اما لزوماً همان IP نیست) مسدود نمایید. در حالت ایده‌آل باید برنامه‌های خود را طوری پیکربندی کنید که IP واقعی را ثبت کنند. این مقدار می‌تواند برای جلوگیری از ثبت هشدار روی "yes" تنظیم شود یا روی "no" تا ترجمه DNS به طور کلی غیرفعال گردد (بنابراین ورودی‌هایی که در آن‌ها نام میزبان به جای IP ثبت شده نادیده گرفته می‌شوند). .TP .B prefregex عبارت باقاعده (Python \fBreg\fRular \fBex\fRpression) برای تجزیه بخش مشترکی که در هر پیام وجود دارد (برای جزئیات به \fBprefregex\fR در بخش FILTER FILES مراجعه کنید). .TP .B failregex عبارت باقاعده (Python \fBreg\fRular \fBex\fRpression) که باید به failregexهای فیلتر اضافه شود (برای جزئیات به \fBfailregex\fR در بخش FILTER FILES مراجعه کنید). اگر این عبارت برای دیگر کاربرانی که از برنامه شما استفاده می‌کنند مفید است، لطفاً عبارت باقاعده خود را با گزارش یک اشکال با توسعه‌دهندگان fail2ban به اشتراک بگذارید (بخش REPORTING BUGS را در زیر ببینید). .TP .B ignoreregex عبارت باقاعده‌ای که در صورت تطابق خط لاگ با آن، باعث می‌شود Fail2Ban آن خط را در نظر نگیرد. این خط حتی در صورت تطابق با failregex زندان یا هر یک از فیلترهای آن، نادیده گرفته خواهد شد. .TP .B maxmatches حداکثر تعداد خطوط لاگ منطبق که زندان برای هر بلیت در حافظه نگه می‌دارد. به طور پیش‌فرض همان مقدار \fBmaxretry\fR زندان (یا پیش‌فرض) است. این گزینه همچنین بر مقادیر قابل حل از طریق برچسب \fB\fR در اقدامات تأثیر می‌گذارد. .SS "موتورها (Backends)" گزینه‌های موجود در زیر فهرست شده‌اند. .TP .B auto به طور خودکار مناسب‌ترین \fBbackend\fR را انتخاب می‌کند، که از گزینه‌های مبتنی بر فایل مانند \fIpyinotify\fR یا \fIpolling\fR برای نظارت بر فایل‌های منطبق با \fBlogpath\fR شروع می‌شود، اما همچنین می‌تواند در صورت برقراری شرایط زیر به طور خودکار به موتور \fIsystemd\fR تغییر یابد: .RS .IP • 4n هیچ فایلی منطبق با \fBlogpath\fR برای این زندان یافت نشود؛ .IP • 4n گزینه \fBsystemd_if_nologs = false\fR برای این زندان مشخص نشده باشد؛ .IP • 4n گزینه \fBjournalmatch\fR برای زندان یا فیلتر آن تنظیم شده باشد (در غیر این صورت بار پردازشی مجاز کردن تمام زندان‌های خودکار، حتی مواردی که هرگز برای نظارت بر ژورنال پیش‌بینی نشده‌اند، بسیار سنگین خواهد بود)؛ .TP .br در صورتی که بتوانیم \fBbackend\fR را به \fIsystemd\fR تغییر دهیم، گزینه \fBskip_if_nologs\fR نادیده گرفته خواهد شد. .RE .TP .B pyinotify نیاز به نصب بودن pyinotify (نرم‌افزار نظارت بر تغییرات فایل) دارد. این موتور رویدادهای تغییر را از قابلیت توکار هسته لینوکس \fIinotify\fR که برای نظارت بر تغییرات فایل‌ها و دایرکتوری‌های تحت پیگیری استفاده می‌شود دریافت می‌کند، و بنابراین برای نظارت بر فایل‌های لاگ بسیار مناسب‌تر از \fIpolling\fR است. .TP .B polling از الگوریتم پیمایش دوره‌ای (polling) استفاده می‌کند که نیازی به کتابخانه‌های اضافی ندارد. .TP .B systemd از کتابخانه پایتون systemd برای دسترسی به ژورنال systemd استفاده می‌کند. تعیین \fBlogpath\fR برای این موتور مجاز نیست و در عوض از \fBjournalmatch\fR برگرفته از پیکربندی فیلتر مرتبط با زندان استفاده می‌کند. فلگ‌های اختصاصی متعددی از systemd را می‌توان به این موتور ارسال کرد، از جمله \fBjournalpath\fR و \fBjournalfiles\fR برای تعیین صریح مسیر دایرکتوری یا مجموعه‌ای از فایل‌ها، \fBjournalflags\fR که به طور پیش‌فرض 1 (LOCAL_ONLY) است و ژورنال را تنها روی ماشین محلی باز می‌کند، و می‌تواند با \fBjournalflags=4\fR برای مستثنی کردن فایل‌های نشست کاربری به 4 (SYSTEM_ONLY) تنظیم شود، یا \fBnamespace\fR. .br توجه داشته باشید که \fBjournalflags\fR، \fBjournalpath\fR، \fBjournalfiles\fR و \fBnamespace\fR مانعة‌الجمع هستند. برای سایر تنظیمات و جزئیات بیشتر به مستندات python-systemd مراجعه کنید. .sp 1 مثال‌ها: .PP .RS .nf backend = systemd[journalpath=/run/log/journal/machine-1] backend = systemd[journalfiles="/path/to/system.journal, /path/to/user.journal"] backend = systemd[journalflags=4, rotated=on] .fi .sp 1 برای جلوگیری از وضعیت «فایل‌های باز بیش از حد» (اتمام توصیف‌کننده‌ها)، fail2ban فایل‌های ژورنال چرخیده‌شده (rotated) را به طور پیش‌فرض نادیده می‌گیرد و پارامتر اختصاصی خود به نام \fBrotated\fR (پیش‌فرض \fBfalse\fR) را دارد، تا به طور خودکار مجموعه فایل‌های غیرچرخیده‌شده \fBjournalfiles\fR متناظر با \fBjournalflags\fR (و \fBjournalpath\fR در صورت تنظیم) را بازیابی کند. بنابراین موتور \fBsystemd\fR به طور پیش‌فرض مشابه موتورهای مبتنی بر فایل عمل می‌کند و تنها می‌تواند پیام‌های واقعی (چرخش‌نیافته) را بیابد و حداکثر تا نقطه زمانی آخرین چرخش می‌تواند به عقب جستجو کند (مانند findtime و غیره). .br همین موضوع برای \fBfail2ban-regex systemd-journal ...\fR نیز صادق است، بنابراین به طور پیش‌فرض پیام‌های فایل‌های ژورنال چرخیده‌شده را نادیده می‌گیرد. برای جستجو در تمام ژورنال باید از \fBfail2ban-regex systemd-journal[rotated=on] ...\fR استفاده شود. .RE .SS "اقدامات (Actions)" هر زندان می‌تواند تنها با یک فیلتر پیکربندی شود، اما می‌تواند چندین اقدام داشته باشد. به طور پیش‌فرض، نام یک اقدام همان نام فایل اقدام است، و در مورد اقدامات پایتون، پسوند ".py" حذف می‌شود. در جایی که قرار است چندین مورد از یک اقدام یکسان استفاده شوند، می‌توان گزینه \fBactname\fR را به اقدام اختصاص داد تا از تکرار جلوگیری شود، به عنوان مثال: .PP .nf [ssh-iptables-ipset] enabled = true action = smtp.py[dest=chris@example.com, actname=smtp-chris] smtp.py[dest=sally@example.com, actname=smtp-sally] .fi .SH "قالب اختصاری زمان (TIME ABBREVIATION FORMAT)" ورودی‌های زمان در پیکربندی fail2ban (مانند \fBfindtime\fR یا \fBbantime\fR) را می‌توان به صورت عدد صحیح بر حسب ثانیه یا به صورت رشته با استفاده از فرمت اختصاری ویژه ارائه داد (به عنوان مثال \fB600\fR معادل \fB10m\fR است). .TP .B نشانه‌های اختصاری: .RS .nf years?, yea?, yy? months?, mon? weeks?, wee?, ww? days?, da, dd? hours?, hou?, hh? minutes?, min?, mm? seconds?, sec?, ss? علامت سوال (؟) به معنای اختیاری بودن کاراکتر است، بنابراین هم \fBday\fR و هم \fBdays\fR قابل استفاده هستند. .fi .RE می‌توانید چندین نشانه را در قالب ترکیب کنید (جداشده با فاصله یا بدون جداکننده)، به عنوان مثال: \fB1y 6mo\fR یا \fB1d12h30m\fR. .br توجه داشته باشید که نشانه‌های \fBm\fR و همچنین \fBmm\fR به معنای دقیقه هستند؛ برای ماه از علامت اختصاری \fBmo\fR یا \fBmon\fR استفاده کنید. قالب زمان را می‌توان با استفاده از \fBfail2ban-client\fR آزمایش کرد: .RS .nf fail2ban-client --str2sec 1d12h .fi .RE .SH "فایل‌های پیکربندی اقدام (\fIaction.d/*.conf\fB) (ACTION CONFIGURATION FILES)" فایل‌های اقدام مشخص می‌کنند که چه دستوراتی برای مسدود کردن و رفع مسدودیت یک نشانی IP اجرا می‌شوند. مشابه فایل‌های jail.conf، اگر تمایل به تغییرات محلی دارید، یک فایل \fI[actionname].local\fR در دایرکتوری \fI/etc/fail2ban/action.d\fR ایجاد کنید و تنظیمات لازم را بازنویسی نمایید. فایل‌های اقدام دارای دو بخش \fBDefinition\fR و \fBInit\fR هستند. بخش [Init] تنظیمات مربوط به اقدام را فعال می‌کند. در \fIjail.conf/jail.local\fR این تنظیمات را می‌توان برای یک زندان خاص به عنوان گزینه‌های مشخصات اقدام در آن زندان بازنویسی کرد. دستورات زیر می‌توانند در بخش [Definition] وجود داشته باشند: .TP .B actionstart دستور(هایی) که هنگام شروع به کار زندان اجرا می‌شوند. .TP .B actionstop دستور(هایی) که هنگام متوقف شدن زندان اجرا می‌شوند. .TP .B actioncheck دستور(هایی) که پیش از هر اقدام دیگری اجرا می‌شوند. هدف آن بررسی مناسب و پایدار بودن محیط است. .TP .B actionban دستور(هایی) که نشانی IP را پس از تطابق \fBmaxretry\fR خط لاگ در آخرین \fBfindtime\fR ثانیه مسدود می‌کنند. .TP .B actionunban دستور(هایی) که نشانی IP را پس از مدت زمان \fBbantime\fR از مسدودیت خارج می‌کنند. .PP بخش [Init] امکان تنظیمات ویژه هر اقدام را فراهم می‌آورد. در \fIjail.conf/jail.local\fR این موارد را می‌توان برای یک زندان خاص به عنوان گزینه‌های مربوط به آن زندان بازنویسی کرد. برچسب‌های ویژه‌ای که می‌توانند در بخش [Init] تنظیم شوند عبارتند از: .TP \fBtimeout\fR حداکثر مدت زمان بر حسب ثانیه که یک دستور می‌تواند قبل از متوقف شدن اجباری (kill) اجرا شود. .PP .RE دستورات مشخص‌شده در بخش [Definition] از طریق یک پوسته سیستم (shell) اجرا می‌شوند، بنابراین تغییر مسیر شل و کنترل فرایند مجاز است. دستورات باید مقدار 0 را برگردانند، در غیر این صورت خطا ثبت خواهد شد. علاوه بر این، اگر \fBactioncheck\fR با وضعیتی غیر از 0 خارج شود، به عنوان نشانه‌ای از تغییر وضعیت فایروال در نظر گرفته شده و fail2ban باید مجدداً خود را مقداردهی اولیه کند (یعنی دستورات \fBactionstop\fR و \fBactionstart\fR را صادر نماید). برچسب‌ها درون <> قرار می‌گیرند. تمام عناصر بخش [Init] برچسب‌هایی هستند که در تمام دستورات اقدام جایگزین می‌شوند. برچسب‌ها را می‌توان توسط \fBfail2ban-client\fR با استفاده از دستور "set action " اضافه کرد. \fB
\fR برچسبی است که همیشه نشان‌دهنده خط جدید (\\n) است. تعیین بیش از یک دستور مجاز است. هر دستور باید در یک خط جداگانه قرار گیرد و بدون خطوط خالی با فاصله(ها) تورفتگی داشته باشد. مثال زیر دو دستور را برای اجرا تعریف می‌کند: actionban = iptables -I fail2ban- --source -j DROP echo ip=, match=, time=