11.25 配置防盜鏈 php
防盜鏈能限制不認識的referer的訪問,可以禁止別人的服務器引用或轉發服務器上的內容,這樣能夠防止別人盜用服務器上的資源,服務器的資源被盜用會致使網絡帶寬的使用量上升。apache
經過限制referer來實現防盜鏈的功能安全
暫且去掉rewrite expires 服務器
配置文件增長以下內容網絡
<Directory /data/wwwroot/111.com> SetEnvIfNoCase Referer "http://111.com" local_ref SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref SetEnvIfNoCase Referer "^$" local_ref <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> Order Allow,Deny Allow from env=local_ref </filesmatch> </Directory>
//自定義referer 模擬第三方網站的訪問-e,域名的描述不能亂寫,要以http://開頭。curl
curl -e "http://www.qq.com/123.txt" -x 127.0.0.1:80 111.com/qq.png -I 測試
curl -e "http://111.com/123.txt" -x 127.0.0.1:80 111.com/qq.png -I網站
11.26 訪問控制Directoryurl
訪問控制相似於用戶認證,可是要比用戶認證更安全一些,由於用戶認證須要輸入帳戶密碼,若是帳戶密碼被別人知道了,那麼別人就可以經過認證去訪問你的服務器了。spa
訪問控制則不須要經過帳戶密碼來驗證,由於訪問控制只容許白名單內的IP進行訪問,其餘的IP一律拒絕訪,因此在安全性上要比用戶認證的機制更安全一些,並且這二者也能夠結合到一塊兒使用:先經過用戶認證再讓訪問控制去過濾IP也是能夠的。
核心配置文件內容
爲避免衝突,放到配置防盜鏈的上面。
<Directory /data/wwwroot/111.com/admin/> Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>
保存修改後,到/data/wwwroot/111.com目錄下建立一個admin目錄,並拷貝index.php文件到admin目錄下
-t graceful
curl -x 127.0.0.1:80 111.com/admin/index.php -I
curl -x 192.168.174.128:80 111.com/admin/index.php -I
curl測試狀態碼爲403則被限制訪問了
能夠看到使用白名單裏的IP是能夠進行訪問
若是換一個不在白名單裏的IP去進行訪問,就會出現403狀態碼。
11.27 訪問控制FilesMatch
除了Directory的訪問控制還有FilesMatch的訪問控制,Directory訪問控制相似於限制一個目錄的訪問,而FilesMatch訪問控制則相似於限制一個文件或文件連接的訪問,FilesMatch要寫在Directory以內。
核心配置文件內容
<Directory /data/wwwroot/111.com> <FilesMatch "admin.php(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>
修改完成後從新加載配置文件,而後使用curl命令訪問admin.php或與此文件的相關連接,就都會報403狀態碼:
curl -x 192.168.174.128:80 111.com/admin.php -I
curl -x 192.168.174.128:80 '111.com/admin.php.?name=aaa&address' -I
使用白名單內的IP去訪問就不會報403了,報404的緣由是由於沒有這個文件,可是已經能夠訪問了:
curl -x 127.0.0.1:80 111.com/admin.php -I
控制FilesMatch 相對於控制Directory 來講要靈活一些,由於Directory是控制整個目錄,控制FilesMatch則能針對一些具體的文件去進行控制,要更細化一些,對一些具體的訪問控制,就適合控制FilesMatch 。
擴展
幾種限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定義header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556