nftables-IPv6端口断开-接受整个子网

问题描述 投票:-2回答:1

我想向正在运行的服务器添加端口终止功能。我的客户端发送神奇的数据包序列,服务器将在特定时间内将其添加到一组nftables允许的客户端中。因此,允许客户端使用某些服务。有关详细信息,请参见下面的配置。

现在,我想从路由器自动断开端口。对于IPv4,此方法有效,但对于IPv6,则无效,因为不涉及NAT,因此每个客户端都有唯一的地址。这就是为什么我想将敲客户的整个子网(/ 56)添加到允许客户的集合中。

使用nftable是否可能?我已经读过有关“标志间隔”的信息,但我不了解如何向其动态添加客户端子网。

chain input {
    ...
    jump port_knocking
    ...
}

set knock_v6_1 {
    type ipv6_addr
    flags timeout
}
set knock_v6_2 {
    type ipv6_addr
    flags timeout
}
set knock_v6_success {
    type ipv6_addr
    flags timeout
}

chain port_knocking {
    ip6 nexthdr icmpv6 ip6 length 100 set update ip6 saddr @knock_v6_1
    ip6 saddr @knock_v6_1 ip6 nexthdr icmpv6 ip6 length 101 set update ip6 saddr timeout 10s @knock_v6_2
    ip6 saddr @knock_v6_2 ip6 nexthdr icmpv6 ip6 length 102 set update ip6 saddr timeout 10s @knock_v6_success
}
ipv6 nat subnet nftables
1个回答
0
投票

端口成功敲除后,请勿添加客户端的源IP,而应使用port_knock_netmask_v6对其进行屏蔽。在成功敲门后检查新连接是否来自客户端时,也请使用port_knock_netmask_v6将其屏蔽。

define port_knock_netmask_v6 = ffff:ffff:ffff:ff::

table inet filter {

    chain input {
        ...
        jump port_knocking

        tcp dport 22 ip6 saddr & $port_knock_netmask_v6 @knock_v6_success accept
        ...
    }

    set knock_v6_1 {
        type ipv6_addr
        flags timeout
    }
    set knock_v6_2 {
        type ipv6_addr
        flags timeout
    }
    set knock_v6_success {
        type ipv6_addr
        flags timeout
    }

    chain port_knocking {
        ip6 nexthdr icmpv6 ip6 length 100 set update ip6 saddr timeout 10s @knock_v6_1
        ip6 saddr @knock_v6_1 ip6 nexthdr icmpv6 ip6 length 101 set update ip6 saddr timeout 10s @knock_v6_2
        ip6 saddr @knock_v6_2 ip6 nexthdr icmpv6 ip6 length 102 set update ip6 saddr & $port_knock_netmask_v6 timeout 1h @knock_v6_success
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.