diff options
Diffstat (limited to 'docs/configuration/service')
| -rw-r--r-- | docs/configuration/service/dhcp-server.rst | 44 | ||||
| -rw-r--r-- | docs/configuration/service/dns.rst | 14 | ||||
| -rw-r--r-- | docs/configuration/service/ids.rst | 179 | ||||
| -rw-r--r-- | docs/configuration/service/index.rst | 4 | ||||
| -rw-r--r-- | docs/configuration/service/ipoe-server.rst | 10 | ||||
| -rw-r--r-- | docs/configuration/service/ntp.rst | 31 | ||||
| -rw-r--r-- | docs/configuration/service/pppoe-server.rst | 25 | 
7 files changed, 275 insertions, 32 deletions
diff --git a/docs/configuration/service/dhcp-server.rst b/docs/configuration/service/dhcp-server.rst index c51a0aff..6813d2c0 100644 --- a/docs/configuration/service/dhcp-server.rst +++ b/docs/configuration/service/dhcp-server.rst @@ -178,12 +178,18 @@ MAC address of the station and your desired IP address. The address must be  inside the subnet definition but can be outside of the range statement.  .. cfgcmd:: set service dhcp-server shared-network-name <name> subnet -   <subnet> static-mapping <description> mac-address <address> +   <subnet> static-mapping <description> mac <address>     Create a new DHCP static mapping named `<description>` which is valid for     the host identified by its MAC `<address>`.  .. cfgcmd:: set service dhcp-server shared-network-name <name> subnet +   <subnet> static-mapping <description> duid <identifier> + +   Create a new DHCP static mapping named `<description>` which is valid for +   the host identified by its DHCP unique identifier (DUID) `<identifier>`. + +.. cfgcmd:: set service dhcp-server shared-network-name <name> subnet     <subnet> static-mapping <description> ip-address <address>     Static DHCP IP address assign to host identified by `<description>`. IP @@ -205,7 +211,7 @@ inside the subnet definition but can be outside of the range statement.    set service dhcp-server shared-network-name 'NET1' subnet 192.168.1.0/24 subnet-id 1    set service dhcp-server shared-network-name 'NET1' subnet 192.168.1.0/24 static-mapping client1 ip-address 192.168.1.100 -  set service dhcp-server shared-network-name 'NET1' subnet 192.168.1.0/24 static-mapping client1 mac-address aa:bb:11:22:33:00 +  set service dhcp-server shared-network-name 'NET1' subnet 192.168.1.0/24 static-mapping client1 mac aa:bb:11:22:33:00  The configuration will look as follows: @@ -215,7 +221,7 @@ The configuration will look as follows:     subnet 192.168.1.0/24 {         static-mapping client1 {             ip-address 192.168.1.100 -           mac-address aa:bb:11:22:33:00 +           mac aa:bb:11:22:33:00         }         subnet-id 1     } @@ -528,35 +534,35 @@ Configuration     values need to be supplied in seconds.  .. cfgcmd:: set service dhcpv6-server shared-network-name <name> subnet -   <prefix> nis-domain <domain-name> +   <prefix> option nis-domain <domain-name>     A :abbr:`NIS (Network Information Service)` domain can be set to be used for     DHCPv6 clients.  .. cfgcmd:: set service dhcpv6-server shared-network-name <name> subnet -   <prefix> nisplus-domain <domain-name> +   <prefix> option nisplus-domain <domain-name>     The procedure to specify a :abbr:`NIS+ (Network Information Service Plus)`     domain is similar to the NIS domain one:  .. cfgcmd:: set service dhcpv6-server shared-network-name <name> subnet -   <prefix> nis-server <address> +   <prefix> option nis-server <address>     Specify a NIS server address for DHCPv6 clients.  .. cfgcmd:: set service dhcpv6-server shared-network-name <name> subnet -   <prefix> nisplus-server <address> +   <prefix> option nisplus-server <address>     Specify a NIS+ server address for DHCPv6 clients.  .. cfgcmd:: set service dhcpv6-server shared-network-name <name> subnet -   <prefix> sip-server <address | fqdn> +   <prefix> option sip-server <address | fqdn>     Specify a :abbr:`SIP (Session Initiation Protocol)` server by IPv6     address of Fully Qualified Domain Name for all DHCPv6 clients.  .. cfgcmd:: set service dhcpv6-server shared-network-name <name> subnet -   <prefix> sntp-server-address <address> +   <prefix> option sntp-server-address <address>     A SNTP server address can be specified for DHCPv6 clients. @@ -594,8 +600,9 @@ server. The following example describes a common scenario.  .. code-block:: none -  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 address-range start 2001:db8::100 stop 2001:db8::199 -  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 name-server 2001:db8::ffff +  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 range 1 start 2001:db8::100 stop 2001:db8::199 +  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 range 1 stop 2001:db8::199 +  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 option name-server 2001:db8::ffff    set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 subnet-id 1  The configuration will look as follows: @@ -605,12 +612,13 @@ The configuration will look as follows:    show service dhcpv6-server        shared-network-name NET1 {            subnet 2001:db8::/64 { -             address-range { -                start 2001:db8::100 { -                   stop 2001:db8::199 -                } +             range 1 { +                start 2001:db8::100 +                stop 2001:db8::199 +             } +             option { +                name-server 2001:db8::ffff               } -             name-server 2001:db8::ffff               subnet-id 1            }        } @@ -639,7 +647,7 @@ be created. The following example explains the process.    set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 static-mapping client1 ipv6-address 2001:db8::101    set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 static-mapping client1 ipv6-prefix 2001:db8:0:101::/64 -  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 static-mapping client1 identifier 00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:ff +  set service dhcpv6-server shared-network-name 'NET1' subnet 2001:db8::/64 static-mapping client1 duid 00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:ff  The configuration will look as follows: @@ -650,7 +658,7 @@ The configuration will look as follows:    show service dhcpv6-server shared-network-name NET1     subnet 2001:db8::/64 {         static-mapping client1 { -           identifier 00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:ff +           duid 00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:ff             ipv6-address 2001:db8::101             ipv6-prefix 2001:db8:0:101::/64         } diff --git a/docs/configuration/service/dns.rst b/docs/configuration/service/dns.rst index 7624d309..e430dc73 100644 --- a/docs/configuration/service/dns.rst +++ b/docs/configuration/service/dns.rst @@ -156,6 +156,20 @@ avoid being tracked by the provider of your upstream DNS server.     recursor does not like, it is throttled. Any servers matching the supplied     netmasks will never be throttled. +.. cfgcmd:: set service dns forwarding options ecs-add-for <address> + +   The requestor netmask for which the requestor IP Address should be used as the +   EDNS Client Subnet for outgoing queries. + +.. cfgcmd:: set service dns forwarding options ecs-ipv4-bits <number> + +   Number of bits of client IPv4 address to pass when sending EDNS Client Subnet +   address information. + +.. cfgcmd:: set service dns forwarding options edns-subnet-allow-list <address|domain> + +   The netmask or domain that EDNS Client Subnet should be enabled for in outgoing queries. +  Example  ======= diff --git a/docs/configuration/service/ids.rst b/docs/configuration/service/ids.rst new file mode 100644 index 00000000..3e508d50 --- /dev/null +++ b/docs/configuration/service/ids.rst @@ -0,0 +1,179 @@ +.. _ids: + +############### +DDoS Protection +############### + +********** +FastNetMon +********** + +FastNetMon is a high-performance DDoS detector/sensor built on top of multiple +packet capture engines: NetFlow, IPFIX, sFlow, AF_PACKET (port mirror). It can +detect hosts in the deployed network sending or receiving large volumes of +traffic, packets/bytes/flows per second and perform a configurable action to +handle that event, such as calling a custom script. + +VyOS includes the FastNetMon Community Edition. + +Configuration +============= + +.. cfgcmd:: set service ids ddos-protection alert-script <text> + +    Configure alert script that will be executed when an attack is detected. + +.. cfgcmd:: set service ids ddos-protection ban-time <1-4294967294> + +    Configure how long an IP (attacker) should be kept in blocked state. +    Default value is 1900. + +.. cfgcmd:: set service ids ddos-protection direction [in | out] + +    Configure direction for processing traffic.  + +.. cfgcmd:: set service ids ddos-protection exclude-network <x.x.x.x/x> +.. cfgcmd:: set service ids ddos-protection exlude-network <h:h:h:h:h:h:h:h/x> + +    Specify IPv4 and/or IPv6 networks which are going to be excluded. + +.. cfgcmd:: set service ids ddos-protection listen-interface <text> + +    Configure listen interface for mirroring traffic. + +.. cfgcmd:: set service ids ddos-protection mode [mirror | sflow] + +    Configure traffic capture mode. + +.. cfgcmd:: set service ids ddos-protection network <x.x.x.x/x> +.. cfgcmd:: set service ids ddos-protection network <h:h:h:h:h:h:h:h/x> + +    Specify IPv4 and/or IPv6 networks that should be protected/monitored. + +.. cfgcmd:: set service ids ddos-protection sflow listen-address <x.x.x.x> + +    Configure local IPv4 address to listen for sflow. + +.. cfgcmd:: set service ids ddos-protection sflow port <1-65535> + +    Configure port number to be used for sflow conection. Default port is 6343. + +.. cfgcmd:: set service ids ddos-protection threshold general +   [fps | mbps | pps] <0-4294967294> + +    Configure general threshold parameters. + +.. cfgcmd:: set service ids ddos-protection threshold icmp +   [fps | mbps | pps] <0-4294967294> + +    Configure ICMP threshold parameters. + +.. cfgcmd:: set service ids ddos-protection threshold tcp +   [fps | mbps | pps] <0-4294967294> + +    Configure TCP threshold parameters + +.. cfgcmd:: set service ids ddos-protection threshold udp +   [fps | mbps | pps] <0-4294967294> + +    Configure UDP threshold parameters + +Example +======= + +A configuration example can be found in this section. +In this simplified scenario, main things to be considered are: + +    * Network to be protected: 192.0.2.0/24 (public IPs use by +      customers) + +    * **ban-time** and **threshold**: these values are kept very low in order +      to easily identify and generate and attack. + +    * Direction: **in** and **out**. Protect public network from external +      attacks, and identify internal attacks towards internet. + +    * Interface **eth0** used to connect to upstream. + +Since we are analyzing attacks to and from our internal network, two types +of attacks can be identified, and differents actions are needed: + +    * External attack: an attack from the internet towards an internal IP +      is identify. In this case, all connections towards such IP will be +      blocked + +    * Internal attack: an attack from the internal network (generated by a +      customer) towards the internet is identify. In this case, all connections +      from this particular IP/Customer will be blocked. +  + +So, firewall configuration needed for this setup: + +.. code-block:: none + +    set firewall group address-group FNMS-DST-Block +    set firewall group address-group FNMS-SRC-Block + +    set firewall ipv4 forward filter rule 10 action 'drop' +    set firewall ipv4 forward filter rule 10 description 'FNMS - block destination' +    set firewall ipv4 forward filter rule 10 destination group address-group 'FNMS-DST-Block' + +    set firewall ipv4 forward filter rule 20 action 'drop' +    set firewall ipv4 forward filter rule 20 description 'FNMS - Block source' +    set firewall ipv4 forward filter rule 20 source group address-group 'FNMS-SRC-Block' + +Then, FastNetMon configuration: + +.. code-block:: none + +    set service ids ddos-protection alert-script '/config/scripts/fnm-alert.sh' +    set service ids ddos-protection ban-time '10' +    set service ids ddos-protection direction 'in' +    set service ids ddos-protection direction 'out' +    set service ids ddos-protection listen-interface 'eth0' +    set service ids ddos-protection mode 'mirror' +    set service ids ddos-protection network '192.0.2.0/24' +    set service ids ddos-protection threshold general pps '100' + +And content of the script: + +.. code-block:: none + +    #!/bin/bash + +    # alert-script is called twice. +    # When an attack occurs, the program calls a bash script twice: +    # 1st time when threshold exceed +    # 2nd when we collect 100 packets for detailed audit of what happened. + +    # Do nothing if “attack_details” is passed as an argument +    if [ "${4}" == "attack_details" ]; then +        # Do nothing +        exit +    fi +    # Arguments: +    ip=$1 +    direction=$2 +    pps_rate=$3 +    action=$4  + +    logger -t FNMS "** Start - Running alert script **" + +    if [ "${direction}" == "incoming" ] ; then +        group="FNMS-DST-Block" +        origin="external" +    else +        group="FNMS-SRC-Block" +        origin="internal" +    fi + +    if [ "${action}" == "ban" ] ; then +        logger -t FNMS "Attack detected for IP ${ip} and ${direction} direction from ${origin} network. Need to block IP address." +        logger -t FNMS "Adding IP address ${ip} to firewall group ${group}." +        sudo nft add element ip vyos_filter A_${group} { ${ip} } +    else +        logger -t FNMS "Timeout for IP ${ip}, removing it from group ${group}." +        sudo nft delete element ip vyos_filter A_${group} { ${ip} } +    fi +    logger -t FNMS "** End - Running alert script **" +    exit diff --git a/docs/configuration/service/index.rst b/docs/configuration/service/index.rst index 1195348f..56ce55eb 100644 --- a/docs/configuration/service/index.rst +++ b/docs/configuration/service/index.rst @@ -13,7 +13,9 @@ Service     dhcp-relay     dhcp-server     dns +   eventhandler     https +   ids     ipoe-server     lldp     mdns @@ -26,4 +28,4 @@ Service     ssh     tftp-server     webproxy -   eventhandler +    diff --git a/docs/configuration/service/ipoe-server.rst b/docs/configuration/service/ipoe-server.rst index c219a063..ed4ade1a 100644 --- a/docs/configuration/service/ipoe-server.rst +++ b/docs/configuration/service/ipoe-server.rst @@ -72,8 +72,9 @@ IPv6 DNS addresses are optional.    set service ipoe-server authentication interface eth3 mac 08:00:27:2F:D8:06    set service ipoe-server authentication mode 'local' -  set service ipoe-server client-ipv6-pool delegate '2001:db8:1::/48' delegation-prefix '56' -  set service ipoe-server client-ipv6-pool prefix '2001:db8::/48' mask '64' +  set service ipoe-server client-ipv6-pool IPv6-POOL delegate '2001:db8:1::/48' delegation-prefix '56' +  set service ipoe-server client-ipv6-pool IPv6-POOL prefix '2001:db8::/48' mask '64' +  set service ipoe-server default-ipv6-pool IPv6-POOL    set service ipoe-server name-server '2001:db8::'    set service ipoe-server name-server '2001:db8:aaa::'    set service ipoe-server name-server '2001:db8:bbb::' @@ -171,8 +172,9 @@ Server configuration      set service ipoe-server authentication interface eth1.51 mac 00:0c:29:b7:49:a7 rate-limit upload '50000'      set service ipoe-server authentication mode 'local' -    set service ipoe-server client-ipv6-pool delegate 2001:db8:ffff::/48 delegation-prefix '56' -    set service ipoe-server client-ipv6-pool prefix 2001:db8:fffe::/48 mask '64' +    set service ipoe-server client-ipv6-pool IPv6-POOL delegate 2001:db8:ffff::/48 delegation-prefix '56' +    set service ipoe-server client-ipv6-pool IPv6-POOL prefix 2001:db8:fffe::/48 mask '64' +    set service ipoe-server default-ipv6-pool IPv6-POOL      set service ipoe-server interface eth1.50 client-subnet '100.64.50.0/24'      set service ipoe-server interface eth1.50 mode 'l2'      set service ipoe-server interface eth1.51 client-subnet '100.64.51.0/24' diff --git a/docs/configuration/service/ntp.rst b/docs/configuration/service/ntp.rst index 08be047c..e7ee392b 100644 --- a/docs/configuration/service/ntp.rst +++ b/docs/configuration/service/ntp.rst @@ -81,4 +81,33 @@ Configuration  .. cfgcmd:: set service ntp vrf <name> -  Specify name of the :abbr:`VRF (Virtual Routing and Forwarding)` instance. +   Specify name of the :abbr:`VRF (Virtual Routing and Forwarding)` instance. + +.. cfgcmd:: set service ntp leap-second [ignore|smear|system|timezone] + +   Define how to handle leaf-seonds. + +   * `ignore`: No correction is applied to the clock for the leap second. The +     clock will be corrected later in normal operation when new measurements are +     made and the estimated offset includes the one second error. + +   * `smear`: When smearing a leap second, the leap status is suppressed on the +     server and the served time is corrected slowly by slewing instead of +     stepping. The clients do not need any special configuration as they do not +     know there is any leap second and they follow the server time which +     eventually brings them back to UTC. Care must be taken to ensure they use +     only NTP servers which smear the leap second in exactly the same way for +     synchronisation. + +   * `system`: When inserting a leap second, the kernel steps the system clock +     backwards by one second when the clock gets to 00:00:00 UTC. When deleting +     a leap second, it steps forward by one second when the clock gets to +     23:59:59 UTC. + +   * `timezone`: This directive specifies a timezone in the system timezone +     database which chronyd can use to determine when will the next leap second +     occur and what is the current offset between TAI and UTC. It will +     periodically check if 23:59:59 and 23:59:60 are valid times in the +     timezone. This normally works with the right/UTC timezone which is the +     default + diff --git a/docs/configuration/service/pppoe-server.rst b/docs/configuration/service/pppoe-server.rst index a230d9fe..56fcb968 100644 --- a/docs/configuration/service/pppoe-server.rst +++ b/docs/configuration/service/pppoe-server.rst @@ -266,11 +266,11 @@ other servers. Last command says that this PPPoE server can serve only  IPv6  ---- -IPv6 client's prefix assignment -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +IPv6 client's prefix +^^^^^^^^^^^^^^^^^^^^ -.. cfgcmd:: set service pppoe-server client-ipv6-pool prefix <address> -   mask <number-of-bits> +.. cfgcmd:: set service pppoe-server client-ipv6-pool <IPv6-POOL-NAME> +   prefix <address> mask <number-of-bits>     Use this comand to set the IPv6 address pool from which a PPPoE     client will get an IPv6 prefix of your defined length (mask) to @@ -281,8 +281,8 @@ IPv6 client's prefix assignment  IPv6 Prefix Delegation  ^^^^^^^^^^^^^^^^^^^^^^ -.. cfgcmd:: set service pppoe-server client-ipv6-pool delegate <address> -   delegation-prefix <number-of-bits> +.. cfgcmd:: set service pppoe-server client-ipv6-pool <IPv6-POOL-NAME> +   delegate <address> delegation-prefix <number-of-bits>     Use this command to configure DHCPv6 Prefix Delegation (RFC3633). You     will have to set your IPv6 pool and the length of the delegation @@ -291,6 +291,14 @@ IPv6 Prefix Delegation     delegation prefix can be set from 32 to 64 bit long. +IPv6 default client's pool assignment +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. cfgcmd:: set service pppoe-server default-ipv6-pool <POOL-NAME> + +   Use this command to define default IPv6 address pool name. + +  Maintenance mode  ================ @@ -374,8 +382,9 @@ The example below covers a dual-stack configuration via pppoe-server.    set service pppoe-server authentication mode 'local'    set service pppoe-server client-ip-pool IP-POOL range '192.168.0.1/24'    set service pppoe-server default-pool 'IP-POOL' -  set service pppoe-server client-ipv6-pool delegate '2001:db8:8003::/48' delegation-prefix '56' -  set service pppoe-server client-ipv6-pool prefix '2001:db8:8002::/48' mask '64' +  set service pppoe-server client-ipv6-pool IPv6-POOL delegate '2001:db8:8003::/48' delegation-prefix '56' +  set service pppoe-server client-ipv6-pool IPV6-POOL prefix '2001:db8:8002::/48' mask '64' +  set service pppoe-server default-ipv6-pool IPv6-POOL    set service pppoe-server ppp-options ipv6 allow    set service pppoe-server name-server '10.1.1.1'    set service pppoe-server name-server '2001:db8:4860::8888'  | 
