安装 iptables
一般情况下,linux 系统默认安装了 iptables,可以通过以下命令查看:
1iptables -V
订阅并下载长亭 IP 威胁情报
获取长亭 IP 威胁情报 IP 库的订阅地址
获取订阅地址后,登录服务器使用以下命令下载:
1curl -sSfL https://ip-1591.rivers.chaitin.cn/api/share/ip_group/fb67fecae18a4d18a3d5e78e29e0fd31?format=cidr > black.txt
使用 iptables 导入 IP 威胁情报
第一种方法:使用 iptables 直接导入 IP 威胁情报
1# 使用 iptables 直接导入 IP 威胁情报
2for ip in `cat black.txt`; do iptables -I INPUT -s $ip -j DROP; done
3# 查看 iptables 规则
4iptables -n -L -v
第二种方法:使用 ipset 导入 IP 威胁情报,然后 iptables 使用 ipset
使用 ipset 的好处是,当 IP 威胁情报更新时,只需要更新 ipset,而不需要重新修改 iptables 规则。
先看看 ipset 是否存在:
1ipset -h
如果 ipset 命令不存在,可以通过以下命令安装:
1# Debian/Ubuntu
2sudo apt-get install ipset
3# CentOS/RedHat
4sudo yum install ipset
开始导入刚刚下载的 IP 威胁情报 blacklist.txt:
1# 创建 ipset,使用 hash:net 类型以支持 CIDR 格式
2ipset create blacklist hash:net maxelem 65536
3# 如果都是 IPv4 地址,使用 hash:ip 类型
4# ipset create blacklist hash:ip maxelem 65536
5
6# 将 IP 威胁情报导入 ipset
7for ip in `cat black.txt`; do ipset add blacklist $ip; done
8
9# 使用 ipset 导入 IP 威胁情报
10iptables -I INPUT -m set --match-set blacklist src -j DROP
查看 ipset 和 iptables 规则:
1# 查看 ipset 中 ip 数量
2ipset list blacklist | grep -E '^Address|^Number of entries'
3# 查看 iptables 规则
4iptables -n -L -v
至此,我们已经掌握了 iptables 和 ipset 导入并应用长亭 IP 威胁情报的基础使用方法。
其他的使用场景
-
通过以上方法,我们还可以写一个脚本,每天定时执行以下操作:
- 下载最新的 IP 威胁情报
- 导入最新的 IP 威胁情报到 ipset
-
获取 nginx / apache 等 web 服务器的访问日志,使用 iptables 对访问日志中的 IP 进行限速、封禁等操作
-
获取 ssh 的登录日志,使用 iptables 对登录日志中的 IP 进行限速、封禁等操作