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

前言:

境外肉鸡攻击有点多,并业务无境外访问需求,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的控制效率 - 快乐嘉年华 - 博客园

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4801.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HttpMessageConverter

基本介绍 我们进行Web开发,但是前端传入的 JSON 数据到底是如何被解析成 Java 对象作为 API入参的,后端返回的结果又是如何把 Java 对象解析成 返回给前端的,在整个数据流转的过程中,这些工作都是由谁来完成的呢? 从…

【UML建模】类图 类与接口表示方式、关系、基数详解

文章目录1.概述2.类的表示方式2.1.类与接口2.2.属性、方法、访问权限3.类之间的关系3.1.继承与实现3.2.关联、聚合、组合3.2.1.用代码表达关联关系3.2.2.用代码表达组合关系3.2.3.用代码表达聚合关系3.3.依赖3.3.1.依赖关系的代码实现4.基数5.总结1.概述 在我们的日常学习、工…

斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子。

[01]斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子。 第i月份大兔子小兔子总兔子1011210131124213532565387851381382192113341034…

Qt 正则表达式匹配失败的一个原因

在Qt中做正则表达式时,遇到一个很坑爹的问题,还是经验不足导致。 在正则表达式中,有很多需要元字符,是需要使用普通字符加转义符号搭配使用的。比如\w,\s。对于这类字符,在Qt中使用时,对\再次进…

Prometheus监控实战系列二十:监控Kubernetes集群(下)

本文承接上篇,在本篇中我们会讲解Prometheus如何应用基于Kubernetes的服务发现功能,检索目标信息并进行监控。 在监控策略上,我们将混合使用白盒监控与黑盒监控两种模式,建立起包括基础设施(Node)、应用容器(Docker)、…

【新】(2023Q2模拟题JAVA)华为OD机试 - 时间格式化

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:时间格式化 题目 运维工程师…

(一)人工智能应用--深度学习原理与实战--初识深度学习

认识人工智能、机器学习与深度学习的关系 人工智能(Artificial IntelLigence)诞生于20世纪50年代,其简洁定义为:让计算机自动完成通常由人类完成的智力任务。人工智能是一个综合性领域。最早期出现的预定义规则的专家系统(Expert System) -----由程序员精心设计出明确的规则…

Flink从入门到精通之-05 DataStream API

Flink从入门到精通之-05 DataStream API 我们在第 2 章介绍 Flink 快速上手时,曾编写过一个简单的词频统计(WordCount)程序,相信读者已经对 Flink 的编程方式有了基本的认识。接下来,我们就将开始大量的代码练习&…

基于springboot实现学生成绩管理系统【源码+论文】

16springboot学生成绩管理系统演示录像2022_o8mkp开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…

AirServer手机投屏软件的功能优势特点介绍

AirServer是适用于Mac和PC的先进的屏幕投屏软件,功能是十分强大。它的主要功能在于实时地将移动设备上的图像画面内容投放到电脑设备上,让电脑成为iPad、iPhone等iOS系统设备的大屏显示器。在设备之间建立局域网内的信号发送与接收通道,确保数…

细谈linux软硬链接

文章目录Ⅰ. 软链接Ⅱ. 硬链接1、硬链接2、硬链接数Ⅲ. 软硬链接的区别Ⅳ. 软硬链接的应用1、软链接的应用2、硬链接的应用3、硬链接创建规定Ⅰ. 软链接 ​ 在讲这些链接之前,我们都会先讲如何创建它们! ​ 对于软连接,在 linux 中&#xf…

python matplotlib 图片显示中文

在Linux 环境中,使用matplotlib 显示中文时,总是提示: /python/stock.py:273: UserWarning: Glyph 33647 (\N{CJK UNIFIED IDEOGRAPH-836F}) missing from current font. fig.savefig(self.name ".jpg", bbox_inches tight) …

【数据结构】插入排序 (直接插入排序 希尔排序)

文章目录直接插入排序希尔排序直接插入排序 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。 如果tmp比end的数大或者相等,就继续放在end后面。 如果比end的数小&…

Elasticsearch基本安全加上安全的 HTTPS 流量

基本安全加上安全的 HTTPS 流量 在生产环境中,除非您在 HTTP 层启用 TLS,否则某些 Elasticsearch 功能(例如令牌和 API 密钥)将被禁用。这个额外的安全层确保进出集群的所有通信都是安全的。 当您在模式下运行该elasticsearch-ce…

初始React

一.React的诞生1.什么是React?React是一个讲数据渲染为HTML视图的来源Js库,用于构建用户界面的JS库。在以前的学习中构建用户界面的常用操作步骤:发送请求获取数据处理数据(过滤,整理格式等)操作DOM呈现页面2.React诞…

《SpringBoot》第02章 自动配置机制(一) 项目启动

前言 关于SpringBoot,最大的特点就是开箱即用,通过自动配置机制,遵守约定大于配置这个准则,那么这个是如何实现的呢? 本章首先会介绍SpringBoot的启动执行 一、启动第一步:初始化 1.本章概述 当启动Sp…

【论文精读(李沐老师)】Attention Is All You Need

Abstract 在主流的序列转录(给你一个序列,生成另外一个序列)模型中主要是依赖复杂的RNN和CNN,一般包括encoder和decoder两个结构。在性能最好的模型里,通常使用注意力机制连接encoder和decoder。 (本文想做…

HTTP API接口设计规范

1. 所有请求使用POST方法 使用post,相对于get的query string,可以支持复杂类型的请求参数。例如日常项目中碰到get请求参数为数组类型的情况。 便于对请求和响应统一做签名、加密、日志等处理 2. URL规则 URL中只能含有英文,使用英文单词或…

爱玩飞飞加速实现与分析

一步一步找数据。然后根据游戏数据找游戏基址,游戏基址可以遍历所有数据。想学的可以看看。第一步找基础数据,我们用的ce7.1.当然你们也可以用其他版本。网上随便下一个就行。 第一步。打开ce7.1附加游戏进程。 然后看下自己的血量是多少。我们这里是5…

HTML5支持的视频文件格式和音频文件格式有哪些?

在 HTML5 标准中, 我们有了新的 和 标签, 分别可以引入视频和音频文件的标签 那么这些标签又可以支持哪些文件格式呢 ? 格式支持 视频文件格式 MP4:MPEG-4 Part 14,支持H.264编码。几乎所有的浏览器都支持该格式。 WebM:谷歌开发的格式&a…