FIREWALLD.ZONE(5) firewalld.zone FIREWALLD.ZONE(5)

firewalld.zone - پرونده‌های پیکربندی ناحیه firewalld

/etc/firewalld/zones/zone.xml

/usr/lib/firewalld/zones/zone.xml

یک پرونده پیکربندی ناحیه firewalld حاوی اطلاعات مربوط به یک ناحیه است. این اطلاعات شامل توضیحات ناحیه، سرویس‌ها، پورت‌ها، پروتکل‌ها، مسدودسازی‌های icmp، تغییر نشانی (masquerade)، پورت‌های فوروارد (forward-ports)، فوروارد درون‌ناحیه‌ای و قوانین زبان پیشرفته در قالب یک پرونده XML است. نام پرونده باید به‌صورت zone_name.xml باشد که در آن طول zone_name در حال حاضر به ۱۷ نویسه محدود شده است.

این ساختار یک پرونده پیکربندی ناحیه است:

<?xml version="1.0" encoding="utf-8"?>
<zone [version="versionstring"] [target="ACCEPT|%%REJECT%%|DROP"] [ingress-priority="priority"] [egress-priority="priority"]>
    [ <interface name="string"/> ]
    [ <source address="address[/mask]"|mac="MAC"|ipset="ipset"/> ]
    [ <icmp-block-inversion/> ]
    [ <forward/> ]
    [ <short>short description</short> ]
    [ <description>description</description> ]
    [ <service name="string"/> ]
    [ <port port="portid[-portid]" protocol="tcp|udp|sctp|dccp"/> ]
    [ <protocol value="protocol"/> ]
    [ <icmp-block name="string"/> ]
    [ <masquerade/> ]
    [ <forward-port port="portid[-portid]" protocol="tcp|udp|sctp|dccp" [to-port="portid[-portid]"] [to-addr="IP address"]/> ]
    [ <source-port port="portid[-portid]" protocol="tcp|udp|sctp|dccp"/> ]
    [
        <rule [family="ipv4|ipv6"] [priority="priority"]>
            [ <source address="address[/mask]"|mac="MAC"|ipset="ipset" [invert="True"]/> ]
            [ <destination address="address[/mask]"|ipset="ipset" [invert="True"]/> ]
            [
                <service name="string"/> |
                <port port="portid[-portid]" protocol="tcp|udp|sctp|dccp"/> |
                <protocol value="protocol"/> |
                <icmp-block name="icmptype"/> |
                <icmp-type name="icmptype"/> |
                <masquerade/> |
                <forward-port port="portid[-portid]" protocol="tcp|udp|sctp|dccp" [to-port="portid[-portid]"] [to-addr="address"]/>
            ]
            [
                <log [prefix="prefix text"] [level="emerg|alert|crit|err|warn|notice|info|debug"]> [<limit value="rate/duration"/>] </log> |
                <nflog [group="group id"] [prefix="prefix text"] [queue-size="threshold"]> [<limit value="rate/duration"/>] </nflog>
            ]
            [ <audit> [<limit value="rate/duration"/>] </audit> ]
            [
                <accept> [<limit value="rate/duration"/>] </accept> |
                <reject [type="rejecttype"]> [<limit value="rate/duration"/>] </reject> |
                <drop> [<limit value="rate/duration"/>] </drop> |
                <mark set="mark[/mask]"> [<limit value="rate/duration"/>] </mark>
            ]
        </rule>
    ]
</zone>

پیکربندی می‌تواند شامل این برچسب‌ها و مشخصه‌ها باشد. برخی از آن‌ها اجباری و برخی دیگر اختیاری هستند.

برچسب اجباری آغاز و پایان zone، ناحیه را تعریف می‌کند. این برچسب تنها یک‌بار می‌تواند در یک پرونده پیکربندی ناحیه استفاده شود. مشخصه‌های اختیاری برای ناحیه‌ها وجود دارند:

version="string"

برای اختصاص دادن یک نسخه به ناحیه.

target="ACCEPT|%%REJECT%%|DROP"

می‌تواند برای پذیرش (accept)، رد کردن (reject) یا انداختن (drop) هر بسته‌ای که با هیچ قانونی (پورت، سرویس و غیره) تطابق ندارد استفاده شود.

مقدار ACCEPT خاص است: بسته‌هایی که مقصد آن‌ها میزبان نیست، صرف‌نظر از تنظیم forward ناحیه یا هر سیاستی که به ناحیه متصل است، به مقصدشان فوروارد خواهند شد.

در صورت عدم تعیین، رفتار پیش‌فرض اعمال می‌شود: ICMP پذیرفته خواهد شد و هر چیز دیگری رد (reject) می‌شود.

ingress-priority="priority"

اولویت ورودی (ingress) برای دسته‌بندی ترافیک به یک ناحیه. ناحیه‌ای با اولویت عددی کمتر، زودتر از ناحیه‌ای با اولویت عددی بیشتر بررسی خواهد شد. این ویژگی امکان سفارشی‌سازی ترتیب پردازش ناحیه‌ها را فراهم می‌کند.

egress-priority="priority"

مشابه ingress-priority، اما برای دسته‌بندی ترافیک خروجی (egress).

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار استفاده شود. می‌توان از آن برای پیوند دادن یک رابط به یک ناحیه استفاده کرد. برای رابط‌هایی که با NetworkManager مدیریت می‌شوند نیازی به این برچسب ندارید، زیرا NetworkManager رابط‌ها را به‌طور خودکار به ناحیه‌ها پیوند می‌دهد. همچنین بخش «چگونه ناحیه را برای یک اتصال تنظیم یا تغییر دهیم؟» را در firewalld.zones(5) ببینید. می‌توانید از آن به‌عنوان مکانیزم جایگزین (fallback) برای رابط‌هایی که از طریق NetworkManager قابل مدیریت نیستند استفاده کنید. هر ورودی رابط دقیقاً یک مشخصه دارد:

name="string"

نام رابطی که باید به ناحیه پیوند داده شود.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار استفاده شود. می‌توان از آن برای پیوند دادن یک نشانی مبدأ، محدوده نشانی، یک نشانی MAC یا یک ipset به یک ناحیه استفاده کرد. یک ورودی source دقیقاً یکی از این مشخصه‌ها را دارد:

address="address[/mask]"

مبدأ یا یک نشانی IP یا یک نشانی IP شبکه همراه با ماسک برای IPv4 یا IPv6 است. خانواده شبکه (IPv4/IPv6) به‌طور خودکار شناسایی خواهد شد. برای IPv4، ماسک می‌تواند یک ماسک شبکه یا یک عدد ساده باشد. برای IPv6 ماسک یک عدد ساده است. استفاده از نام‌های میزبان پشتیبانی نمی‌شود.

mac="MAC"

مبدأ یک نشانی MAC است. باید به شکل XX:XX:XX:XX:XX:XX باشد.

ipset="ipset"

مبدأ یک ipset است.

یک برچسب عنصر خالی اختیاری است و تنها یک‌بار در پیکربندی یک ناحیه می‌تواند استفاده شود. این فلگ نحوه مدیریت مسدودسازی icmp را معکوس می‌کند. تنها انواع فعال‌شده ICMP پذیرفته می‌شوند و تمام انواع دیگر در ناحیه رد خواهند شد.

یک برچسب عنصر خالی اختیاری است و تنها یک‌بار در پیکربندی یک ناحیه می‌تواند استفاده شود. این فلگ فوروارد درون‌ناحیه‌ای را فعال می‌کند. در صورت فعال بودن، بسته‌ها بین رابط‌ها یا مبداهای درون یک ناحیه فوروارد خواهند شد، حتی اگر هدف (target) ناحیه بر روی ACCEPT تنظیم نشده باشد.

یک برچسب آغاز و پایان اختیاری است و برای ارائه یک نام خواناتر استفاده می‌شود.

یک برچسب آغاز و پایان اختیاری برای درج توضیحات است.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار برای فعال‌سازی بیش از یک ورودی سرویس استفاده شود. یک ورودی service دقیقاً یک مشخصه دارد:

name="string"

نام سرویسی که باید فعال شود. برای دریافت فهرستی از نام‌های معتبر سرویس‌ها می‌توان از دستور firewall-cmd --get-services استفاده کرد.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار برای داشتن بیش از یک ورودی پورت استفاده شود. تمام مشخصه‌های یک ورودی پورت اجباری هستند:

port="portid[-portid]"

پورت می‌تواند یک شماره پورت منفرد portid یا یک محدوده پورت portid-portid باشد.

protocol="tcp|udp|sctp|dccp"

پروتکل می‌تواند یکی از موارد tcp، udp، sctp یا dccp باشد.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار برای داشتن بیش از یک ورودی پروتکل استفاده شود. هر ورودی protocol دقیقاً یک مشخصه دارد:

value="string"

پروتکل می‌تواند هر پروتکلی باشد که توسط سیستم پشتیبانی می‌شود. لطفاً برای مشاهده پروتکل‌های پشتیبانی‌شده به /etc/protocols نگاهی بیندازید.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار برای داشتن بیش از یک ورودی icmp-block استفاده شود. هر برچسب icmp-block دقیقاً یک مشخصه اجباری دارد:

name="string"

نام نوع پروتکل پیام کنترل اینترنت (ICMP) که باید مسدود شود. برای دریافت فهرستی از انواع معتبر ICMP می‌توان از دستور firewall-cmd --get-icmptypes استفاده کرد.

یک برچسب عنصر خالی اختیاری است. تنها یک‌بار می‌تواند استفاده شود. در صورت وجود، تغییر نشانی یا مسکریدینگ (masquerading) فعال می‌شود.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار برای داشتن بیش از یک ورودی فوروارد پورت یا بسته استفاده شود. مشخصه‌های اجباری و همچنین اختیاری برای پورت‌های فوروارد وجود دارد:

مشخصه‌های اجباری:

پورت محلی و پروتکلی که باید فوروارد شود.

port="portid[-portid]"

پورت می‌تواند یک شماره پورت منفرد portid یا یک محدوده پورت portid-portid باشد.

protocol="tcp|udp|sctp|dccp"

پروتکل می‌تواند یکی از موارد tcp، udp، sctp یا dccp باشد.

مشخصه‌های اختیاری:

مقصد فوروارد. برای فوروارد محلی تنها to-port را اضافه کنید. برای فوروارد راه دور to-addr را اضافه کنید و در صورتی که پورت مقصد در دستگاه مقصد متفاوت باشد، می‌توانید به‌صورت اختیاری از to-port استفاده کنید.

to-port="portid[-portid]"

پورت مقصد یا محدوده پورتی که باید به آن فوروارد شود. در صورت حذف، مقدار مشخصه port= همراه با مشخصه to-addr استفاده خواهد شد.

to-addr="address"

نشانی IP مقصد برای IPv4 یا IPv6.

یک برچسب عنصر خالی اختیاری است و می‌تواند چندین بار برای داشتن بیش از یک ورودی پورت مبدأ استفاده شود. تمام مشخصه‌های یک ورودی پورت مبدأ اجباری هستند:

port="portid[-portid]"

پورت می‌تواند یک شماره پورت منفرد portid یا یک محدوده پورت portid-portid باشد.

protocol="tcp|udp|sctp|dccp"

پروتکل می‌تواند یکی از موارد tcp، udp، sctp یا dccp باشد.

یک برچسب عنصر اختیاری است و می‌تواند چندین بار برای داشتن بیش از یک ورودی قانون زبان پیشرفته (rich language rule) استفاده شود.

ساختار کلی قانون:

<rule [family="ipv4|ipv6"] [priority="priority"]>
    [ <source address="address[/mask]"|mac="MAC"|ipset="ipset" [invert="True"]/> ]
    [ <destination address="address[/mask]"|ipset="ipset" [invert="True"]/> ]
    [
        <service name="string"/> |
        <port port="portid[-portid]" protocol="tcp|udp|sctp|dccp"/> |
        <protocol value="protocol"/> |
        <icmp-block name="icmptype"/> |
        <icmp-type name="icmptype"/> |
        <masquerade/> |
        <forward-port port="portid[-portid]" protocol="tcp|udp|sctp|dccp" [to-port="portid[-portid]"] [to-addr="address"]/>
    ]
    [
        <log [prefix="prefix text"] [level="emerg|alert|crit|err|warn|notice|info|debug"]> [<limit value="rate/duration"/>] </log> |
        <nflog [group="group id"] [prefix="prefix text"] [queue-size="threshold"]> [<limit value="rate/duration"/>] </nflog>
    ]
    [ <audit> [<limit value="rate/duration"/>] </audit> ]
    [
        <accept> [<limit value="rate/duration"/>] </accept> |
        <reject [type="rejecttype"]> [<limit value="rate/duration"/>] </reject> |
        <drop> [<limit value="rate/duration"/>] </drop> |
        <mark set="mark[/mask]"> [<limit value="rate/duration"/>] </mark>
    ]
</rule>

ساختار قانون برای فهرست‌بندی سیاه یا سفید مبدأ:

<rule [family="ipv4|ipv6"] [priority="priority"]>
    <source address="address[/mask]"|mac="MAC"|ipset="ipset" [invert="True"]/>
    [
        <log [prefix="prefix text"] [level="emerg|alert|crit|err|warn|notice|info|debug"]> [<limit value="rate/duration"/>] </log> |
        <nflog [group="group id"] [prefix="prefix text"] [queue-size="threshold"]> [<limit value="rate/duration"/>] </nflog>
    ]
    [ <audit> [<limit value="rate/duration"/>] </audit> ]
    <accept> [<limit value="rate/duration"/>] </accept> |
    <reject [type="rejecttype"]> [<limit value="rate/duration"/>] </reject> |
    <drop> [<limit value="rate/duration"/>] </drop>
</rule>

برای توضیحات کامل درباره قوانین زبان پیشرفته، لطفاً به firewalld.richlanguage(5) مراجعه کنید.

firewall-applet(1), firewalld(1), firewall-cmd(1), firewall-config(1), firewalld.conf(5), firewalld.direct(5), firewalld.dbus(5), firewalld.icmptype(5), firewall-offline-cmd(1), firewalld.richlanguage(5), firewalld.service(5), firewalld.zone(5), firewalld.zones(5), firewalld.policy(5), firewalld.policies(5), firewalld.ipset(5), firewalld.helper(5)

صفحه خانگی firewalld:

Thomas Woerner <twoerner@redhat.com>

توسعه‌دهنده

Jiri Popelka <jpopelka@redhat.com>

توسعه‌دهنده

Eric Garver <eric@garver.life>

توسعه‌دهنده
firewalld 2.5.1