如何在 iptables 中定义仅允许通过 VPN 进行 ssh 的规则?我的 iptable 规则如下:
#!/bin/sh
IPT="/sbin/iptables"
$IPT --flush
$IPT --delete-chain
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -s 0.0.0.0/0 -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
$IPT -A INPUT -p udp --dport 1194 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
$IPT -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
因此只允许 ssh 和 VPN 连接。但我只想通过 VPN 建立 ssh 连接。
答案1
我只是添加以下规则:
$IPT -A INPUT -i tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i tun0 -p tcp --dport 22 -j ACCEPT
并删除该行:
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
谢谢@Drav Sloan 的提示。