• ipset 笔记


    官网:http://ipset.netfilter.org/

    ipset是维护内核中IP sets结构的工具,允许你创建 匹配整个地址集合的规则。iptables配合ipset使用后不仅能单IP匹配, 还可以匹配整个IP集合。IP集合存储在带索引的数据结构中, 这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,ipset也具备一些新防火墙设计方法,并简化了配置。

    ipset安装

    # yum安装
    yum install ipset
    # 源代码安装:进官网下载ipset-6.30.tar.bz2 ,
    yum -y install libmnl-devel libmnl
    tar -jxvf ipset-6.30.tar.bz2  && cd ipset-6.30 && ./configure --prefix=/usr/local/ipset && make && make install   完成安装
    

    创建ipset集合

    [root@localhost ~]# which ipset
    /usr/sbin/ipset
    [root@localhost ~]# ipset --list
    [root@localhost ~]# ipset create zabbix_server hash:net
    [root@localhost ~]# ipset add zabbix_server 192.168.1.20
    [root@localhost ~]# ipset create mysql_server hash:net
    [root@localhost ~]# ipset add mysql_server 192.168.1.20
    [root@localhost ~]# ipset --list
    Name: zabbix_server
    Type: hash:net
    Header: family inet hashsize 1024 maxelem 65536 
    Size in memory: 16784
    References: 0
    Members:
    192.168.1.20
     
    Name: mysql_server
    Type: hash:net
    Header: family inet hashsize 1024 maxelem 65536 
    Size in memory: 16784
    References: 0
    Members:
    192.168.1.20
    

    ipset create xxx hash:net (也可以是hash:ip ,这指的是单个ip,xxx是ipset名称)
    ipset默认可以存储65536个元素,使用maxelem指定数量

    ipset create blacklist hash:net maxelem 1000000 #黑名单
    ipset create whitelist hash:net maxelem 1000000 #白名单
    # 查看已创建的ipset
    ipset list
    

    保存规则到ipset文件

    [root@localhost ~]# /etc/init.d/ipset save
    ipset: Saving IP sets to /etc/sysconfig/ipset:             [确定]
     
    [root@localhost ~]# cat /etc/sysconfig/ipset 
    create zabbix_server hash:net family inet hashsize 1024 maxelem 65536 
    add zabbix_server 192.168.1.20
    create mysql_server hash:net family inet hashsize 1024 maxelem 65536 
    add mysql_server 192.168.1.20
    

    使用timeout设置超时时间,如果设置为0,表示永久生效,超时时间可以通过 -exist来进行修改

    ipset -exist add qq 1.1.1.2 timeout 60
    

    iptables规则文件

    [root@localhost ~]# cat /etc/sysconfig/iptables
    #Generated by iptables-save v1.4.7 on Wed Jul 31 10:21:39 2019
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [10988:6938377]
    -A INPUT -s 118.32.234.103/32 -j DROP 
    -A INPUT -i lo -j ACCEPT 
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A INPUT -p tcp -m multiport --dports 80,81,82,443 -m state --state NEW -j ACCEPT 
    -A INPUT -s 211.144.68.140/32 -p tcp -m multiport --dports 10050,3306 -j ACCEPT 
    -A INPUT -p tcp -m set --match-set zabbix_server src -m tcp --dport 10050 -j ACCEPT 
    -A INPUT -p tcp -m set --match-set mysql_server src -m tcp --dport 3306 -j ACCEPT 
    -A INPUT -p tcp -m multiport --dports 570,21,1038 -j ACCEPT 
    -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 5/sec --limit-burst 10 -j ACCEPT 
    -A INPUT -j DROP 
    COMMIT
    

    使allset这个IP集里的IP都无法访问80端口

    iptables -I INPUT -m set –match-set allset src -p tcp –destination-port 80 -j DROP
    

    命令行添加iptables规则并保存

    iptables -I INPUT -m set --match-set mysql_server src -p tcp -m multiport --dports 10050,3306 -j ACCEPT 
    iptables -I INPUT -m set --match-set rsync_server src -p tcp              --dport 873 -j ACCEPT
    service iptables save
    /etc/init.d/iptables save
    

    ipset del使用

    ipset del删除规则时,必须重启iptables服务才会生效
    ipset del jump_mysql 111.206.110.202
    重启iptables才能生效

    ipset add 添加规则时,不用重启iptables 就会生效

  • 相关阅读:
    静态代码块执行时机
    java中的命令
    JDBC
    final, finally, finalize
    面向对象
    线程中常用的一些方法
    线程中的yield()
    线程中的join()
    Thread对象 既传入了Runnable对象又重写了run()方法
    Python 绘制词云
  • 原文地址:https://www.cnblogs.com/milton/p/14275226.html
Copyright © 2020-2023  润新知