سیستم عامللینوکس

آموزش نصب و کانفیگ فایروال UFW در لینوکس

فایروال در لینوکس

همانطور که از اسم فایروال UFW پیداست به معنای فایروال بدون پیچیدگی میباشد. به واسطه UFW ما با یک محیط کاربر پسند میتوانیم Rule ها و فرآیند هایمان را به واسطه IPTables انجام دهیم.

فایروال IPTables یکی از محبوب ترین فایروال ها در توزیع های لینوکسی میباشد، اما به واسطه کمی پیچیدگی در نوشتن قوانین برای ترافیک که معمولا باید جزئیات و پارامترهای خاصی را در هنگام ایجاد Rule ها به صورت کامل نوشت. بنابراین فایروال IPTables نمیتواند آن Rule را قبول کند. به واسطه این مشکل و پیچیدگی IPTables یک فایروال کاربر پسند و ساده تر برپایه IPTables تحت عنوان فایروال UFW که مخفف Uncomplicated Firewall میباشد، ارائه شده است.

نصب فایروال UFW

به منظور نصب این فایروال شما میتوانید با نام بسته ufw آن را بر روی تمامی توزیع های لینوکسی نصب کنید.(در این مقاله صرفا بر روی Debian نصب میکنیم ولی فرآیند کار کرد بر روی همه توزیع ها یکسان میباشد)

به واسطه دستور زیر میتوانیم این فایروال را در سیستم خود نصب کنیم.

sudo apt install ufw -y

بررسی وضعیت UFW

پس از نصب آن به منظور اطمینان از موفقیت آمیز بودن نصب، دستور زیر را وارد میکنیم:

sudo ufw status verbose

خروجی:

Status: inactive

در خروجی بالا ما میبینیم که فایروال به صورت غیرفعال (Inactive) میباشد و این موضوع به شکلی است که UFW در ابتدا و به صورت پیش فرض غیرفعال میباشد.

قوانین پیشفرض در فایروال UFW

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

این به این معنا میباشد که اگر شخصی بخواهد به سیستم و یا سرور مورد نظر دسترسی داشته باشد، نمیتواند اینکار را انجام دهد مگر اینکه شما به صورت دستی Port خاصی را باز کند.

علاوه بر این اگر شما بر روی سیستم و یا سرور خود سرویس خاصی داشته باشید، آن سرویس به راحتی میتواند به بیرون دسترسی داشته باشد.

فایروال پیکربندی UFW در مسیر زیر قرار دارد

etc/default/ufw/

همچنین میتوانید با Syntax زیر این قوانین پیش فرض را تغییر دهید:

sudo ufw Default <Policy> <Chain>

مفهوم Application Profile در UFW

زمانی که ما یک نرم افزار را با دستور apt نصب میکنیم، یک Application Profile در مسیر زیر ایجاد میشود:

/etc/ufw/applications.d

این Application Profile ها درواقع حاوی اطلاعاتی از سرویس آن نرم افزار و تنظیمات UFW آن میباشد. به واسطه دستور زیر ما توانایی لیست کردن تمامی Application Profile را داریم:

sudo ufw app list

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

Available applications:
  Dovecot IMAP
  Dovecot POP3
  Dovecot Secure IMAP
  Dovecot Secure POP3
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

برای اینکه بتوانیم خروجی کامل تری از سرویس و نرم افزار مورد نظر به دست بیاوریم میتوانیم از دستور زیر استفاده کنیم

sudo ufw app info 'Nginx Full'

خروجی:

Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server

Ports:

80,443/tcp

همانطور که در بالا میبینید به راحتی اطلاعات کامل تری از Nginx Full را به دست آوردیم که دو پورت Http(80) و Https(443) باز میکند.

نوشتن Rule در UFW برای بازکردن دسترسی

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

در ابتدایی کار باید یک‌ Rule برای دسترسی به SSH از بیرون به داخل قرار دهید. Rule مورد نظر ما برای اجازه دسترسی به SSH در جهت ورودی یه شکل زیر میباشد:

sudo ufw allow ssh

خروجی:

Rules updated
(Rules updated (v6

به سبب Rule بالا فقط پورت پیش فرض SSH باز میشود و در صورتی که SSH بر روی Port دیگری فعال سازی شده باشد و بخواهید براساس Port آن را باز کنید، میتوانید به شکل زیر عمل کنید:

sudo ufw allow 4422/tcp

علاوه بر این برای دیگر سرویس ها نیز میتوانید به شکل بالا عمل کنید و برای مثال اگر قصد داشته باشید Http را باز کنید به شکل زیر میتوانید عمل کنید:

sudo ufw allow http

خروجی دستور بالا

Rules updated
(Rules updated (v6

ایجاد دسترسی براساس Application Profile

همچنین ما میتوانیم براساس Application Profile هم اجازه دسترسی را برقرار کنیم؛ مانند Rule زیر:

sudo ufw allow 'Nginx HTTP'

ایجاد دسترسی برای Port Range خاصی

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

sudo ufw allow 7100:7200/udp

sudo ufw allow 7100:7200/tcp

در دو Rule بالا ما گفتیم که دسترسی Port 7100 تا Port 7200 را بر روی بستر Udp و Tcp درجهت ورودی را مجاز کند.

ایجاد دسترسی برای یک آدرس IP خاص

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

sudo ufw allow from 100.100.100.1

ما در دستور بالا گفتیم که دسترسی را برای آدرس 100.100.100.1 باز کند.

بازکردن یک پورت خاص برای یک آدرش IP خاص

به منظور اینکه بخواهیم محدودیت اعمال کنیم و هر آدرسی نتواند به SSH و یا هر سرویس دیگری دسترسی داشته باشد ، میتوانیم به شکل زیر عمل کنیم:

sudo ufw allow from 100.100.100.1

ایجاد دسترسی برای یک Subnet

درصورتی که بخواهیم برای مجموعه ایی از IP های موجود در یک Subnet دسترسی خاصی باز کنیم میتوانیم به شکل زیر عمل کنیم:

sudo ufw allow from 192.168.1.0/24 to any port 3306

در Rule بالا Subnet مورد نظر ما 192.168.1.0/24 میباشد و از این Subnet هر آدرس IP میتواند به Port سرور MySQL دسترسی داشته باشد.

ایجاد دسترسی از طریق یک کارت شبکه خاص

در صورتی که قصد داشته باشیم براساس یکی از کارت شبکه های سیستم دسترسی خاصی را بازکنیم، میتوانیم از allow in on استفاده کنیم:

sudo ufw allow in on eth2 to any port 3306

بستن دسترسی از طریق UFW

درصورتی که قصد داشتیم به واسطه UFW یک ارتباط را قطع کنیم، میتوانیم به جای استفاده از Allow از Deny استفاده کنیم.

برای مثال فرض کنید ما بر روی سرورمان یک وب سرور بر روی پورت 80 فعال است و میخواهیم آدرس IP خاصی را برای مثال 50.50.50.1 را بلاک کنیم؛ در همچین ‌شرایطی Rule ما به شکل زیر میباشد:

sudo ufw deny from 50.50.50.1

همچنین درصورتی که بخواهیم این دسترسی را صرفا به پورت های تحت وب Http(80) و Https(443) ببندیم به شکل زیر عمل میکنیم:

sudo ufw deny from 50.50.50.1 to any port 443

sudo ufw deny from 50.50.50.1 to any port 80
درصورتی که بخواهید برعکس Rule های بالا عمل کنید و اجازه دسترسی را بدهید، فقط قسمت deny را به allow تغییر دهید.

پاک ‌کردن Rule ها در UFW

به منظور پاک کردن این Rule ها ابتدا باید Rule Number آن را به دست بیاورید. به واسطه دستور زیر میتوانید Rule Number تمام Rule ها را ببینید:

sudo ufw status numbered

خروجی:

status: active

To Action From

-- ------ ----

[ 1] 22/tcp ALLOW IN Anywhere

[ 2] 80/tcp ALLOW IN Anywhere

[ 3] 8080/tcp ALLOW IN Anywhere

برای مثال اگر بخواهید Rule سوم را پاک کنید، میتوانید به شکل زیر براساس Rule Number آن که 3 است عمل کنید:

sudo ufw delete 3

همچنین اینکار را به واسطه پورت نیز میتوانید انجام دهید. برای مثال یک‌ Rule نوشته اید که دسترسی به پورت 8888 را فراهم میکند و میخواهید آن را پاک کنید، دستور شما برای اینکار به شکل زیر میباشد:

sudo ufw delete allow 8888

فعال سازی فایروال UFW

اکنون پس از پشت سر گذاشتن فرآیند باز کردن دسترسی و بستن آن ها از بیرون به داخل به پورت های SSH و Http باید UFW را فعال سازی کنیم که با دستور زیر اینکار امکان پذیر است:

sudo ufw enable

خروجی دستور بالا

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

در بالا از شما سوالی میشود که باید y را وارد کنیم و Enter کنیم.

غیرفعال سازی فایروال UFW در لینوکس

درصورتی که قصد داشته باشید UFW را غیرفعال سازی کنید، میتوانید از دستور زیر استفاده کنید:

sudo ufw disable

و‌ همچنین برای ReEnable سازی آن نیز میتوانید دوباره این دستور را وارد کنید:

sudo ufw enable

موفق و ‌پیروز باشید

امیرحسین تنگسیری نژاد

کارشناس مشاور و مدرس شبکه و امنیت شبکه, حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند EndPoint Security, PenTest ,Forensic و SoC فعالیت داشته و دارم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


دکمه بازگشت به بالا