##########################
## 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/bashPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bincd /var/uncall/ipset/#加载内部ipsetfor i in `cat china.zone`doipset add china $idone#更新国内ip集合rm cn.zone -f wget /ipblocks/data/countries/cn.zonefor i in `cat cn.zone`doipset add china $idone
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/binpackage=/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 ] ; thenecho "md5file is not exsit,create md5file......."creatmd5exitfi# 读取旧的md5信息package_md5_old=$(cat $md5|sed 's/ //g')echo $package_md5_newecho $package_md5_old# 判断callcenter.zone是否变化,变化则更新callcenter的ip集if [ "$package_md5_new" == "$package_md5_old" ];thenecho "md5 is not changed"elseecho "md5 is changed"creatmd5ipset destroy callcenter ipset create callcenter hash:net hashsize 10000 maxelem 1000000for i in `cat /var/uncall/ipset/callcenter.zone`doipset add callcenter $idonefi
#修改执行权限
chmod +xipset_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
参考链接:
/qq_38344855/article/details/109446260
/diyiday/article/details/93077288