当前位置: 首页 > 工具软件 > ipset_list > 使用案例 >

IP白名单(iptables + ipset :允许国内ip + 自定义ip 访问系统udp端口)

皇甫波峻
2023-12-01

##########################
## IP白名单(iptables + ipset :允许国内ip + 自定义ip 访问系统udp端口)
##########################
1、安装 ipset
yum install ipset
#创建china 国内ip集
ipset create china hash:net hashsize 10000 maxelem 1000000
#查看china 国内ip集
ipset list china


2、
添加国内ip集合
mkdir /var/ipset/                 #创建目录
touch /var/ipset/callcenter.zone  #创建callcenter.zone(自定义ip集存放文件)
#上传本地国内ipset集合china.zone
#上传脚本文件
ipset_china.sh                #更新加载国内ip集

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

cd /var/uncall/ipset/
#加载内部ipset
for i in `cat china.zone`
do
ipset add china $i
done
#更新国内ip集合
rm cn.zone -f 
wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
for i in `cat cn.zone`
do
ipset add china $i
done


upIpsetFornSql.php            #加载callcenter数据库数据到callcenter.zone


check_callcenter_ipset.sh    #加载callcenter数据库数据到callcenter.zone(调用upIpsetFornSql.php),并同步callcenter.zone 到callcenter的ip集

#!/bin/bash
####
#同步数据库的ip集到/var/uncall/ipset/callcenter.zone;更新ipset中callcenter的ip集
####

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
package=/var/uncall/ipset/callcenter.zone

# 检测的文件是否变化
# 记录 md5值的文件
md5=package_md5
# 创建新的md5信息
package_md5_new=$(md5sum -b $package | awk '{print $1}'|sed 's/ //g')

# 创建md5的函数
function creatmd5()
{
        echo $package_md5_new > $md5
}

#同步callcenter数据库中的ip集到 /var/uncall/ipset/callcenter.zone
/var/uncall/ipset/upIpsetFornSql.php

# 判断文件是否存在
if [ ! -f $md5 ] ; then
        echo "md5file is not exsit,create md5file......."
        creatmd5
        exit
fi

# 读取旧的md5信息
package_md5_old=$(cat $md5|sed 's/ //g')

echo $package_md5_new
echo $package_md5_old

# 判断callcenter.zone是否变化,变化则更新callcenter的ip集
if [ "$package_md5_new" == "$package_md5_old" ];then
        echo "md5 is not changed"
else
        echo "md5 is  changed"
        creatmd5
	ipset destroy callcenter 
	ipset create callcenter hash:net hashsize 10000 maxelem 1000000	
	for i in `cat /var/uncall/ipset/callcenter.zone`
	do
	       ipset add callcenter $i
	done
fi

#修改执行权限
chmod +x ipset_china.sh upIpsetFornSql.php check_callcenter_ipset.sh
3、
开机启动:开机加载china 国内ip集
/var/ipset/ipset_china.sh > /dev/null &  

定时脚本: 同步呼叫中心ip集(每分钟同步一次);联网更新国内ip集(每天23:59更新)
* * * * * root /var/ipset/check_callcenter_ipset.sh > /dev/null &
59 23 * * * root /var/ipset/ipset_china.sh > /dev/null &

4、创建基本iptables规则
 vim /etc/sysconfig/iptables

*filter
-A INPUT -p udp -m set --match-set china src -j ACCEPT
-A INPUT -p udp -m set --match-set callcenter src -j ACCEPT
-A INPUT -p udp -j DROP
COMMIT

5、导入表iptables_white.sql;上传web文件;配置菜单

6、重启iptables 、 crond
service iptables restart
service crond restart

参考链接:

https://blog.csdn.net/qq_38344855/article/details/109446260

https://blog.csdn.net/diyiday/article/details/93077288

 类似资料: