آزمایش تغییرات فایروال بدون اینکه خودتان را بیرون قفل کنید
مسیرهای بازیابی خود را پیش از اعمال قاعده رتبهبندی کنید، سپس با جریانی که سیاست جدید باید آن را ارزیابی کند بررسی کنید، نه با نشستی که جان سالم به در برده است.
قاعده اعمال میشود، ترمینالی که از قبل دارید همچنان پاسخ میدهد، و ورود بعدی رد میشود. همین شکاف تمام دشواری آزمایش یک تغییر فایروال از روی اتصالی است که آن را تغییر میدهید. ردیابی اتصال یک بار تصمیم میگیرد و سپس دست از نگاه کردن برمیدارد، بنابراین یک جریان برقرارشده تنها کاوشی است که نمیتواند سیاست جدید را ببیند. آنچه در ادامه میآید سه راه بازگشت را مقایسه میکند، سپس ترتیبی را که باید قاعدهها در آن تغییر کنند و بررسی شوند تعیین میکند.
چرا نشستِ جانسالممانده ضعیفترین شاهد است
فایروال حالتدار اولین بستهٔ یک جریان را ارزیابی میکند و تا زمانی که آن ورودی زنده است همان حکم را نگه میدارد. قاعدههایی که بعداً افزوده میشوند بر جریانهایی اعمال میشوند که دیرتر آغاز میشوند، و به همین دلیل پنجرهای که در آن تایپ میکنید قابل استفاده میماند در حالی که همهٔ دیگران رد میشوند. هر چیزی که از آن یاد بگیرید سیاستی را توصیف میکند که چند دقیقه پیش برقرار بود. حتی یک ضبط گرفتهشده روی همان جریان تصمیمی را نشان میدهد که ماشین قبلاً گرفته است.
با نشستِ کارآمد مانند یک راه فرار اضطراری رفتار کنید، نه مانند یک اندازهگیری. هر بررسیای که ارزش اجرا دارد باید جریانی تازه از منبعی باز کند که قاعدهٔ جدید آن را ارزیابی خواهد کرد، و نخستین بررسی باید همان باشد که شکستش بیشترین درد را دارد. وقتی آن نشست تنها راه ورود شماست، تغییر هنوز آمادهٔ انجامشدن نیست.
سه راه بازگشت، مرتبشده بر اساس اینکه هر یک به چه چیزی وابسته است
گزینهها را بر اساس میزان وابستگیشان به دستگاهِ تحت آزمایش مرتب کنید، زیرا وقتی قاعده نادرست از آب دربیاید به همان رتبهبندی دست میزنید. کنسولی که هرگز از فایروال عبور نمیکند مستقل است، بازگردانی تمرینشده تقریباً چنین است، و نشستی که از قبل باز است چنین نیست.
| Way back in | What it survives | Where it fails |
|---|---|---|
| out-of-band or hypervisor console | a policy that blocks new logins | needs separate access you have already tried |
| rollback rehearsed on that platform | a rule that breaks remote access | fails when nobody ever ran it |
| the session that is already open | the change itself | cannot show whether new flows work |
پیش از تغییر، از طریق کنسول وارد شوید و ثابت کنید که کار میکند، زیرا مسیری خارج از باند که هرگز از آن استفاده نکردهاید یک نمودار است نه یک جایگزین. بازگردانی تنها پس از تمرینی روی همان سکو، با همان مجموعه قاعده، و بر پایهٔ رویهٔ تأییدشده جای خود را میگیرد، نه با بداههپردازی روی دستگاهی زنده. مراحل را بنویسید و از شخص دیگری بخواهید آنها را برایتان بخواند. اگر ترتیب برای کاملشدن به حافظهٔ شما نیاز دارد، یک برنامه نیست.
یک تغییر، سپس اتصالی که باید ارزیابی شود
مجموعه قاعدهٔ فعال و پروندهای که مالک آن است را ذخیره کنید، سپس یک ویرایش باریک انجام دهید. یک تغییر در هر آزمایش نتیجه را قابل انتساب نگه میدارد؛ دو تغییر همزمان ماشینی کارآمد و هیچ تصوری از این که کدام ویرایش کار را انجام داده برایتان میگذارد. جایی که سکو میتواند پیکربندی را بدون بارگذاری آن تجزیه کند، اول همان را انجام دهید تا یک غلط تایپی هنگامی که چیزی در خطر نیست شکست بخورد.
nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf
سپس در حالی که کنسول هنوز متصل است، نشستی تازه از منبعی آغاز کنید که قاعدهٔ تغییرکرده با آن مطابقت خواهد داشت. اگر موفق شد یک بار تکرار کنید، زیرا تلاش اول میتواند روی ورودیای فرود بیاید که جدول از قبل داشت. اگر شکست خورد، هنوز راهی به داخل و تصمیمی برای بازگرداندن دارید، و این ارزانترین نتیجهٔ بدِ در دسترس است.
شمارندهها، وضعیت و پرونده به پرسشهای متفاوتی پاسخ میدهند
هر یک از این سه مشاهده میتواند بهتنهایی قانعکننده به نظر برسد و شما را دربارهٔ دو مشاهدهٔ دیگر گمراه کند. شمارندهها نشان میدهند آیا جریانی که همین حالا ساختید به قاعدهای که ویرایش کردید رسیده است. جدول وضعیت نشان میدهد ماشین کدام جریانها را از قبل برقرار میداند، و به این ترتیب یک قاعدهٔ خراب هم میتواند سالم به نظر برسد. پروندهٔ ذخیرهشده نشان میدهد دستگاه پس از بارگذاری مجدد بعدی چه خواهد کرد، و ممکن است همان چیزی نباشد که مجموعه قاعدهٔ در حال اجرا اکنون انجام میدهد.
ss -tn state established
شمارندهها را بهصورت دلتا بخوانید نه مجموع، زیرا تنها عددی که اهمیت دارد همان است که جریان آزمایشی شما جابهجا کرده است. قاعدهای که شمارندهاش هرگز افزایش نمییابد مطابقت ندارد، هرقدر هم روی کاغذ درست به نظر برسد. حالت رد را هم تأیید کنید: سیاستی که هرگز چیزی را رد نکرده هرگز ثابت نکرده است که آنچه را میخواستید مسدود کنید رد میکند. در هر خانوادهای که استقرار واقعاً حمل میکند یک رابط را کار کنید، زیرا قاعدهٔ v4 هیچ چیزی دربارهٔ جریان v6 نمیگوید.
از مجموعه قاعدهٔ ذخیرهشده بازیابی کنید، سپس پرونده را هماهنگ کنید
وقتی تغییر شکست میخورد، بهجای افزودن قاعدههای مجاز تا زمانی که ورودها دوباره کار کنند، مجموعه قاعدهٔ ذخیرهشده را بارگذاری کنید. هر اجازهٔ اضافی نشانه را آرام میکند و حفرهای بر جای میگذارد که از خود حادثه و خاطرهٔ آن بیشتر عمر میکند. بازیابی کنید، دوباره متصل شوید، سپس مقایسهٔ ناموفق را کنار سابقهٔ آنچه امتحان کردید نگه دارید.
پس از تغییری موفق، کاری کنید پروندهٔ روی دیسک مجموعه قاعدهٔ در حال اجرا را توصیف کند، و تأیید کنید که بارگذاری مجدد آن را بازتولید میکند. مجموعه قاعدهٔ فعالی که از پروندهٔ پیکربندی خودش فاصله گرفته باشد، تلهای است برای راهاندازی بعدی.