ipset 安装参考文档(待整理)
ipset 官方文档
ipset 7.1版本链接
使用参考文档

简单的流程

可以用这几条命令概括使用 ipset 和 iptables 进行 IP 封禁的流程

ipset create blacklist hash:net timeout 0   # 创建名为 blacklist 的集合,关键字为 hash:net,允许设置超时时间
iptables -I INPUT -m set --match-set blacklist src -j DROP  #将 blacklist 应用于 iptables 生效
ipset -exist add blacklist 4.5.6.7  # 添加成员 4.5.6.7
ipset -exist add blacklist 1.2.3.4 timeout 300 # 添加成员 1.2.3.4 且超时时间为 300 秒
ipset list vader # 查看 vader 集合的内容  

注意事项

1.timeout
如果在创建集合是没有指定 timeout,那么之后添加条目也就不支持 timeout 参数,执行 add 会收到报错。想要默认条目不会过期(自动删除),又需要添加某些条目时加上 timeout 参数,可以在创建集合时指定 timeout 为 0。

ipset create luke hash:ip  
ipset add luke 5.5.5.5 timeout 100  
kernel error received: Unknown error -1  # 得到报错信息 

2.exist
如果要重新为某个条目指定 timeout 参数,要使用 -exist 这一选项

ipset -exist add blacklist 1.2.3.4 timeout 300

即使,添加一条新的条目,也可指定 -exist

集合大小

hashsize, maxelem 这两个参数分别指定了创建集合时初始的 hash 大小,和最大存储的条目数量。

ipset create yoda hash:ip,port hashsize 4096 maxelem 1000000
ipset add yoda 3.4.5.6,3306
这样创建了名为 yoda 的集合,初始 hash 大小是 4096,如果满了,这个 hash 会自动扩容为之前的两倍。最大能存储的数量是 100000 个。

如果没有指定,hashsize 的默认值是 1024,maxelem 的默认值是 65536。

其他常用命令

ipset del yoda x.x.x.x    # 从 yoda 集合中删除内容  
ipset list yoda           # 查看 yoda 集合内容  
ipset list                # 查看所有集合的内容  
ipset flush yoda          # 清空 yoda 集合  
ipset flush               # 清空所有集合  
ipset destroy yoda        # 销毁 yoda 集合  
ipset destroy             # 销毁所有集合  
ipset save yoda           # 输出 yoda 集合内容到标准输出  
ipset save                # 输出所有集合内容到标准输出  
ipset restore             # 根据输入内容恢复集合内容 
  • 删除非目录文件

    linux 下删除一个目录下所有的隐藏文件和非目录文件 前言在 alpine 基础上编译 OpenWAF,想要达到最简,删除无用文件。 亮点rm -rf `ls -Fa | grep '^\.\w'` -- 删除隐...

    删除非目录文件
  • 在 alpine 上编译 openssl 遇到的问题

    alpine 上编译 openssl (v1.1.1) 遇到 ucontext 报错 前言今天在 alpine 基础上编译 openwaf,编到 openssl 时,报 ucontext 相关错误。 ucontext 报错编译 ope...

    在 alpine 上编译 openssl 遇到的问题
  • 批量修改或添加文件后缀名

    前言常见的是对不同文件名进行文件后缀名修改。但今天遇到同一文件名的情况。 常见windows 或 Linux 命令: ren *.jpg *.bmp # 将 jpg 后缀改为 bmp 如:1.jpg 2.txt 改后为:1.bm...

    批量修改或添加文件后缀名
  • hyperscan 安装

    1. 前言本文在 Debian8 中安装 hyperscan 5.0.0内存至少 2 G,不然编译慢而且失败 2. 依赖2.1 C/C++编译器hyperscan使用C++开发,且需要C99和C++11支持,目前支持的编译器有 GC...

    hyperscan 安装
  • linux 查看系统开机时间

    有时候需要查看Linux系统运行了多久时间,此时需要知道上次开机启动时间;有时候由于断电或供电故障突然停机,需要查看Linux开机时间/重启时间;下面总结一些查看Linux开机关机时间的方法(非常全面) 1. who 命令查看who ...

    linux 查看系统开机时间
  • GDB 多线程 (non-stop)

    1. 背景这几天在扩展 ngx_lua 模块,但 gdb 定位时,提示:Thread debugging using libthread_db enabled。 2. GDB non-stop 配置把以下3行添加到 ~/.gdbini...

    GDB 多线程 (non-stop)
  • suricata 从 0 开始

    背景OpenWAF 是在 openresty 基础上发布的,但安全不仅仅是针对 HTTP 协议的防护,而是全方位立体化的防护。因此,为了防护更多的协议,开始接触 suricata,用熟后,争取将 OpenWAF 集成到 suricat...

    suricata 从 0 开始
  • clear: command not found 命令无法找到

    1. 安装 ncurses-binsudo apt-get install ncurses-bin 此时尝试执行 ‘clear’ 命令,若失败,执行第二步(重新安装 ncurses-bin) 2. 重新安装 ncurses-binsu...

    clear: command not found 命令无法找到
  • svn 游记

    前言公司之前用 svn 管理项目代码,我一直用的 windows 版本 近期想要搭建知识库云平台,需要在 linux 上使用 svn 管理代码,因此做些笔记 直接使用公司搭建好的 svn服务器 1. 客户端安装yum install ...

    svn 游记
  • saltstack 从 0 开始

    1. 安装//salt-master安装(环境:OS-debian,IP-120.25.255.213) # apt-get install -t jessie-backports salt-master //salt-minion安...

    saltstack 从 0 开始