Bootstrap

< 自用文儿 > 下载 MaxMind GeoIP Databases 对攻击的 IP 做 地理分析

起因

两个 VPM/VPS,安装了 fail2ban 去拦截密码穷举攻击。每天的记录都在增长,以前复制屏幕输出就行,一屏的内容还容易粘贴出来的。昨天已经过 500 条,好奇 fail2ban 是如何存储这些内容的?就发现它在使用 SQLite3 数据库,有数据库就方便多了。

IP 地理分析实践

1. 从哪里下载? 地理位置 IP 数据

我用这个链接: https://www.maxmind.com/en/accounts/1121608/geoip/downloads

介绍:

每个连接到互联网的设备都会被分配一个独一无二的 IP 地址,Geo IP 数据库通过收集这些而成,建立起 IP 地址与地理位置之间的对应关系。

Geo IP 数据的应用:

  • 根据用户的地理位置,实现本地化内容。
  • 分析用户的 IP 地址位置,可以识别出欺骗行为。
  • 根据用户的地理位置,精准广告投放。像百度、美团这些大公司,它们都在干这个,特擅长。
  • 分析用户地理位置,可以推算出地域特征,可做为市场调研的数据,向政府、商业提供决策提数据支持。
  • 识别标注出恶意 IP 地址,可以采取相应的安全措施。比如 fail2ban 
  • 中华的伟大防火墙也使用 IP 来过滤
  • 应用有很多,不编了。

免费的地理IP数据库

对个人使用而言,国外有几家公司或机构提供 Lite 版的数据库下载。

  • MaxMind GeoLite2
  • P2Location LITE
  • DB-IP Lite

有的需要注册,才能下载使用。我找时, MaxMind 在第一个,顺利注册并下载,就没再看其它的。

2. Fail2Ban

应用介绍 :

1)fail2ban 数据库

安装并配置后,数据库文件在: /var/lib/fail2ban/fail2ban.sqlite3

如果在 Ubuntu 中使用数据库,需要安装 sqlite3

apt update
apt install sqlite3

打开 fail2ban 数据库:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3

数据库的中结构查看:

a. 哪些表:
sqlite> SELECT name FROM sqlite_master WHERE type='table';
fail2banDb
jails
logs
bans
bips
sqlite> 
b. 各个表的,记录个数:
SELECT 'jails' AS table_name, COUNT(*) AS row_count FROM jails
UNION ALL
SELECT 'logs' AS table_name, COUNT(*) AS row_count FROM logs
UNION ALL
SELECT 'bans' AS table_name, COUNT(*) AS row_count FROM bans
UNION ALL
SELECT 'bips' AS table_name, COUNT(*) AS row_count FROM bips;
结果:
jails|3
logs|5
bans|80
bips|592
c. 看来 f2bstate 输出用的 bips 表

我最早用的 bans 表内容,在 DashBoard 中显示。

2)MM GeoLite2 数据库

注册后就可以到下载界面:

分类:

三种精度: ASN ,City,Counrty

数据调用方式: APIs ,数据库,CSV
 

我用的版本是 GeoLite2-City_20250131 ,数据库不大,文件不到 56MB。中国区的数据是含糊的,你知道的原因,只有国家名。

使用:

GeoLite2-City.mmdb 可以在 Pyhone 用 geoip2 

pip install geoip2

例,打开数据库:

reader = geoip2.database.Reader('GeoLite2-City.mmdb')

具体看:

Geolocate an IP address using Databases | MaxMind Developer Portal

或者问 AI 

3. 应用 Dashboard 

工作原理:

从服务器上用 scp 下载 fail2ban 数据库,用 sqlite 找出 fail2ban.bips 表中的 ip 列内容,在 GeIP 数据库中找到对应的地理位置,分析并统计,最后显示在页面上。

附带功能是,显示安装 fail2ban 后的记录天数 “ Uptime (Days)”,因为要统计 2 台主机,设计在主页右上角有2个按键来切换主机。

如下:

很好奇:伊朗排第五

AI 时代,还用密码攻击?

;