使用ipset配合iptable实现多IP段白名单式开放端口
jf wang Lv7

需求

总有海外及国内IDC机房的IP来源来骚扰我的数据库服务。
虽然配置了完善的pg_hba.conf规则,及要求了跨公网一律 TLS 安全传输。
但不断的来自公网的端口嗅探和骚扰。为了防止万一,这次打算通过iptable一次从根上解决!

安装

1
apt install ipset

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建集合
ipset create cnip hash:net

# 添加IP或IP段
ipset add cnip 114.240.0.0/12

# 配置防护规则
## 如果有安装docker:
iptable -I DOCKER -m set ! --match-set cnip -p tcp --dport 5432 -j REJECT
## 如果没有安装docker
iptable -I INPUT -m set ! --match-set cnip -p tcp --dport 5432 -j REJECT

# 查看集合
ipset list cnip

# 删除集合
ipset desdroy cnip

# 删除集合中的项
ipset del cnip 114.240.0.0/12

# 查看集合中的项
ipset list cnip

附加资源

如果要按国家地区建立集合。各国的IP段数据源:

https://www.ipdeny.com/ipblocks/

使用方式:

1
2
3
4
#下载国家IP段,这里以中国为例
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone
#将IP段添加到cnip规则中
for i in $(cat /root/cn.zone ); do ipset -A cnip $i; done
  • 本文标题:使用ipset配合iptable实现多IP段白名单式开放端口
  • 本文作者:jf wang
  • 创建时间:2023-02-22 00:53:06
  • 本文链接:https://www.wangjunfeng.com.cn/2023/02/22/iptable-ipset/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!