iptables-ipset仅允许国内访问---DNAT入口
前言:
境外肉鸡攻击有点多,并业务无境外访问需求,IDC机房网络防火墙无法实现8K多条的china大陆地址导入;为实现仅china大陆地址访问,在业务入口主机(DNAT端口映射或DNAT端口转发),使用iptables防火墙+ipset过滤实现访问控制,对于访问量不大的业务可考虑使用。
如仅仅对某端口做过滤,搜本博"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
修改内核参数,开启转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p
开启DNAT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.53.22:80
iptables -t nat -L -n
(后端主机看实际情况做返程路由,这里不做赘述,当然阿里云等不适用自建DNAT端口映射,可改用DNAT的端口转发,主要看后端有没获取客户端源IP需求)
应用ipset规则实现白名单,禁止境外ip
在dnat的端口用FORWARD链
iptables -t filter -I FORWARD -m set --match-set whitelist src -p tcp --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 80 -j DROP
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
关于删除ipset和DNAT
因地址条目过多索引过大,带来的删除ipset和DNAT失败
删除DNAT异常
iptables -t nat -L -n --line-numbers
iptables -t nat -D POSTROUTING 号
报iptables: Index of deletion too big.
删除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
随后发现service iptables restart失败 ,提示找不到whitelist,需要导入回去再重启恢复。
ipset restore -f china_whitelist.txt
service iptables restart
最终的清理方式
iptables -F
ipset destroy whitelist
service iptables save
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
service iptables save
添加连续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的控制效率 - 快乐嘉年华 - 博客园
iptables-ipset仅允许国内访问---DNAT入口相关推荐
- IP白名单(iptables + ipset :允许国内ip + 自定义ip 访问系统udp端口)
########################## ## IP白名单(iptables + ipset :允许国内ip + 自定义ip 访问系统udp端口) #################### ...
- linux设置端口80禁止访问,linux iptables 设置仅22、80端口可访问
linux iptables 设置仅22.80端口可访问 博客分类:linux 防火墙sshiptables [设置仅22.80端口可访问] 通过命令 netstat -tnl 可以查看当前服务器打开 ...
- 提升你的外国服务器网站国内访问速度~
前言 由于众所周知的原因,国内访问国外的服务器速度较慢.在没有特殊线路(直连.CN2GIA等)的加持下,路由线路左绕右绕,严重影响国内访问速度. 能使用国内服务器当然是最好的,但是高昂的流量& ...
- 电脑软件:微软Windows官方电脑管家,仅针对国内用户?看看怎么说
最近,有开发者发布了"微软电脑管家Windows Master"安装包,自称是微软官方开发的Windows桌面安全辅助产品,集成了Windows Defender杀毒引擎. 而有趣 ...
- 国内访问 Atom 源很慢 解决方案
国内访问 Atom 源很慢 & 解决方案 参考文章: (1)国内访问 Atom 源很慢 & 解决方案 (2)https://www.cnblogs.com/bukekangli/p/5 ...
- iptables配置docker服务端口访问限制
服务器系统为 CentOS 7 PS:CentOS 7自带iptables,但不自带iptables-services,你有需要可以装,也可以不装,不影响本文的操作和阅读 遇到了一个需求,需要用ipt ...
- linux关闭8080端口,Linux修改iptables,取消8080的访问限制
安装JBoss后,在客户端输入地址http://xx.190.xx.25:8080/iNMS31Web,发现默认端口8080不能访问. 由于Linux防火墙默认是关闭8080端口.因此,若要能够访问8 ...
- 服务器在新加坡延迟,从国内访问新加坡服务器延迟多大?
新加坡作为东南亚的核心发达地区,很多国内企业在选择出海发展业务时,都会将这里作为首选地.在互联网行业也一样,我们在租用东南亚服务器时,也会以这一核心来选择,以此为核心辐射至周边地区.电商.海外代购是东 ...
- nginx配置-根据UA进行域名跳转且仅限域名访问
随着移动用户的增长,web应用中,根据用户UA进行PC端.移动端的跳转是必要的,常见的方式有三种:前端js根据UA做重定向,后端根据UA返回不同的路径,在nginx中处理,这里用的是第三种.还配置了 ...
最新文章
- CVPR2021 | 实现图像的“无限放大”,超详细局部隐式图像函数(LIIF)解读
- python闭包锁住女神的心
- SESSION存储于redis(CI3)
- Android测试中被测应用挂了怎么办?
- Orchard CMS前台页面为什么没有Edit链接?
- vue项目编写html,从头搭建、编写一个VUE项目
- js优化工具:ECMAScript Cruncher
- 别人运行的好好的R代码,到我这怎么就冲突了?
- JDK 15 正式发布,划时代的 ZGC 同时宣布转正!
- mysql的远程服务开启_mysql开启远程服务
- mysql redis binlog_基于binlog的canal到redis的同步
- 分赛区决赛见!2021eBay全国跨境电商创新创业大赛分赛区决赛晋级名单
- 打不开计算机或文件夹,求助:我的电脑文件夹打不开了
- java中的元音 辅音_元音辅音分类表
- word里输入向上或向下取整符号
- 试题 基础练习 字母图形
- 京淘商城后台管理系统
- 广告中的DSP、SSP和ADX
- 群晖 NAS DS218j的优秀与缺憾
- python自学网站免费-推荐几个适合小白学习Python的免费网站
热门文章
- ECS_FML——线性回归w矩阵
- MyEclipse CI 2018.12.0安装与激活(附安装包和激活工具)
- Flutter 3 相关介绍,包括Flutter桌面端、Flutter firebase 、Flutter游戏- 谷歌2022 I/O 大会,
- excel减法函数_关于excel求和, 你不知道的那些便捷技巧
- Java List Stream 去重
- dw网页设计期末设计一个网页_Dreamweaver 网页制作期末试题
- My SQL数据库基础知识点全面总结笔记(上)
- 公众号怎么引流推广?一文讲透个人公众号运营玩法
- Memory System
- 编程语言简史(转自码农)