Majid Ganji
Majid Ganji
خواندن ۴ دقیقه·۵ سال پیش

آموزش UFW |‌ فایروال لینوکس

یکی از مهمترین ابزار ها در سرور فایروال است. اگر بصورت ساده توضیح بدم فایروال برای چه کاری هستش باید بگم فایروال برای امنیت شبکه هستش که با کنترل درخواست های ورودی و خروجی سرور از دسترسی غیرمجاز به یک پورت خاص جلوگیری میکنه یا از دسترسی یک نرمافزار خاص که داخل سرور در حال اجرا هستش به اینترنت جوگیری میکنه! لینوکس فایروال های قدرتمندی مانند firewalld و iptable داره. ufw که برنامه یا پوسته ای است که از iptable استفاده میکنه تا کار رو آسون تر کنه چون iptable کمی سخت تره.

ما با استفاده از UFW به راحتی میتوانیم تعداد درخواست های ssh رو محدود یا یک رنج از ip رو مسدود کنیم و یا میتونیم اجازه دسترسی به پورت ها رو به یه ip بدهیم یا نزاریم کسی به این پورت ها دسترسی داشته باشد.

نصب UFW

برای نصب UFW یکی از دستورات زیر رو بر اساس توزیع خودتون اجرا کنید.

sudo apt install ufw sudo dnf install ufw

ریست کردن UFW

برای اینکه تمامی قوانین رو حذف کنیم ما میتونیم از دستور زیر استفاده کنیم

sudo ufw reset
نکته: باید با دسترسی root دستورات UFW را اجرا کنید.

بعد از reset کردن UFW غیر فعال میشود برای فعال شدن دستور زیر رو اجرا کنید

sudo ufw enable

و اگر بخواهیم دوباره غیر فعال کنیم

sudo ufw disable

اگر بخواهیم ببینیم وضعیت UFW چطوری است یعنی چه rule هایی تعریف شده یا UFW فعال است یا خیر

sudo ufw status

تنظیمات پیش فرض

در شروع کار با UFW بهتره ما جلو تمام درخواست هایی که به سرور میاد رو بگیریم و تمام درخواست هایی که از سرور ارسال میشه رو آزاد کنیم

sudo ufw default deny incoming sudo ufw default allow outgoing

و برای دسترسی به پورت های سرور خودمون با تعریف rule ها این اجازه رو بدیم.

بازکردن و بستن پورت ها

برای باز کردن پورت 80 از دستورات زیر استفاده می کنیم

sudo ufw allow http

یا

sudo ufw allow 80

و اگر بخواهیم پورت ۴۴۳ رو باز کنیم

sudo udw allow 443 یا sudo ufw allow https

خب اگر الان بخواهیم پورت ssh رو باز کنیم چه دستوری وارد کنیم؟ بله درسته

sudo ufw allow ssh یا sudo ufw allow 22

اگر بخواهیم دسترسی به پورت mysql رو ببندیم

sudo ufw deny mysql یا sudo ufw deny 3306

البته در نظر داشته باشین به طور پیش فرض همه پورت های سرور رو از بیرون بستیم و این فقط مثال هستش.

برای باز کردن رنج IP از ۵۰۰۰ تا ۵۰۰۵ از دستور زیر استفاده میکنیم

sudo ufw allow 5000:5005/tcp sudo ufw allow 5000:5005/udp

و برای بستن رنج IP از ۶۰۰۰ تا ۶۰۰۶ از دستور زیر استفاده میکنیم

sudo ufw deny 6000:6005/tcp sudo ufw deny 6000:6005/udp

برای باز و بستن رنج IP باید نوع پروتکل TCP یا UDP رو مشخص کنیم وگرنه خطا خواهد داد.

با استفاده از limit ما میتوانیم تعداد درخواست به پورت خاص را محدود کنیم

sudo ufw limit ssh

باز کردن پورت mysql برای یک Ip خاص

sudo ufw allow from 192.168.1.5 to any port mysql

و اگر بخواهیم به طور مثال پورت ۸۰۰۰ رو برای شبکه محلی باز کنیم از دستور زیر استفاده می کنیم

sudo ufw allow from 192.168.1.0/24 to any port 8000

و برای بستن ssh برای یک ip خاص

sudo ufw deny from 192.168.1.1 to any port ssh

فعال و غیر فعال کردن IPV6

همون طور که میبینید در تصویر وقتی به طور مثال پورت ۸۰ رو باز میکنیم یا میبندیم برای ip ورژن ۶ هم همین اتفاق می افته.

برای اینکه این ویژگی رو فعال یا غیر فعال کنیم.

باید در فایل

/etc/default/ufw

مقدار IPV6 برابر yes باشد فعال و اگر برابر no باشد غیر فعال میشود

IPV6=yes
بهتر است این ویژگی فعال باشد و اگر غیر فعال بود خودتان فعالش کنید.

حذف rule ها

برای حذف یک رول ۲ حالت وجود دارد راه اول استفاده از شماره rule هستش. که شماره rule رو میتونیم با استفاده از دستور زیر استفاده میکنیم

sudo ufw status numbered

و الان برای مثال من میخوام دسترسی به پورت mysql رو حذف کنم:

sudo ufw delete 5

یا میتونم دستوری که برای اضافه کردن rule وارد کرده بودم رو جلو delete بنویسم، مثلا میخوام دسترسی به پورت 8000 که بالاتر نوشتیم رو حذف کنیم

sudo ufw delete allow from 192.168.1.0/24 to any port 8000

یا محدودیت درخواست ssh رو حذف کنیم

sudo ufw delete limit ssh

و تمام :)

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