5

Win平台Web访问白名单设置脚本(IP安全性原则)

 3 years ago
source link: https://zhang.ge/890.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Win平台Web访问白名单设置脚本(IP安全性原则)

Jager · 1月10日 · 2014年IP安全性 · WEB防火墙 · windows · 浏览权限 3218次已读

最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改tomcat下的server.xml配置文件,通过定义allow="IP.."的访问规则来控制浏览权限。这种方法有个很不好的地方,每加一次权限,你就得重启一次tomcat,用户老是挤牙膏一样,一次一两个IP的发邮件来申请开通,不但很烦人,而且对正在使用的用户体验也非常的糟糕!于是我决定要改善这个糟糕的局面。

在Linux下,我们都是通过配置防火墙iptables来控制80端口的访问的,结果到了windows下,估计前面的人也没深究如何进行类似的设置,于是就使用了那个蹩脚的方法!

我在接手WEB运维之前,做过一段时间的PC维护,当时公司为了安全考虑需要封堵一些后门端口,我也因此编写过相关的封端口的脚本,所以看到windows平台的WEB防火墙问题,自然而然就想到了通过封堵80端口来控制浏览权限的方法。

在非Server(windows XP/7等)的环境下,要通过命令行来设置IP安全性原则是需要用到一个叫做ipseccmd.exe的命令行工具的,而今天是Windows Server平台,就完全支持使用netsh ipsec static add filter命令来设置IP安全性规则!命令行的用法我也就先不说了,有时间再来补充,直接上代码:

@echo off
color 2f
mode con cols=60 lines=25
title Windows平台WEB防火墙白名单批量导入工具
:start
echo=
echo ※注•意•事•项•(必读)※
echo============================================================
echo 1.不同IP之间可以使用空格或逗号隔开,切勿无符号连在一起;
echo=
echo 2.暂时仅支持一个C的IP段,如192.168.101.0/24是一个IP段;
echo=
echo 3.如果是IP段,需以1或0结尾,如10.10.100.0或10.10.100.1;
echo=
echo 4.若导入成功将在接口显示信息,若失败则写入到ipsec.log。
echo============================================================
set /p ip=请输入IP:
setlocal enabledelayedexpansion
for /f "delims=" %%i in ("%ip%") do (
set var=%%i
set var=!var:,= !
for %%f in (!var!) do (
set result_ip=%%f
for /f "tokens=4 delims=." %%z in ("!result_ip!") do (
if "%%z"=="0" ( netsh ipsec static add filter filterlist=WEB_ALLOW srcaddr=!result_ip! srcport=0 srcmask=255.255.255.0 dstaddr=me dstport=80 protocol=tcp && echo !result_ip!/24 IP段已成功导入规则! || echo !result_ip!/24 IP段导入失败,请检查格式!>>ipsec.log ) else (
if "%%z"=="1" (
netsh ipsec static add filter filterlist=WEB_ALLOW srcaddr=!result_ip! srcport=0 srcmask=255.255.255.0 dstaddr=me dstport=80 protocol=tcp && echo !result_ip!/24 IP段已成功导入规则! || echo !result_ip!/24 IP段导入失败,请检查格式!>>ipsec.log
) else (netsh ipsec static add filter filterlist=WEB_ALLOW srcaddr=!result_ip! srcport=0 srcmask=255.255.255.255 dstaddr=me dstport=80 protocol=tcp && echo !result_ip!/32 单IP已成功导入规则! || echo !result_ip!/32 单IP导入失败,请检查格式!>>ipsec.log)
netsh ipsec static set policy name=IP_security assign=yes >nul
echo 导入完毕,任意键继续...
pause>nul
goto start

简单说明:此脚本的功能主要是省去了IP安全性原则繁琐的手动设置步骤,直接粘贴IP即可导入白名单!通过3个for循环(可能有点冗余,暂时未考虑优化)将整行多个IP依次分离导入到规则中。这里说的整行的意思是,你只需要将你的IP粘贴进来,不论是单个IP还是IP段,不论是空格隔开还是,逗号隔开,都能实现依次分离导入。

注意事项:
1.由于编写时间很短,所以暂未实现多个C的IP段的判断,若是多个C,比如10.*.*.*/22请拆分为4个段输入(待改进).
2.输入的IP需要使用空格或逗号隔开,不要直接连接在一起,否则就会傻傻分不清楚拉;
3.支持单个IP和IP段的混输,能够判断IP类型来执行不同的语句;
4.默认定义一个C的IP段结尾为0或1,即如果你是192.168.1.1或192.168.1.0,脚本会将其作为相同的IP段处理,也就是直接判断为192.168.1.0/24。

以上脚本为今天下午应急之作,可能存在BUG,仅供参考~若有问题留言请联系,希望能帮到您!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK