我想允许整个 LAN (192.168.1.x) 和一个外部 IP(外部 IP 始终与我的 sub.dom.tld 相关联)通过 ssh 和 proftp 访问我的 linux(debian)。我找到了这篇文章https://stackoverflow.com/questions/18939285/how-to-access-my-ssh-linux-server-from-outside-my-home-network但我想保持外部IP最新(有时它会改变,所以我只需在我的域名上为这个子域名设置新的IP地址,我的Linux机器就会自动更新这个限制)。
有什么办法吗,如何限制 ssh 和 proftp 对我的 linux 的访问,仅限于外部 IP 和整个 LAN?
如果有分步教程,那就太好了。谢谢
答案1
有很多可能的方法可以做到这一点,有些简单但不好(tcp_wrappers
),有些更好但复杂(iptables
),有些简单而且基本上同样好(firewalld
)
TCP 包装器(又名
hosts_access
),你可能需要mod_wrap
模块到 ProFTPd。在 SSHD 中它到目前为止运行良好。/etc/hosts.deny: ALL: ALL /etc/hosts.allow: sshd, proftpd: 192.168., 1.2.3.4
如果你的 LAN 是
192.168.0.0/16
,并且你的外部 IP 是1.2.3.4
Firewalld 的使用
iptables
更加复杂,因为它们在网络层面上阻止它:firewall-cmd --zone=internal --add-service=ssh firewall-cmd --zone=internal --add-service=ftp firewall-cmd --zone=internal --add-source=192.168.0.0/16 firewall-cmd --zone=internal --add-source=1.2.3.4/32 firewall-cmd --zone=public --remove-service=ssh firewall-cmd --zone=public --remove-service=ftp