آموزش راه‌اندازی فایروال UFW در دبیان و اوبونتو

  • دسته بندی ها: لینوکس

UFW یا Uncomplicated Firewall، یک رابط مدیریت فایروال ساده شده است که پیچیدگی فناوری های فیلترینگ بسته‌های سطح پایین مانند iptables و nftables را ندارد. اگر به دنبال شروع ایمن سازی شبکه خود هستید و مطمئن نیستید که از کدام ابزار استفاده کنید، UFW ممکن است انتخاب مناسبی برای شما باشد.

در این آموزش  ملاحظه می‌کنید که چگونه یک فایروال با UFW در دبیان 11 راه اندازی کنید.

مرحله 1 – نصب فایروال UFW

کافیست با استفاده از دستور apt به شرح زیر  UFW را نصب کنید:

مرحله 2 – استفاده از IPv6 با UFW (اختیاری)

این آموزش با در نظر گرفتن IPv4 نوشته شده است اما اگر آن را فعال کنید برای IPv6 نیز کار خواهد کرد. اگر سرور دبیان یا اوبونتو شما IPv6 را فعال کرده باشد، باید مطمئن شوید که UFW برای پشتیبانی از IPv6 پیکربندی شده است. این تضمین می کند که UFW علاوه بر IPv4، قوانین فایروال IPv6 را نیز مدیریت خواهد کرد. برای پیکربندی این، فایل پیکربندی UFW /etc/default/ufw را با nano یا ویرایشگر مورد علاقه خود باز کنید:

آموزش استفاده از ویرایشگر nano در لینوکس
در این مقاله نحوه نصب و استفاده از ویرایشگر متن nano به عنوان ویرایشگر متن محبوب در سیستم عامل لینوکس را بررسی می‌کنیم.

 

IPV6 را در فایل پیدا کنید و مطمئن شوید که مقدار آن yes است:

ذخیره کنید و فایل را ببندید. اگر از nano استفاده می‌کنید، CTRL+X، سپس Y و سپس ENTER را فشار دهید تا فایل ذخیره شود و از آن خارج شوید.

اکنون وقتی UFW فعال است، برای نوشتن قوانین فایروال IPv4 و IPv6 پیکربندی می شود. با این حال، قبل از فعال کردن UFW، باید مطمئن شوید که فایروال شما به گونه ای پیکربندی شده است که به شما امکان اتصال از طریق SSH را می دهد. با تنظیم سیاست های پیش فرض شروع کنید.

 

مرحله 3 – تنظیم سیاست های(Policies) پیش فرض

اگر تازه کار با فایروال را شروع کرده‌اید، اولین قوانین و rule‌هایی که باید تعریف کنید، سیاست های پیش فرض شما هستند. این قوانین ترافیکی را کنترل می کنند که به صراحت با هیچ قانون دیگری مطابقت ندارد. به طور پیش فرض، UFW تنظیم شده است که تمام اتصالات ورودی را deny کند و همه اتصالات خروجی را مجاز کند. این بدان معنی است که هر کسی که سعی در دسترسی به سرور شما داشته باشد قادر به اتصال نخواهد بود، در حالی که هر برنامه ای در سرور می تواند به دنیای خارج دسترسی پیدا کند.

قوانین UFW خود را به حالت پیش فرض برگردانید تا مطمئن شوید که می توانید این آموزش را دنبال کنید. برای تنظیم پیش فرض های استفاده شده توسط UFW، از این دستورات استفاده کنید:

خروجی هایی مانند زیر دریافت خواهید کرد:

این دستورات پیش فرض را طوری تنظیم می کنند که ورودی ها را رد کرده و اتصالات خروجی را مجاز می کنند. این پیش‌فرض‌های فایروال به تنهایی ممکن است برای یک کامپیوتر شخصی کافی باشد، اما سرورها معمولا باید به درخواست‌های دریافتی از سوی کاربران خارجی هم پاسخ دهند. در مرحله بعد این فرآیند را شروع خواهید کرد.

مرحله 4 – اجازه دادن به اتصالات SSH

هنوز نمی توانید فایروال UFW را فعال کنید، زیرا تمام اتصالات ورودی از جمله تلاش شما برای دسترسی به سرور را رد می کند.به این معنی است که اگر می‌خواهید سرور شما به آن نوع درخواست‌ها پاسخ دهد، باید قوانینی را ایجاد کنید که به اتصالات ورودی قانونی اجازه دهد(برای مثال اتصالات SSH یا HTTP) اگر از سرور ابری استفاده می کنید، احتمالا می خواهید به اتصالات SSH ورودی اجازه دهید تا بتوانید به سرور خود متصل شوید و آن را مدیریت کنید.

برای پیکربندی سرور برای اجازه دادن به اتصالات SSH ورودی، از این دستور استفاده کنید:

 

این قوانین فایروال را ایجاد می کند که به همه اتصالات در پورت 22 اجازه می دهد، درگاهی که دیمن SSH به طور پیش فرض به آن گوش می دهد. UFW می داند که چه پورتی برای allow ssh گره خورده است زیرا به عنوان یک سرویس در فایل /etc/services فهرست شده است.

با این حال، در واقع می توانید قانون معادل را با تعیین پورت به جای نام سرویس بنویسید. به عنوان مثال، این دستور همان نتیجه بالا را ایجاد می کند:

اگر دیمن SSH خود را برای استفاده از پورت دیگری پیکربندی کرده اید، باید پورت مناسب را مشخص کنید. به عنوان مثال، اگر سرور SSH شما روی پورت 2233 گوش می دهد، می توانید از همین دستور استفاده کنید اما 22 را با 2233 جایگزین کنید.

اکنون که فایروال شما به گونه ای پیکربندی شده است که به اتصالات SSH ورودی اجازه دهد، می توانید آن را فعال کنید.

مرحله 5 – فعال کردن UFW

برای فعال کردن UFW از این دستور استفاده کنید:

هشداری دریافت خواهید کرد که می گوید این فرمان ممکن است اتصالات SSH موجود را مختل کند. شما قبلا یک قانون فایروال تنظیم کرده‌اید که به اتصالات SSH اجازه می دهد، بنابراین باید ادامه دهید. با y به درخواست پاسخ دهید و ENTER را بزنید.

فایروال اکنون فعال است. برای مشاهده قوانینی که تنظیم کرده اید، این دستور را اجرا کنید:

بقیه این آموزش نحوه استفاده از UFW را با جزئیات بیشتری شامل اجازه دادن و رد کردن انواع مختلف اتصالات را پوشش می دهد.

سرور مجازی لینوکس یک ماشین مجازی کامل است که امکان نصب فایروال UFW طبق آموش روی آن وجود دارد.
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.

مرحله 6 – اجازه دادن به سایر اتصالات

در این مرحله، شما باید اجازه دهید تمام اتصالات دیگری که سرور شما نیاز دارد به درستی کار کند. اتصالاتی که باید اجازه دهید به نیازهای خاص شما بستگی دارد. الان می دانید که چگونه قوانینی بنویسید که اتصالات را بر اساس نام یا پورت سرویس مجاز می کند. قبلا این کار را برای SSH در پورت 22 انجام دادید.
شما می توانید این کار را برای HTTP در پورت 80 انجام دهید، این همان چیزی است که وب سرورهای رمزگذاری نشده استفاده می کنند. برای اجازه دادن به این نوع ترافیک، باید تایپ کنید:

 

همچنین می توانید این کار را برای HTTPS در پورت 443 انجام دهید، این همان چیزی است که سرورهای وب رمزگذاری شده از آن استفاده می کنند. برای اجازه دادن به این نوع ترافیک، باید تایپ کنید:

 

در هر دو سناریو، مشخص کردن پورت ها نیز کار می کند، با HTTP 80 و HTTPS 443 به عنوان مثال:

با این حال، به غیر از تعیین پورت یا سرویس شناخته شده، راه های دیگری برای اجازه دادن به اتصالات وجود دارد. در ادامه به این موضوع پرداخته می شود.

محدوده‌های پورت  خاص

شما می توانید محدوده پورت را با UFW مشخص کنید. به عنوان مثال، برخی از برنامه ها به جای یک پورت از چندین پورت استفاده می کنند.
به عنوان مثال، برای اجازه دادن به اتصالات X11 که از پورت های 6000-6007 استفاده می کنند، از این دستورات استفاده کنید:

هنگام تعیین محدوده پورت با UFW، باید پروتکلی (tcp یا udp) را مشخص کنید که قوانین باید روی آن اعمال شوند. این قبلا ذکر نشده بود زیرا مشخص نکردن پروتکل به طور خودکار به هر دو پروتکل اجازه می دهد، که در بیشتر موارد خوب است.

آدرس‌های IP خاص

هنگام کار با UFW، می توانید آدرس‌های IP را نیز مشخص کنید. به عنوان مثال، اگر می‌خواهید اتصالات از یک آدرس IP خاص، مانند آدرس IP محل کار یا خانه 1.1.1.1 را مجاز کنید، باید from و سپس آدرس IP را مشخص کنید:

همچنین می‌توانید پورت خاصی را که آدرس IP مجاز به اتصال به آن است، با افزودن to any port و سپس شماره پورت مشخص کنید. به عنوان مثال، اگر می خواهید به 1.1.1.1 اجازه دهید به پورت 22 (SSH) متصل شود، از این دستور استفاده کنید:

سابنت‌ها

اگر می‌خواهید به سابنتی از آدرس‌های IP اجازه دهید، می‌توانید این کار را با استفاده از نماد CIDR برای تعیین یک netmask انجام دهید. به عنوان مثال، اگر می خواهید تمام آدرس های IP از 1.1.1.1تا 1.1.1.254 را مجاز کنید، می توانید از این دستور استفاده کنید:

به همین ترتیب، می‌توانید پورت destination را نیز مشخص کنید که سابنت 1.1.1.1/24 مجاز به اتصال به آن است. دوباره، با استفاده از پورت 22 (SSH) به عنوان مثال:

اتصالات به یک Network Interface خاص

اگر می‌خواهید یک قانون فایروال ایجاد کنید که فقط برای یک network interface خاص اعمال شود، می‌توانید این کار را با تعیین allow in on و به دنبال آن نام network interface انجام دهید.

قبل از ادامه، جستجوی رابط های شبکه خود مفید خواهد بود. برای این کار از این دستور استفاده کنید:

خروجی بالا نام رابط شبکه را نشان می دهد. آنها معمولا نام‌هایی مانند eth0 یا lo دارند.

برای مثال، اگر سرور شما دارای یک رابط شبکه عمومی به نام eth0 است، می توانید با این دستور به ترافیک HTTP اجازه دهید:

انجام این کار به سرور شما اجازه می دهد تا درخواست های HTTP را از اینترنت عمومی دریافت کند.

یا اگر می خواهید یک سرور پایگاه داده MySQL (پورت 3306) به اتصالات در رابط شبکه خصوصی eth1 گوش دهد، می توانید از این دستور استفاده کنید:

این به سرورهای دیگر در شبکه خصوصی شما اجازه می دهد تا به پایگاه داده MySQL شما متصل شوند.

 

مرحله 7 – رد اتصالات (Denying Connections)

اگر سیاست‌های پیش‌فرض (default policy) اتصالات ورودی را تغییر نداده‌اید، UFW طوری پیکربندی شده است که همه اتصالات ورودی را رد کند. به طور کلی، این فرآیند ایجاد یک policy برای فایروال ایمن را با الزام شما به ایجاد قوانینی که به پورت‌ها و آدرس های IP خاصی اجازه عبور می دهد، ساده می کند.

گاهی اوقات می‌خواهید اتصالات خاصی را بر اساس آدرس IP منبع یا سابنت رد کنید، البته شاید به این دلیل که می‌دانید سرور شما از آنجا مورد حمله قرار می‌گیرد. همچنین، اگر می‌خواهید سیاست ورودی پیش‌فرض خود را به allow تغییر دهید (که توصیه نمی‌شود)، باید قوانین deny کردن سرویس‌ها یا آدرس‌های IP را که نمی‌خواهید به آنها اجازه اتصال دهید، ایجاد کنید.

برای نوشتن قوانین deny ، می توانید از دستورات توضیح داده شده در بالا استفاده کنید و اجازه را با deny جایگزین کنید.

به عنوان مثال، برای رد اتصالات HTTP، می توانید از این دستور استفاده کنید:

یا اگر می خواهید تمام اتصالات 1.1.1.1 را رد کنید، می توانید از این دستور استفاده کنید:

اکنون، می‌توانید نحوه اجرای قوانین حذف را یاد بگیرید.

مرحله 8 – حذف قوانین

دانستن نحوه حذف قوانین فایروال به همان اندازه مهم است که بدانید چگونه آنها را ایجاد کنید. دو راه برای تعیین قوانین حذف وجود دارد: با شماره قانون یا توسط خود قانون. این شبیه به نحوه تعیین قوانین هنگام ایجاد آنها است.

با شماره قانون

اگر از شماره قانون برای حذف قوانین فایروال استفاده می کنید، اولین کاری که می خواهید انجام دهید این است که لیستی از قوانین فایروال خود را دریافت کنید. دستور status در UFW دارای گزینه numbered است که اعداد را در کنار هر قانون نمایش می دهد:

اگر تصمیم دارید که قانون 2 را حذف کنید، که به اتصالات HTTP در پورت 80 اجازه می دهد، می توانید این مورد را در دستور delete  در UFW زیر مشخص کنید:

این یک اعلان تأیید نشان می دهد که می توانید با y/n پاسخ دهید. با تایپ y قانون 2 حذف می شود. توجه داشته باشید که اگر IPv6 را فعال کرده اید، می خواهید قانون IPv6 مربوطه را نیز حذف کنید.

طبق قانون واقعی(actual)

جایگزین اعداد قوانین این است که قانون واقعی (actual) را برای حذف مشخص کنید. به عنوان مثال، اگر می خواهید قانون allow http را حذف کنید، می توانید آن را به این صورت بنویسید:

همچنین می‌توانید قانون را با allow 80 به جای نام سرویس مشخص کنید:

این روش هر دو قوانین IPv4 و IPv6 را در صورت وجود حذف می کند.

مرحله 9 – بررسی وضعیت UFW و قوانین

در هر زمان می توانید وضعیت UFW را با این دستور بررسی کنید:

اگر UFW غیرفعال باشد که پیش‌فرض است، خروجی این خواهد بود:

اگر UFW فعال باشد، که اگر مرحله 3 را دنبال کنید باید فعال باشد، خروجی می گوید که فعال است و قوانینی را که تنظیم کرده اید فهرست می کند. به عنوان مثال، اگر فایروال طوری تنظیم شده باشد که اجازه اتصال SSH (پورت 22) را از هر جایی بدهد، خروجی ممکن است شامل موارد زیر باشد:

اگر می خواهید بررسی کنید UFW چگونه فایروال را پیکربندی کرده است از دستور status استفاده کنید.

مرحله 10 – غیرفعال کردن یا بازنشانی UFW (اختیاری)

اگر نمی خواهید از UFW استفاده کنید، می توانید آن را با این دستور غیرفعال کنید:

هر قانونی که با UFW ایجاد کردید دیگر فعال نخواهد بود. اگر بخواهید بعدا آن را فعال کنید، همیشه می توانید ufw enable را اجرا کنید.

اگر قبلا قوانین UFW را پیکربندی کرده‌اید، اما تصمیم دارید که می خواهید دوباره شروع کنید، می توانید از دستور reset استفاده کنید:

با این کار UFW غیرفعال می‌شود و قوانینی که قبلا تعریف کرده‌اید حذف می شود. به خاطر داشته باشید که اگر در هر زمانی آنها را تغییر دهید، سیاست‌های پیش‌فرض به تنظیمات اصلی خود تغییر نمی‌کنند.

نکته :  در این آموزش به عنوان نمونه از آی‌پی 1.1.1.1 استفاده شده است، IP مورد نظر خود را جایگزین کنید.

جمع‌بندی

فایروال UFW پیکربندی شده است تا حداقل اتصالات SSH را مجاز کند. مطمئن شوید که به سایر اتصالات ورودی که سرور شما نیاز دارد اجازه داده باشید، در حالی که اتصالات غیر ضروری را محدود کرده‌اید. این موجب می‌شود که سرور هم کاربردی و هم امن باشد.

توجه کنید که تنظیمات اشتباه در فایروال ممکن است دسترسی شما از سرور را از بین ببرد، برایرفع اینمشکل می‌توانید از طریق کنسول تحت وب در محیط کاربری پارسدو  به سرور دسترسی و تنظیمات فایروال را اصلاح نمائید.