diff options
Diffstat (limited to 'docs/configuration/firewall')
| -rw-r--r-- | docs/configuration/firewall/flowtables.rst | 10 | ||||
| -rw-r--r-- | docs/configuration/firewall/global-options.rst | 32 | ||||
| -rw-r--r-- | docs/configuration/firewall/index.rst | 35 | ||||
| -rw-r--r-- | docs/configuration/firewall/ipv4.rst | 39 | ||||
| -rw-r--r-- | docs/configuration/firewall/ipv6.rst | 39 | 
5 files changed, 133 insertions, 22 deletions
| diff --git a/docs/configuration/firewall/flowtables.rst b/docs/configuration/firewall/flowtables.rst index e8a5f2e8..ae95a85f 100644 --- a/docs/configuration/firewall/flowtables.rst +++ b/docs/configuration/firewall/flowtables.rst @@ -1,4 +1,4 @@ -:lastproofread: 2023-12-26 +:lastproofread: 2024-06-20  .. _firewall-flowtables-configuration: @@ -85,12 +85,12 @@ Provide a description to the flow table.  Creating rules for using flow tables: -.. cfgcmd:: set firewall [ipv4 | ipv4] forward filter rule <1-999999> +.. cfgcmd:: set firewall [ipv4 | ipv6] forward filter rule <1-999999>     action offload     Create firewall rule in forward chain, and set action to ``offload``. -.. cfgcmd:: set firewall [ipv4 | ipv4] forward filter rule <1-999999> +.. cfgcmd:: set firewall [ipv4 | ipv6] forward filter rule <1-999999>     offload-target <flowtable>     Create firewall rule in forward chain, and define which flowtbale @@ -142,7 +142,7 @@ Explanation  Analysis on what happens for desired connection: -   1. First packet is received on eht0, with destination address 192.0.2.100, +   1. First packet is received on eth0, with destination address 192.0.2.100,     protocol tcp and destination port 1122. Assume such destination address is     reachable through interface eth1. @@ -159,7 +159,7 @@ Analysis on what happens for desired connection:     connection state is **established**, then rule 10 is hit, and a new entry     in the flowtable FT01 is added for this connection. -   6. All subsecuent packets will skip traditional path, and will be offloaded +   6. All the following packets will skip traditional path, and will be offloaded     and will use the **Fast Path**.  Checks diff --git a/docs/configuration/firewall/global-options.rst b/docs/configuration/firewall/global-options.rst index b3f311aa..7c52045e 100644 --- a/docs/configuration/firewall/global-options.rst +++ b/docs/configuration/firewall/global-options.rst @@ -145,3 +145,35 @@ Configuration     [emerg | alert | crit | err | warn | notice | info | debug]     Set the global setting for related connections. + +VyOS supports setting timeouts for connections according to the +connection type. You can set timeout values for generic connections, for ICMP +connections, UDP connections, or for TCP connections in a number of different +states. + +.. cfgcmd:: set firewall global-options timeout icmp <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout other <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp close <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp close-wait <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp established <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp fin-wait <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp last-ack <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp syn-recv <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp syn-sent <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout tcp time-wait <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout udp other <1-21474836> +    :defaultvalue: +.. cfgcmd:: set firewall global-options timeout udp stream <1-21474836> +    :defaultvalue: + +    Set the timeout in seconds for a protocol or state.
\ No newline at end of file diff --git a/docs/configuration/firewall/index.rst b/docs/configuration/firewall/index.rst index 1d904901..daf5f116 100644 --- a/docs/configuration/firewall/index.rst +++ b/docs/configuration/firewall/index.rst @@ -26,14 +26,23 @@ firewall are covered below:  If the interface where the packet was received isn't part of a bridge, then   packet is processed at the **IP Layer**: -   * **Prerouting**: several actions can be done in this stage, and currently -     these actions are defined in different parts in VyOS configuration. Order -     is important, and all these actions are performed before any actions -     defined under ``firewall`` section. Relevant configuration that acts in -     this stage are: +   * **Prerouting**: All packets that are received by the router +     are processed in this stage, regardless of the destination of the packet. +     Starting from vyos-1.5-rolling-202406120020, a new section was added to +     firewall configuration. There are several actions that can be done in this +     stage, and currently these actions are also defined in different parts in +     VyOS configuration. Order is important, and relevant configuration that +     acts in this stage are: + +      * **Firewall prerouting**: rules defined under ``set firewall [ipv4 | +        ipv6] prerouting raw...``. All rules defined in this section are +        processed before connection tracking subsystem.        * **Conntrack Ignore**: rules defined under ``set system conntrack ignore -        [ipv4 | ipv6] ...``. +        [ipv4 | ipv6] ...``. Starting from vyos-1.5-rolling-202406120020, +        configuration done in this section can be done in ``firewall [ipv4 | +        ipv6] prerouting ...``. For compatibility reasons, this feature is +        still present, but it will be removed in the future.        * **Policy Route**: rules defined under ``set policy [route | route6]          ...``. @@ -67,11 +76,13 @@ packet is processed at the **IP Layer**:       new connection originated by a internal process running on VyOS router,       such as NTP, or a response to traffic received externally through       **input** (for example response to an ssh login attempt to the router). -     This includes ipv4 and ipv6 filtering rules, defined in: +     This includes ipv4 and ipv6 rules, and two different sections are present: -     * ``set firewall ipv4 output filter ...``. +     * **Output Prerouting**: ``set firewall [ipv4 | ipv6] output filter ...``. +       As described in **Prerouting**, rules defined in this section are +       processed before connection tracking subsystem. -     * ``set firewall ipv6 output filter ...``. +     * **Output Filter**: ``set firewall [ipv4 | ipv6] output filter ...``.     * **Postrouting**: as in **Prerouting**, several actions defined in       different parts of VyOS configuration are performed in this @@ -120,6 +131,9 @@ The main structure of the VyOS firewall CLI is shown next:                 + filter              - output                 + filter +               + raw +            - prerouting +               + raw              - name                 + custom_name         * ipv6 @@ -129,6 +143,9 @@ The main structure of the VyOS firewall CLI is shown next:                 + filter              - output                 + filter +               + raw +            - prerouting +               + raw              - ipv6-name                 + custom_name         * zone diff --git a/docs/configuration/firewall/ipv4.rst b/docs/configuration/firewall/ipv4.rst index f7f98dc7..39370c86 100644 --- a/docs/configuration/firewall/ipv4.rst +++ b/docs/configuration/firewall/ipv4.rst @@ -31,17 +31,34 @@ of the general structure:                 + filter              - output                 + filter +               + raw +            - prerouting +               + raw              - name                 + custom_name +First, all traffic is received by the router, and it is processed in the +**prerouting** section. + +This stage includes: + +   * **Firewall Prerouting**: commands found under ``set firewall ipv4 +     prerouting raw ...`` +   * :doc:`Conntrack Ignore</configuration/system/conntrack>`: ``set system +     conntrack ignore ipv4...`` +   * :doc:`Policy Route</configuration/policy/route>`: commands found under +     ``set policy route ...`` +   * :doc:`Destination NAT</configuration/nat/nat44>`: commands found under +     ``set nat destination ...`` +  For transit traffic, which is received by the router and forwarded, base chain  is **forward**. A simplified packet flow diagram for transit traffic is shown  next:  .. figure:: /_static/images/firewall-fwd-packet-flow.png -Where firewall base chain to configure firewall filtering rules for transit -traffic is ``set firewall ipv4 forward filter ...``, which happens in stage 5, +Firewall base chain to configure firewall filtering rules for transit traffic +is ``set firewall ipv4 forward filter ...``, which happens in stage 5,  highlighted with red color.  For traffic towards the router itself, base chain is **input**, while traffic @@ -52,11 +69,17 @@ router (starting from circle number 6):  .. figure:: /_static/images/firewall-input-packet-flow.png -Base chain is for traffic toward the router is ``set firewall ipv4 input +Base chain for traffic towards the router is ``set firewall ipv4 input  filter ...``  And base chain for traffic generated by the router is ``set firewall ipv4 -output filter ...`` +output ...``, where two sub-chains are available: **filter** and **raw**: + +* **Output Prerouting**: ``set firewall ipv4 output raw ...``. +  As described in **Prerouting**, rules defined in this section are +  processed before connection tracking subsystem. +* **Output Filter**: ``set firewall ipv4 output filter ...``. Rules defined +  in this section are processed after connection tracking subsystem.  .. note:: **Important note about default-actions:**     If default action for any base chain is not defined, then the default @@ -709,6 +732,10 @@ geoip) to keep database and rules updated.     For example: ``eth2*``. Prepending character ``!`` for inverted matching     criteria is also supported. For example ``!eth2`` +.. note:: If an interface is attached to a non-default vrf, when using +   **inbound-interface**, vrf name must be used. For example ``set firewall +   ipv4 forward filter rule 10 inbound-interface name MGMT`` +  .. cfgcmd:: set firewall ipv4 forward filter rule <1-999999>     inbound-interface group <iface_group>  .. cfgcmd:: set firewall ipv4 input filter rule <1-999999> @@ -730,6 +757,10 @@ geoip) to keep database and rules updated.     For example: ``eth2*``. Prepending character ``!`` for inverted matching     criteria is also supported. For example ``!eth2`` +.. note:: If an interface is attached to a non-default vrf, when using +   **outbound-interface**, real interface name must be used. For example +   ``set firewall ipv4 forward filter rule 10 outbound-interface name eth0`` +  .. cfgcmd:: set firewall ipv4 forward filter rule <1-999999>     outbound-interface group <iface_group>  .. cfgcmd:: set firewall ipv4 output filter rule <1-999999> diff --git a/docs/configuration/firewall/ipv6.rst b/docs/configuration/firewall/ipv6.rst index cbf18a7d..511fd51f 100644 --- a/docs/configuration/firewall/ipv6.rst +++ b/docs/configuration/firewall/ipv6.rst @@ -31,17 +31,34 @@ of the general structure:                 + filter              - output                 + filter +               + raw +            - prerouting +               + raw              - name                 + custom_name +First, all traffic is received by the router, and it is processed in the +**prerouting** section. + +This stage includes: + +   * **Firewall Prerouting**: commands found under ``set firewall ipv6 +     prerouting raw ...`` +   * :doc:`Conntrack Ignore</configuration/system/conntrack>`: ``set system +     conntrack ignore ipv6...`` +   * :doc:`Policy Route</configuration/policy/route>`: commands found under +     ``set policy route6 ...`` +   * :doc:`Destination NAT</configuration/nat/nat44>`: commands found under +     ``set nat66 destination ...`` +  For transit traffic, which is received by the router and forwarded, base chain  is **forward**. A simplified packet flow diagram for transit traffic is shown  next:  .. figure:: /_static/images/firewall-fwd-packet-flow.png -Where firewall base chain to configure firewall filtering rules for transit -traffic is ``set firewall ipv6 forward filter ...``, which happens in stage 5, +Firewall base chain to configure firewall filtering rules for transit traffic +is ``set firewall ipv6 forward filter ...``, which happens in stage 5,  highlighted with red color.  For traffic towards the router itself, base chain is **input**, while traffic @@ -52,11 +69,17 @@ router (starting from circle number 6):  .. figure:: /_static/images/firewall-input-packet-flow.png -Base chain is for traffic toward the router is ``set firewall ipv6 input +Base chain for traffic towards the router is ``set firewall ipv6 input  filter ...``  And base chain for traffic generated by the router is ``set firewall ipv6 -output filter ...`` +output filter ...``, where two sub-chains are available: **filter** and **raw**: + +* **Output Prerouting**: ``set firewall ipv6 output raw ...``. +  As described in **Prerouting**, rules defined in this section are +  processed before connection tracking subsystem. +* **Output Filter**: ``set firewall ipv6 output filter ...``. Rules defined +  in this section are processed after connection tracking subsystem.  .. note:: **Important note about default-actions:**     If default action for any base chain is not defined, then the default @@ -700,6 +723,10 @@ geoip) to keep database and rules updated.     For example: ``eth2*``. Prepending character ``!`` for inverted matching     criteria is also supported. For example ``!eth2`` +.. note:: If an interface is attached to a non-default vrf, when using +   **inbound-interface**, vrf name must be used. For example ``set firewall +   ipv6 forward filter rule 10 inbound-interface name MGMT`` +  .. cfgcmd:: set firewall ipv6 forward filter rule <1-999999>     inbound-interface group <iface_group>  .. cfgcmd:: set firewall ipv6 input filter rule <1-999999> @@ -721,6 +748,10 @@ geoip) to keep database and rules updated.     For example: ``eth2*``. Prepending character ``!`` for inverted matching     criteria is also supported. For example ``!eth2`` +.. note:: If an interface is attached to a non-default vrf, when using +   **outbound-interface**, real interface name must be used. For example +   ``set firewall ipv6 forward filter rule 10 outbound-interface name eth0`` +  .. cfgcmd:: set firewall ipv6 forward filter rule <1-999999>     outbound-interface group <iface_group>  .. cfgcmd:: set firewall ipv6 output filter rule <1-999999> | 
