是否有任何(简单)方法可以根据一般物理位置拒绝 FTP 连接?我计划使用 FTP 作为我和我的朋友的简单云存储。我使用 odroid c2(类似于树莓派,但使用 arm64 架构)运行 Debian 8,并使用 proftpd 和 ufw 作为防火墙。 Ftp 服务器运行在非标准端口上,我不想在这里提及。我想这样做是为了提高服务器的安全性。
答案1
使用 pam 和地理信息模块
此 PAM 模块提供 GeoIP 登录检查。可以根据源 IP 地址的位置允许或拒绝用户。这与 pam_access(8) 类似,但使用 GeoIP 城市或 GeoIP 国家/地区数据库而不是主机名/IP 匹配。
答案2
您可以使用 CIDR[1] IP 范围在某种程度上做到这一点,因为这些可以映射到国家/地区[2]。
然后您可以使用类似的应用程序iptables[3] 控制任何端口上的任何传入流量(与协议无关)。本教程更详细地描述它。
与 CIDR 结合使用时,该命令将如下所示:
iptables -A INPUT -s 64.110.50.0/24 -j ACCEPT
根据您有多少朋友,您可以通过以下方式缩小范围:您朋友的电信/互联网提供商保留的 IP 块。
(顺便说一句,亚马逊的云服务使用的是 CIDR 规则,他们强烈建议以这种方式使 AWS 实例更加安全。所以你的问题有很多优点,但由于我刚刚加入,所以我不能投票 - 或者更确切地说,我的投票不显示)。
我无法嵌入其他参考链接,因为我只得到两个链接用作新手:
1) en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
2) blog.erben.sk/2014/02/06/country-cidr-ip-ranges
3) en.wikipedia.org/wiki/Iptables
答案3
我建议使用 ProFTPDmod_geoip
模块,至少限制与地理内容/国家(和城市,如果可以的话)的连接。这与@Ipor的答案类似,使用相同的geoip库/数据库,只不过它不需要PAM配置,并且更灵活。