Назад | Перейти на главную страницу

Настройте Wireguard на блокировку всего не-ssh-трафика

Я пытаюсь ограничить свой Wireguard VPN, чтобы разрешить только SSH-соединения между клиентами, и я изо всех сил пытаюсь настроить правильные iptables. PostUp правила для сервера Wireguard.

Мой интерфейс имеет следующее 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?

У меня возникнет соблазн добавить цепочку, называемую, возможно, 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

Затем в вашем PostUp-приложении Wireguard просто добавьте такие правила.

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