1. 程式人生 > >[WebServer] Tomcat 配置訪問限制:訪問白名單和訪問黑名單

[WebServer] Tomcat 配置訪問限制:訪問白名單和訪問黑名單

最近公司的阿里雲伺服器上配置的 Tomcat 伺服器執行 java的環境,但是通過觀察 Tomcat 這幾天的日誌發現,有很多莫名其妙的 IP 訪問主機下莫名其妙的地址,如:/80、/testproxy.php、/cache/global/img/gs.gif、CONNECT check.best-proxies.ru:80 等等,後來通過搜尋這些訪問 IP 得知是進行埠掃描的地址,為了防止這些 IP 的掃描,進一步保證伺服器的安全和穩定,可以通過配置 Tomcat 的 server.xml 限制一些 IP 的訪問。
技術分享

123.249.27.191 - - [04/Apr/2016:00:18:33 +0800] “GET /80 HTTP/1.0” 404 576
185.25.151.159 - - [04/Apr/2016:00:36:39 +0800] “GET /testproxy.php HTTP/1.1” 404 576
172.82.166.210 - - [04/Apr/2016:02:01:49 +0800] “GET /cache/global/img/gs.gif HTTP/1.1” 404 576
95.213.187.189 - - [04/Apr/2016:02:03:05 +0800] “CONNECT check.best-proxies.ru:80 HTTP/1.1” 400 -
91.196.50.33 - - [04/Apr/2016:03:26:23 +0800] “GET /testproxy.php HTTP/1.1” 404 576
123.249.27.193 - - [04/Apr/2016:03:51:22 +0800] “GET /80 HTTP/1.0” 404 576
213.246.45.128 - - [04/Apr/2016:08:11:22 +0800] “GET /cache/global/img/gs.gif HTTP/1.1” 404 576

檢視日誌

配置:

  找到 Tomcat 伺服器根目錄下的 conf/server.xml,在 節點內新增一個屬性 className 的值為 “org.apache.catalina.valves.RemoteAddrValve” 的 節點:

<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"allow=""deny="123.249.27.19[1-3]|115.239.228.1[4-6]|169.54.233.1(1[6-9]|2[0-6])|62.138.2.(209|12(2|3)|21(3|4))|123.151.(149.222|42.61)|61.147.(121.73|103.119|247.85)|115.239.228.202|112.74.206.117"
denyStatus="403" />
  • 1
  • 2

  其中 allow 屬性可以配置訪問白名單,deny 屬性可以配置訪問黑名單,都支援正則表示式。上面的程式碼中 deny 屬性的值,是我的伺服器日誌中一些進行埠掃描的IP地址的正則表示式,寫的很長但很簡單。 在此附上一些進行埠掃描的 IP 地址的列表:http://antivirus.neu.edu.cn/scan/list.php

  denyStatus 屬性值為403表示:當 deny 中的 IP 訪問時,返回 403 的狀態碼,即沒有訪問許可權。

  修改完成儲存server.xml檔案後重啟伺服器,當黑名單中的 IP 再次訪問時即可看到效果,返回的狀態碼為 403:

   123.249.27.192 - - [04/Apr/2016:21:29:53 +0800] “GET /80 HTTP/1.0” 403 -

  這裡寫圖片描述
上圖是我修改後第二天的看到的資訊
  到這裡配置就結束了,不過個人覺得應該還有另外一種方式,不過並沒有嘗試,那就是通過配置 Tomcat 伺服器僅能通過域名訪問,不允許通過 IP 訪問,也不失為一種避免埠掃描的方法,不知道說的對不對。附上禁用 IP 訪問的參考資料: