Я пытаюсь ограничить свой 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