如何在 Linux 下大量屏蔽恶意 IP 地址

如何在 Linux 下大量屏蔽恶意 IP 地址,第1张

很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个?

Netfilter/IPtables 的问题

在Linux中,可以很简单地用netfilter/iptables框架禁止IP地址:

$ sudo iptables -A INPUT -s 1111-p TCP -j DROP

如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到:

$ sudo iptables -A INPUT -s 1120/24-p TCP -j DROP

然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。

$ sudo iptables -A INPUT -s 1111-p TCP -j DROP

$ sudo iptables -A INPUT -s 2222-p TCP -j DROP

$ sudo iptables -A INPUT -s 3333-p TCP -j DROP

什么是IP集

这时候就是IP集登场了。IP集是一个内核特性,它允许多个(独立)IP地址、MAC地址或者甚至是端口号被编码和有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后,你可以创建一条iptables规则来匹配这个集合。

你马上就会看见IP集合的好处了,它可以让你用一条iptable规则匹配多个ip地址!你可以用多个IP地址和端口号的方式来构造IP集,并且可以动态地更新规则而没有性能影响。

在Linux中安装IPset工具

为了创建和管理IP集,你需要使用称为ipset的用户空间工具。

要在Debian、Ubuntu或者Linux Mint上安装:

$ sudo apt-get install ipset

Fedora或者CentOS/RHEL 7上安装:

$ sudo yum install ipset

使用IPset命令禁止IP

让我通过简单的示例告诉你该如何使用ipset命令。

首先,让我们创建一条新的IP集,名为banthis(名字任意):

$ sudo ipset create banthis hash:net

第二个参数(hash:net)是必须的,代表的是集合的类型。IP集有多个类型。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储单独的IP地址,你可以使用hash:ip类型。

一旦创建了一个IP集之后,你可以用下面的命令来检查:

$ sudo ipset list

这显示了一个可用的IP集合列表,并有包含了集合成员的详细信息。默认上,每个IP集合可以包含65536个元素(这里是CIDR块)。你可以通过追加"maxelem N"选项来增加限制。

$ sudo ipset create banthis hash:net maxelem 1000000

现在让我们来增加IP块到这个集合中:

$ sudo ipset add banthis 1111/32

$ sudo ipset add banthis 1120/24

$ sudo ipset add banthis 1130/24

$ sudo ipset add banthis 11410/24

你会看到集合成员已经改变了。

$ sudo ipset list

以上上传到红联Linux系统教程频道中。

现在是时候去创建一个使用IP集的iptables规则了。这里的关键是使用"-m set --match-set "选项。

现在让我们创建一条让之前那些IP块不能通过80端口访问web服务的iptable规则。可以通过下面的命令:

$ sudo iptables -I INPUT -m set--match-set banthis src -p tcp --destination-port 80-j DROP

如果你愿意,你可以保存特定的IP集到一个文件中,以后可以从文件中还原:

$ sudo ipset save banthis -f banthistxt

$ sudo ipset destroy banthis

$ sudo ipset restore -f banthistxt

上面的命令中,我使用了destory选项来删除一个已有的IP集来看看我是否可以还原它。

自动IP地址禁用

现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上,有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是,让我们看看如何自动将IP黑名单加到IP集中。

首先让我们从https://wwwiblocklistcom/listsphp得到免费的黑名单,这个网站有不同的免费和收费的名单。免费的版本是P2P格式。

接下来我要使用一个名为iblocklist2ipset的开源Python工具来将P2P格式的黑名单转化成IP集。

首先,你需要安装了pip。

使用的下面命令安装iblocklist2ipset。

$ sudo pip install iblocklist2ipset

在一些发行版如Fedora,你可能需要运行:

$ sudo python-pip install iblocklist2ipset

现在到https://wwwiblocklistcom/listsphp,抓取任何一个P2P列表的URL(比如"level1"列表)。

粘帖URL到下面的命令中。

$ iblocklist2ipset generate \

--ipset banthis "http://listiblocklistcom/list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" \

> banthistxt

上面的命令运行之后,你会得到一个名为banthistxt的文件。如果查看它的内容,你会看到像这些:

create banthis hash:net family inet hashsize 131072 maxelem 237302

add banthis 1240/24

add banthis 1280/24

add banthis 19758/32

add banthis 1996105/32

add banthis 19102251/32

add banthis 1918965/32

add banthis 11600/14

你可以用下面的ipset命令来加载这个文件:

$ sudo ipset restore -f banthistxt

现在可以查看自动创建的IP集:

$ sudo ipset list banthis

在写这篇文章时候,“level1”类表包含了237,000个屏蔽的IP列表。你可以看到很多IP地址已经加入到IP集中了。

最后,创建一条iptables命令来屏蔽这些坏蛋!

总结

这篇文章中,我描述了你该如何用强大的ipset来屏蔽不想要的IP地址。同时结合了第三方工具iblocklist2ipset,这样你就可以流畅地维护你的IP屏蔽列表了。那些对ipset的性能提升好奇的人,下图显示了iptables在使用和不使用ipset的基准测试结果(注意时间坐标轴)。

通过关闭端口可以做到防止病毒入侵和禁止登陆某些软件的功能,如QQ和BT

对于个人用户来说,您可以限制所有的端口,因为您根本不必让您的机器对外提供任何服务;而对于对外提供网络服务的服务器,我们需把必须利用的端口(比如WWW端口80、FTP端口21、邮件服务端口25、110等)开放,其他的端口则全部关闭。

这里,对于采用Windows 2000或者Windows XP的用户来说,不需要安装任何其他软件,可以利用“TCP/IP筛选”功能限制服务器的端口。具体设置如下:

1通用篇(适用系统Win2000/XP/server2003),最近我在论坛看了一些文章,发现大家都有一个误区,就是哪个端口出漏洞就关闭哪个端口,其实这样是不能保证系统安全的,正确的方法应该是先了解清楚自己需要开放哪些端口,了解完毕后,把自己不需要的端口统统关闭掉,这样才能保证系统的安全性。

比如说你的电脑是一台服务器,服务器需要有Mail Server和WEB服务,还要有FTP服务,这些只需要开放21、25、80、110就足够了。其它的就应该全部关闭。

关闭的方法:点击“开始→控制面板→网络连接→本地连接→右键→属性”,然后选择“Internet(tcp/ip)”→“属性”,。在“Internet(tcp/ip)属性”对话框中选择“高级”选项卡。在“高级TCP/IP设置”对话框中点选“选项”→“TCP/IP筛选”→“属性”,。在这里分为3项,分别是TCP、UDP、IP协议。假设我的系统只想开放21、80、25、110这4个端口,只要在“TCP端口”上勾选“只允许”然后点击“添加”依次把这些端口添加到里面,然后确定。注意:修改完以后系统会提示重新启动,这样设置才会生效。这样,系统重新启动以后只会开放刚才你所选的那些端口 ,其它端口都不会开放。

2利用系统自带防火墙关闭端口(适用系统WinXP/Server 2003)

微软推出WinXP之后的操作系统本身都自带防火墙,用它就可以关闭掉不需要的端口,实现的步骤也很简单。

具体设置:“控制面板”→“本地连接”→“高级”,把“Inernet连接防火墙”下面的选项勾选上,如图所示,然后点击“设置”,出现如图所示窗口。假设我们要关闭135端口(所有使用Win2000或者是WinXP的用户马上关闭135端口,因为最新的漏洞可以利用这个端口攻击服务器获取权限),135端口用于启动与远程计算机的RPC连接。我们可以在“高级设置”窗口的“服务”选项卡中点击“添加”按钮,。在“服务设置”对话框中把各项按图中所示填写好之后一路确定就可以了。这样防火墙就自动启动了,启动以后“本地连接”图标会出现一个可爱的小锁头。

以上就是利用系统本身自带防火墙关闭端口的方法。当然了,有条件的朋友还可以使用第三方防火墙来关闭端口。

方法一:使用代理服务器

使用代理服务器的第一步是要获取代理服务器的IP 地址和端口信息,我们可以使用搜索引擎到网上搜索,而使用“QQ代理公布器“可以很快速地找到合适的代理服务器,将“QQ代理公布器“ 下载地址:点击这里进入下载页面下载并安装到系统中并运行,然后在主窗口中选择代理类型,例如Socks5,再单击“读数据“按钮即可获取一批不同地区的代理服务器。

提示:

1为了获得工作状态正常的服务器IP地址,在搜索之前选择“是否测试代理“选项,这样搜索到的服务器使用成功率将更高。

2QQ程序目前支持两种代理服务器,一个是Socks5,另一个是HTTP11,其中的Socks和HTTP都是通讯协议,也就是这个代理服务器提供服务的通讯协议。

得到了代理服务器的IP地址后,单击QQ主窗口中的“QQ菜单→系统参数“,在打开的窗口中选择“网络设置“标签,选择代理服务器类型,然后将代理服务器的IP和端口号输入,单击“测试“按钮测试一下该服务器是否工作正常;得到了工作正常的信息后,单击“确定“按钮并重新登录QQ即可生效。

方法二:让QQ自免疫

单击“QQ菜单→系统参数“,在打开的窗口中选择“安全设置“,然后将右侧窗口中的“通讯模式选择“设置为“通过服务器模式与好友交换信息“。

最后单击“确定“退出并重新登录QQ即可,这样设置之后,对方QQ聊天窗口中得到的将是“无法取得对方IP,消息将通过服务器中转…“这将令对方大失所望。

隐藏IP

使用代理服务器是一种简单有效的隐藏IP法,具体操作是:打开QQ的“系统参数”,单击“网络设置”,选中“使用SOCKET5代理服务器”。在“代理服务器地址”、“端口号”、处输入你寻找的免费代理地址,端口号为:1080;校验用户名和密码一般不用填。点击“测试”按钮,如果你填入的代理地址有效,则会弹出“代理服务器工作正常”提示框,否则就会弹出“无法连接到代理服务器”的提示。上述步骤做完之后,最后点击“确定”完成。代理服务器的地址很多网站有提供,自己用工具(如“代理猎手”)也可以找到很多。要特别注意的一点是:按照上述方法找到确实可用的代理服务器后,要先退出QQ,再启动QQ重新登录,这样才会改变QQ的IP,否则QQ的IP不会改变的。代理服务器有时候会失效,需要换一个新的服务器。用此方法只能隐藏QQ的IP,即别人通过一般的QQ工具查不到你的真实IP地址,但高手还是有办法查出你的真实IP的

利用组策略里的IP安全设置可以达到楼主的要求

为了说明,我告诉一下我的设置

我的电脑IP 1921680100

路由器 ip 19216801

我通过如何阻止 我和路由器之间的相互PING来演示操作过程

首先

打开组策略

进入计算机配置里面的安全设置,点里面的IP安全策略

创建新的IP策略 下一步

随便输入名称 我就用 "阻止" 然后点 下一步

激活默认响应规则打勾 下一步

验证方法选第一个 V5协议

可能会有个警告,直接确定就好了

编辑属性打勾 完成

回到原来的界面,点新建的名称 "阻止"

他会出来个属性窗口

点击添加

下一步

不指定隧道

下一步

所有网络连结

下一步

V5协议

下一步

这时候应该是个安全规则向导界面

点添加

出来IP筛选列表

点添加

下一步

源地址用我的IP地址

下一步

目标IP地址 用一个特定的IP地址,然后输入你想阻止的IP地址

我这里用19216801

下一步

协议,针对你的游戏服务器用的通讯协议,自己选择,一般都是TCP

我这里使用ICMP

下一步

编辑属性打勾

下一步

出来筛选器属性

镜像一定要打勾,这样就能屏蔽远程IP了

然后点确定

回到了IP筛选器列表,点确定

点你刚刚建立的IP筛选器,如果上面没有命名,那么她的名字应该是

新的IP筛选器列表,点上圈圈下一步,进入筛选器操作

点阻止,下一步

完成

新规则属性

不用搞,只要点确定然后点关闭

现在回到原来的组策略界面

右键点我们刚刚建立的 名称为阻止 ,选择指配

这时候,它的策略已指配 变成 是了

我这边现在PING 19216801 已经显示

C:\Documents and Settings\Administrator>ping 19216801

Pinging 19216801 with 32 bytes of data:

Destination host unreachable

Destination host unreachable

Destination host unreachable

Destination host unreachable

Ping statistics for 19216801:

Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

然后我们试试右键点击 阻止,选择 不指配

C:\Documents and Settings\Administrator>ping 19216801

Pinging 19216801 with 32 bytes of data:

Reply from 19216801: bytes=32 time=1ms TTL=127

Reply from 19216801: bytes=32 time=1ms TTL=127

Reply from 19216801: bytes=32 time=2ms TTL=127

Reply from 19216801: bytes=32 time=1ms TTL=127

Ping statistics for 19216801:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 1ms, Maximum = 2ms, Average = 1ms

很明显,策略已经成功达到我们要的效果了

打的我好累

恩,再次提醒,上面中的那个镜像一定要选择

不然就是我不能PING通路由器

路由器能PNG通我了

镜像的作用是双向禁止

按照上面的操作,我想楼主应该能达到自己要求的效果了

不过如果对方是动态IP,以上操作就没什么用了

以上

首先,如果是windows 2003操作系统,依次点击开始菜单-->管理工具-->本地安全策略。(windows XP操作类似)。

下一步,然后取消激活默认选项规则,再下一步,完成。使用添加向导前的勾去掉。点“添加”按钮。

选择筛选器标签,添加,名称为“屏蔽的IP”,筛选器操作常规选项这里,选择“屏蔽”。即表示对属于这个组的IP都进行屏蔽。完成。

接下来可以添加IP筛选列表了,选择“IP筛选列表”标签,选择“添加”按钮,取消“使用添加向导”,点击添加,源位置选择“一个特定的IP地址”,输入IP,例如:60101111222,目的地址选择“我的IP”,确定,确定,完成操作。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在 Linux 下大量屏蔽恶意 IP 地址

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情