配置 Wireguard 以阻止所有非 ssh 流量

配置 Wireguard 以阻止所有非 ssh 流量

我正在尝试限制我的 Wireguard VPN 以仅允许客户端之间的 SSH 连接,并且我正在努力PostUp为 wireguard 服务器设置适当的 iptables 规则。

我的界面有以下PostUp规则:

PostUp   = iptables -A FORWARD -i %i -p tcp --dport 22 -j ACCEPT; iptables -A FORWARD -o %i -p tcp --dport 22 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -p tcp --dport 22 -j ACCEPT; iptables -D FORWARD -o %i -p tcp --dport 22 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

由于某种原因,这允许访问所有端口。

我也尝试过将其用作iptables -A FORWARD -p tcp ! -dport 22 -j DROP附加的第一条规则。但出于某种原因,我只能配置为阻止所有流量(包括 ssh)。

有什么办法可以让客户端只能访问端口 22?

答案1

我很想添加一个可能名为 wireguard 或其他名称的链,其中包含类似规则。这些规则将由 wireguard 之外的某些东西添加。

# create wireguard chain
iptables -t filter -N wireguard
# permit anything coming from or going to port 22
iptables -t filter -A wireguard -p tcp --dport 1024:65535 --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A wireguard -p tcp --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
# drop everything else
iptables -t filter -A wireguard -j DROP

然后在你的 wireguard PostUp 中,只需添加这样的规则。

iptables -t filter -I FORWARD -i %i -j wireguard
iptables -t filter -I FORWARD -o %i -j wireguard

相关内容