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

28 篇文章 0 订阅

##########################
## 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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值