| UFW(8) | دستورات مدیریت سیستم | UFW(8) |
نام (NAME)
ufw - برنامهای برای مدیریت دیوار آتش netfilter
توضیحات (DESCRIPTION)
این برنامه برای مدیریت دیوار آتش لینوکس طراحی شده است و هدف آن ارائه رابطی با استفاده آسان برای کاربران است.
نحوه استفاده (USAGE)
- ufw [--dry-run] enable|disable|reload
- ufw [--dry-run] default allow|deny|reject [incoming|outgoing|routed]
- ufw [--dry-run] logging on|off|LEVEL
- ufw [--dry-run] reset
- ufw [--dry-run] status [verbose|numbered]
- ufw [--dry-run] show REPORT
- ufw [--dry-run] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out] [log|log-all] [ PORT[/PROTOCOL] | APPNAME ] [comment COMMENT]
- ufw [--dry-run] [rule] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]
- ufw [--dry-run] route [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME]] [to ADDRESS [port PORT | app APPNAME]] [comment COMMENT]
- ufw [--dry-run] [--force] delete NUM
- ufw [--dry-run] app list|info|default|update
گزینهها (OPTIONS)
- --version
- نمایش شماره نسخه برنامه و خروج.
- -h, --help
- نمایش پیام راهنما و خروج.
- --dry-run
- چیزی را تغییر نمیدهد، فقط تغییرات را نمایش میدهد.
- enable
- دیوار آتش را مجدداً بارگذاری کرده و آن را در زمان بوت سیستم فعال میکند.
- disable
- دیوار آتش را متوقف کرده و اجرای خودکار آن را در زمان بوت سیستم غیرفعال میکند.
- reload
- دیوار آتش را مجدداً بارگذاری میکند.
- default allow|deny|reject DIRECTION
- سیاست پیشفرض را برای جهت ترافیک DIRECTION تغییر میدهد که در آن DIRECTION یکی از مقادیر incoming، outgoing یا routed است. توجه داشته باشید که هنگام تغییر سیاست پیشفرض، قوانین موجود باید بهصورت دستی منتقل شوند. برای جزئیات بیشتر درباره deny و reject به بخش ساختار قواعد (RULE SYNTAX) مراجعه کنید.
- logging on|off|LEVEL
- تغییر وضعیت ثبت گزارش (لاگگیری). بستههای ثبتشده از تسهیلات سیستمی LOG_KERN در syslog استفاده میکنند. سیستمهایی که برای پشتیبانی از rsyslog پیکربندی شدهاند نیز ممکن است گزارشها را در /var/log/ufw.log ثبت کنند. مشخص کردن یک LEVEL ثبت گزارش را برای سطح تعیینشده فعال میکند. سطح گزارش پیشفرض 'low' است. برای جزئیات به بخش ثبت گزارش (LOGGING) مراجعه کنید.
- reset
- دیوار آتش را غیرفعال کرده و تنظیمات آن را به پیشفرضهای اولیه زمان نصب بازمیگرداند. همچنین میتوان گزینه --force را برای انجام بازنشانی بدون درخواست تأیید مشخص کرد.
- status
- وضعیت دیوار آتش و قوانین مدیریتشده توسط ufw را نمایش میدهد. برای دریافت اطلاعات تکمیلی از status verbose استفاده کنید. در خروجی وضعیت، عبارت 'Anywhere' مترادف با 'any'، 0.0.0.0/0 (IPv4) و ::/0 (IPv6) است. توجه داشته باشید که هنگام استفاده از status، تفاوت ظریفی در گزارش رابطهای شبکه وجود دارد. به عنوان مثال اگر قوانین زیر اضافه شوند:
ufw allow in on eth0 from 192.168.0.0/16 ufw allow out on eth1 to 10.0.0.0/8 ufw route allow in on eth0 out on eth1 to 10.0.0.0/8 from 192.168.0.0/16 ufw limit 2222/tcp comment 'SSH port'
دستور ufw status خروجی زیر را تولید خواهد کرد:
To Action From -- ------ ---- Anywhere on eth0 ALLOW 192.168.0.0/16 10.0.0.0/8 ALLOW OUT Anywhere on eth1 10.0.0.0/8 on eth1 ALLOW FWD 192.168.0.0/16 on eth0 Anywhere LIMIT Anywhere # SSH port
برای قوانین ورودی و خروجی، رابط شبکه نسبت به سیستم دیوار آتش به عنوان یک نقطه پایانی گزارش میشود، در حالی که در قوانین مسیر (route)، رابط شبکه نسبت به جهت جریان عبور بستهها از دیوار آتش گزارش میگردد.
- show REPORT
- اطلاعات مربوط به دیوار آتش در حال اجرا را نمایش میدهد. بخش گزارشها (REPORTS) را ببینید.
- allow ARGS
- افزودن قاعده مجاز (allow). بخش ساختار قواعد (RULE SYNTAX) را ببینید.
- deny ARGS
- افزودن قاعده مسدودسازی (deny). بخش ساختار قواعد (RULE SYNTAX) را ببینید.
- reject ARGS
- افزودن قاعده رد ترافیک (reject). بخش ساختار قواعد (RULE SYNTAX) را ببینید.
- limit ARGS
- افزودن قاعده محدودسازی نرخ (limit). بخش ساختار قواعد (RULE SYNTAX) را ببینید.
- delete RULE|NUM
- قاعده مربوطه را حذف میکند.
- insert NUM RULE
- قاعده مربوطه را با شماره ردیف NUM درج میکند.
- prepend RULE
- قاعده مربوطه را به ابتدای مجموعه قوانین اضافه میکند.
ساختار قواعد (RULE SYNTAX)
کاربران میتوانند قوانین را با استفاده از ساختار ساده یا ساختار کامل مشخص کنند. ساختار ساده تنها پورت و در صورت تمایل پروتکل مجاز یا مسدود روی میزبان را مشخص میکند.
هر دو ساختار از تعیین توضیحات (comment) برای قاعده پشتیبانی میکنند. برای قوانین موجود، تعیین توضیحات متفاوت آن را بهروزرسانی میکند و تعیین '' توضیحات را حذف خواهد کرد (توجه: از 'insert' و 'prepend' نمیتوان برای بهروزرسانی توضیحات استفاده کرد).
مثالهایی از قوانین با استفاده از ساختار ساده:
ufw allow 53
این قاعده دسترسی پورت ۵۳ در پروتکلهای tcp و udp را برای هر آدرسی روی این میزبان مجاز میکند. برای تعیین پروتکل، عبارت '/protocol' را به انتهای پورت اضافه کنید؛ به عنوان مثال:
ufw allow 25/tcp
این دستور پورت ۲۵ پروتکل tcp را به هر آدرسی روی این میزبان مجاز میکند. ابزار ufw همچنین در صورت مشخص کردن نام یک سرویس، فایل /etc/services را برای پورت و پروتکل بررسی میکند؛ مانند:
ufw allow smtp
دستور ufw از هر دو فیلتر ترافیک ورودی (ingress) و خروجی (egress) پشتیبانی میکند و کاربران میتوانند به دلخواه خود جهت ترافیک را با استفاده از in یا out برای ترافیکهای ورودی یا خروجی تعیین کنند. اگر جهتی مشخص نشود، قاعده بر ترافیک ورودی اعمال خواهد شد؛ مانند:
ufw allow in http ufw reject out smtp ufw reject telnet comment 'telnet is unencrypted'
کاربران همچنین میتوانند از ساختار کاملتری استفاده کنند و آدرسها و پورتهای مبدأ و مقصد را مشخص نمایند. این ساختار تا حدودی بر پایه ساختار PF در OpenBSD طراحی شده است. برای مثال:
ufw deny proto tcp to any port 80
این دستور تمام ترافیک به پورت ۸۰ پروتکل tcp روی این میزبان را مسدود میکند. مثالی دیگر:
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
این دستور تمام ترافیک از شبکه کلاس A با استاندارد RFC1918 به پورت ۲۵ پروتکل tcp با آدرس 192.168.0.1 را مسدود خواهد کرد.
ufw deny proto tcp from 2001:db8::/32 to any port 25
این دستور تمام ترافیک شبکه IPv6 با شناسه 2001:db8::/32 به پورت ۲۵ پروتکل tcp روی این میزبان را مسدود میکند. برای اینکه فایروال IPv6 کار کند، باید IPv6 در /etc/default/ufw فعال شده باشد.
ufw deny in on eth0 to 224.0.0.1 proto igmp
این دستور تمام ترافیک igmp به آدرس 224.0.0.1 روی رابط eth0 را مسدود میکند.
ufw allow in on eth0 to 192.168.0.1 proto gre
این دستور تمام ترافیک gre به آدرس 192.168.0.1 روی رابط eth0 را مجاز میکند.
ufw allow proto tcp from any to any port 80,443,8080:8090 comment 'web app'
دستور بالا تمام ترافیک به پورتهای tcp شماره ۸۰، ۴۴۳ و بازه ۸۰۸۰ تا ۸۰۹۰ (شامل ابتدا و انتها) را مجاز کرده و توضیحی برای این قاعده میافزاید. هنگام تعیین چند پورت، فهرست پورتها باید عددی باشد، فاصله نداشته باشد و باید به صورت یکپارچه ویرایش شود؛ به عنوان مثال در نمونه بالا، بعداً نمیتوانید فقط پورت '443' را حذف کنید. شما نمیتوانید بیش از ۱۵ پورت مشخص کنید (هر بازه به عنوان ۲ پورت محاسبه میشود، بنابراین تعداد پورتها در مثال بالا ۴ است).
دستور ufw از چندین پروتکل مختلف پشتیبانی میکند. پروتکلهای زیر در هر قاعدهای معتبر هستند و در صورت عدم تعیین پروتکل، بهطور پیشفرض فعال میباشند:
tcp udp
پروتکلهای زیر دارای محدودیتهای خاصی هستند و زمانی که پروتکل مشخص نشده باشد فعال نمیشوند:
ah معتبر بدون شماره پورت esp معتبر بدون شماره پورت gre معتبر بدون شماره پورت vrrp معتبر بدون شماره پورت ipv6 معتبر برای آدرسهای IPv4 و بدون شماره پورت igmp معتبر برای آدرسهای IPv4 و بدون شماره پورت
قوانین مربوط به ترافیکی که مقصد آن خودِ میزبان نیست، بلکه باید از میان دیوار آتش هدایت/بازارسال (routed/forwarded) شود، باید کلیدواژه route را قبل از قاعده مشخص کنند (قوانین مسیریابی تفاوت چشمگیری با ساختار PF دارند و در عوض قراردادهای زنجیره FORWARD در netfilter را در نظر میگیرند). به عنوان مثال:
ufw route allow in on eth1 out on eth2
این دستور به تمام ترافیکی که به سمت eth2 هدایت شده و از eth1 وارد میشود اجازه عبور از دیوار آتش را میدهد.
ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp
این قاعده به هر بستهای که از eth0 وارد میشود اجازه میدهد از دیوار آتش عبور کرده و از طریق eth1 به پورت ۸۰ پروتکل tcp در آدرس 12.34.45.67 ارسال شود.
علاوه بر قوانین و سیاستهای مسیریابی، باید بازارسالی IP (IP forwarding) را نیز پیکربندی کنید. این کار میتواند با تنظیم مقادیر زیر در /etc/ufw/sysctl.conf انجام شود:
net/ipv4/ip_forward=1 net/ipv6/conf/default/forwarding=1 net/ipv6/conf/all/forwarding=1
و سپس راهاندازی مجدد دیوار آتش:
ufw disable ufw enable
توجه داشته باشید که تنظیم متغیرهای هسته مختص سیستمعامل است و ممکن است تنظیمات sysctl در ufw نادیده گرفته یا بازنویسی شوند. برای جزئیات به صفحه راهنمای sysctl مراجعه کنید.
ابزار ufw از محدودسازی نرخ اتصالات پشتیبانی میکند که برای محافظت در برابر حملات ورود با آزمون و خطا (brute-force) مفید است. هنگامی که از یک قاعده limit استفاده میشود، ufw بهطور معمول اجازه اتصال را میدهد، اما اگر یک آدرس IP بخواهد در عرض ۳۰ ثانیه ۶ اتصال یا بیشتر برقرار کند، اتصالات آن را مسدود خواهد کرد. برای جزئیات بیشتر به http://www.debian-administration.org/articles/187 مراجعه کنید. کاربرد متداول آن به صورت زیر است:
ufw limit ssh/tcp
گاهی اوقات ترجیح داده میشود فرستنده متوجه رد شدن ترافیک شود، بهجای اینکه ترافیک صرفاً نادیده گرفته و دور انداخته شود. در این حالتها از reject بهجای deny استفاده کنید. برای مثال:
ufw reject auth
بهطور پیشفرض، ufw قواعد را بر تمام رابطهای شبکه موجود اعمال میکند. برای محدود کردن این رفتار، از عبارت DIRECTION on INTERFACE استفاده کنید که در آن DIRECTION یکی از دو مقدار in یا out است (نامهای مستعار رابط شبکه پشتیبانی نمیشوند). برای مثال، برای مجاز کردن تمام اتصالات ورودی جدید http روی eth0، از دستور زیر استفاده کنید:
ufw allow in on eth0 to any port 80 proto tcp
برای حذف یک قاعده، کافی است پیشوند delete را همراه با توضیحات قاعده یا بدون آن به ابتدای قاعده اصلی اضافه کنید. برای مثال اگر قاعده اصلی این بوده است:
ufw deny 80/tcp
برای حذف آن از این دستور استفاده کنید:
ufw delete deny 80/tcp
شما همچنین میتوانید قاعده را با استفاده از شماره NUM آن مطابق آنچه در خروجی status numbered دیده میشود مشخص کنید. برای مثال اگر میخواهید قاعده شماره '3' را حذف کنید، از این دستور استفاده نمایید:
ufw delete 3
اگر IPv6 را فعال کردهاید و در حال حذف یک قاعده عمومی هستید که هم بر IPv4 و هم بر IPv6 اعمال میشود (مثلاً 'ufw allow 22/tcp')، حذف بر اساس شماره قاعده فقط همان قاعده مشخصشده را حذف خواهد کرد. برای حذف هر دو نسخه با یک دستور، پیشوند delete را به ابتدای دستور قاعده اصلی اضافه کنید.
برای درج یک قاعده در موقعیتی مشخص، قاعده جدید را طبق روال معمول بنویسید، اما پیشوند شماره ردیفی را که میخواهید قاعده در آن قرار گیرد اضافه کنید. برای مثال اگر چهار قاعده دارید و میخواهید یک قاعده جدید را به عنوان قاعده شماره سه درج کنید، از دستور زیر استفاده نمایید:
ufw insert 3 deny to any port 22 from 10.0.0.135 proto tcp
به همین ترتیب، برای افزودن یک قاعده پیش از تمامی قوانین دیگرِ منطبق بر نوع IP آن قاعده، از دستور prepend استفاده کنید:
ufw prepend deny from 1.2.3.4
این قابلیت بهویژه برای دیوارهای آتش پویا نظیر آنچه در سامانههای پیشگیری از نفوذ (IPS) به کار میرود بسیار سودمند است. نکته مهم این است که اگر قاعده مشخصشده یک قاعده IPv4 باشد، پیش از تمام قوانین IPv4 دیگر درج میشود، و اگر قاعده IPv6 باشد، پیش از هر قاعده IPv6 دیگر قرار خواهد گرفت.
برای مشاهده فهرست قوانین شمارهگذاریشده، از دستور زیر استفاده کنید:
ufw status numbered
دستور ufw از ثبت گزارش به ازای هر قاعده پشتیبانی میکند. بهطور پیشفرض، هنگامی که بستهای با یک قاعده مطابقت دارد، هیچ گزارشی ثبت نمیشود. تعیین log تمام اتصالات جدیدِ مطابق با قاعده را ثبت میکند، و تعیین log-all تمام بستههای مطابق با قاعده را ثبت خواهد کرد. به عنوان مثال، برای مجاز کردن و ثبت گزارش تمام اتصالات جدید ssh، از دستور زیر استفاده کنید:
ufw allow log 22/tcp
برای اطلاعات بیشتر در مورد ثبت وقایع، بخش ثبت گزارش (LOGGING) را ببینید.
مثالها (EXAMPLES)
مسدود کردن تمام دسترسیها به پورت ۵۳:
ufw deny 53
مجاز کردن تمام دسترسیها به پورت ۸۰ پروتکل tcp:
ufw allow 80/tcp
مجاز کردن تمام دسترسیها از شبکههای استاندارد RFC1918 به این میزبان:
ufw allow from 10.0.0.0/8 ufw allow from 172.16.0.0/12 ufw allow from 192.168.0.0/16
مسدود کردن دسترسی به پورت ۵۱۴ پروتکل udp از میزبان 1.2.3.4:
ufw deny proto udp from 1.2.3.4 to any port 514
مجاز کردن دسترسی به آدرس 1.2.3.4 پورت ۵۴۶۹ پروتکل udp از مبدأ 1.2.3.5 پورت ۵۴۶۹:
ufw allow proto udp from 1.2.3.5 port 5469 to 1.2.3.4 port 5469
مدیریت از راه دور (REMOTE MANAGEMENT)
هنگام اجرای ufw enable یا راهاندازی ufw از طریق اسکریپت init آن، ufw زنجیرههای خود را پاکسازی (flush) میکند. این کار برای اینکه ufw بتواند وضعیت پایدار و یکپارچهای را حفظ کند لازم است، اما ممکن است اتصالات فعال فعلی (مانند ssh) را قطع کند. ابزار ufw از افزودن قوانین قبل از فعالسازی دیوار آتش پشتیبانی میکند، بنابراین مدیران سیستم میتوانند پیش از اجرای ufw enable، دستور زیر را اجرا کنند:
ufw allow proto tcp from any to any port 22
زنجیرهها همچنان پاکسازی خواهند شد، اما پس از فعالسازی دیوار آتش، پورت ssh باز خواهد ماند. لطفاً توجه داشته باشید که پس از 'فعال شدن' ufw، ابزار ufw هنگام افزودن یا حذف قوانین زنجیرهها را پاکسازی نخواهد کرد (اما هنگام ویرایش یک قاعده یا تغییر سیاست پیشفرض این کار را انجام میدهد). بهطور پیشفرض، اگر دیوار آتش را از طریق نشست ssh فعال کنید، ufw از شما تأیید خواهد خواست. این اعلان را میتوان با استفاده از ufw --force enable غیرفعال کرد.
یکپارچهسازی با برنامهها (APPLICATION INTEGRATION)
دستور ufw با خواندن پروفایلهای واقع در /etc/ufw/applications.d از یکپارچهسازی با برنامهها پشتیبانی میکند. برای مشاهده فهرست نام پروفایلهای برنامههای شناختهشده برای ufw، دستور زیر را اجرا کنید:
ufw app list
کاربران میتوانند هنگام افزودن یک قاعده، نام برنامه را مشخص کنند (نامهای پروفایل حاوی فاصله باید در گیومه قرار گیرند). برای مثال، هنگام استفاده از ساختار ساده، کاربران میتوانند بنویسند:
ufw allow <name>
یا برای ساختار گسترده:
ufw allow from 192.168.0.0/16 to any app <name>
در هیچیک از این دو ساختار نباید پروتکل را مشخص کنید، و در ساختار گسترده، از عبارت app بهجای بند port استفاده نمایید.
جزئیات پروفایل دیوار آتش برای یک برنامه مشخص را میتوان با دستور زیر مشاهده کرد:
ufw app info <name>
که در آن '<name>' یکی از برنامههای مشاهدهشده با دستور app list است. کاربران همچنین میتوانند مقدار all را مشخص کنند تا پروفایلهای تمام برنامههای شناختهشده را مشاهده نمایند.
ساختار فایلهای پروفایل برنامه یک فرمت ساده .INI است:
[<name>] title=<title> description=<description> ports=<ports>
فیلد 'ports' میتواند فهرستی از پورتها/پروتکلها را مشخص کند که با '|' از هم جدا شدهاند و تعیین پروتکل در آنها اختیاری است. همچنین میتوان از فهرستی جداشده با کاما یا یک بازه (مشخصشده با 'start:end') برای تعیین چند پورت استفاده کرد که در این حالت تعیین پروتکل الزامی است. برای مثال:
[SomeService] title=Some title description=Some description ports=12/udp|34|56,78:90/tcp
در مثال فوق، 'SomeService' میتواند در قوانین مربوط به برنامهها به کار رود و پورت ۱۲ پروتکل UDP، پورت ۳۴ پروتکلهای TCP و UDP، و پورتهای ۵۶ و بازه ۷۸ تا ۹۰ پروتکل TCP (شامل هر دو ابتدا و انتها) را مشخص میکند.
پس از ایجاد یا ویرایش پروفایل یک برنامه، کاربران میتوانند دستور زیر را اجرا کنند:
ufw app update <name>
این دستور بهطور خودکار دیوار آتش را با اطلاعات بهروزرسانیشده پروفایل همگام میسازد. اگر به عنوان نام 'all' مشخص شود، تمامی پروفایلها بهروزرسانی خواهند شد. برای بهروزرسانی یک پروفایل و افزودن خودکار قاعده جدید به دیوار آتش، کاربران میتوانند دستور زیر را اجرا کنند:
ufw app update --add-new <name>
رفتار دستور update --add-new میتواند با دستور زیر پیکربندی شود:
ufw app default <policy>
سیاست پیشفرض برنامهها skip است، به این معنی که دستور update --add-new هیچ عملی انجام نخواهد داد. کاربران همچنین میتوانند سیاست را روی allow یا deny تنظیم کنند تا دستور update --add-new بتواند دیوار آتش را بهطور خودکار بهروزرسانی کند. هشدار: استفاده از سیاست پیشفرض allow برای پروفایلهای برنامه ممکن است یک مخاطره امنیتی به همراه داشته باشد. پیش از استفاده از سیاست پیشفرض allow، عواقب امنیتی آن را با دقت بسنجید.
ثبت گزارش (LOGGING)
ابزار ufw از سطوح مختلف ثبت وقایع پشتیبانی میکند. در صورتی که سطحی مشخص نشود، ufw بهطور پیشفرض از سطح 'low' استفاده میکند. کاربران میتوانند سطح گزارشگیری را با دستور زیر مشخص کنند:
ufw logging LEVEL
مقدار LEVEL میتواند یکی از مقادیر 'off'، 'low'، 'medium'، 'high' و 'full' باشد. سطوح ثبت وقایع به شرح زیر تعریف میشوند:
- off
- ثبت وقایعِ مدیریتشده توسط ufw را غیرفعال میکند.
- low
- تمام بستههای مسدودشدهای را که با سیاست تعریفشده مطابقت ندارند (با محدودسازی نرخ)، و همچنین بستههای منطبق با قوانینِ دارای لاگ را ثبت میکند.
- medium
- شامل سطح low، بهعلاوه تمام بستههای مجازی که با سیاست تعریفشده مطابقت ندارند، تمام بستههای با وضعیت INVALID و تمام اتصالات جدید. تمام گزارشها با محدودسازی نرخ ثبت میشوند.
- high
- شامل سطح medium (بدون محدودسازی نرخ)، بهعلاوه تمام بستهها با محدودسازی نرخ.
- full
- شامل سطح high بدون اعمال محدودسازی نرخ.
سطوح ثبت گزارش بالاتر از medium خروجی بسیار زیادی تولید میکنند و ممکن است دیسک شما را به سرعت پر کنند. سطح medium نیز ممکن است در یک سیستم پرترافیک گزارشهای فراوانی ایجاد نماید.
مشخص کردن مقدار 'on' در صورتی که ثبت وقایع در حال حاضر فعال نباشد، به سادگی لاگگیری را در سطح 'low' فعال میکند.
گزارشها (REPORTS)
گزارشهای زیر پشتیبانی میشوند. هر یک بر پایه سیستم زنده استخراج شده و به استثنای گزارش listening، همگی در قالب خام iptables هستند:
raw builtins before-rules user-rules after-rules logging-rules listening added
گزارش raw دیوار آتش را به طور کامل نشان میدهد، در حالی که سایر موارد زیرمجموعهای از محتوای موجود در گزارش raw را نمایش میدهند.
گزارش listening پورتهای سیستم زنده را در وضعیت listening برای tcp و وضعیت باز برای udp، همراه با آدرس رابط شبکه و برنامه اجرایی شنونده روی پورت نمایش میدهد. هنگامی که برنامه اجرایی به تمام رابطها روی آن پورت متصل باشد، به جای آدرس رابط علامت '*' درج میشود. پس از این اطلاعات، فهرستی از قوانینی که ممکن است بر اتصالات روی این پورت تأثیر بگذارند ارائه میگردد. قوانین به ترتیبی که توسط هسته بررسی میشوند مرتب شدهاند و اولین تطابق اعمال خواهد شد. لطفاً توجه داشته باشید که سیاست پیشفرض در فهرست نشان داده نمیشود و پورتهای tcp6 و udp6 تنها در صورت فعال بودن IPV6 نمایش داده خواهند شد.
گزارش added فهرست قوانین را به همان ترتیبی که در خط فرمان اضافه شدهاند نمایش میدهد. این گزارش وضعیت دیوار آتش در حال اجرا را نشان نمیدهد (برای این منظور از ufw status استفاده کنید). از آنجا که قوانین توسط ufw استانداردسازی (نرمالسازی) میشوند، ممکن است قوانین نسبت به آنچه در ابتدا اضافه شده تفاوت ظاهری داشته باشند. همچنین ufw ترتیب دستورات ورودی را ذخیره نمیکند، بنابراین از ترتیبی معادل استفاده میشود که در آن قوانین مختص IPv6 بعد از سایر قوانین قرار میگیرند.
نکات (NOTES)
هنگام نصب، ufw غیرفعال است و سیاست پیشفرض ورودی آن مسدود (deny)، سیاست پیشفرض هدایت آن مسدود (deny) و سیاست پیشفرض خروجی آن مجاز (allow) تنظیم شده است، همراه با ردیابی وضعیت (stateful tracking) برای اتصالات NEW در ترافیکهای ورودی و هدایتشده. علاوه بر موارد فوق، یک مجموعه قانون پیشفرض اعمال میشود که اقدامات زیر را انجام میدهد:
- - انداختن (DROP) بستههای دارای سرآیند RH0
- - انداختن (DROP) بستههای نامعتبر (INVALID)
- - پذیرش (ACCEPT) بستههای مشخص icmp (در INPUT و FORWARD): بستههای destination-unreachable، source-quench، time-exceeded، parameter-problem و echo-request برای IPv4؛ و بستههای destination-unreachable، packet-too-big، time-exceeded، parameter-problem و echo-request برای IPv6.
- - پذیرش (ACCEPT) بستههای icmpv6 برای پیکربندی خودکار بدون وضعیت (INPUT)
- - پذیرش (ACCEPT) پاسخهای پینگ از آدرسهای پیوند-محلی IPv6 یعنی (ffe8::/10) در (INPUT)
- - پذیرش (ACCEPT) ترافیک کلاینت DHCP در (INPUT)
- - انداختن (DROP) ترافیک غیرمحلی (INPUT)
- - پذیرش (ACCEPT) پروتکل mDNS برای کشف سرویس در INPUT (آدرس 224.0.0.251 برای IPv4 و ff02::fb برای IPv6 در zeroconf/bonjour/avahi)
- - پذیرش (ACCEPT) پروتکل UPnP برای کشف سرویس در INPUT (آدرس 239.255.255.250 برای IPv4 و ff02::f برای IPv6)
ترتیب قوانین حائز اهمیت است و اولین تطابق برنده است. بنابراین هنگام افزودن قوانین، ابتدا قوانین خاصتر و سپس قوانین عمومیتر را اضافه کنید.
ابزار ufw با هدف ارائه تمامی قابلیتهای دیوار آتش از طریق رابط خط فرمان طراحی نشده است، بلکه روشی آسان برای افزودن یا حذف قوانین ساده ارائه میدهد.
دستور status اطلاعات پایه را در مورد وضعیت دیوار آتش و همچنین قوانینی که از طریق دستور ufw مدیریت میشوند نشان میدهد. این دستور قوانین موجود در فایلهای پیکربندی در /etc/ufw را نمایش نمیدهد. برای مشاهده وضعیت کامل دیوار آتش، کاربران میتوانند از دستور ufw show raw استفاده کنند. این دستور جدولهای filter، nat، mangle و raw را با فرامین زیر نمایش میدهد:
iptables -n -L -v -x -t <table> ip6tables -n -L -v -x -t <table>
برای جزئیات بیشتر به مستندات iptables و ip6tables مراجعه کنید.
اگر سیاست پیشفرض روی REJECT تنظیم شود، ufw ممکن است با قوانینی که خارج از چارچوب ufw افزوده شدهاند تداخل ایجاد کند. برای جزئیات به README مراجعه نمایید.
پروتکل IPV6 بهطور پیشفرض مجاز است. برای تغییر این رفتار جهت پذیرش ترافیک IPv6 صرفاً روی رابط loopback، مقدار IPV6 را در /etc/default/ufw بر روی 'no' تنظیم کرده و ufw را مجدداً بارگذاری کنید. هنگامی که IPv6 فعال است، میتوانید قوانین را به همان شیوه قوانین IPv4 مشخص کنید و آنها در خروجی ufw status نمایش داده خواهند شد. قوانینی که با هر دو آدرس IPv4 و IPv6 مطابقت دارند بر هر دو نسخه اعمال میگردند. برای مثال، هنگامی که IPv6 فعال است، قاعده زیر دسترسی به پورت ۲۲ را برای هر دو ترافیک IPv4 و IPv6 مجاز میسازد:
ufw allow 22
تونلهای IPv6 بر روی IPv4 و 6to4 با استفاده از پروتکل 'ipv6' (شماره '41') پشتیبانی میشوند. این پروتکل تنها با ساختار کامل قابل استفاده است؛ برای مثال:
ufw allow to 10.0.0.1 proto ipv6 ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ipv6
پروتکل IPSec با استفاده از پروتکلهای 'esp' (شماره '50') و 'ah' (شماره '51') پشتیبانی میشود. این پروتکلها تنها با ساختار کامل قابل استفاده هستند؛ برای مثال:
ufw allow to 10.0.0.1 proto esp ufw allow to 10.0.0.1 from 10.4.0.0/16 proto esp ufw allow to 10.0.0.1 proto ah ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ah
سرویس keepalived با استفاده از پروتکل 'vrrp' (شماره '112') پشتیبانی میشود. این پروتکل تنها با ساختار کامل قابل استفاده است؛ برای مثال:
ufw allow to 224.0.0.0/24 from 10.0.0.1 proto vrrp
علاوه بر رابط خط فرمان، ufw چارچوبی را فراهم میکند که به مدیران سیستم امکان میدهد رفتار پیشفرض را سفارشی کرده و از تمام قابلیتهای netfilter بهره ببرند. برای اطلاعات بیشتر به صفحه راهنمای ufw-framework مراجعه کنید.
همچنین ببینید (SEE ALSO)
ufw-framework(8), iptables(8), ip6tables(8), iptables-restore(8), ip6tables-restore(8), sysctl(8), sysctl.conf(5)
نویسنده (AUTHOR)
حق نشر نرمافزار ufw متعلق به شرکت Canonical Ltd از سال ۲۰۰۸ تا ۲۰۲۳ است.
| 2023-05-01 | May 2023 |