我已经安装https://github.com/Nyr/openvpn-install
到我的专用机器上,我需要锁定到此系统的 SSH 连接。我尝试/etc/ssh/sshd_config
使用Listen Address: 10.8.0.1
地址进行配置,ListenAddress 10.8.0.0
但不幸的是,这确实锁定了连接,但在启用 VPN 后我无法连接。不幸的是,它会抛出Connection Refused
SSH 连接。
这是我的 OVPN 文件的顶级配置,请告诉我我需要编辑什么,以便 IA:让 VPN 工作(它确实工作并成功连接,但我认为没有通过它路由流量,这就是它不允许我连接的原因(基本上强制我通过服务器连接,但不太确定这是否是原因))和 B:我的配置是否ListenAddress
正确?我需要允许哪个 IP?10.8.0.x
地址上的 .1 或 .0。如果我做对了,我只需要修复 VPN 文件,然后我们就可以连接并将其锁定到 VPN 身份验证。
服务器 IP 配置:(我推测是由 OVPN 配置的) https://jasmeow.pics/CKF7TX.png
dev tun
proto udp
remote <IPREDACTED> <PORTREDACTED>
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
<ca>```
答案1
如果使用旧版 IPTables,您可以使用如下规则:
iptables -I INPUT 1 ! -s 10.8.0.0/24 -p tcp --dport 22 -j REJECT
使用现代 NFTables,你必须使用类似这样的内容:
nft insert rule ip filter INPUT ip saddr != 10.8.0.0/24 tcp dport 22 counter reject
(假设您已经在其中实例化了 inet 类型的表过滤器和链式 INPUT)。
这是相当通用的低级配置,不会持续存在。要使它在重启后继续存在,您需要使用一些防火墙配置管理器;在 Debian 中,我通常安装和netfilter-persistent
。iptables-persistent
如果您已经有防火墙管理器(firewalld
等等ufw
),则需要使用与这些管理器相对应的方法。
还要注意,如果配置正确,SSH 本身的安全性并不低于 VPN。所谓正确配置,是指配置 RSA/ECDSA/等密钥认证(通常已默认配置,您只需生成和安装密钥),然后禁用 SSH 中的密码认证:
PubkeyAuthentication yes
PasswordAuthentication no
这样的设置使用起来更方便,也比VPN+防火墙简单得多,但安全性却丝毫不逊色。而且配置错误的可能性也更小。不妨考虑一下这种方法。