<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 了解waf ## 什么是WAF Web應用防護系統(也稱:網站應用級入侵防御系統 。 英文:Web Application Firewall,簡稱: WAF)。 利用國際上公認的一種說法:Web應用 防火墻 是通過執行一系列針對HTTP/HTTPS的 安全策略 來專門為Web應用提供保護的一款產品。 ## 常見的web入侵行為 ### SQL注入 SQL注入恐怕是黑客們最為常見的入侵web站點的手段,黑客通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。 ### xss 只要是人做出了東西都會存在或多或少的缺陷,我們的web站點也不例外,xss攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載并執行攻擊者惡意制造的網頁程序。 ### 不安全下載 這是運維工程師在網站部署時經常犯的錯誤,由于在部署網站是為了方便配置網站,運維工程師可能會把配置文件放在網站的根目錄下,如果有人訪問網站的根目錄里的配置文件(類似這些:code_backup.tar.gz .sql)那我們的整個網站將會暴露管理員的賬號也可能被盜走。 ### 隱私文件訪問 這個原因同樣是因為管理員的配置不當使網站的重要信息暴露在外(類似這些文件:.svn .git) ### 弱口令 在當今很多地方以用戶名(帳號)和口令作為鑒權的世界,口令的重要性就可想而知了。口令就相當于進入家門的鑰匙,當他人有一把可以進入你家的鑰匙,想想你的安全、你的財物、你的隱私......害怕了吧。因為弱口令很容易被他人猜到或破解,所以如果你使用弱口令,就像把家門鑰匙放在家門口的墊子下面,是非常危險的,同理如果管理員把網站的后臺密碼設置的很簡單那無疑是把網站拱手讓給黑客 ### 非授權范文 當管理員要把網站的數據庫信息交給客戶查看時,有時管理員可能忘記給數據庫加密碼這就造成了這個數據庫暴露在公網,這就造成了數據泄露。 ### cc攻擊 cc攻擊無法避免,只能緩解,如果設置強有力的過濾規則則可能把正常的用戶請求拒絕在外。其中性能cc攻擊對網站可使網站直接經濟服務 ### DDOS攻擊 DDOS攻擊對于那些帶寬大的網站他們能做的一是扛,二是擋,帶寬小的網站就比較悲劇了只能等攻擊者停止攻擊才能恢復網站的正常使用。網站也可以接入云清洗分散攻擊流量,道高一尺魔高一丈,如果攻擊者調用更多的攻擊流量來打網站,網站也只能跪,我們無法杜絕DDOS攻擊,為保證網站可以正常的使用我們所能做的是“扛”、“擋”、“分”。 ### 總結 Nginx網站可以通過配置規則來抵御cc攻擊(頻率限制)、不安全下載(判斷后綴)、非授權訪問(后綴,認證)、測試防護(根據UA)、設置ip黑名單。但是其所實現的功能及其有限,為了保證網站的正常功能我們就需要借助更為強大的工具來應對各種威脅,waf由此應運而生。 ## waf功能 1.支持IP白名單和黑名單功能,直接將黑名單的IP訪問拒絕。 2.支持URL白名單,將不需要過濾的URL進行定義。 3.支持User-Agent的過濾,匹配自定義規則中的條目,然后進行處理(返回403)。 4.支持CC攻擊防護,單個URL指定時間的訪問次數,超過設定值,直接返回403。 5.支持Cookie過濾,匹配自定義規則中的條目,然后進行處理(返回403)。 6.支持URL過濾,匹配自定義規則中的條目,如果用戶請求的URL包含這些,返回403。 7.支持URL參數過濾,原理同上。 8.支持日志記錄,將所有拒絕的操作,記錄到日志中去 ## WAF的特點 ### 異常檢測協議 Web應用防火墻會對HTTP的請求進行異常檢測,拒絕不符合HTTP標準的請求。并且,它也可以只允許HTTP協議的部分選項通過,從而減少攻擊的影響范圍。甚至,一些Web應用防火墻還可以嚴格限定HTTP協議中那些過于松散或未被完全制定的選項。 ### 增強的輸入驗證 增強輸入驗證,可以有效防止網頁篡改、信息泄露、木馬植入等惡意網絡入侵行為。從而減小Web服務器被攻擊的可能性。 ### 及時補丁 修補Web安全漏洞,是Web應用開發者最頭痛的問題,沒人會知道下一秒有什么樣的漏洞出現,會為Web應用帶來什么樣的危害。WAF可以為我們做這項工作了——只要有全面的漏洞信息WAF能在不到一個小時的時間內屏蔽掉這個漏洞。當然,這種屏蔽掉漏洞的方式不是非常完美的,并且沒有安裝對應的補丁本身就是一種安全威脅,但我們在沒有選擇的情況下,任何保護措施都比沒有保護措施更好。 ### 基于規則的保護和基于異常的保護 基于規則的保護可以提供各種Web應用的安全規則,WAF生產商會維護這個規則庫,并時時為其更新。 用戶可以按照這些規則對應用進行全方面檢測。還有的產品可以基于合法應用數據建立模型,并以此為依據判斷應用數據的異常。但這需要對用戶企業的應用具有十分透徹的了解才可能做到,可現實中這是十分困難的一件事情。 ### 狀態管理 WAF能夠判斷用戶是否是第一次訪問并且將請求重定向到默認登錄頁面并且記錄事件。通過檢測用戶的整個操作行為我們可以更容易識別攻擊。狀態管理模式還能檢測出異常事件(比如登陸失敗),并且在達到極限值時進行處理。這對暴力攻擊的識別和響應是十分有利的。 ### 其他防護技術 WAF還有一些安全增強的功能,可以用來解決WEB程序員過分信任輸入數據帶來的問題。比如:隱藏表單域保護、抗入侵規避技術、響應監視和信息泄露保護。 ## WAF與網絡防火墻的區別 網絡防火墻作為訪問控制設備,主要工作在OSI模型三、四層,基于IP報文進行檢測。只是對端口做限制,對TCP協議做封堵。其產品設計無需理解HTTP會話,也就決定了無法理解Web應用程序語言如HTML、SQL語言。因此,它不可能對HTTP通訊進行輸入驗證或攻擊規則分析。針對Web網站的惡意攻擊絕大部分都將封裝為HTTP請求,從80或443端口順利通過防火墻檢測。一些定位比較綜合、提供豐富功能的防火墻,也具備一定程度的應用層防御能力,如能根據TCP會話異常性及攻擊特征阻止網絡層的攻擊,通過IP分拆和組合也能判斷是否有攻擊隱藏在多個數據包中,但從根本上說他仍然無法理解HTTP會話,難以應對如SQL注入、跨站腳本、cookie竊取、網頁篡改等應用層攻擊。web應用防火墻能在應用層理解分析HTTP會話,因此能有效的防止各類應用層攻擊,同時他向下兼容,具備網絡防火墻的功能。 # 初探實現WAF ## WAF實現規劃 分析步驟如下:解析HTTP請求==》匹配規則==》防御動作==》記錄日志 具體實現如下: 解析http請求:協議解析模塊 匹配規則:規則檢測模塊,匹配規則庫 防御動作:return 403 或者跳轉到自定義界面 日志記錄:記錄到elk中 ## OpenResty部署 安裝依賴包 [root@nginx ~]# yum install -y readline-devel pcre-devel openssl-devel 下載并編譯安裝openresty [root@nginx ~]# wget https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz [root@nginx ~]# tar zxf ngx_openresty-1.9.3.2.tar.gz [root@nginx ~]# cd ngx_openresty-1.9.3.2 [root@nginx ngx_openresty-1.9.3.2]# ./configure --prefix=/usr/local/openresty-1.9.3.2 \ --with-luajit --with-http_stub_status_module \ --with-pcre --with-pcre-jit [root@nginx ngx_openresty-1.9.3.2]# gmake && gmake install [root@nginx ngx_openresty-1.9.3.2]#ln -s /usr/local/openresty-1.9.3.2/ /usr/local/openresty 測試openresty安裝 [root@nginx ngx_openresty-1.9.3.2]# vim /usr/local/openresty/nginx/conf/nginx.conf server { location /hello { default_type text/html; content_by_lua_block { ngx.say("HelloWorld") } } } [root@nginx ~]# /usr/local/openresty/nginx/sbin/nginx -t nginx: the configuration file /usr/local/openresty-1.9.3.2/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/openresty-1.9.3.2/nginx/conf/nginx.conf test is successful [root@nginx ~]# /usr/local/openresty/nginx/sbin/nginx 關閉防火墻 [root@nginx ~]# systemctl stop firewalld.service ![hello](http://oovxjr0mr.bkt.clouddn.com/hello.png) ## WAF部署 安裝git [root@nginx ~]# yum -y install git 克隆WAF項目 [root@nginx ~]#git clone https://github.com/unixhot/waf.git 把waf目錄拷貝到Nginx配置目錄下 [root@nginx ~]#cp -a ./waf/waf /usr/local/openresty/nginx/conf/ 修改Nginx的配置文件,加入以下配置。注意路徑,同時WAF日志默認存放在/tmp/日期_waf.log [root@nginx ~]# vim /usr/local/openresty/nginx/conf/nginx.conf #WAF lua_shared_dict limit 50m; lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua"; init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua"; access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua"; [root@nginx ~]# /usr/local/openresty/nginx/sbin/nginx –t [root@nginx ~]# /usr/local/openresty/nginx/sbin/nginx 根據日志記錄位置,創建日志目錄 [root@nginx ~]# mkdir /tmp/waf_logs [root@nginx ~]# chmod 777 /tmp/waf_logs(為了測試權限直接設置為777,大家千萬不要學) ## 學習配置模塊 WAF上生產之前,建議不要直接上生產,而是先記錄日志,不做任何動作。確定WAF不產生誤殺 config.lua即WAF功能詳解 ``` root@nginx waf]# pwd /usr/local/openresty/nginx/conf/waf [root@nginx waf]# cat config.lua --WAF config file,enable = "on",disable = "off" --waf status config_waf_enable = "on" #是否開啟配置 --log dir config_log_dir = "/tmp/waf_logs" #日志記錄地址 --rule setting config_rule_dir = "/usr/local/nginx/conf/waf/rule-config" #匹配規則縮放地址 --enable/disable white url config_white_url_check = "on" #是否開啟url檢測 --enable/disable white ip config_white_ip_check = "on" #是否開啟IP白名單檢測 --enable/disable block ip config_black_ip_check = "on" #是否開啟ip黑名單檢測 --enable/disable url filtering config_url_check = "on" #是否開啟url過濾 --enalbe/disable url args filtering config_url_args_check = "on" #是否開啟參數檢測 --enable/disable user agent filtering config_user_agent_check = "on" #是否開啟ua檢測 --enable/disable cookie deny filtering config_cookie_check = "on" #是否開啟cookie檢測 --enable/disable cc filtering config_cc_check = "on" #是否開啟防cc攻擊 --cc rate the xxx of xxx seconds config_cc_rate = "10/60" #允許一個ip60秒內只能訪問10此 --enable/disable post filtering config_post_check = "on" #是否開啟post檢測 --config waf output redirect/html config_waf_output = "html" #action一個html頁面,也可以選擇跳轉 --if config_waf_output ,setting url config_waf_redirect_url = "http://www.baidu.com" config_output_html=[[ #下面是html的內容 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="zh-cn" /> <title>網站防火墻</title> </head> <body> <h1 align="center"> # 您的行為已違反本網站相關規定,注意操作規范. </body> </html> ]] ``` ## 學習access.lua的配置 ``` root@nginx waf]# pwd /usr/local/openresty/nginx/conf/waf [root@nginx waf]# cat access.lua require 'init' function waf_main() if white_ip_check() then elseif black_ip_check() then elseif user_agent_attack_check() then elseif cc_attack_check() then elseif cookie_attack_check() then elseif white_url_check() then elseif url_attack_check() then elseif url_args_attack_check() then --elseif post_attack_check() then else return end end waf_main() ``` 書寫書序:先檢查白名單,通過即不檢測; 再檢查黑名單,不通過即拒絕,檢查UA,UA不通過即拒絕; 檢查cookie;URL檢查;URL參數檢查,post檢查. # 啟動WAF并測試 ## 模擬sql注入 顯示效果如下: ![ab_01](http://oovxjr0mr.bkt.clouddn.com/ab01_%E5%89%AF%E6%9C%AC.jpg) ##使用ab壓測工具模擬防cc攻擊 yum安裝Apache [root@nginx ~]# yum -y install httpd ![ab-04](http://oovxjr0mr.bkt.clouddn.com/ab04_%E5%89%AF%E6%9C%AC.jpg) ![ab02](http://oovxjr0mr.bkt.clouddn.com/ab02_%E5%89%AF%E6%9C%AC.jpg) ## 模擬ip黑名單 將請求ip放入ip黑名單中 [root@nginx rule-config]# echo "192.168.0.16" >>/usr/local/openresty/nginx/conf/waf/rule-config/blackip.rule 顯示結果如下: ![ab05](http://oovxjr0mr.bkt.clouddn.com/ab_05_%E5%89%AF%E6%9C%AC.jpg) ## 模擬ip白名單 將請求ip放入ip白名單中,此時將不對此ip進行任何防護措施 [root@nginx rule-config]# echo "192.168.0.16" >>/usr/local/openresty/nginx/conf/waf/rule-config/whiteip.rule 顯示結果如下: ![ab06](http://oovxjr0mr.bkt.clouddn.com/ab06_%E5%89%AF%E6%9C%AC.jpg) ## 模擬URL參數檢測 在瀏覽器輸入:http://192.168.0.14/?a=select * from table 顯示結果如下: ![ab07](http://oovxjr0mr.bkt.clouddn.com/ab07_%E5%89%AF%E6%9C%AC.jpg) 詳細規定在arg.rule中有規定,對請求進行了規范 # 總結 WAF它的定位就決定了只能是一款輔助性安全防御產品,無法從根本上解決產品自身存在的安全缺陷。考慮到安全與效率,WAF也不可能去攔截所有的入侵嘗試,畢竟繞過WAF的奇技淫巧還是非常之多的。 根本性的防御措施還是需要放在安全開發流程、安全規范的落地和推行上面。 在眾多的安全防御產品中,有的產品和方案需要花很多錢,但是收益卻并不怎么明顯。而WAF,在綜合考量下它性價比超高,雖然治標不治本,但對于提高攻擊成本、降低入侵概率還是很有幫助的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看