UFW یا Uncomplicated Firewall به معنای «فایروال سادهسازی شده» یک فایروال لینوکس است که به عنوان یک رابط کاربری آسان برای مدیریت و پیکربندی فایروال iptables در سیستمعاملهای مبتنی بر لینوکس، مانند اوبونتو، عمل میکند. هدف از طراحی UFW، سادهسازی فرایند ایجاد قوانین فایروال و مدیریت آنها است، به طوری که حتی کاربران تازهکار نیز بتوانند به راحتی امنیت شبکه خود را مدیریت کنند.
ویژگیهای اصلی UFW
- رابط کاربری ساده: با استفاده از دستورات ساده، میتوانید به سرعت قوانین فایروال را اضافه، حذف یا ویرایش کنید.
- پیشفرضهای امنیتی قوی: بهطور پیشفرض، تمامی اتصالات ورودی مسدود و تمامی اتصالات خروجی مجاز است، که میتواند امنیت سیستم را بهبود بخشد.
- پشتیبانی از IPv4 و IPv6: UFW بهطور کامل از هر دو پروتکل اینترنتی پشتیبانی میکند.
- پروفایلهای کاربردی: بسیاری از برنامهها و سرویسها پروفایلهایی در 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 بهطور پیشفرض روی اوبونتو نصب شده است. اگر به هر دلیلی حذف شده، میتوانید با دستور زیر نصب کنید:
مرحله 1 — اطمینان از فعال بودن IPv6
در نسخههای جدید اوبونتو، IPv6 بهطور پیشفرض فعال است. در عمل، این بدان معناست که بیشتر قوانین فایروالی که به سرور اضافه میشوند، شامل نسخههای IPv4 و IPv6 خواهند بود، که نسخه IPv6 در خروجی دستور وضعیت UFW با v6 مشخص میشود. برای اطمینان از فعال بودن IPv6، میتوانید فایل تنظیمات UFW را در مسیر /etc/default/ufw بررسی کنید. این فایل را با استفاده از ویرایشگر متنی مورد علاقه خود، مانند nano باز کنید:
مقدار IPV6 باید روی yes تنظیم شده باشد:
فایل را ذخیره و ببندید. اگر از ویرایشگر nano استفاده میکنید، میتوانید با فشردن کلیدهای CTRL+X
، سپس Y
و Enter برای تأیید، این کار را انجام دهید.
وقتی در مراحل بعدی این راهنما UFW را فعال میکنید، به گونهای پیکربندی میشود که هم قوانین فایروال IPv4 و هم قوانین IPv6 را اعمال کند.
مرحله 2 — تنظیم سیاستهای پیشفرض
اگر بهتازگی شروع به کار با UFW کردهاید، یک گام اول مناسب این است که سیاستهای پیشفرض فایروال خود را بررسی کنید. این قوانین مشخص میکنند که چگونه باید با ترافیکی که بهطور واضح با هیچ قانون دیگری مطابقت ندارد، برخورد شود.
بهطور پیشفرض، UFW به گونهای تنظیم شده که تمامی اتصالات ورودی را مسدود و تمامی اتصالات خروجی را مجاز میکند. این بدان معناست که هیچکس نمیتواند به سرور شما دسترسی پیدا کند، اما هر برنامهای در سرور شما میتواند با دنیای بیرون ارتباط برقرار کند. قوانین اضافی برای مجاز کردن سرویسها و پورتهای خاص بهعنوان استثناهایی به این سیاست کلی اضافه میشوند.
برای اطمینان از اینکه میتوانید مراحل این آموزش را دنبال کنید، اکنون سیاستهای پیشفرض UFW را برای ترافیک ورودی و خروجی تنظیم میکنید.
برای تنظیم سیاست پیشفرض UFW برای مسدود کردن اتصالات ورودی، این دستور را اجرا کنید:
sudo ufw default allow outgoing
این دستورات، تنظیمات پیشفرض را برای مسدود کردن تمامی اتصالات ورودی و مجاز کردن تمامی اتصالات خروجی اعمال میکنند. این تنظیمات پیشفرض ممکن است برای یک کامپیوتر شخصی کافی باشند، اما سرورها معمولاً باید به درخواستهای ورودی از کاربران خارجی پاسخ دهند. در ادامه به این موضوع خواهیم پرداخت.
مرحله 3 — مجاز کردن اتصالات SSH
اگر اکنون فایروال UFW خود را فعال کنید، تمامی اتصالات ورودی مسدود خواهند شد. به این ترتیب، لازم است قوانینی ایجاد کنید که بهطور صریح اتصالات ورودی معتبر، مانند SSH یا HTTP، را مجاز کنند تا سرور شما بتواند به این درخواستها پاسخ دهد. اگر از یک سرور ابری استفاده میکنید، احتمالاً باید اتصالات ورودی SSH را مجاز کنید تا بتوانید به سرور متصل شده و آن را مدیریت کنید.
مجاز کردن پروفایل OpenSSH در UFW
پس از نصب، بیشتر برنامههایی که به اتصالات شبکه نیاز دارند، یک پروفایل کاربردی در UFW ثبت میکنند که به کاربران امکان میدهد بهسرعت دسترسی به یک سرویس را مجاز یا مسدود کنند. برای بررسی پروفایلهایی که در حال حاضر در UFW ثبت شدهاند، میتوانید از این دستور استفاده کنید:
برای فعال کردن پروفایل OpenSSH، دستور زیر را اجرا کنید:
این دستور قوانین فایروال را برای مجاز کردن تمامی اتصالات روی پورت 22 ایجاد میکند، که بهطور پیشفرض پورت مورد استفاده توسط سرویس SSH است.
مجاز کردن SSH با نام سرویس
راه دیگری برای پیکربندی UFW برای مجاز کردن اتصالات SSH این است که به نام سرویس آن اشاره کنید:
UFW با استفاده از فایل /etc/services
میداند که هر سرویس از کدام پورتها و پروتکلها استفاده میکند.
مجاز کردن SSH با شماره پورت
بهطور جایگزین، میتوانید قانون معادل را با مشخص کردن شماره پورت به جای پروفایل کاربردی یا نام سرویس بنویسید. بهعنوان مثال، این دستور عملکردی مشابه مثالهای قبلی دارد:
اگر سرویس SSH شما روی پورت دیگری تنظیم شده است، باید شماره پورت مناسب را مشخص کنید. برای مثال، اگر سرور SSH روی پورت 2222 گوش میدهد، از این دستور استفاده کنید:
اکنون که فایروال شما برای مجاز کردن اتصالات SSH پیکربندی شده است، میتوانید آن را فعال کنید.
مرحله 4 — فعالسازی UFW
فایروال شما اکنون باید برای مجاز کردن اتصالات SSH پیکربندی شده باشد. برای بررسی قوانینی که تا این لحظه اضافه شدهاند، حتی اگر فایروال هنوز غیرفعال باشد، میتوانید از دستور زیر استفاده کنید:
پس از تأیید اینکه قانونی برای مجاز کردن اتصالات SSH وجود دارد، میتوانید فایروال را با دستور زیر فعال کنید:
هشداری دریافت خواهید کرد که میگوید این دستور ممکن است اتصالات SSH موجود را قطع کند. با این حال، از آنجا که قبلاً قانون لازم برای مجاز کردن اتصالات SSH را تنظیم کردهاید، ادامه دادن باید مشکلی ایجاد نکند. با تایپ کردن y و فشار دادن Enter به پیام پاسخ دهید.
اکنون فایروال فعال است. برای مشاهده قوانینی که تنظیم شدهاند، میتوانید دستور زیر را اجرا کنید:
بقیه این آموزش شامل جزئیات بیشتری در مورد نحوه استفاده از UFW، از جمله مجاز یا مسدود کردن انواع مختلف اتصالات، میباشد.
مرحله 5 — مجاز کردن اتصالات دیگر
در این مرحله، باید تمامی اتصالات دیگری که سرور شما باید به آنها پاسخ دهد را مجاز کنید. نوع اتصالاتی که باید مجاز شوند، به نیازهای خاص شما بستگی دارد. شما قبلاً یاد گرفتهاید که چگونه قوانینی برای مجاز کردن اتصالات بر اساس یک پروفایل برنامه، نام سرویس یا پورت بنویسید؛ مثلاً این کار را برای SSH روی پورت 22 انجام دادهاید. میتوانید این کار را برای موارد زیر نیز انجام دهید:
فراموش نکنید که پروفایلهای کاربردی موجود برای سرور خود را با استفاده از دستور زیر بررسی کنید:
محدودههای پورت خاص
میتوانید محدودههای پورت را با UFW مشخص کنید. برخی از برنامهها بهجای یک پورت، از چندین پورت استفاده میکنند.
برای مثال، برای مجاز کردن اتصالات X11 که از پورتهای 6000 تا 6007 استفاده میکنند، از این دستورات استفاده کنید:
sudo ufw allow 6000:6007/udp
وقتی از محدودههای پورت استفاده میکنید، باید پروتکل (tcp یا udp) را مشخص کنید.
آدرسهای IP خاص
هنگام کار با UFW، میتوانید آدرسهای IP خاصی را در قوانین خود مشخص کنید. برای مثال، اگر میخواهید اتصالات از یک آدرس IP مشخص، مانند 203.0.113.4 (مثلاً IP محل کار یا منزل شما)، مجاز باشد:
همچنین میتوانید پورتی را که این آدرس IP مجاز به اتصال به آن است، مشخص کنید. بهعنوان مثال، اگر میخواهید 203.0.113.4 به پورت 22 (SSH) متصل شود:
زیرشبکهها
اگر میخواهید یک زیرشبکه از آدرسهای IP را مجاز کنید، میتوانید از نتماسک با استفاده از فرمت CIDR استفاده کنید. برای مثال، اگر میخواهید تمامی آدرسهای IP از 203.0.113.1 تا 203.0.113.254 را مجاز کنید:
همچنین میتوانید پورتی را که زیرشبکه 203.0.113.0/24 به آن متصل میشود، مشخص کنید. بهعنوان مثال، برای مجاز کردن اتصالات به پورت 22 (SSH):
اتصالات به یک رابط شبکه خاص
اگر میخواهید یک قانون فایروال ایجاد کنید که فقط برای یک رابط شبکه خاص اعمال شود، میتوانید با استفاده از “allow in on” و نام رابط شبکه این کار را انجام دهید.
برای مشاهده رابطهای شبکه خود، از این دستور استفاده کنید:
اگر سرور شما یک رابط شبکه عمومی به نام eth0 دارد، میتوانید ترافیک HTTP (پورت 80) را به آن مجاز کنید:
این دستور به سرور شما اجازه میدهد تا درخواستهای HTTP را از اینترنت عمومی دریافت کند.
یا اگر میخواهید سرور پایگاه داده MySQL (پورت 3306) شما فقط روی رابط شبکه خصوصی eth1 گوش دهد:
این قانون به سرورهای دیگر در شبکه خصوصی شما اجازه میدهد تا به پایگاه داده MySQL متصل شوند.
مرحله 6 — مسدود کردن اتصالات
اگر سیاست پیشفرض برای اتصالات ورودی را تغییر ندادهاید، UFW بهگونهای پیکربندی شده است که تمامی اتصالات ورودی را مسدود کند. بهطور کلی، این امر فرایند ایجاد یک سیاست فایروال امن را سادهتر میکند، زیرا شما باید قوانینی ایجاد کنید که بهطور صریح پورتها و آدرسهای IP خاصی را مجاز کنند.
با این حال، گاهی اوقات ممکن است بخواهید اتصالات خاصی را بر اساس آدرس IP منبع یا زیرشبکه مسدود کنید؛ شاید به این دلیل که میدانید سرور شما از آنجا مورد حمله قرار گرفته است. همچنین، اگر بخواهید سیاست پیشفرض ورودی را به حالت مجاز تغییر دهید (که توصیه نمیشود)، باید برای هر سرویس یا آدرس IP که نمیخواهید اتصالاتی داشته باشد، قوانین مسدودکننده ایجاد کنید.
برای نوشتن قوانین مسدودکننده، میتوانید از دستورات توضیح داده شده در مراحل قبلی استفاده کنید، با این تفاوت که allow را با deny جایگزین کنید.
برای مثال، برای مسدود کردن اتصالات HTTP میتوانید از این دستور استفاده کنید:
یا اگر میخواهید تمامی اتصالات از آدرس IP خاصی مانند 203.0.113.4 را مسدود کنید، از این دستور استفاده کنید:
در برخی موارد، ممکن است بخواهید اتصالات خروجی را نیز از سرور مسدود کنید. برای مسدود کردن تمامی کاربران از استفاده از یک پورت خاص روی سرور، مانند پورت 25 برای ترافیک SMTP، میتوانید از deny out به همراه شماره پورت استفاده کنید:
این دستور تمامی ترافیک خروجی SMTP روی سرور را مسدود میکند.
مرحله 7 — حذف قوانین فایروال
دانستن نحوه حذف قوانین فایروال به همان اندازه ایجاد آنها مهم است. دو روش مختلف برای مشخص کردن قوانینی که میخواهید حذف کنید وجود دارد: با استفاده از شماره قانون یا نام خوانا (مشابه نحوهای که قوانین هنگام ایجاد مشخص شده بودند).
حذف یک قانون UFW بر اساس شماره
برای حذف یک قانون UFW بر اساس شماره، ابتدا باید فهرستی شمارهگذاریشده از تمامی قوانین فایروال خود بگیرید. دستور status در UFW گزینهای دارد که شمارهها را در کنار هر قانون نشان میدهد، به این صورت:
اگر تصمیم گرفتید که قانون شماره 2، یعنی قانونی که اتصالات پورت 80 (HTTP) را مجاز میکند، حذف کنید، میتوانید این را در دستور حذف UFW به این شکل مشخص کنید:
این دستور تأییدیه میخواهد و سپس قانون شماره 2 را، که اتصالات HTTP را مجاز میکرد، حذف میکند. توجه داشته باشید که اگر IPv6 فعال باشد، باید قانون معادل IPv6 را نیز حذف کنید.
حذف یک قانون UFW بر اساس نام
بهجای استفاده از شماره قوانین، میتوانید به یک قانون با نام خوانای آن اشاره کنید. این نام معمولاً بر اساس نوع قانون (معمولاً allow یا deny) و نام سرویس یا شماره پورتی است که هدف قانون بوده یا نام پروفایل کاربردی است. به عنوان مثال، اگر بخواهید قانونی را که برای پروفایل کاربردی Apache Full قبلاً فعال کرده بودید، حذف کنید، میتوانید از این دستور استفاده کنید:
دستور delete به همین صورت برای قوانینی که با نام سرویس یا پورت مشخص شدهاند عمل میکند. برای مثال، اگر قبلاً قانونی برای مجاز کردن اتصالات HTTP با دستور sudo ufw allow http تنظیم کردهاید، میتوانید آن قانون را به این شکل حذف کنید:
از آنجا که نام سرویسها با شماره پورتها قابل تعویض هستند، میتوانید همان قانون را بهصورت allow 80 نیز حذف کنید، به جای allow http:
هنگام حذف قوانین UFW با نام، هر دو قانون IPv4 و IPv6 حذف میشوند، اگر وجود داشته باشند.
مرحله 8 — بررسی وضعیت UFW
در هر زمانی میتوانید وضعیت UFW را با این دستور بررسی کنید:
اگر UFW فعال باشد (که اگر مرحله 3 را دنبال کرده باشید باید اینطور باشد)، خروجی نشان میدهد که فعال است و تمامی قوانینی که تنظیم شدهاند را فهرست میکند. برای مثال، اگر فایروال برای مجاز کردن اتصالات SSH (پورت 22) از هر جایی تنظیم شده باشد.
از دستور status
استفاده کنید تا ببینید UFW چگونه فایروال را پیکربندی کرده است.
مرحله 9 — غیرفعال یا بازنشانی فایروال
اگر تصمیم گرفتید که نمیخواهید از فایروال UFW استفاده کنید، میتوانید آن را با این دستور غیرفعال کنید:
با غیرفعال شدن UFW، قوانین ایجاد شده دیگر فعال نخواهند بود. در صورت نیاز، میتوانید با دستور sudo ufw enable فایروال را دوباره فعال کنید.
اگر قبلاً قوانین UFW را تنظیم کردهاید اما تصمیم گرفتید که میخواهید از ابتدا شروع کنید، میتوانید از دستور بازنشانی استفاده کنید:
این دستور UFW را غیرفعال کرده و تمامی قوانین تعریفشده قبلی را حذف میکند. این کار باید به شما یک شروع تازه با UFW بدهد. توجه داشته باشید که سیاستهای پیشفرض تغییر نخواهند کرد، اگر قبلاً آنها را اصلاح کرده باشید.
جمعبندی
UFW یا Uncomplicated Firewall بهمعنای «فایروال سادهسازی شده»، یک ابزار مدیریتی قدرتمند اما آسان برای پیکربندی فایروال iptables در سیستمهای لینوکسی است، بهویژه در اوبونتو. هدف اصلی UFW، سادهسازی فرایند ایجاد و مدیریت قوانین فایروال است، بهطوری که حتی کاربران تازهکار نیز بتوانند بهراحتی امنیت شبکه خود را کنترل کنند.
UFW با رابط کاربری ساده، سیاستهای پیشفرض قوی و پشتیبانی از هر دو پروتکل IPv4 و IPv6، به کاربران این امکان را میدهد تا با استفاده از دستورات ساده، ترافیک ورودی و خروجی را مدیریت کرده و از سیستم خود در برابر حملات محافظت کنند. این ابزار همچنین قابلیت تنظیم قوانین بر اساس سرویسها و پروتکلها، محدود کردن دسترسیها و مدیریت ترافیک خروجی را دارد. در نهایت، پیکربندی و تنظیم UFW با دستورات آسان انجام میشود و امنیت سیستمهای خانگی و سرورهای لینوکسی را بهبود میبخشد.