简介

由于公司线上生产环境firewalld默认都是关闭的,所以只能依赖iptables的表来方便管理IP黑白名单.

提示线上生产环境不要随便重启iptables,会导致docker已经映射好的关系表都没有了.

不要执行iptables-save,会把当前临时的一些规则保存到/etc/sysconfig/iptables,如有变动,重启又会被load出来.

不要执行iptables -F 清空规则.

增删改表单后,不要重启iptables,规则都是立即生效.

本本主要内容:ipset表应用

ip set是linux内核的一个内部框架,可由ipset工具管理.

ipset 适用于以下几种场景:

  • 一次性存储大量的ip或者端口,用以iptables匹配
  • 在不影响性能的前提下,动态更新iptables规则(针对ip或者端口),表单更新时不用频繁重启iptabels服务,立即生效
  • 期望使用ipset的告诉匹配,或者在一条iptables规则中表达复杂的 ip/端口规则,使规则看起来更简单明了

安装ipset

#安装ipset,大多数系统7已经默认安装过了
yum install ipset #备份原有的iptabels到文件
iptables -nL >myiptabls.oldlist
iptables-save >./myiptables.old

定义hash:net类型黑白名单

任何端口协议

#白名单
ipset create opsallow hash:net maxelem 10000
iptables -A INPUT -m set --match-set opsallow src -j ACCEPT #黑名单
ipset create opsdeny hash:net maxelem 500000
iptables -A INPUT -m set --match-set opsdeny src -j DROP #查看表
ipset list 表名 #保存表
ipset save 表名 -f 表名bak.txt #恢复表
ipset restore -f 表名bak.txt #查看iptables表(这里注意优先级)
iptables -nL INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set opsallow src
DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set opsdeny src
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 match-set opsallowipport src,dst
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 match-set opsdenyipport src,dst
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 match-set denytemp1d src
#加白名单,把公司自己IP先加进去
ipset add opsallow 123.123.123 #加黑名单
#ipset add opsdeny 45.9.20.101 #删白名单
ipset del opsallow 1.1.1.1
#删黑名单
ipset del opsallow 1.1.1.1 #网段
ipset add opsallow 192.168.255.0/24
ipset add opsallow 172.17.0.0/16 #清空表单
ipset flush 表名 #删除表
ipset destroy 表名 #测试是否在表中匹配到
ipset test opsdeny 192.168.255.166

定义hash:ip,port类型黑白名单

指定端口

#白名单
ipset create opsallowipport hash:ip,port maxelem 10000
iptables -A INPUT -p tcp -m set --match-set opsallowipport src,dst -j ACCEPT #黑名单
ipset create opsdenyipport hash:ip,port maxelem 500000
iptables -A INPUT -p tcp -m set --match-set opsdenyipport src,dst -j DROP #增删
ipset add opsallowipport 192.168.255.166,80
ipset del opsallowipport 192.168.255.166,80
ipset del opsallowipport 192.168.255.166,80-89
ipset del opsallowipport 192.168.255.166,udp:53
ipset add opsdenyipport 192.168.255.166,tcp:80
ipset add opsdenyipport 192.168.255.161-192.168.255.166,8080 #这里走了些弯路,特此整理成表,只告诉了怎么加到ipset表,缺很少告诉你src,dst都需要指定,只写src导致ipset无效
ipset type | iptables match-set | Packet fields
------------------+--------------------+---------------------------------
hash:ip,port | src,dst | src IP address, dst port
hash:net,port,net | src,dst,dst | src IP address, dst port, dst IP address
hash:net,port,net | dst,src,src | dst IP address, src port, src IP address
hash:ip,port,ip | src,dst,dst | src IP address, dst port, dst IP address
hash:ip,port,ip | dst,src,src | dst IP address, src port, src ip address
hash:mac | src | src mac address
hash:mac | dst | dst mac address
hash:ip,mac | src,src | src IP address, src mac address
hash:ip,mac | dst,dst | dst IP address, dst mac address
hash:ip,mac | dst,src | dst IP address, src mac address

其他


#规则优先级
#这里也很容易走弯路如果ipset的allow和deny里都有,iptables中opsallowipport在opsdenyipport前面,那么allow优先;
#也就是说ipables中谁在前面,谁先匹配到,谁就有优先权.
#因此根据实际需要,要注意iptables条目的顺序先后. #查看排序规则
#iptables -nL INPUT
[root@opstest zzw]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 match-set opsdenyipport src,dst
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 match-set opsallowipport src,dst
#加到最前面
iptables -I INPUT -p tcp -m set --match-set opsallowipport src,dst -j ACCEPT
#追加到后面
iptables -A INPUT -p tcp -m set --match-set opsallowipport src,dst -j ACCEPT
#创建自动1d解封
ipset create denytemp1d hash:ip timeout 86400
iptables -A INPUT -p tcp -m set --match-set denytemp1d src -j DROP
#添加注释
[root@opstest zzw]# ipset create opsdenyipport hash:ip,port maxelem 500000 comment
[root@opstest zzw]# ipset add opsdenyipport 192.168.255.167,tcp:80 comment "bad man"
[root@opstest zzw]# ipset list opsdenyipport
Name: opsdenyipport
Type: hash:ip,port
Revision: 5
Header: family inet hashsize 1024 maxelem 500000 comment
Size in memory: 240
References: 0
Number of entries: 1
Members:
192.168.255.167,tcp:80 comment "bad man"

防火墙之ipset表应用的更多相关文章

  1. 期中架构&防火墙¥四表五链

    今日内容 架构图 包过滤防火墙 Iptables 新建虚拟机 内容详细 一.架构图 用户通过域名访问一个网站类比开车去饭店用餐 访问网站的流程 1.浏览器输入网站的域名(www.baidu.com), ...

  2. Openwrt上使用dnsmasq和ipset实现域名分流

    目标 部署一台自动代理路由器,实现根据域名来自动设定直连或者代理,而我要做的只是设置PC的默认网关为主路由器(192.168.0.1)还是自动代理路由器(192.168.0.254). 创建Openw ...

  3. dnsmasq-2.48没有ipset特性,安装dnsmasq-2.71来支持ipset

    iptables只能根据ip地址进行转发,不能识别域名,而dnsmasq-full不仅可以实现域名-IP的映射,还可以把这个映射关系存储在ipset中,所以使用dnsmasq+ipset就可以实现ip ...

  4. 6. Samba服务和防火墙配置笔记

    Samba文件服务器 (一)简介 内网文件服务器 windows-windows 文件共享服务 网络邻居linux-linux NFS windows-linux Samba (二)端口 smbd: ...

  5. [转] Linux下防火墙iptables用法规则详及其防火墙配置

    from: http://www.cnblogs.com/yi-meng/p/3213925.html 备注: 排版还不错,建议看以上的链接. iptables规则 规则--顾名思义就是规矩和原则,和 ...

  6. centos防火墙操作

    centos防火墙基本操作 #/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT#/sbin/iptables -I INPUT -p tcp -- ...

  7. 防火墙和iptables

    本文目录: 6.1 为什么需要防火墙 6.2 数据传输流程 6.2.1 网络数据传输过程 6.2.2 本机数据路由决策 6.3 TCP三次握手.四次挥手以及syn攻击 6.3.1 三次握手建立tcp连 ...

  8. CentOS_6.5配置iptables防火墙策略

    ###############配置filter表防火墙############### #清除预设表filter中的所有规则链的规则iptables -F #清除预设表filter中使用者自定链中的规则 ...

  9. 企业防火墙之iptables

    1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的情况,不能开iptables,影响性能, ...

随机推荐

  1. 1.0缓存:Login.aspx?

    所有的manifest资源配置文件以CACHE MANIFEST声明开头. #(哈希标签)有助于提供缓存文件的版本. CACHE命令指定哪些文件需要被缓存. manifest资源配置文件的内容类型应是 ...

  2. okayNav jQuery 插件怎么使用

    首先到 https://github.com/VPenkov/okayNav 这个网站里面把代码下载下来 下载之后解压出来,解压后打开文件app 然后创建一个HTML文档 然后倒入css的样式 样式: ...

  3. 学习Python(一)

    一.Python的基础 1.Python是怎样的语言? 2.Python的安装 Linux安装(python3) yum install -y make zlib zlib-devel gcc-c++ ...

  4. django 三件套(render,redirect,HttpResponse)

    Django基础必备三件套**: HttpResponse 内部传入一个字符串参数,返回给浏览器. from django.shortcuts import HttpResponse def inde ...

  5. scanf()函数的原理

    最近使用scanf发现了自己对scanf函数还是不太了解,主要出现在无意中出现的一个错误: scanf正确的写法是,scanf中以什么格式输入变量,则变量的类型就应该是什么格式,如下面scanf输入到 ...

  6. Canvas 核心技术

    最近项目需求中要写较多H5小游戏,游戏本身体量不是很复杂,主要是承载较多业务逻辑,所以决定用canvas来完成游戏部分.之前只是知道H5中有canvas这个东西,也知道它大概是画图的,但具体怎么用,还 ...

  7. python-筛法求素数

    [题目描述]用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数. [练习要求]请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释. [输入格式 ...

  8. 【Android开发】安卓炫酷效果集合

    1. android-ripple-background 能产生波浪效果的背景图片控件,可以自定义颜色,波浪扩展的速度,波浪的圈数. github地址 2. android-shapeLoadingV ...

  9. 学习如何运用GitHub网站+出现的问题+Git基本操作总结

    首先介绍一下GitHub网站: github是一个基于git的代码托管平台. GitHub 拥有一个非常鼓励合作的社区氛围.这一方面源于 GitHub 的付费模式:私有项目需要付费,而公共项目完全免费 ...

  10. DRF-认证权限频率

    目录 DRF-认证权限频率 认证 登录接口 认证 权限 作用 使用 频率 作用 使用 认证权限频率+五个接口 模型 视图 序列化器 认证权限频率类 配置文件 路由 DRF-认证权限频率 前后端混合开发 ...