آموزش راهاندازی فایروال با UFW در دبیان و اوبونتو
UFW یا Uncomplicated Firewall، یک رابط مدیریت فایروال ساده شده است که پیچیدگی فناوری های فیلترینگ بستههای سطح پایین مانند iptables و nftables را ندارد. اگر به دنبال شروع ایمن سازی شبکه خود هستید و مطمئن نیستید که از کدام ابزار استفاده کنید، UFW ممکن است انتخاب مناسبی برای شما باشد.
در این آموزش ملاحظه میکنید که چگونه یک فایروال با UFW در دبیان 11 راه اندازی کنید.
مرحله 1 - نصب UFW
کافیست با استفاده از دستور apt به شرح زیر UFW را نصب کنید:
apt install ufw
مرحله 2 - استفاده از IPv6 با UFW (اختیاری)
این آموزش با در نظر گرفتن IPv4 نوشته شده است اما اگر آن را فعال کنید برای IPv6 نیز کار خواهد کرد. اگر سرور دبیان یا اوبونتو شما IPv6 را فعال کرده باشد، باید مطمئن شوید که UFW برای پشتیبانی از IPv6 پیکربندی شده است. این تضمین می کند که UFW علاوه بر IPv4، قوانین فایروال IPv6 را نیز مدیریت خواهد کرد. برای پیکربندی این، فایل پیکربندی UFW /etc/default/ufw را با nano یا ویرایشگر مورد علاقه خود باز کنید:
nano /etc/default/ufw
در این مقاله نحوه نصب و استفاده از ویرایشگر متن nano به عنوان ویرایشگر متن محبوب در سیستم عامل لینوکس را بررسی میکنیم.
IPV6 را در فایل پیدا کنید و مطمئن شوید که مقدار آن yes است:
ذخیره کنید و فایل را ببندید. اگر از nano استفاده میکنید، CTRL+X، سپس Y و سپس ENTER را فشار دهید تا فایل ذخیره شود و از آن خارج شوید.
اکنون وقتی UFW فعال است، برای نوشتن قوانین فایروال IPv4 و IPv6 پیکربندی می شود. با این حال، قبل از فعال کردن UFW، باید مطمئن شوید که فایروال شما به گونه ای پیکربندی شده است که به شما امکان اتصال از طریق SSH را می دهد. با تنظیم سیاست های پیش فرض شروع کنید.
مرحله 3 - تنظیم سیاست های(Policies) پیش فرض
اگر تازه کار با فایروال را شروع کردهاید، اولین قوانین و ruleهایی که باید تعریف کنید، سیاست های پیش فرض شما هستند. این قوانین ترافیکی را کنترل می کنند که به صراحت با هیچ قانون دیگری مطابقت ندارد. به طور پیش فرض، UFW تنظیم شده است که تمام اتصالات ورودی را deny کند و همه اتصالات خروجی را مجاز کند. این بدان معنی است که هر کسی که سعی در دسترسی به سرور شما داشته باشد قادر به اتصال نخواهد بود، در حالی که هر برنامه ای در سرور می تواند به دنیای خارج دسترسی پیدا کند.
قوانین UFW خود را به حالت پیش فرض برگردانید تا مطمئن شوید که می توانید این آموزش را دنبال کنید. برای تنظیم پیش فرض های استفاده شده توسط UFW، از این دستورات استفاده کنید:
ufw default deny incoming
ufw default allow outgoing
خروجی هایی مانند زیر دریافت خواهید کرد:
این دستورات پیش فرض را طوری تنظیم می کنند که ورودی ها را رد کرده و اتصالات خروجی را مجاز می کنند. این پیشفرضهای فایروال به تنهایی ممکن است برای یک کامپیوتر شخصی کافی باشد، اما سرورها معمولا باید به درخواستهای دریافتی از سوی کاربران خارجی هم پاسخ دهند. در مرحله بعد این فرآیند را شروع خواهید کرد.
مرحله 4 - اجازه دادن به اتصالات SSH
هنوز نمی توانید فایروال UFW را فعال کنید، زیرا تمام اتصالات ورودی از جمله تلاش شما برای دسترسی به سرور را رد می کند.به این معنی است که اگر میخواهید سرور شما به آن نوع درخواستها پاسخ دهد، باید قوانینی را ایجاد کنید که به اتصالات ورودی قانونی اجازه دهد(برای مثال اتصالات SSH یا HTTP) اگر از سرور ابری استفاده می کنید، احتمالا می خواهید به اتصالات SSH ورودی اجازه دهید تا بتوانید به سرور خود متصل شوید و آن را مدیریت کنید.
برای پیکربندی سرور برای اجازه دادن به اتصالات SSH ورودی، از این دستور استفاده کنید:
ufw allow ssh
این قوانین فایروال را ایجاد می کند که به همه اتصالات در پورت 22 اجازه می دهد، درگاهی که دیمن SSH به طور پیش فرض به آن گوش می دهد. UFW می داند که چه پورتی برای allow ssh گره خورده است زیرا به عنوان یک سرویس در فایل /etc/services فهرست شده است.
با این حال، در واقع می توانید قانون معادل را با تعیین پورت به جای نام سرویس بنویسید. به عنوان مثال، این دستور همان نتیجه بالا را ایجاد می کند:
ufw allow 22
اگر دیمن SSH خود را برای استفاده از پورت دیگری پیکربندی کرده اید، باید پورت مناسب را مشخص کنید. به عنوان مثال، اگر سرور SSH شما روی پورت 2233 گوش می دهد، می توانید از همین دستور استفاده کنید اما 22 را با 2233 جایگزین کنید.
اکنون که فایروال شما به گونه ای پیکربندی شده است که به اتصالات SSH ورودی اجازه دهد، می توانید آن را فعال کنید.
مرحله 5 - فعال کردن UFW
برای فعال کردن UFW از این دستور استفاده کنید:
ufw enable
هشداری دریافت خواهید کرد که می گوید این فرمان ممکن است اتصالات SSH موجود را مختل کند. شما قبلا یک قانون فایروال تنظیم کردهاید که به اتصالات SSH اجازه می دهد، بنابراین باید ادامه دهید. با y به درخواست پاسخ دهید و ENTER را بزنید.
فایروال اکنون فعال است. برای مشاهده قوانینی که تنظیم کرده اید، این دستور را اجرا کنید:
ufw status verbose
بقیه این آموزش نحوه استفاده از UFW را با جزئیات بیشتری شامل اجازه دادن و رد کردن انواع مختلف اتصالات را پوشش می دهد.
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
مرحله 6 - اجازه دادن به سایر اتصالات
در این مرحله، شما باید اجازه دهید تمام اتصالات دیگری که سرور شما نیاز دارد به درستی کار کند. اتصالاتی که باید اجازه دهید به نیازهای خاص شما بستگی دارد. الان می دانید که چگونه قوانینی بنویسید که اتصالات را بر اساس نام یا پورت سرویس مجاز می کند. قبلا این کار را برای SSH در پورت 22 انجام دادید.
شما می توانید این کار را برای HTTP در پورت 80 انجام دهید، این همان چیزی است که وب سرورهای رمزگذاری نشده استفاده می کنند. برای اجازه دادن به این نوع ترافیک، باید تایپ کنید:
ufw allow http
همچنین می توانید این کار را برای HTTPS در پورت 443 انجام دهید، این همان چیزی است که سرورهای وب رمزگذاری شده از آن استفاده می کنند. برای اجازه دادن به این نوع ترافیک، باید تایپ کنید:
ufw allow https
در هر دو سناریو، مشخص کردن پورت ها نیز کار می کند، با HTTP 80 و HTTPS 443 به عنوان مثال:
ufw allow 80
با این حال، به غیر از تعیین پورت یا سرویس شناخته شده، راه های دیگری برای اجازه دادن به اتصالات وجود دارد. در ادامه به این موضوع پرداخته می شود.
محدودههای پورت خاص
شما می توانید محدوده پورت را با UFW مشخص کنید. به عنوان مثال، برخی از برنامه ها به جای یک پورت از چندین پورت استفاده می کنند.
به عنوان مثال، برای اجازه دادن به اتصالات X11 که از پورت های 6000-6007 استفاده می کنند، از این دستورات استفاده کنید:
ufw allow 6000:6007/tcp
ufw allow 6000:6007/udp
هنگام تعیین محدوده پورت با UFW، باید پروتکلی (tcp یا udp) را مشخص کنید که قوانین باید روی آن اعمال شوند. این قبلا ذکر نشده بود زیرا مشخص نکردن پروتکل به طور خودکار به هر دو پروتکل اجازه می دهد، که در بیشتر موارد خوب است.
آدرسهای IP خاص
هنگام کار با UFW، می توانید آدرسهای IP را نیز مشخص کنید. به عنوان مثال، اگر میخواهید اتصالات از یک آدرس IP خاص، مانند آدرس IP محل کار یا خانه 1.1.1.1 را مجاز کنید، باید from و سپس آدرس IP را مشخص کنید:
ufw allow from 1.1.1.1
همچنین میتوانید پورت خاصی را که آدرس IP مجاز به اتصال به آن است، با افزودن to any port و سپس شماره پورت مشخص کنید. به عنوان مثال، اگر می خواهید به 1.1.1.1 اجازه دهید به پورت 22 (SSH) متصل شود، از این دستور استفاده کنید:
ufw allow from 1.1.1.1 to any port 22
سابنتها
اگر میخواهید به سابنتی از آدرسهای IP اجازه دهید، میتوانید این کار را با استفاده از نماد CIDR برای تعیین یک netmask انجام دهید. به عنوان مثال، اگر می خواهید تمام آدرس های IP از 1.1.1.1تا 1.1.1.254 را مجاز کنید، می توانید از این دستور استفاده کنید:
ufw allow from 1.1.1.0/24
به همین ترتیب، میتوانید پورت destination را نیز مشخص کنید که سابنت 1.1.1.1/24 مجاز به اتصال به آن است. دوباره، با استفاده از پورت 22 (SSH) به عنوان مثال:
ufw allow from 1.1.1.1/24 to any port 22
اتصالات به یک Network Interface خاص
اگر میخواهید یک قانون فایروال ایجاد کنید که فقط برای یک network interface خاص اعمال شود، میتوانید این کار را با تعیین allow in on و به دنبال آن نام network interface انجام دهید.
قبل از ادامه، جستجوی رابط های شبکه خود مفید خواهد بود. برای این کار از این دستور استفاده کنید:
ip addr
خروجی بالا نام رابط شبکه را نشان می دهد. آنها معمولا نامهایی مانند eth0 یا lo دارند.
برای مثال، اگر سرور شما دارای یک رابط شبکه عمومی به نام eth0 است، می توانید با این دستور به ترافیک HTTP اجازه دهید:
ufw allow in on eth0 to any port 80
انجام این کار به سرور شما اجازه می دهد تا درخواست های HTTP را از اینترنت عمومی دریافت کند.
یا اگر می خواهید یک سرور پایگاه داده MySQL (پورت 3306) به اتصالات در رابط شبکه خصوصی eth1 گوش دهد، می توانید از این دستور استفاده کنید:
ufw allow in on eth1 to any port 3306
این به سرورهای دیگر در شبکه خصوصی شما اجازه می دهد تا به پایگاه داده MySQL شما متصل شوند.
مرحله 7 - رد اتصالات (Denying Connections)
اگر سیاستهای پیشفرض (default policy) اتصالات ورودی را تغییر ندادهاید، UFW طوری پیکربندی شده است که همه اتصالات ورودی را رد کند. به طور کلی، این فرآیند ایجاد یک policy برای فایروال ایمن را با الزام شما به ایجاد قوانینی که به پورتها و آدرس های IP خاصی اجازه عبور می دهد، ساده می کند.
گاهی اوقات میخواهید اتصالات خاصی را بر اساس آدرس IP منبع یا سابنت رد کنید، البته شاید به این دلیل که میدانید سرور شما از آنجا مورد حمله قرار میگیرد. همچنین، اگر میخواهید سیاست ورودی پیشفرض خود را به allow تغییر دهید (که توصیه نمیشود)، باید قوانین deny کردن سرویسها یا آدرسهای IP را که نمیخواهید به آنها اجازه اتصال دهید، ایجاد کنید.
برای نوشتن قوانین deny ، می توانید از دستورات توضیح داده شده در بالا استفاده کنید و اجازه را با deny جایگزین کنید.
به عنوان مثال، برای رد اتصالات HTTP، می توانید از این دستور استفاده کنید:
ufw deny http
یا اگر می خواهید تمام اتصالات 1.1.1.1 را رد کنید، می توانید از این دستور استفاده کنید:
ufw deny from 1.1.1.1
اکنون، میتوانید نحوه اجرای قوانین حذف را یاد بگیرید.
مرحله 8 - حذف قوانین
دانستن نحوه حذف قوانین فایروال به همان اندازه مهم است که بدانید چگونه آنها را ایجاد کنید. دو راه برای تعیین قوانین حذف وجود دارد: با شماره قانون یا توسط خود قانون. این شبیه به نحوه تعیین قوانین هنگام ایجاد آنها است.
با شماره قانون
اگر از شماره قانون برای حذف قوانین فایروال استفاده می کنید، اولین کاری که می خواهید انجام دهید این است که لیستی از قوانین فایروال خود را دریافت کنید. دستور status در UFW دارای گزینه numbered است که اعداد را در کنار هر قانون نمایش می دهد:
ufw status numbered
اگر تصمیم دارید که قانون 2 را حذف کنید، که به اتصالات HTTP در پورت 80 اجازه می دهد، می توانید این مورد را در دستور delete در UFW زیر مشخص کنید:
ufw delete 2
این یک اعلان تأیید نشان می دهد که می توانید با y/n پاسخ دهید. با تایپ y قانون 2 حذف می شود. توجه داشته باشید که اگر IPv6 را فعال کرده اید، می خواهید قانون IPv6 مربوطه را نیز حذف کنید.
طبق قانون واقعی(actual)
جایگزین اعداد قوانین این است که قانون واقعی (actual) را برای حذف مشخص کنید. به عنوان مثال، اگر می خواهید قانون allow http را حذف کنید، می توانید آن را به این صورت بنویسید:
ufw delete allow http
همچنین میتوانید قانون را با allow 80 به جای نام سرویس مشخص کنید:
ufw delete allow 80
این روش هر دو قوانین IPv4 و IPv6 را در صورت وجود حذف می کند.
مرحله 9 - بررسی وضعیت UFW و قوانین
در هر زمان می توانید وضعیت UFW را با این دستور بررسی کنید:
ufw status verbose
اگر UFW غیرفعال باشد که پیشفرض است، خروجی این خواهد بود:
اگر UFW فعال باشد، که اگر مرحله 3 را دنبال کنید باید فعال باشد، خروجی می گوید که فعال است و قوانینی را که تنظیم کرده اید فهرست می کند. به عنوان مثال، اگر فایروال طوری تنظیم شده باشد که اجازه اتصال SSH (پورت 22) را از هر جایی بدهد، خروجی ممکن است شامل موارد زیر باشد:
اگر می خواهید بررسی کنید UFW چگونه فایروال را پیکربندی کرده است از دستور status استفاده کنید.
مرحله 10 - غیرفعال کردن یا بازنشانی UFW (اختیاری)
اگر نمی خواهید از UFW استفاده کنید، می توانید آن را با این دستور غیرفعال کنید:
ufw disable
هر قانونی که با UFW ایجاد کردید دیگر فعال نخواهد بود. اگر بخواهید بعدا آن را فعال کنید، همیشه می توانید ufw enable را اجرا کنید.
اگر قبلا قوانین UFW را پیکربندی کردهاید، اما تصمیم دارید که می خواهید دوباره شروع کنید، می توانید از دستور reset استفاده کنید:
ufw reset
با این کار UFW غیرفعال میشود و قوانینی که قبلا تعریف کردهاید حذف می شود. به خاطر داشته باشید که اگر در هر زمانی آنها را تغییر دهید، سیاستهای پیشفرض به تنظیمات اصلی خود تغییر نمیکنند.
نتیجه
فایروال پیکربندی شده است تا حداقل اتصالات SSH را مجاز کند. مطمئن شوید که به سایر اتصالات ورودی که سرور شما نیاز دارد اجازه داده باشید، در حالی که اتصالات غیر ضروری را محدود کردهاید. این موجب میشود که سرور هم کاربردی و هم امن باشد.
توجه کنید که تنظیمات اشتباه در فایروال ممکن است دسترسی شما از سرور را از بین ببرد، برایرفع اینمشکل میتوانید از طریق کنسول تحت وب در محیط کاربری پارسدو به سرور دسترسی و تنظیمات فایروال را اصلاح نمائید.