1. 程式人生 > >Win平臺Web訪問白名單設定指令碼(IP安全性原則)

Win平臺Web訪問白名單設定指令碼(IP安全性原則)

最近老是有使用者申請開通某網站的訪問許可權,我接手之前瀏覽許可權的設定方法是修改 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 安全性規則!命令列的用法我也就先不說了,有時間再來補充,直接上程式碼:

MS DOS
1234567891011121314151617181920212223242526272829303132333435363738 @echo off   color2fmodeconcols=60lines=25titleWindows平臺WEB防火牆白名單批量匯入工具:startclsecho=   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/pip=請輸入IP:clssetlocalenabledelayedexpansionfor/f"delims="%%iin("%ip%")do(setvar=%%isetvar=!var:,=!for%%fin(!var!)do(setresult_ip=%%ffor/f"tokens=4 delims=."%%zin("!result_ip!")do(if"%%z"=="0"(netshipsecstaticaddfilterfilterlist=WEB_ALLOWsrcaddr=!result_ip!srcport=0srcmask=255.255.255.0dstaddr=medstport=80protocol=tcp&&echo !result_ip!/24 IP段已成功匯入規則! || echo !result_ip!/24 IP段匯入失敗,請檢查格式!>>ipsec.log ) else (   if"%%z"=="1"(netshipsecstaticaddfilterfilterlist=WEB_ALLOWsrcaddr=!result_ip!srcport=0srcmask=255.255.255.0dstaddr=medstport=80protocol=tcp&&echo !result_ip!/24 IP段已成功匯入規則! || echo !result_ip!/24 IP段匯入失敗,請檢查格式!>>ipsec.log  )else(netshipsecstaticaddfilterfilterlist=WEB_ALLOWsrcaddr=!result_ip!srcport=0srcmask=255.255.255.255dstaddr=medstport=80protocol=tcp&&echo !result_ip!/32 單IP已成功匯入規則! || echo !result_ip!/32 單IP匯入失敗,請檢查格式!>>ipsec.log)   ))))netshipsecstaticsetpolicyname=IP_securityassign=yes>nulecho 匯入完畢,任意鍵繼續...   pause>nulgotostart

簡單說明:此指令碼的功能主要是省去了 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,僅供參考~若有問題留言請聯絡,希望能幫到您!