ابزار UFW یا به عبارتی «فایروال غیر پیچیده»، یک ابزار مدیریت قوانین فایل در Arch Linux،  دبیان و اوبونتو محسوب می‌شود. این ابزار از طریق خط فرمان مورد استفاده قرار می‌گیرد و این درحالی است که رابط کاربری آن نیز در دسترس است. هدف از UFW ساده‌سازی تنظیمات فایروال برای کاربر است.

ابزار UFW

نکته:

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

قبل از شروع به کار

۱) حتماً ابتدا مراحل تنظیم عنوان هاست و ساعت سیستم سرور خود را کامل کنید.

۲) اقدامات لازم در جهت تأمین ایمنی سرور، از جمله ایجاد یک کاربر استاندارد، امنیت دسترسی SSH و حذف سرویس‌های شبکه غیرضروری را انجام دهید.

در این آموزش تنها فرمان‌های مربوط به توزیع‌های لینوکس Arch Linux، دبیان و اوبونتو ارائه شده‌اند. با این وجود، می‌توانید از فرمان‌های مرتبط در توزیع‌های لینوکس دیگر، مراحل را دنبال کنید.

۳) سیستم خود را بروزرسانی کنید.

لینوکس Arch


sudo pacman -Syu

دبیان / اوبونتو


sudo apt-get update && sudo apt-get upgrade

نصب ابزار UFW

دبیان بخش سیستمی UFW را به صورت اتوماتیک راه‌اندازی می‌کند و همچنین آن را برای شروع کار در راه‌اندازی دوباره سیستم، تنظیم می‌کند. ولی این شرایط در Arch حکمفرما نیست. درنظر داشته باشید که منظور در اینجا، تنظیم قوانین فایروال توسط UFW نیست.  فعالسازی UFW با system یا upstart تنها باعث می‌شود که این سرویس در شروع به کار سیستم، اجرا گردد.

قوانین موسوم به ruleset در UFW به صورت پیش‌فرض، خالی هستند و بنابراین، قانون خاصی را در فایروال اِعمال نمی‌کنند. در ادامه، نحوه انجام تغییرات در سری قوانین فایروال را با کمک این ابزار نشان می‌دهیم.

لینوکس Arch

نصب UFW


sudo pacman -S ufw

اجرا و فعالسازی بخش سیستمی UFW


sudo systemctl start ufw

sudo systemctl enable ufw

دبیان / اوبونتو

نصب UFW


sudo apt-get install ufw

کاربرد ابزار UFW برای مدیریت قواعد فایروال

تنظیم قواعد پیش‌فرض

در بسیاری از سیستم‌ها، تنها چند پورت برای ارتباطات ورودی موردنیاز هستند و سایر پورت‌ها بسته می‌شوند. برای شروع کار با یک قاعده اساسی و آسان، می‌توان از فرمان ufw default برای تنظیم واکنش نسبت به ارتباطات ورودی و خروجی استفاده کرد. برای لغو تمام ارتباط‌های ورودی و مجوّز به تمام ارتباط‌های خروجی داریم:


sudo ufw default allow outgoing

sudo ufw default deny incoming

همچنین فرمان ufw default امکان استفاده از پارامتر reject را نیز فراهم می‌کند.

هشدار

تنظیم یک قاعده ممنوعیت یا reject می‌تواند موجب قفل‌شدن سرور شما شود؛ مگر اینکه قواعد مجوّز واضحی در کنار آن تعریف شود. حتماً دقت کنید که مجوّز لازم برای SSH و سایر سرویس‌های حیاتی را تعریف کرده باشید.

اضافه‌کردن قواعد

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


sudo ufw allow ssh

همچنین می‌توانید فرمان زیر را نیز تایپ کنید.


sudo ufw allow 22

به همین ترتیب، برای ممانعت از ترافیک در یک پورت خاص مانند 111، تنها کافی است فرمان زیر را وارد کنید.


sudo ufw deny 111

برای تنظیم دقیق‌تر در قواعد فایروال، می‌تواند packet‌های داده را بر اساس TCP یا UDP مجوّز بدهید. به عنوان مثال برای packet های TCP در پورت 80 داریم:


sudo ufw allow 80/tcp

sudo ufw allow http/tcp

برای مجوّز به packet های UDP در پورت 1725:


sudo ufw allow 1725/udp

قواعد پیشرفته

در کنار مجوّز یا ممنوعیت بر اساس پورت، ابزار UFW می‌تواند امکان این کار را بر اساس آدرس IP، ساب‌نت و یا ترکیبی از IP، ساب‌نت و پورت برای شما فراهم کند.

برای مجوّز دادن به یک آدرس IP خاص داریم:


sudo ufw allow from 198.51.100.0

برای ساب‌نت:


sudo ufw allow from 198.51.100.0/24

برای ترکیب آدرس IP و پورت


sudo ufw allow from 198.51.100.0 to any port 22 proto tcp

proto tcp را می‌توانید بر حسب نیاز به proto udp تغییر دهید و همچنین در تمام موارد بالا، می‌توانید allow را با deny جایگزین کنید.

حذف قواعد

برای حذف یک قاعده، قبل از عبارت بکارگیری آن، از گزینه delete استفاده کنید. به عنوان نمونه، اگر دیگر نمی‌خواهید ترافیک HTTP داشته باشید، فرمان زیر را اجرا کنید.


sudo ufw delete allow 80

همچنین در حذف قواعد می‌توانید از نام سرویس نیز استفاده کنید.

ویرایش فایل‌های تنظیمات ابزار UFW

با اینکه امکان اضافه‌کردن قواعد ساده از طریق خط فرمان وجود دارد، ولی ممکن است گاهی  نیاز به اضافه یا حذف کردن برخی قواعد خاص یا پیشرفته داشته باشید. UFW قبل از اینکه قواعد را در ترمینال اجرا کند، یک فایل با نام before.rules راه‌اندازی می‌کند که اجازه استفاده از loopback، ping و DHCP را فراهم می‌نماید. برای تغییر در این قواعد باید فایل /etc/ufw/before.rules را ویرایش کنید. یک فایل before6.rules نیز در همین دایرکتوری برای IPv6 وجود دارد.

همچنین فایل‌های after.rule و after6.rule برای اضافه‌کردن قواعد موردنیاز بعدی ابزار UFW در دسترس قرار دارند.

یک فایل تنظیمات اضافی نیز در آدرس /etc/default/ufw واقع شده است. در اینجا، می‌توان IPv6 را غیرفعال کرد، قواعد پیش‌فرض را تنظیم نمود و همین‌طور UFW را برای مدیریت زنجیره‌های داخلی فایروال انتخاب کرد.

وضعیت UFW

شما می‌توانید در هر زمانی وضعیت ابزار UFW را با فرمان sudo ufw status بررسی کنید.  در نتیجه، لیستی از تمام قواعد و همین‌طور، وضعیت خاموش و روش بودن UFW برای شما نمایش داده خواهد شد.


Status: active

To                         Action      From

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

22                         ALLOW       Anywhere

80/tcp                     ALLOW       Anywhere

443                        ALLOW       Anywhere

22 (v6)                    ALLOW       Anywhere (v6)

80/tcp (v6)                ALLOW       Anywhere (v6)

443 (v6)                   ALLOW       Anywhere (v6)

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

پس از انتخاب قواعد موردنظر، ممکن است نتیجه فرمان ufw status با خروجی Status: inactive همراه باشد. برای فعال‌سازی ابزار UFW و اِعمال قوانین فایروال داریم:


sudo ufw enable

به همین ترتیب، برای غیرفعال‌کردن قوانین


sudo ufw disable

نکته: با غیرفعال‌سازی به این شیوه، هنوز هم سرویس UFW در شروع به کار سیستم اجرا و فعال خواهد شد.

ثبت‌وقایع یا Logging

می‌توانید ثبت‌وقایع را با فرمان زیر فعال کنید.


sudo ufw logging on

سطوح مختلف ثبت‌وقایع را می‌توان با قالب فرمان sudo ufw logging low|medium|high تنظیم کرد. low سطح پیش‌فرض خواهد بود.

یک ورودی ثبت‌وقایع عادی شامل موارد زیر خواهد بود و در آدرس /var/logs/ufw قرار خواهد گرفت.


Sep 16 15:08:14 <hostname> kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0

مقادیر اولیه، تاریخ، زمان و عنوان هاست سرور شما را در بر می‌گیرند. سایر مقادیر مهم به شرح زیر هستند.

[UFW BLOCK]: این جایی است که توضیح رخداد قرار می‌گیرد. به عنوان نمونه در اینجا، یک ارتباط بلوکه شده است.

IN: اگر این مقدار یک عدد داشته باشد، رخداد یک «ورودی» بوده است.

OUT: اگر این مقدار یک عدد داشته باشد، رخداد یک «خروجی» بوده است.

MAC: ترکیبی از آدرس‌های مک منبع و مقصد

SRC: آدرس IP از packet منبع

DST: آدرس IP از packet مقصد

LEN: طول packet

TTL: طول عمر packet. اینکه چقدر طول می‌کشد که قبل از رسیدن به مقصد، این بسته بین روترها جابجا شود تا اینکه به انقضا برسد.

PROTO: پروتکل packet

SPT: پورت منبع بسته

DPT: پورت مقصد بسته

WINDOW: ابعاد packet قابل‌دریافت برای فرستنده

SYN URGP: نشان‌دهنده نیاز به فرآیند ارتباطی بین سرور و کلاینت موسوم به three-way handshake. عدد صفر به معنای عدم‌نیاز خواهد بود.