如果 INPUT 数据包不是来自我的国家,iptables 会将其丢弃

如果 INPUT 数据包不是来自我的国家,iptables 会将其丢弃

我正在考虑在我的 VPS 中为 iptables(Debian 系统)输入链添加规则,只接受来自我祖国(我的国家不大)的数据包。我找到了一个网站,上面有这个https://lite.ip2location.com/ip-address-ranges-by-country我一直在想,这样做是个好主意吗?我使用 SSH 通过 RSA 密钥访问我的 VPS。VPS 位于荷兰。

我想,关于问题,我有两个。首先,特定国家/地区的 IP 地址可以更改吗?例如,如果我的公共 IP 现在是 69.34.22.43,并且它位于我的国家/地区,那么它以后可以更改为其他国家/地区吗?其次,如果不行,这种方法会有什么问题吗?

我正在考虑这样做:(-A INPUT country_ip_1 -j ACCEPT);(-A INPUT country_ip_2 -j ACCEPT)....;(-P INPUT DENY)

另外,我应该提到,我主要使用公共 Wi-Fi 热点,因此仅使用单个静态 IP(即使我的 ISP 将其提供给我)是不可能的。

提前致谢。

PS 我之所以要这样做,主要是因为我想进一步保护我的 VPS。即使发生意外,我的 RSA 密钥被泄露,其他国家的人仍然无法进入我的 VPS。

答案1

我认为有更好的方法来实现你想要的。

对于您的第一个问题。是的 - 国家/地区的 IP 地址会随时间而变化。通常变化很慢,并且通常会增加添加的 IP 数量,尽管 IP 地址可能会被交还/转移到其他区域。

我认为更好的方法是设置 VPN - 并且只允许通过 VPN 进行 SSH 连接。这可以更严格地控​​制谁可以访问您的系统(将其锁定在比国家级别更严格的水平),同时让您免于更改 IP 地址并添加额外的加密层。这是大型公司使用的相当标准的模型。这也意味着如果您确实去了其他地方,只要您通过 VPN 进行身份验证,您仍然可以访问您的系统。

答案2

我将此作为答案发布主要是因为我可以使格式看起来不错。

我为我连接的特定 IP 范围创建了一个白名单,因为我厌倦了随机 IP 地址尝试连接,这些地址可能是端口扫描之类的

# whitelist; block all new inbound connections except from these IP ranges
iptables -N whitelist
iptables -A whitelist -i br0 -j RETURN
iptables -A whitelist -m state ! --state NEW -j RETURN
iptables -A whitelist -s 1.0.0.0/8 -j RETURN #ip range 1: 1.x.x.x
iptables -A whitelist -s 2.0.0.0/8 -j RETURN #ip range 1: 2.x.x.x
# ETC...
iptables -A whitelist -j DROP

iptables -I FORWARD -j whitelist

我已经使用这个至少一年了,IP 范围没有改变,所以它至少对我和我的位置来说运行良好。当然,我不能肯定地说你的 IP 地址范围是否会改变。

答案3

https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/ 以下是说明

请阅读上面的链接,因为其中仅包含重点内容。

安装 Xtables-addons(您可以从包管理器安装它,而不必编译它)

一旦我们的系统升级并安装了依赖项,我们现在将在我们的机器上安装 xtables-addons。为此,我们将使用 wget 从官方 xtables-addons 项目站点下载最新的 tarball。下载后,我们将提取 tarball,然后编译并安装在我们的机器上。

 wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
 tar xf xtables-addons-2.13.tar.xz
 cd xtables-addons-2.13
 ./configure
 make
 make install

安装 GeoIP 数据库

接下来,我们将运行 xtables-addons 扩展附带的名为 xt_geoip 的模块,该模块从 MaxMind 下载 GeoIP 数据库并将其转换为 xt_geoip 可识别的二进制形式。下载后,我们将构建它并将其移动到所需的 xt_geoip 路径,即 /usr/share/xt_geoip/ 。

 cd geoip
 ./xt_geoip_dl
 ./xt_geoip_build GeoIPCountryWhois.csv
 mkdir -p /usr/share/xt_geoip/
 cp -r {BE,LE} /usr/share/xt_geoip/

安装完成后即可使用

iptables -I INPUT 1 -m geoip --src-cc IN,UN -j DROP 

相关内容