سناریو های امنیتی و راه حل های یونیکسی قسمت 01: “Bruteforce”
طرح سئوال :
فرض کنیم سرور جدید نصب شده و SSH باز است.
در عرض چند دقیقه، auth.log پر میشود. هکر ها سرور و اسکریپت شما را پیدا کردند.
شما باید این حمله را متوقف کنید. چه احساسی دارید؟
■راه حل لینوکس:
fail2ban را نصب کنید. /etc/fail2ban/jail.local را پیکربندی کنید.
تعریف کنید کدام لاگ را بررسی کنید، کدام regex را مطابقت دهید، چند تلاش، چه مدت زمانی!!!.
عملکرد را پیکربندی کنید – nftables؟ iptables؟ یا برخی از frontend های آن مانند ufw؟ کدام زنجیره؟ daemon را مجدداً راه اندازی کنید.
fail2banگزارشهای شما را بررسی میکند. کسی SSH را چک میکند. خطوطی در auth.log ظاهر میشوند. fail2ban آنها را تجزیه میکند. با یک الگو مطابقت میدهد. تعداد تلاشها را میشمارد. به آستانه رسیده است. nftables را فراخوانی میکند. قانون اضافه شده است. مهاجم مسدود شده است.
این کار کرد. در نهایت.
اما مهاجم قبل از اینکه لاگ نوشته، تجزیه، تطبیق و اقدام شود، ۵۰ تلاش برای ورود داشته است. و اگر fail2ban از کار بیفتد؟ فایروال شما همچنان در حال اجرا است، اما محافظت متوقف میشود. دو سیستم عملکردی . دو نقطه آسیب پذیری وابسته.
آیا میخواهید اتصالات موجود از آن IP را مسدود کنید؟= پیکربندی اضافی.
محدودیت سرعت به جای مسدود کردن سخت؟ ابزار متفاوت.
IP خودتان را در لیست سفید قرار دهید تا قفل نشوید؟ یک فایل دیگر.
کسی را از حالت مسدود خارج کنید؟ دستور CLI به یک سرویس که با سرویس دیگری صحبت میکند.
کار میکند. میلیونها نفر از آن استفاده میکنند.
این روش لینوکس است: هزاران ابزار، به طور ناپایدار و به هم پیوسته.
حالا راه حلی دیگر:
■ BSD:
—pf.conf
table <bruteforce> persist
block quick from <bruteforce>
pass in on egress proto tcp to the port ssh \
keep state (max-src-conn 20, \
max-src-conn-rate 10/1, \
overload <bruteforce> flush global)
——
همین. در هسته. بدون daemon. بدون تجزیه گزارش. فوری.
بیش از 20 اتصال؟ مسدود شده. بیش از 10 تلاش در ثانیه؟ IP وارد جدول <bruteforce> میشود. همه اتصالات موجود از آن IP؟ پاک شده.
■ نکته:
میدانیم. لینوکس آشناست. این چیزی است که شما یاد گرفتهاید. این چیزی است که آگهیهای شغلی درخواست میکنند.
اما وقتی با BSD ها کار کردهاید، متوجه میشوید که وظایف روزانه چقدر منسجمتر میشوند. از هزاران ایده رقیب در مورد نحوه کار چیزی مونتاژ نشده است. بلکه طراحی شده است.:
یک تیم. یک دیدگاه. سی سال ثبات. و متنباز نیز هست.
pf فقط بستهها را فیلتر نمیکند. به امنیت فکر میکند. چون BSD این کار را میکند.
همان سینتکس از سال ۲۰۰۱. همان الگوهای مدیریتی. همان فلسفه از هسته تا فضای کاربری.
امنیت به صورت پیشفرض نصب نشده بود – بلکه طراحی شده بود.
قابلیت های داخلی:
Stateful – اتصالات به صورت پیشفرض ردیابی میشوند.
Anti spoof – یک کلمه کلیدی، انجام شده
Rete limiting – به ازای هر منبع، به ازای هر قانون
Tables – لیستهای IP پویا، بهروزرسانی شده در زمان اجرا
Overload actions – مسدود کردن خودکار هنگام رسیدن به آستانهها
SYN proxy – محافظت در برابر سیل در هسته
همه اینها وجود دارد. همه سازگار!
nftables یک فیلتر بسته توانمند است.
pf یک فایروال است که مشکلات شما را پیشبینی میکند.
گاهی اوقات راهحل شیک از قبل وجود دارد. فقط شیک نیست.
