Debian/Ubuntu Server高效禁用海外IP访问的一种方法

面对越来越多的海外IP扫描、攻击,让服务器损失大量的性能,影响服务器提供正常的对外服务,同时给自己的服务器处理风险之中,本文讲述了一种使用ufw防火墙的方式高效阻止海外IP的一种方法。

阻止IP访问的方法有很多种,这里介绍一个小巧实用的方案ufw+ipset。IPSet是一个用于创建、管理和查询IP地址集合的工具。它支持多种集合类型,如哈希、树、布尔和地理IP集合。这些集合可以用于防火墙规则,实现更复杂的网络访问控制。

一:IPSET

1、安装ipset

复制代码
sudo apt-get update
sudo apt-get install ipset

2、ipset的一些基本操作

我们以ipset集合hr-ip为例讲述一些通用的操作方法

复制代码
#创建集合
ipset create hr-ip hash:net

#向集合中添加IP地址
ipset add hr-ip 192.168.1.1

#从集合中删除IP地址
ipset del hr-ip 192.168.1.1

#查看集合中的IP地址
ipset list hr-ip

#删除集合
ipset destroy hr-ip

二:安装UFW及相关依赖

复制代码
apt install curl perl unzip ufw

禁用某个IP我们只需要修改相关的规则就可以了,这里有两个地方可以修改,一个是before.rules和user.rules。修改两个文件中的任何一个都可以达到禁用某个IP的效果,但他们的启动顺序有不同。

1、before.rules:文件用于定义在 UFW 的默认规则之前 应用的规则。UFW 加载规则时,它首先加载 before.rules 中的规则,然后加载 UFW 的内置规则(默认允许建立的和相关连接,以及拒绝其他入站连接),最后加载 usr.rules 中的规则。

2、user.rules:文件用于定义在 UFW 的默认规则之后 应用的规则。UFW 加载规则时,它在加载完默认规则后,才会加载 usr.rules 中的规则。

通常情况下,如果你只需要简单的防火墙规则,例如允许 SSH 访问,只需要在 usr.rules 中添加规则即可。 如果你需要修改 UFW 的底层配置,或者添加更高级的规则,需要编辑 before.rules 文件。

3、支持IPV6的文件名为:before6.rules和user6.rules,如果你的服务器同时提供IPV6服务,则这两个文件也是需要修改的

4、添加规则

复制代码
vim /etc/ufw/before.rules

增加以下行:

-A ufw-before-input -m set --match-set hr-ip src -j DROP

其中hr-ip就是你的ipset集合

三:下载国家IP集合

这里推荐给大家两个网站

1、IP2Local

Block Visitors by Country | IP2Location

2、IPDeny

IPdeny IP country CIDR blocks

你可以在这两个网站下载你想禁止访问的海外IP集合,注意下载格式选用CIDR。

3、如何批量处理IP

以禁用myanmar的IP为例,先下载国家IP集合

wget https://www.ipdeny.com/ipblocks/data/countries/mm.zone

然后编写下面的脚本,文件名可以随便起,比如config-ip.sh,进行批处理:

复制代码
#!/bin/bash
for i in `cat mm.zone`
do
echo "ipset add Myanmar $i" >> ipset_result_mm.sh
done

运行脚本

复制代码
bash config-ip.sh

于是得到文件:ipset_result_mm.sh

4、创建ipset集合

复制代码
ipset create Myanmar hash:net hashsize 1024 maxelem 65535

5、执行脚本

复制代码
bash ipset_result_mm.sh

此时所有IP已经写入到Myanmar的IPSET集合中,你可以执行ipset list查看

复制代码
ipset list Myanmar

四:修改ufw的规则文件

1、修改规则文件,这里我习惯使用before.rules

复制代码
vim /etc/ufw/before.rules

2、添加规则,添加下面一行:

-A ufw-before-input -m set --match-set Myanmar src -j DROP

3、使规则起作用:

复制代码
ufw reload

当然这里如果你重启服务器,以上配置就会失效,下一章我们介绍如何让配置持久化。

相关推荐
秃头的赌徒5 分钟前
Docker 前瞻
linux·运维·服务器
KEEPMA7 分钟前
在线上定位1G日志文件中的异常信息时,我这样做合适吗
java·服务器·数据库
家庭云计算专家17 分钟前
IPV6应用最后的钥匙:DDNS-GO 动态域名解析工具上手指南--家庭云计算专家
linux·服务器·云计算·编辑器
hgdlip21 分钟前
跨省发布抖音作品,IP属地会随之变化吗?
服务器·tcp/ip·抖音
DC_BLOG30 分钟前
IS-IS中特殊字段——OL过载
运维·华为·智能路由器
随行就市42 分钟前
python爬虫
运维·服务器·爬虫
私房菜1 小时前
ubuntu 安装samba
运维·服务器·ubuntu
xxxx1234451 小时前
Linux驱动开发-网络设备驱动
linux·运维·驱动开发
小小不董2 小时前
Oracle OCP认证考试考点详解083系列03
运维·服务器·数据库·oracle·dba
刘若水2 小时前
Linux: 线程控制
linux·运维·服务器