UFW یک ابزار پیکربندی فایروال است که قبل از iptable ها اجرا می شود و به طور پیش فرض در توزیع های اوبونتو گنجانده شده است. UFW یک رابط ساده برای پیکربندی موارد استفاده مرسوم از فایروال از طریق خط فرمان فراهم می کند.
این آموزش یک مرجع سریع به موارد و دستورات رایج UFW، از جمله نمونههایی از نحوه مجاز کردن و مسدود کردن سرویسها توسط پورت، رابط شبکه و آدرس IP منبع ارائه میکند.
نحوه استفاده از این راهنما
-
این آموزش همانند برگه تقلبی با قطعه های خط فرمان مستقل است.
-
هنگامی که متن بولد شده را در دستورات این آموزش مشاهده می کنید، به خاطر داشته باشید که این متن باید به آدرس های IP شبکه شما اشاره کند.
به یاد داشته باشید که می توانید مجموعه قوانین UFW فعلی خود را با sudo ufw status یا sudo ufw verbose status بررسی کنید.
بررسی وضعیت UFW
برای بررسی فعال بودن ufw، کد زیر را اجرا کنید:
sudo ufw status
Output
Status: inactive
خروجی نشان می دهد که فایروال شما فعال است یا خیر.
فعال کردن UFW
اگر هنگام اجرای ufw status پیام Status: inactive دریافت کردید، به این معنی است که فایروال هنوز در سیستم فعال نشده است. برای فعال کردن آن باید دستوری را اجرا کنید.
به طور پیشفرض، وقتی UFW فعال باشد، دسترسی خارجی به همه پورتهای سرور را مسدود میکند. در عمل، به این معنی است که اگر از طریق SSH به سرور متصل شده باشید و قبل از مجوز دسترسی از طریق پورت SSH، ufw را فعال کنید، ارتباط شما قطع خواهد شد.
برای فعال کردن UFW در سیستم خود، اجرا کنید:
sudo ufw enable
خروجی را به این صورت خواهید دید:
Output
Firewall is active and enabled on system startup
برای مشاهده مواردی که در حال حاضر مسدود یا مجاز هستند، تایپ کنید:
sudo ufw status
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
غیرفعال کردن UFW
اگر به دلایلی نیاز به غیرفعال کردن UFW دارید، می توانید با دستور زیر این کار را انجام دهید:
sudo ufw disable
توجه داشته باشید که این دستور سرویس فایروال سیستم شما را به طور کامل غیرفعال می کند.
مسدود کردن یک آدرس IP
برای مسدود کردن تمام اتصالات شبکه که از یک آدرس IP خاص منشا می گیرند، دستور زیر را اجرا کنید و آدرس IP بولد شده را با آدرس IP که می خواهید مسدود کنید جایگزین کنید:
sudo ufw deny from 203.0.113.100
Output
Rule added
در این مثال، از 203.0.113.100 آدرس IP منبع "203.0.113.100" را مشخص می کند.
اگر اکنون sudo ufw status را اجرا کنید، آدرس IP مشخص شده را به عنوان رد شده مشاهده خواهید کرد:
Output
Status: active
To Action From
-- ------ ----
Anywhere DENY 203.0.113.100
همه اتصالات، ورودی یا خروجی، برای آدرس IP مشخص شده مسدود می شوند.
مسدود کردن یک زیرشبکه
اگر نیاز به مسدود کردن یک زیرشبکه کامل دارید، میتوانید از آدرس زیرشبکه به عنوان پارامتر در دستور ufw deny استفاده کنید. این همه آدرسهای IP را در زیرشبکه نمونه 203.0.113.0/24 مسدود میکند:
sudo ufw deny from 203.0.113.0/24
Output
Rule added
اتصالات ورودی به یک رابط شبکه را مسدود کنید
برای مسدود کردن اتصالات ورودی از یک آدرس IP خاص به یک رابط شبکه خاص، دستور زیر را اجرا کنید و آدرس IP بولد شده را با آدرس IP که می خواهید مسدود کنید جایگزین کنید:
sudo ufw deny in on eth0 from 203.0.113.100
پارامتر in به ufw می گوید که قانون را فقط برای اتصالات ورودی اعمال کند و پارامتر on eth0 مشخص می کند که این قانون فقط برای رابط eth0 اعمال می شود. اگر سیستمی با چندین رابط شبکه دارید و نیاز دارید دسترسی خارجی به برخی از این رابط ها را مسدود کنید، ممکن است مفید باشد، اما برای همه خیر.
مجاز کردن یک آدرس IP
برای اجازه دادن به تمام اتصالات شبکه که از یک آدرس IP خاص منشا می گیرند، دستور زیر را اجرا کنید و آدرس IP برجسته شده را با آدرس IP که می خواهید به آن اجازه دسترسی دهید جایگزین کنید:
sudo ufw allow from 203.0.113.101
اگر sudo ufw status را اکنون اجرا کنید، خروجی مشابه این را خواهید دید که کلمه ALLOW را در کنار آدرس IP که به تازگی اضافه کرده اید نشان می دهد.
Output
Status: active
To Action From
-- ------ ----
...
Anywhere ALLOW 203.0.113.101
حذف قوانین UFW
برای حذف قوانینی که قبلاً در UFW تنظیم کردهاید، از ufw delete و به دنبال آن قانون (اجازه یا رد کردن) و مشخصات هدف استفاده کنید. مثال زیر، قانونی را حذف می کند که قبلا تنظیم شده بود تا همه اتصالات از یک آدرس IP 203.0.113.101 مجاز باشد:
sudo ufw delete allow from 203.0.113.101
راه دیگر برای تعیین اینکه کدام قانون را می خواهید حذف کنید، ارائه شناسه قانون است. این اطلاعات را می توان با دستور زیر بدست آورد:
sudo ufw status numbered
Output
Status: active
To Action From
-- ------ ----
[ 1] Anywhere DENY IN 203.0.113.100
[ 2] Anywhere on eth0 ALLOW IN 203.0.113.102
از خروجی، می توانید مشاهده کنید که دو قانون فعال وجود دارد. قانون اول، با مقادیر بولد شده، تمام اتصالات از آدرس IP 203.0.113.100 را رد می کند. قانون دوم اجازه می دهد تا اتصالات روی رابط eth0 از آدرس IP 203.0.113.102 وارد شود.
از آنجا که به طور پیش فرض UFW تمام دسترسی های خارجی را مسدود می کند مگر اینکه به صراحت اجازه داده شود، قانون اول اضافی است، بنابراین می توانید آن را حذف کنید. برای حذف یک قانون با شناسه آن، اجرا کنید:
sudo ufw delete 1
از شما خواسته می شود که عملیات را تأیید کنید و مطمئن شوید شناسه ای که ارائه می کنید به قانون صحیحی که می خواهید حذف کنید اشاره دارد.
Output
:Deletingx
deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted
اگر قوانین خود را دوباره با sudo ufw status فهرست کنید، خواهید دید که قانون حذف شده است.
لیست پروفایل های کاربردی موجود
پس از نصب، برنامه هایی که به ارتباطات شبکه متکی هستند، معمولاً یک پروفایل UFW تنظیم می کنند که می توانید از آن برای اجازه اتصال از آدرس های خارجی استفاده کنید. این کار اغلب مانند اجرای دستور ufw allow، با مزیت ارائه شورت کات، که شماره پورت های خاصی را که یک سرویس استفاده می کند خلاصه می کند و یک نام گذاری کاربرپسند برای سرویس های ارجاع شده ارائه می دهد.
برای فهرست کردن پروفایل هایی که در حال حاضر در دسترس هستند، موارد زیر را اجرا کنید:
sudo ufw app list
اگر سرویسی مانند وب سرور یا سایر نرم افزارهای وابسته به شبکه را نصب کرده اید و پروفایلی در UFW در دسترس نیست، ابتدا مطمئن شوید که این سرویس فعال است. برای سرورهای ریموت، شما معمولاً OpenSSH را به راحتی در دسترس خواهید داشت:
Output
:Available applications
OpenSSH
دسترسی SSH
هنگام کار با سرورهای ریموت، باید مطمئن شوید که پورت SSH برای اتصالات باز است تا بتوانید بصورت ریموت به سرور خود وارد شوید. دستور زیر پروفایل برنامه OpenSSH UFW را فعال می کند و به همه اتصالات به پورت SSH پیش فرض روی سرور اجازه می دهد:
sudo ufw allow OpenSSH
Output
Rule added
Rule added (v6)
اگرچه کمتر کاربرپسندتر است، اما یک روش دیگر برای انجام این کار تنظیم سینتکس جایگزین، تعیین شماره پورت دقیق سرویس SSH است که معمولاً به طور پیش فرض روی 22 تنظیم می شود:
sudo ufw allow 22
مجاز کردن Nginx HTTP / HTTPS
پس از نصب، وب سرور Nginx چند پروفایل مختلف UFW را در سرور تنظیم می کند. هنگامی که Nginx را به عنوان یک سرویس نصب و فعال کردید، دستور زیر را اجرا کنید تا مشخص کنید کدام پروفایل ها در دسترس هستند:
sudo ufw app list | grep Nginx
Output
Nginx Full
Nginx HTTP
Nginx HTTPS
برای فعال کردن ترافیک HTTP و Nginx Full ،HTTPS را انتخاب کنید. در غیر این صورت، Nginx HTTP را انتخاب کنید تا فقط HTTP مجاز باشد یا Nginx HTTPS را انتخاب کنید تا فقط HTTPS مجاز باشد.
دستور زیر به ترافیک HTTP و HTTPS روی سرور اجازه می دهد (پورت های 80 و 443):
"sudo ufw allow "Nginx Full
Output
Rule added
Rule added (v6)
مجاز کردن Apache HTTP / HTTPS
پس از نصب، وب سرور آپاچی چند پروفایل مختلف UFW را در سرور تنظیم می کند. هنگامی که Apache را به عنوان یک سرویس نصب و فعال کردید، دستور زیر را اجرا کنید تا مشخص کنید کدام پروفایل ها در دسترس هستند:
sudo ufw app list | grep Apache
Output
Apache
Apache Full
Apache Secure
برای فعال کردن ترافیک HTTP و Apache Full ،HTTPS را انتخاب کنید. در غیر این صورت، Apache برای HTTP یا Apache Secure برای HTTPS را انتخاب کنید. دستور زیر به ترافیک HTTP و HTTPS روی سرور اجازه می دهد (پورت های 80 و 443):
"sudo ufw allow "Apache Full
مجاز کردن همه HTTPهای ورودی (پورت 80)
وب سرور ها، مانند Apache و Nginx، معمولاً به درخواستهای HTTP در پورت 80 گوش میدهند. اگر این پورت پیشفرض برای ترافیک ورودی شما به حالت حذف یا رد تنظیم شده است، باید یک قانون UFW ایجاد کنید تا اجازه دسترسی خارجی به پورت 80 را بدهد. می تواند از شماره پورت یا نام سرویس (http) به عنوان پارامتر این دستور استفاده کند.
برای اجازه دادن به تمام اتصالات HTTP ورودی (پورت 80)، اجرا کنید:
sudo ufw allow http
همچنین میتوانید این کار را با یک سینتکس جایگزین انجام دهید که شماره پورت سرویس HTTP را مشخص میکند:
sudo ufw allow 80
مجوز به همه HTTPS های ورودی (پورت 443)
HTTPS معمولاً بر روی پورت 443 اجرا میشود. اگر این پورت پیشفرض برای ترافیک ورودی شما به حالت حذف یا رد تنظیم شده است، باید یک قانون UFW ایجاد کنید تا دسترسی خارجی به پورت 443 مجاز باشد. میتوانید از شماره پورت یا نام سرویس (https) به عنوان پارامتری برای این دستور استفاده کنید.
برای اجازه دادن به همه اتصالات HTTPS ورودی (پورت 443)، اجرا کنید:
sudo ufw allow https
or
sudo ufw allow 443
مجاز کردن همه ورودی های HTTP و HTTPS
اگر می خواهید ترافیک HTTP و HTTPS را مجاز کنید، می توانید یک قانون واحد ایجاد کنید که به هر دو پورت اجازه می دهد. این استفاده مستلزم آن است که پروتکل را نیز با پارامتر proto تعریف کنید که در این حالت باید روی tcp تنظیم شود. برای اجازه دادن به همه اتصالات HTTP و HTTPS ورودی (پورت های 80 و 443)، اجرا کنید:
sudo ufw allow proto tcp from any to any port 80,443
ایمیل خروجی SMTP را مسدود کنید
سرورهای ایمیل، مانند Sendmail و Postfix، معمولاً از پورت 25 برای ترافیک SMTP استفاده می کنند. اگر سرور شما نباید ایمیل های خروجی ارسال کند، ممکن است بخواهید این نوع ترافیک را مسدود کنید. برای مسدود کردن اتصالات SMTP خروجی، اجرا کنید:
sudo ufw deny out 25
این کار فایروال شما را به گونه ای پیکربندی می کند که تمام ترافیک خروجی در پورت 25 را حذف کند. اگر نیاز به رد اتصالات خروجی در شماره پورت دیگری دارید، می توانید این دستور را تکرار کنید و شماره پورتی را که می خواهید مسدود کنید جایگزین 25 کنید.
در این آموزش قوانین و دستورات رایج فایروال UFW را توضیح دادیم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
آموزش های مرتبط: