نصب و راه اندازی فایروال UFW در اوبونتو 23.04
UFW، یک رابط مدیریت فایروال ساده شده است که پیچیدگی فناوری های فیلترینگ بسته های سطح پایین مانند iptables و nftables را ندارد. اگر به دنبال افزایش امنیت شبکه خود هستید و مطمئن نیستید که از کدام ابزار استفاده کنید، UFW ممکن است انتخاب مناسبی برای شما باشد. در این آموزش به نصب فایروال UFW در اوبونتو 23.04 و راه اندازی آن می پردازیم پس تا انتها همراه ما باشید.
فهرست مطالب
- پیش نیازها
- مرحله 1 – استفاده از IPv6 با UFW (اختیاری)
- مرحله 2 – تنظیم policy های پیش فرض
- مرحله 3 – اجازه دادن به اتصالات SSH
- مرحله 4 – فعال کردن UFW
- مرحله 5 – اجازه دادن به سایر اتصالات
- مرحله 6 – منع اتصالات
- مرحله 7 – حذف قوانین
- مرحله 8 – بررسی وضعیت UFW و قوانین
- مرحله 9 – غیرفعال کردن یا بازنشانی UFW
- نتیجه
پیش نیازها
برای دنبال کردن این آموزش و نصب فایروال UFW، شما نیاز دارید به:
- سرور اوبونتو 23.04 با کاربری غیر root.
- UFW به طور پیش فرض روی اوبونتو نصب شده است. اگر به دلایلی حذف شده است، می توانید آن را با وارد کردن دستور زیر نصب کنید.
sudo apt install ufw
مرحله 1 – استفاده از IPv6 با UFW (اختیاری)
این آموزش با در نظر گرفتن IPv4 نوشته شده است، اما اگر IPv6 روی سرور اوبونتو شما فعال باشد UFW با IPv6 نیز کار خواهد کرد. اما برای پشتیبانی UFW از IPv6 باید پیکربندی های لازم انجام شود. برای انجام این کار، پیکربندی UFW را با وارد کردن دستور زیر در nano یا ویرایشگر مورد علاقه خود باز کنید.
sudo nano /etc/default/ufw
سپس مطمئن شوید که مقدار IPV6 برابر با عبارت yes است. اگر مقدار IPV6 برابر yes نبود آن را به yes تغییر دهید، سپس فایل را ذخیره کنید و آن را ببندید. اکنون، وقتی UFW فعال است، برای نوشتن قوانین فایروال IPv4 و IPv6 پیکربندی می شود. با این حال، پس از نصب فایروال UFW و قبل از فعال کردن آن، ما می خواهیم مطمئن شویم که فایروال شما به گونه ای پیکربندی شده است که به شما امکان اتصال از طریق SSH را بدهد. بیایید با تنظیم policy های پیش فرض شروع کنیم.
مرحله 2 – تنظیم policy های پیش فرض
اگر تازه کار با فایروال خود را شروع کرده اید، اولین قوانینی که باید تعریف کنید، policy های پیش فرض شما هستند. این قوانین نحوه مدیریت ترافیکی را کنترل می کنند که به صراحت با هیچ قانون دیگری مطابقت ندارد. به طور پیش فرض، UFW تنظیم شده است که تمام اتصالات ورودی را رد کند و همه اتصالات خروجی را مجاز کند. این بدان معنی است که هر کسی که سعی در دسترسی به سرور شما داشته باشد قادر به اتصال نخواهد بود.
بنابراین بیایید قوانین UFW خود را به حالت پیش فرض برگردانیم. برای تنظیم پیش فرض های استفاده شده توسط UFW، از دستورات زیر استفاده کنید:
sudo ufw default deny incoming
sudo ufw default allow outgoing
اکنون با وارد کردن دستورات فوق خروجی به شکل زیر است:
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
این دستورات پیشفرضها را طوری تنظیم میکنند که ورودیها را رد کرده و اتصالات خروجی را مجاز میکنند. این پیشفرضهای فایروال ممکن است برای یک رایانه شخصی کافی باشد، اما سرورها معمولاً باید به درخواستهای دریافتی از سوی کاربران خارجی پاسخ دهند، بنابراین باید برای سرور های تنظیمات دیگری نیز انجام شود، در ادامه به بررسی آن ها خواهیم پرداخت.
مرحله 3 – اجازه دادن به اتصالات SSH
اگر فایروال UFW را در این مرحله فعال کنید، تمام درخواست های دریافتی از کاربران را رد می کند. بنابراین اگر میخواهیم سرور ما به درخواستهای کاربران پاسخ بدهد، باید قوانینی ایجاد کنیم که به اتصالات ورودی قانونی اجازه دهند، برای مثال اتصالات SSH یا HTTP مجاز شود. اگر از یک سرور ابری استفاده می کنید، احتمالاً می خواهید به اتصالات SSH ورودی اجازه دهید تا بتوانید به سرور خود متصل شوید و آن را مدیریت کنید.
برای پیکربندی سرور خود برای اجازه دادن به اتصالات SSH ورودی، می توانید از دستور زیر استفاده کنید:
sudo ufw allow ssh
این دستور به همه اتصالات در پورت 22 اجازه می دهد. فایروال UFW پورت ssh را می شناسد زیرا به عنوان یک سرویس در فایل /etc/services این پورت ها فهرست شده است. با این حال، ما می توانیم با تعیین پورت به جای نام سرویس، دستور معادل دستور بالا را بنویسیم. به عنوان مثال، این دستور مانند دستور بالا عمل می کند:
sudo ufw allow 22
اگر SSH خود را برای استفاده از پورت دیگری پیکربندی کرده اید، باید پورت مناسب را مشخص کنید. به عنوان مثال، اگر سرور SSH شما از پورت 2222 استفاده می کند، می توانید از این دستور برای اجازه دادن به اتصالات در آن پورت به صورت زیر استفاده کنید:
sudo ufw allow 2222
اکنون که فایروال شما به گونهای پیکربندی شده است که به اتصالات SSH ورودی اجازه دهد، اکنون میتوانیم فایروال UFW را فعال کنیم.
مرحله 4 – فعال کردن UFW
پس از نصب فایروال UFW، برای فعال کردن آن از دستور زیر استفاده کنید:
sudo ufw enable
با وارد کردندستور فوق هشداری دریافت خواهید کرد که می گوید این فرمان ممکن است اتصالات SSH موجود را مختل کند. شما قبلاً یک قانون فایروال تنظیم کرده اید که به اتصالات SSH اجازه می دهد، بنابراین مشکلی نیست و نیازی نیست به هشدار توجهی داشته باشید. با y به درخواست پاسخ دهید و ENTER را بزنید.
فایروال اکنون فعال است. حال دستورزیر را اجرا کنید تا قوانین تنظیم شده را ببینید:
sudo ufw status verbose
بقیه این آموزش پس از نصب فایروال UFW و فعال سازی آن،نحوه استفاده از UFW را با جزئیات بیشتری پوشش می دهد، مانند اجازه دادن یا رد کردن انواع مختلف اتصالات، پس تا انتها همراه ما باشید.
مرحله 5 – اجازه دادن به سایر اتصالات
در این مرحله، باید به تمام اتصالات دیگری که سرور شما نیاز به پاسخگویی به آن ها دارد اجازه دهید. اتصالاتی که باید اجازه دهید به نیاز های خاص شما بستگی دارد. خوشبختانه، شما از قبل می دانید که چگونه دستوراتی را بنویسید که بر اساس نام یا پورت سرویس، اتصالات را مجاز می کند، چرا که در مرحله 3 این کار را برای سرویس ssh با پورت 22 انجام دادیم. همچنین می توانید این کار را برایسرویس های زیر انجام دهید:
- HTTP در پورت 80، همان چیزی است که وب سرورهای رمزگذاری نشده از آن استفاده می کنند، برای مجاز کردن آن می توانید از دستور sudo ufw allow http یا sudo ufw allow 80 استفاده کنید.
- HTTPS در پورت 443، همان چیزی است که وب سرورهای رمزگذاری شده از آن استفاده می کنند، با استفاده از دستور sudo ufw allow https یا sudo ufw allow 443 نیز می تواید این سرویس را مجاز کنید.
چندین راه دیگر برای اجازه دادن به اتصالات به غیر از تعیین پورت یا سرویس شناخته شده وجود دارد که در ادامه به آن ها می پردازیم:
محدوده پورت
شما می توانید محدوده پورت را با UFW مشخص کنید. برخی از برنامه ها به جای یک پورت، از چندین پورت استفاده می کنند. به عنوان مثال، برای اجازه دادن به اتصالات X11 که از پورت های 6000-6007 استفاده می کنند، از این دستورات استفاده کنید:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
هنگام تعیین محدوده پورت با UFW، باید پروتکلی (tcp یا udp) را مشخص کنید که قوانین باید روی آن اعمال شوند. ما قبلاً به این موضوع اشاره نکردهایم زیرا مشخص نکردن پروتکل به طور خودکار به هر دو پروتکل اجازه میدهد، که در بیشتر موارد خوب است.
آدرس های IP خاص
هنگام کار با UFW، می توانید آدرس های IP را نیز مشخص کنید. به عنوان مثال، اگر می خواهید اتصالات از یک آدرس IP خاص، مانند آدرس IP محل کار یا خانه را مجاز کنید، باید آدرس IP را با وارد کردن دستور زیر مشخص کنید:
sudo ufw allow from ip address
به جای ip address در دستور بالا ip مورد نظر خود را وارد کنید. همچنین میتوانید پورت خاصی را که آدرس IP مجاز به اتصال به آن است مشخص کنید. به عنوان مثال، اگر می خواهید به 203.0.113.4 اجازه دهید به پورت 22 (SSH) متصل شود، از این دستور استفاده کنید:
sudo ufw allow from 203.0.113.4 to any port 22
به جای آی پی 202.0.113.4 و پورت 22 می تواینید ip و پورت مورد نظر خود را وارد کنید.
زیر شبکه ها
اگر میخواهید به زیرشبکهای از آدرسهای IP اجازه دهید، میتوانید این کار را با استفاده از CIDR برای تعیین یک ماسک شبکه انجام دهید. به عنوان مثال، اگر می خواهید به تمام آدرس های IP از 203.0.113.1 تا 203.0.113.254 اجازه دهید، می توانید از دستور زیر استفاده کنید:
sudo ufw allow from 203.0.113.0/24
به همین ترتیب، میتوانید پورت مقصدی را نیز مشخص کنید که زیرشبکه 203.0.113.0/24 مجاز به اتصال به آن است. مجدداً از پورت 22 (SSH) به عنوان مثال استفاده خواهیم کرد:
sudo ufw allow from 203.0.113.0/24 to any port 22
اتصالات به یک رابط شبکه خاص
اگر میخواهید یک قانون فایروال ایجاد کنید که فقط برای یک رابط شبکه خاص اعمال میشود، میتوانید این کار را با مشخص کردن «allow in on» و سپس نام رابط شبکه انجام دهید. ممکن است بخواهید قبل از ادامه، رابط های شبکه خود را جستجو کنید. برای این کار از این دستور استفاده کنید:
ip addr
خروجی هایلایت شده نام رابط شبکه را نشان می دهد. آن ها معمولاً چیزی مانند eth0، ens1 یا enp3s2 نامگذاری می شوند.
Output Excerpt
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: enp0s4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .
بنابراین، اگر سرور شما دارای یک رابط شبکه عمومی به نام ens3 است، می توانید با این دستور به ترافیک HTTP (پورت 80) اجازه دهید:
sudo ufw allow in on ens3 to any port 80
انجام این کار به سرور شما اجازه می دهد تا درخواست های HTTP را از اینترنت عمومی دریافت کند. یا اگر میخواهید سرور پایگاه داده MySQL شما (پورت 3306) به اتصالات روی رابط شبکه خصوصی eth1 پاسخ دهد، میتوانید از این دستور استفاده کنید:
sudo ufw allow in on eth1 to any port 3306
این به سرورهای دیگر در شبکه خصوصی شما اجازه می دهد تا به پایگاه داده MySQL شما متصل شوند.
مرحله 6 – منع اتصالات
اگر policy پیشفرض اتصالات ورودی را تغییر ندادهاید، UFW طوری پیکربندی شده است که همه اتصالات ورودی را رد کند. به طور کلی، این فرآیند ایجاد یک policy فایروال ایمن را با الزام شما به ایجاد قوانینی که به صراحت به پورت ها و آدرس های IP خاص اجازه می دهد، ساده می کند.
با این حال، گاهی اوقات می خواهید اتصالات خاصی را بر اساس آدرس IP منبع یا زیرشبکه رد کنید، شاید به این دلیل که می دانید سرور شما از آنجا مورد حمله قرار می گیرد. همچنین، اگر میخواهید policy ورودی پیشفرض خود را به allow تغییر دهید (که توصیه نمیشود)، باید قوانین deny سرویسها یا آدرسهای IP را که نمیخواهید به آن ها اجازه اتصال دهید، ایجاد کنید.
برای نوشتن قوانین deny، می توانید از دستورات توضیح داده شده در مرحله 5 استفاده کنید و در آن ها allow را با deny جایگزین کنید.
به عنوان مثال، برای رد اتصالات HTTP، می توانید از این دستور استفاده کنید:
sudo ufw deny http
یا اگر می خواهید تمام اتصالات به آی پی 203.0.113.4 را رد کنید، می توانید از این دستور استفاده کنید:
sudo ufw deny from 203.0.113.4
حالا بیایید نگاهی به نحوه حذف قوانین بیندازیم.
مرحله 7 – حذف قوانین
دانستن نحوه حذف قوانین فایروال به همان اندازه مهم است که باید بدانید چگونه آن ها را ایجاد کنید. دو روش مختلف برای تعیین قوانین حذف وجود دارد: با Rule Number یا با Actual Rule (مشابه نحوه تعیین قوانین هنگام ایجاد آن ها). ما با روش حذف با Rule Number شروع می کنیم زیرا ساده تر است.
حذف قوانین با Rule Number
برای حذف قوانین باید شماره قانون را بدانید که برای نمایش آن می توانید از فرمان UFW status که در زیر مشاهده می کنید استفاده کنید که گزینه ای برای نمایش اعداد در کنار هر قانون دارد.
sudo ufw status numbered
Numbered Output:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
به طور مثال اگر تصمیم دارید که قانون 2 در خروجی فوق را حذف کنید (قانونی که به پورت 80 (HTTP) اجازه اتصال می دهد)، می توانید آن را در دستور حذف UFW مانند زیر مشخص کنید:
sudo ufw delete 2
با وارد کردن این دستور، یک اعلان تأیید را نشان می دهد و سپس قانون 2 را حذف می کند که به اتصالات HTTP اجازه می دهد.
حذف قوانین با Actual Rule
جایگزین روش Rule Number این است که Actual Rule را برای حذف مشخص کنید. به عنوان مثال، اگر می خواهید قانون http را با این روش حذف کنید، می توانید از دستور زیر استفاده کنید:
sudo ufw delete allow http
همچنین می توانید به جای نام سرویس، قانون را با شماره پورت نیز حذف کنید به طور مثال در زیر ما قانونی با پورت 80 را حذف می کنیم:
sudo ufw delete allow 80
این روش برای حذف قوانین IPv4 و IPv6 قابل استفاده است.
مرحله 8 – بررسی وضعیت UFW و قوانین
در هر زمان می توانید وضعیت UFW را با این دستور بررسی کنید:
sudo ufw status verbose
اگر UFW غیرفعال باشد،خروجی چیزی شبیه به این را خواهید دید:
Output
Status: inactive
اگر UFW فعال باشد، خروجی می گوید فعال است و قوانین تنظیم شده را فهرست می کند. برای مثال، اگر فایروال به گونه ای تنظیم شده باشد که اتصال SSH (پورت 22) را از هر جایی مجاز کند، خروجی ممکن است چیزی شبیه به این باشد:
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22 (v6) ALLOW IN Anywhere (v6)
مرحله 9 – غیرفعال کردن یا بازنشانی UFW
اگر نمی خواهید از UFW استفاده کنید، می توانید آن را با این دستور غیرفعال کنید:
sudo ufw disable
با وارد کردن این دستور هر قانونی که با UFW ایجاد کردید دیگر فعال نخواهد بود. اگر بخواهید بعداً آن را فعال کنید، همیشه می توانید دستور sudo ufw enable را اجرا کنید. اگر قبلاً قوانین UFW را پیکربندی کرده اید، اما می خواهید کار پیکر بندی را از نو شروع کنید، می توانید از دستور reset استفاده کنید:
sudo ufw reset
این کار UFW را غیرفعال می کند و قوانینی را که قبلاً تعریف شده بود حذف می کند.
نتیجه
با انجام مراحل بالا نصب فایروال UFW به پایان رسید و فایروال شما اکنون پیکربندی و راه اندازی شده است تا اتصالات SSH را مجاز کند. پس از نصب فایروال UFW به خاطر داشته باشید که برای اتصالات ورودی دیگری که سرور شما نیاز دارد، نیز پیکربندی های لازم را انجام دهید و اتصالات غیر ضروری را محدود کنید، با این کار سرور شما کاربردی و ایمن خواهد بود.