یکی از مهمترین ابزار ها در سرور فایروال است. اگر بصورت ساده توضیح بدم فایروال برای چه کاری هستش باید بگم فایروال برای امنیت شبکه هستش که با کنترل درخواست های ورودی و خروجی سرور از دسترسی غیرمجاز به یک پورت خاص جلوگیری میکنه یا از دسترسی یک نرمافزار خاص که داخل سرور در حال اجرا هستش به اینترنت جوگیری میکنه! لینوکس فایروال های قدرتمندی مانند 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
و تمام :)