如何使用ipset阻止来自国家/地区的IP
以前我们学习了如何使用地理床限制或者允许特定国家,但在本文中,我们将介绍我们如何使用带有Iptables的Ipset模块阻止大型IP范围。
IPSet是一个基于命令行的实用程序,用于管理Linux内核中称为IP集的框架。
IP集可以存储IP地址,网络(TCP/UDP)端口号,MAC地址,接口名称或者以某种方式组合,可确保在与集合匹配的条目时确保闪电速度。
它是Iptables Linux防火墙的关联应用程序,它允许我们快速,轻松地设置规则来阻止一组IP地址。
其中我们将了解我们如何使用IPSet模块与IPTables在基于Linux的计算机中阻止大范围的IP地址。
更新我们的系统
首先,我们需要在Linux机器中升级我们的软件包,以便我们拥有我们的软件包上行。
为了升级我们的系统,我们需要确保我们运行为sudo或者root用户。
要切换到sudo或者root访问权限,我们将运行以下命令。
$sudo -s
一旦我们的root,我们现在将继续前进以更新和升级我们的系统。
基于Debian的系统
# apt update && apt upgrade
基于Redhat的系统
# yum update
安装IPSet.
大多数Linux发行版,如Ubuntu,Debian这些天PELET预装了IPSet。
但是,像CentOS这样的分发没有预装所以,我们需要安装在它们上。
根据我们正在运行的分发,我们可以通过运行以下命令来安装它。
基于Debian的系统
# apt install ipset
基于Redhat的系统
# yum install ipset
创建IP集
现在,正如我们在我们的机器中安装了IPSet一样,我们现在将继续前进以创建IP集。
其中我们需要创建一个包含我们愿意阻止或者限制的网络子网的IPSet。
因此,首先,我们需要获取我们愿意添加到IP集的网络子网列表。
为了获得最新的网络子网,我们将使用最流行的IP块之一,我们可以从的国家选择页面获取子网的列表。
其中我们已经选择了几个用于测试目的的网络子网。
1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 1.1.0.0/24 1.1.2.0/23 1.10.8.0/23 1.202.0.0/15 5.10.68.240/29 5.10.70.40/30 5.10.72.16/29
这是一个网络子网示例,我们将在本文中封锁,但在现实世界中,我们将拥有大量的子网。
因此,我们将使用任何脚本/编程语言并生成如下命令列表。
# ipset create countryblock nethash # ipset add countryblock 1.0.1.0/24 # ipset add countryblock 1.0.2.0/23 # ipset add countryblock 1.0.8.0/21 # ipset add countryblock 1.1.0.0/24 # ipset add countryblock 1.1.2.0/23 # ipset add countryblock 1.10.8.0/23 # ipset add countryblock 1.202.0.0/15 # ipset add countryblock 5.10.68.240/29 # ipset add countryblock 5.10.70.40/30 # ipset add countryblock 5.10.72.16/29
应用IP集
现在,随着我们的IP集准备好,我们现在将使用带有IPTABLE的IPSET模块将那些IP集应用于阻止。
# iptables -A INPUT -m set --match-set countryblock src -j DROP
上面的命令阻止源自由子网定义的IP范围的行动,该集合名为CollyBlock。
因此,列出的所有IP都将被阻止。
永久应用规则
如果我们已准备好测试我们的配置和规则,我们可能希望使更改持久化,以便在每个重新启动中应用规则。
为此,我们需要运行以下命令对我们的防火墙控制器。
关于基于Debian的系统
# ipset save > /etc/ipset.up.rules # iptables-save > /etc/iptables/rules.v4
一旦我们运行上述Comand以保存规则,我们现在将通过在/etc/rc.local中添加以下行来使每个重新启动中加载的规则。
ipset restore < /etc/ipset.up.rules iptables-restore < /etc/iptables/rules.v4
基于RHEL的系统
#ipset save > /etc/ipset.up.rules # iptables-save > /etc/sysconfig/iptables
保存iPset和iptables的规则后,我们现在我们将类似地添加还原命令,就像我们为Debian一样。
我们只需在/etc/rc.local文件中添加以下命令。
ipset restore < /etc/ipset.up.rules iptables-restore < /etc/sysconfig/iptables
通过这种方式,我们可以使用带有iptables的ipset模块阻止某些IPS块。
我们可以创建不同国家的IP集,以便我们可以根据需要应用它们。
当我们需要阻止源自特定国家或者地区的某个流量时,这种方法非常有效,但允许我们需要的IP范围。
有很多防火墙和iptables模块,但它非常简单,快速,使用。