允许从 LAN 和一个外部 IP 访问 ssh 和 proftp

允许从 LAN 和一个外部 IP 访问 ssh 和 proftp

我想允许整个 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

  1. 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

  2. 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
    

    (来源)

相关内容