منبع اصلی نوشتار زیر در این لینک قرار دارد

بررسی انواع فایروال : رابط متنی فایروال UFW در اوبونتو

سلام دوستان . در قسمت قبلی در مورد رابط گرافیکی این فایروال صحبت کردیم . همان طور که گفته شده بود کم کم جلو میریم و تمامی حالات و … را بررسی می کنیم . در قسمت قبل در مورد دو آیتم incoming و outgoing صحبت کردیم و یک درک نسبی ای از آن ها نیز پیدا کردیم پس از توضیح دوباره در این قسمت خودداری میکنیم .

راه اندازی :

برای کار را رابط متنی این فایروال حتما باید سطح دسترسی روت داشت . این کار به 2 صورت امکان پذیر است :

1. استفاده ی مسیقیم از یوزر روت . به شکل زیر :

su root

2. استفاده از sudo در یوزر های عضو گروه sudo . به شکل زیر :

sudo whoami

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

ufw --help

هم چنین پیشنهاد می کنم که man page این برنامه را مطالعه نمایید . به صورت زیر :

man ufw

اگر خروجی help رو مشاهده کرده باشید , با option زیر مواجه خواهید شد :

ufw status

همان طور که از اسم این آپشن مشخص است , وضعیت کنونی فایروال برای ما گفته می شود . که به صورت پیش فرض غیر فعال را نمایش می دهد . یعنی :

Status: inactive

حالا همان طور که در خروجی help برنامه هم گفته شده , برای فعال کردن فایروال کافیست تا از آپشن enable به شکل زیر استفاده کنیم :

ufw enable

لازم به ذکر است که برای غیر فعال کردن فایروال ( به هر دلیلی ) کافیست از آپشن disable به شکل زیر استفاده کنیم :

ufw disable

فرض می کنیم که فعلا قصد استفاده از IP ورژن 6 را نداریم . پس فایل کانفیگ زیر را باز می کنیم و به دنبال عبارت IPV6 می گردیم :

vi /etc/default/ufw

حال کافیست عبارت جلوی IPV6 را از yes به no تغییر دهید .

 

تنظیمات مربوط به ورودی و خروجی :

اما حالا که فایروال را فعال کردیم دوباره یک status بگیرید تا از وضعیت فعلی رول ها و … با خبر بشید . پیشنهاد می شود که از این به بعد به شکل verbose از آپشن status استفاده کنید . یعنی :

ufw status verbose

همان طور که مشاهده می کنید , به صورت پیش فرض incoming را deny و outgoing را allow کرده است . برای تغییر این دو به شکل زیر عمل می کنیم :

ufw default allow incoming

و همین طور برای outgoing :

ufw default deny outgoing

پیشنهاد می شود که incoming را به حالت reject تغییر دهید و اگر پورتی مد نظرتون است , آن را دستی باز کنید . به عنوان مثال :

ufw default reject incoming
ufw allow 22/tcp

توجه داشته باشید که tcp مشخصه ی پروتکل مورد استفاده است . به عنوان مثال اگر قصد سرویس دهنی DNS را داریم , باید پورت 53 برای پروتکل udp را باز کنیم . به صورت زیر :

ufw allow 53/udp

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

ufw delete allow 53/tcp

ممکن است قصد باز کردن یک پورت هم برای پروتکل tcp و هم برای پروتکل udp را داشته باشید . پس :

sudo ufw allow 53

همچنین می توانیم از شماره ی هر رول جهت پاک کردن آن استفاده کنیم . ابتدا برای مشاهده ی شماره ی هر رول به شکل زیر عمل می کنیم :

ufw status numbered

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

ufw delete 1

توجه داشته باشید که عدد 1 در این جا مثال است و شما مطابق خروجی خود باید عمل کنید

ممکن است بخواهیم دسترسی کامل برای یک آی پی در نظر داشته باشیم , یعنی به عنوان مثال فقط آی پی 10.20.30.40 بتواند با سیستم در ارتباط باشد . پس به شکل زیر عمل می کنیم :

ufw allow from 10.20.30.40

طبیعتا می توان به جای یک آی پی خاص , یک رنج آی پی اضافه کرد . به عنوان مثال برای قطع دسترسی کل شبکه ی 10.20.30.0/24 به شکل زیر عمل می کنیم :

ufw deny from 10.20.30.0/24

ممکن است بخواهیم این تنظیمات را فقط برای آی پی ای خاص در نظر داشته باشیم , یعنی به عنوان مثال فقط آی پی 10.20.30.40 بتواند با سیستم روی پورت 22 ارتباط برقرار کند , پس به شکل زیر عمل می کنیم :

ابتدا به سینتکس زیر توجه کنید :

ufw allow from <target> to <destination> port <port number> proto <protocol name>

به عنوان مثال  , دسترسی آی پی 10.20.30.40 را برای پورت 22 و تمامی پروتکل ها بر روی فایروال باز می کنیم :

ufw allow from 10.20.30.40 to any port 22

به عنوان مثال بعدی , دسترسی آی پی 10.20.30.40 را برای پورت 22 بر روی پروتکل tcp را باز می کنیم :

ufw allow from 10.20.30.40 to any port 22 proto tcp

توجه داشته باشید که any به معنای هر آدرس آی پی ای بر روی سرور می باشد . یعنی اگر سرور ما چند آدرس آی پی داشته باشد , این رول برای تمامی آن آدرس ها اعمال می شود . در صورتی که می خواهید این تنظیمات فقط بر روی یکی از آی پی های سرور اعمل شود کافیست به جای any آدرس مربوطه را وارد کنید .

ممکن است بخواهیم از نام یک سرویس جهت بسته و یا باز کردن آن بر روی فایروال استفاده کنیم . یعنی به جای درج پورت از نام سرویس استفاده کنیم . مثلا می خواهیم سرویس https را بر روی فایروال باز و سرویس http را بر روی فایروال ببندیم :

ufw allow https

ufw deny http

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

less /etc/services

تا این جا فقط بر روی دو پروتکل tcp و udp بحث کردیم اما زمانی فرا می رسد که می خواهیم پینگ را بر روی سرور و یا سیستم خودمون ببندیم . یعنی کسی نتواند سرور و یا سیستم ما را پینگ کند .

در مرحله ی اول باید گفت که به صورت پیش فرض پینگ بر روی فایروال ufw باز است . پس برای بستن پینگ ابتدا فایل زیر را باز می کنیم :

nano /etc/ufw/before.rules

حال کافیست عبارات ACCEPT را به DROP در رول های زیر تغییر دهیم :

# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

هم چنین می توان ابتدای هر خط از این رول ها # اضافه کرد یعنی دیگه نیازی به تغییر ACCEPT به DROP نیست .

در خصوص forward chain و nat در قسمت بعدی به طور مفصل صحبت خواهیم کرد و در واقع فقط به این موضوع خواهیم پرداخت اما لازم به ذکر است که اگر سیستم لینوکسی ما به عنوان روتر فعالیت کند , با فعال بودن این فایروال به صورت پیش فرض تمامی ارتباطات بین شبکه های مختلف قطع خواهد شد چرا که به صورت پیش فرض forward chain روی حالت drop قرار داشته و ip forwarding نیز در فایروال غیر فعال می باشد .

برای حل این مشکل ابتدا باید ip forwarding را در فایروال فعال کرد . برای این منظور فایل زیر را باز کنید :

nano /etc/ufw/sysctl.conf

سپس # را از اول خط زیر بردارید :

net/ipv4/ip_forward=1

در مرحله ی بعد فایل زیر را باز کرده :

nano /etc/default/ufw

و عبارت زیر را :

DEFAULT_FORWARD_POLICY="DROP"

به عبارت زیر تغییر دهید :

DEFAULT_FORWARD_POLICY="ACCEPT"

در واقع مقدار پیش فرض forward chain را از drop به accept تغییر می دهیم .

موفق باشید . با تشکر

 

منبع : او اس لرن دات آی آر | http://OSLearn.ir

نویسنده :E2MA3N



برچسب ها :