iptables-ipset仅允许国内访问---端口白名单

2023-05-16

前言:

境外肉鸡攻击有点多,并业务无境外访问需求,IDC机房网络防火墙无法实现8K多条的china大陆地址导入;为实现仅china大陆地址访问,在业务端口如这里的80,使用iptables防火墙+ipset过滤实现访问控制,对于访问量不大的业务可考虑使用。

如需简单快捷的方式,搜本博“以错误路由方式禁止境外IP来访”篇 (缺点:主机也无法主动请求境外目标了)

创建ipset得到的备份文件,便于批量添加8k条地址

创建一个ipset

ipset create whitelist hash:net maxelem 1000000

加入一个名单ip

ipset add whitelist 9.9.9.9

查看已经ipset配置内容

ipset list

Name: whitelist
Type: hash:net
Revision: 3
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16816
References: 0
Members:
9.9.9.9

将ipset规则保存到文件

ipset save whitelist -f whitelist.txt

查看备份内容

more whitelist.txt

create whitelist hash:net family inet hashsize 1024 maxelem 1000000
add whitelist 9.9.9.9

下载china大陆地址集合并处理格式

curl -# -O http://ftp.apnic.net/stats/apnic/delegated-apnic-latest

cat delegated-apnic-latest | awk -F '|' '/CN/&&/ipv4/ {print $4 "/" 32-log($5)/log(2)}'|cat >ip.txt

head -n 2 ip.txt

1.0.1.0/24
1.0.2.0/23

设置符合ipset备份文件格式

sed 's/^/&add whitelist /g' ip.txt > add-ip.txt

cat add-ip.txt >> whitelist.txt; cp whitelist.txt china_whitelist.txt

head -n 4 china_whitelist.txt

create whitelist hash:net family inet hashsize 1024 maxelem 65536
add whitelist 9.9.9.9
add whitelist 1.0.1.0/24
add whitelist 1.0.2.0/23

先删除前面创建的ipset

ipset destroy whitelist

导入ipset规则

ipset restore -f china_whitelist.txt

查看目前应用的ipset内容

ipset list | head -n 12

Name: whitelist
Type: hash:net
Revision: 3
Header: family inet hashsize 2048 maxelem 1000000
Size in memory: 126736
References: 0
Members:
202.118.64.0/18
223.212.0.0/15
103.217.56.0/22
150.242.184.0/22
43.246.76.0/22

去除名单ip

ipset del whitelist 9.9.9.9

导入完毕

禁用centos7firewalld,安装iptables

systemctl stop firewalld

systemctl disable firewalld

yum -y install iptables-services

systemctl start iptables

systemctl enable iptables

操作

service iptables status

service iptables stop

service iptables restart

iptables -F

先放行SSH,以免无法远程

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

service iptables save

应用ipset规则实现端口访问白名单,禁止境外ip

iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -I INPUT -m set --match-set whitelist src -p tcp --dport 80 -j ACCEPT

iptables -L -n

使用国内与境外地址分别测试通达性

curl -I http://ip+端口

如实现预期,保存规则永久生效

service iptables save

reboot重启ipset集合消失,并且导致iptables启动失败

因创建的 ipset 存于内存中

解决:

yum -y install ipset-service

systemctl enable ipset

ipset restore -f china_whitelist.txt

service ipset save

sed -i 's/IPSET_SAVE_ON_STOP="no"/IPSET_SAVE_ON_STOP="yes"/' /etc/sysconfig/ipset-config

带时间的玩法

创建默认ip生效时间为1天的ipset集合

ipset create timeout_list hash:net timeout 86400

ipset add timeout_list 1.9.9.9 #继承集合默认生存时间

ipset add timeout_list 2.9.9.9 timeout 3600 #生存时间为1小时

ipset add timeout_list 3.9.9.9 timeout 0 #生效时间无限

查看

ipset list timeout_list

Name: timeout_list
----
Header: family inet hashsize 1024 maxelem 65536 timeout 86400
----(像redis一样显示时间倒计时)
1.9.9.9 timeout 86372
3.9.9.9 timeout 0
2.9.9.9 timeout 3572
删除iptables规则

iptables -L -n --line-numbers

iptables -D INPUT 号码

删除ipset异常

ipset destroy whitelist

ipset v7.1: Set cannot be destroyed: it is in use by a kernel component

尝试清空ipset的ip条目再删除

ipset flush 清空成功,但删除操作还是失败

尝试关闭iptables再删除ipset

service iptables stop

ipset destroy whitelist

删除成功

ipset restore -f china_whitelist.txt

service iptables restart

添加连续ip范围到集合

ipset add a_list 1.1.2.1-1.1.2.64

ipset list a_list

Name: a_list
Members:
1.1.2.2/31
1.1.2.1
1.1.2.16/28
1.1.2.32/27
1.1.2.64
1.1.2.8/29
1.1.2.4/30

详细应用移步

参考文献

ipset详解 使用ipset提高iptables的控制效率 - 快乐嘉年华 - 博客园

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iptables-ipset仅允许国内访问---端口白名单 的相关文章

  • C++day09 类域(全局作用域、类作用域、块作用域)和深拷贝、写时复制、短字符串优化、第三方库优化短字符

    文章目录 1 总体目录框架2 类域 xff08 1 xff09 全局作用域 xff08 2 xff09 类作用域 xff08 3 xff09 块作用域 xff08 4 xff09 具体代码 3 std string底层实现 1 总体目录框架
  • 一天入门TM4C123GH6PM(从STM32进行比较学习)

    从STM32到TM4C123 主要内容 xff1a 一 系统时钟 二 GPIO相关 三 通用定时器相关 四 PWM相关 五 UART通信相关 写在前面 xff1a 进入TI的学习 xff0c 说明STM32 已经掌握的差不多了 xff0c
  • ffmpeg 报错Encoder (codec h264) not found for output stream #0:0

    使用ffmpeg 制作流媒体的视频文件 同样的命令在本地的windows环境是正常的 xff0c 在linux 上就不行了 报错了 根据最后一行的提示 xff0c Encoder codec h264 not found for outpu
  • Datax定时增量读取MongoDB到本地配置文件

    Datax定时增量读取MongoDB到本地配置文件 功能 1 gt DataX实现读取MongDB 2 gt 按照时间增量读取 3 gt 定时执行 xff08 使用调度工具自行实现 xff09 代码 span class token pun
  • 我们为什么需要自动化运维?

    随着企业服务器和交换机数量越来越多 xff0c 当到达几百台 xff0c 上千台服务器和交换机之后 xff0c 服务器和交换机日常管理也逐渐繁杂 xff0c 每天如果通过人工去频繁的更新或者部署及管理这些服务器和交换机 xff0c 势必会浪
  • C语言字符数组与字符串的使用及加结束符'\0'的问题

    1 字符数组的定义与初始化 字符数组的初始化 xff0c 最容易理解的方式就是逐个字符赋给数组中各元素 char str 10 61 I a m h a p p y 即把10个字符分别赋给str 0 到str 9 10个元素 如果花括号中提
  • Ubuntu之桌面安装及启动级别切换

    一 需求说明 某开发测试环境操作系统为Ubuntu20 04 给开发人员安装了xrdp 一次远程桌面连接过程中异常奔溃后无法再次远程连接 重启xrdp服务后所有人连接远程连接均出现闪退 为了进一步排查和测试需要搭建一个xrdp测试环境 当前
  • 如何将windows中的文件上传到虚拟机中?

    今天在linux系统中装了mysql xff0c 本来是用wget命令在官网下载的 xff0c 后来实在是慢 等了几分钟实在看不下去每秒十几k的下载速度 xff0c 于是将这个压缩包 xff08 tar xz结尾 xff09 下载到了win
  • 使用SQLyog连接Linux(CentOS版本)下的MySQL8数据库报2003以及1045错误的解决方法

    今天想尝试一下mysql的图形化管理工具 xff0c 于是下载了SQLyog xff0c 连接时却遇到了以下错误 xff1a 其中192 168 0 10是我linux下设置的inet xff0c 我们是通过它远程连接数据库 xff0c 这
  • servlet 学习笔记3

    1 会话 a 定义 xff1a 一个浏览器与一个服务端的一次完整的交流 b 特点 xff1a 在一次会话过程中 xff0c 经历多次请求与响应 在一次会话过程中 xff0c 同一个浏览器往往访问多个Servlet c 需求 xff1a 在一
  • JDBC 学习笔记2

    1 处理查询结果集 xff08 遍历结果集 xff09 span class token keyword package span test span class token punctuation span span class toke
  • JDBC 学习笔记3

    1 对比Statement与PreparedStatement Statement存在sql注入问题 xff0c PreparedStatement解决了sql注入问题 Statement是编译一次执行一次 xff0c PreparedSt
  • memset函数使用方法

    memset 函数及其作用 memset 函数原型是extern void memset void buffer int c int count buffer xff1a 为指针或是数组 c xff1a 是赋给buffer的值 count
  • 补码和原码的转化过程

    在计算机系统中 xff0c 数值一律用补码来表示 xff08 存储 xff09 主要原因 xff1a 使用补码 xff0c 可以将符号位和其它位统一处理 xff1b 同时 xff0c 减法也可按加法来处理 另外 xff0c 两个用补 码表示
  • 在ubuntu系统下安装缺少的字体(一般缺少中文字体)

    在ubuntu系统下安装缺少的字体 cite Ubuntu LaTeX 环境配置 https www cnblogs com xqmeng p 13931222 html 第一步 xff1a 下载缺少的字体 xff08 这里保证下载字体的名
  • 【数学知识】质数与质因子

    一 质数 1 概念 质数又称素数 一个大于1的自然数 xff0c 除了1和它自身外 xff0c 不能被其他自然数整除的数叫做质数 xff0c 否则称为合数 规定1既不是质数也不是合数质数的个数是无穷的 2 例题 xff1a AcWing 3
  • ElasticSearch7.6.2安装与简单操作

    ElasticSearch7 6 2安装与简单操作 Es系列工具都是开箱即用 xff0c 所以安装比较简单 xff0c 各个系统下都是解压即可 前置环境 xff1a windows10 ES7 6 2 Kibana7 6 2 xff1a E
  • 【填坑】海思wifi平台Hi3861开发(上) -- 搭建环境篇

    文章目录 背景处处坑1 编译环境Ubuntu Python报错去找客户新虚拟机OK 2 开发SDK 背景 近期在海思的一款wifi模组Hi3861V100上开发 xff0c 想来和ESP模组应该很像 xff0c 心情还是很放松的 xff0c
  • 小白带你入坑四旋翼无人机——物料篇

    之前就想写了 xff0c 但是比赛挺忙 xff0c 就搁置下来了 xff0c 现在比完了刚好在记录一下 就在一个月前 xff0c 我真正开始了和四旋翼无人机打交道 当时 xff0c 我还是一个小白 xff0c 对无人机什么都不了解 xff0
  • 无人机pid调节顺口溜

    今天无意中找到 xff0c 具体那位大佬编的我也不清楚 xff0c 先感谢一下吧 参数整定找最佳 xff0c 从小到大顺序查 先是比例后积分 xff0c 最后再把微分加 曲线振荡很频繁 xff0c 比例度盘要放大 曲线漂浮绕大弯 xff0c

随机推荐