آشنایی با فایروال UFW لینوکس و نحوه تنظیم آن در اوبونتو

فایروال UFW
دسته بندی: مقالات برچسب ها: ,

UFW یا Uncomplicated Firewall به معنای «فایروال ساده‌سازی شده» یک فایروال لینوکس است که به عنوان یک رابط کاربری آسان برای مدیریت و پیکربندی فایروال iptables در سیستم‌عامل‌های مبتنی بر لینوکس، مانند اوبونتو، عمل می‌کند. هدف از طراحی UFW، ساده‌سازی فرایند ایجاد قوانین فایروال و مدیریت آن‌ها است، به طوری که حتی کاربران تازه‌کار نیز بتوانند به راحتی امنیت شبکه خود را مدیریت کنند.

ویژگی‌های اصلی UFW

  1. رابط کاربری ساده: با استفاده از دستورات ساده، می‌توانید به سرعت قوانین فایروال را اضافه، حذف یا ویرایش کنید.
  2. پیش‌فرض‌های امنیتی قوی: به‌طور پیش‌فرض، تمامی اتصالات ورودی مسدود و تمامی اتصالات خروجی مجاز است، که می‌تواند امنیت سیستم را بهبود بخشد.
  3. پشتیبانی از IPv4 و IPv6: UFW به‌طور کامل از هر دو پروتکل اینترنتی پشتیبانی می‌کند.
  4. پروفایل‌های کاربردی: بسیاری از برنامه‌ها و سرویس‌ها پروفایل‌هایی در UFW دارند که به شما امکان می‌دهد بدون نیاز به تنظیم دستی، دسترسی آن‌ها را مدیریت کنید.

چرا از UFW استفاده کنیم؟

UFW برای کاربرانی که می‌خواهند با دستورات ساده و سریع امنیت شبکه خود را کنترل کنند، انتخاب بسیار مناسبی است. این ابزار برای سرورهای اوبونتو و کاربران خانگی که نیاز به محافظت از سیستم خود در برابر دسترسی‌های غیرمجاز دارند، بسیار مفید است.

کاربردهای UFW در لینوکس

UFW به دلیل سادگی و کاربرپسند بودن، به‌عنوان یکی از محبوب‌ترین ابزارهای مدیریت فایروال در سیستم‌های مبتنی بر لینوکس شناخته می‌شود. در ادامه برخی از کاربردهای مهم UFW در لینوکس را توضیح می‌دهیم.

محافظت از سیستم در برابر حملات

UFW به کاربران امکان می‌دهد تا با تنظیم قوانین امنیتی، ترافیک ورودی و خروجی را کنترل کنند و از سیستم در برابر حملات سایبری مانند حملات DDoS یا تلاش‌های نفوذ محافظت کنند.

مدیریت دسترسی‌ها به سرور

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

ایجاد قوانین ترافیک شبکه

کاربران می‌توانند قوانین خاصی را برای مجاز یا مسدود کردن ترافیک از آدرس‌های IP مشخص یا محدوده‌های IP ایجاد کنند. این قابلیت برای مدیریت دسترسی‌های خاص، مانند اجازه دادن به یک IP خاص برای دسترسی به سرور، بسیار کاربردی است.

کنترل ترافیک بر اساس پروتکل

UFW می‌تواند ترافیک را بر اساس پروتکل‌های TCP و UDP کنترل کند. این ویژگی به کاربران امکان می‌دهد تا برای هر پروتکل به صورت جداگانه قوانین تنظیم کنند.

پشتیبانی از پروفایل‌ها

بسیاری از برنامه‌ها و سرویس‌ها پروفایل‌هایی در UFW دارند که باعث می‌شود کاربران به راحتی قوانین مربوط به آن‌ها را فعال کنند. برای مثال، می‌توانید با یک دستور ساده، اتصالات به سرور وب Apache یا سرور SSH را مدیریت کنید.

مدیریت ترافیک خروجی

به غیر از ترافیک ورودی، UFW می‌تواند ترافیک خروجی را نیز کنترل کند. این ویژگی به کاربران اجازه می‌دهد تا دسترسی برنامه‌های مختلف به اینترنت را محدود کنند.

ساده‌سازی مدیریت فایروال

UFW با ارائه دستورات ساده، کار را برای کاربران تازه‌کار آسان می‌کند و به آن‌ها اجازه می‌دهد تا بدون نیاز به یادگیری دستورات پیچیده iptables، فایروال خود را مدیریت کنند.

ایجاد امنیت در شبکه‌های خانگی و سرورها

UFW برای استفاده در شبکه‌های خانگی یا سرورهای لینوکسی بسیار مناسب است و می‌تواند به راحتی امنیت را در محیط‌های مختلف تأمین کند.

نحوه پیکربندی و تنظیم UFW در لینوکس

پیش‌نیازها

برای دنبال کردن این آموزش، به یک سرور اوبونتو نیاز دارید که یک کاربر غیر ریشه با دسترسی‌های sudo در آن تنظیم شده باشد.

UFW به‌طور پیش‌فرض روی اوبونتو نصب شده است. اگر به هر دلیلی حذف شده، می‌توانید با دستور زیر نصب کنید:

sudo apt install ufw

مرحله 1 — اطمینان از فعال بودن IPv6

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

sudo nano /etc/default/ufw

مقدار IPV6 باید روی yes تنظیم شده باشد:

IPV6=yes

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

وقتی در مراحل بعدی این راهنما UFW را فعال می‌کنید، به گونه‌ای پیکربندی می‌شود که هم قوانین فایروال IPv4 و هم قوانین IPv6 را اعمال کند.

مرحله 2 — تنظیم سیاست‌های پیش‌فرض

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

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

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

برای تنظیم سیاست پیش‌فرض UFW برای مسدود کردن اتصالات ورودی، این دستور را اجرا کنید:

sudo ufw default deny incoming
sudo ufw default allow outgoing

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

مرحله 3 — مجاز کردن اتصالات SSH

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

مجاز کردن پروفایل OpenSSH در UFW

پس از نصب، بیشتر برنامه‌هایی که به اتصالات شبکه نیاز دارند، یک پروفایل کاربردی در UFW ثبت می‌کنند که به کاربران امکان می‌دهد به‌سرعت دسترسی به یک سرویس را مجاز یا مسدود کنند. برای بررسی پروفایل‌هایی که در حال حاضر در UFW ثبت شده‌اند، می‌توانید از این دستور استفاده کنید:

sudo ufw app list

برای فعال کردن پروفایل OpenSSH، دستور زیر را اجرا کنید:

sudo ufw allow OpenSSH

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

مجاز کردن SSH با نام سرویس

راه دیگری برای پیکربندی UFW برای مجاز کردن اتصالات SSH این است که به نام سرویس آن اشاره کنید:

sudo ufw allow ssh

UFW با استفاده از فایل /etc/services می‌داند که هر سرویس از کدام پورت‌ها و پروتکل‌ها استفاده می‌کند.

مجاز کردن SSH با شماره پورت

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

sudo ufw allow 22

اگر سرویس SSH شما روی پورت دیگری تنظیم شده است، باید شماره پورت مناسب را مشخص کنید. برای مثال، اگر سرور SSH روی پورت 2222 گوش می‌دهد، از این دستور استفاده کنید:

sudo ufw allow 2222

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

مرحله 4 — فعال‌سازی UFW

فایروال شما اکنون باید برای مجاز کردن اتصالات SSH پیکربندی شده باشد. برای بررسی قوانینی که تا این لحظه اضافه شده‌اند، حتی اگر فایروال هنوز غیرفعال باشد، می‌توانید از دستور زیر استفاده کنید:

sudo ufw show added

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

sudo ufw enable

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

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

sudo ufw status verbose

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

مرحله 5 — مجاز کردن اتصالات دیگر

در این مرحله، باید تمامی اتصالات دیگری که سرور شما باید به آن‌ها پاسخ دهد را مجاز کنید. نوع اتصالاتی که باید مجاز شوند، به نیازهای خاص شما بستگی دارد. شما قبلاً یاد گرفته‌اید که چگونه قوانینی برای مجاز کردن اتصالات بر اساس یک پروفایل برنامه، نام سرویس یا پورت بنویسید؛ مثلاً این کار را برای SSH روی پورت 22 انجام داده‌اید. می‌توانید این کار را برای موارد زیر نیز انجام دهید:

HTTP روی پورت 80، که برای سرورهای وب بدون رمزگذاری استفاده می‌شود: sudo ufw allow http یا sudo ufw allow 80
HTTPS روی پورت 443، که برای سرورهای وب رمزگذاری شده استفاده می‌شود: sudo ufw allow https یا sudo ufw allow 443
Apache با HTTP و HTTPS: sudo ufw allow ‘Apache Full’
Nginx با HTTP و HTTPS: sudo ufw allow ‘Nginx Full’

فراموش نکنید که پروفایل‌های کاربردی موجود برای سرور خود را با استفاده از دستور زیر بررسی کنید:

sudo ufw app list

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

می‌توانید محدوده‌های پورت را با UFW مشخص کنید. برخی از برنامه‌ها به‌جای یک پورت، از چندین پورت استفاده می‌کنند.

برای مثال، برای مجاز کردن اتصالات X11 که از پورت‌های 6000 تا 6007 استفاده می‌کنند، از این دستورات استفاده کنید:

sudo ufw allow 6000:6007/tcp

sudo ufw allow 6000:6007/udp

وقتی از محدوده‌های پورت استفاده می‌کنید، باید پروتکل (tcp یا udp) را مشخص کنید.

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

هنگام کار با UFW، می‌توانید آدرس‌های IP خاصی را در قوانین خود مشخص کنید. برای مثال، اگر می‌خواهید اتصالات از یک آدرس IP مشخص، مانند 203.0.113.4 (مثلاً IP محل کار یا منزل شما)، مجاز باشد:

sudo ufw allow from 203.0.113.4

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

sudo ufw allow from 203.0.113.4 to any port 22

زیرشبکه‌ها

اگر می‌خواهید یک زیرشبکه از آدرس‌های IP را مجاز کنید، می‌توانید از نت‌ماسک با استفاده از فرمت CIDR استفاده کنید. برای مثال، اگر می‌خواهید تمامی آدرس‌های IP از 203.0.113.1 تا 203.0.113.254 را مجاز کنید:

sudo ufw allow from 203.0.113.0/24

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

sudo ufw allow from 203.0.113.0/24 to any port 22

اتصالات به یک رابط شبکه خاص

اگر می‌خواهید یک قانون فایروال ایجاد کنید که فقط برای یک رابط شبکه خاص اعمال شود، می‌توانید با استفاده از “allow in on” و نام رابط شبکه این کار را انجام دهید.

برای مشاهده رابط‌های شبکه خود، از این دستور استفاده کنید:

ip addr

اگر سرور شما یک رابط شبکه عمومی به نام eth0 دارد، می‌توانید ترافیک HTTP (پورت 80) را به آن مجاز کنید:

sudo ufw allow in on eth0 to any port 80

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

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

sudo ufw allow in on eth1 to any port 3306

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

مرحله 6 — مسدود کردن اتصالات

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

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

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

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

sudo ufw deny http

یا اگر می‌خواهید تمامی اتصالات از آدرس IP خاصی مانند 203.0.113.4 را مسدود کنید، از این دستور استفاده کنید:

sudo ufw deny from 203.0.113.4

در برخی موارد، ممکن است بخواهید اتصالات خروجی را نیز از سرور مسدود کنید. برای مسدود کردن تمامی کاربران از استفاده از یک پورت خاص روی سرور، مانند پورت 25 برای ترافیک SMTP، می‌توانید از deny out به همراه شماره پورت استفاده کنید:

sudo ufw deny out 25

این دستور تمامی ترافیک خروجی SMTP روی سرور را مسدود می‌کند.

مرحله 7 — حذف قوانین فایروال

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

حذف یک قانون UFW بر اساس شماره

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

sudo ufw status numbered

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

sudo ufw delete 2

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

حذف یک قانون UFW بر اساس نام

به‌جای استفاده از شماره قوانین، می‌توانید به یک قانون با نام خوانای آن اشاره کنید. این نام معمولاً بر اساس نوع قانون (معمولاً allow یا deny) و نام سرویس یا شماره پورتی است که هدف قانون بوده یا نام پروفایل کاربردی است. به عنوان مثال، اگر بخواهید قانونی را که برای پروفایل کاربردی Apache Full قبلاً فعال کرده بودید، حذف کنید، می‌توانید از این دستور استفاده کنید:

sudo ufw delete allow “Apache Full”

دستور delete به همین صورت برای قوانینی که با نام سرویس یا پورت مشخص شده‌اند عمل می‌کند. برای مثال، اگر قبلاً قانونی برای مجاز کردن اتصالات HTTP با دستور sudo ufw allow http تنظیم کرده‌اید، می‌توانید آن قانون را به این شکل حذف کنید:

sudo ufw delete allow http

از آنجا که نام سرویس‌ها با شماره پورت‌ها قابل تعویض هستند، می‌توانید همان قانون را به‌صورت allow 80 نیز حذف کنید، به جای allow http:

sudo ufw delete allow 80

هنگام حذف قوانین UFW با نام، هر دو قانون IPv4 و IPv6 حذف می‌شوند، اگر وجود داشته باشند.

مرحله 8 — بررسی وضعیت UFW

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

sudo ufw status verbose

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

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

مرحله 9 — غیرفعال یا بازنشانی فایروال

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

sudo ufw disable

با غیرفعال شدن UFW، قوانین ایجاد شده دیگر فعال نخواهند بود. در صورت نیاز، می‌توانید با دستور sudo ufw enable فایروال را دوباره فعال کنید.

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

sudo ufw reset

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

جمع‌بندی

UFW یا Uncomplicated Firewall به‌معنای «فایروال ساده‌سازی شده»، یک ابزار مدیریتی قدرتمند اما آسان برای پیکربندی فایروال iptables در سیستم‌های لینوکسی است، به‌ویژه در اوبونتو. هدف اصلی UFW، ساده‌سازی فرایند ایجاد و مدیریت قوانین فایروال است، به‌طوری که حتی کاربران تازه‌کار نیز بتوانند به‌راحتی امنیت شبکه خود را کنترل کنند.

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