為什麼 mod_security 需要 ACCEPT HTTP 標頭欄位?
經過一些調試,我發現 mod_security 的核心規則集阻止了沒有(可選!)ACCEPT 頭欄位的請求。
這是我在日誌中找到的:
ModSecurity:警告。匹配“rx ^OPTIONS $ " against “REQUEST_METHOD” required. [file “/etc/apache2/conf.d/modsecurity/modsecurity_crs_21_protocol_anomalies.conf”] [line “41”] [id “960015”] [msg “Request Missing an Accept Header”] [severity “CRITICAL”] [tag “PROTOCOL_VIOLATION/MISSING_HEADER”] [hostname “example.com”] [uri “/”] [unique_id “T4F5@H8AAQEAAFU6aPEAAAAL”] ModSecurity: Access denied with code 400 (phase 2). Match of “rx ^OPTIONS $ " 反對 “REQUEST_METHOD” 需要。
$$ file “/etc/apache2/conf.d/modsecurity/optional_rules/modsecurity_crs_21_protocol_anomalies.conf” $$ $$ line “41” $$ $$ id “960015” $$ $$ msg “Request Missing an Accept Header” $$ $$ severity “CRITICAL” $$ $$ tag “PROTOCOL_VIOLATION/MISSING_HEADER” $$ $$ hostname “example.com” $$ $$ uri “/” $$ $$ unique_id “T4F5@H8AAQEAAFU6aPEAAAAL” $$
為什麼需要此標頭?我知道“大多數”客戶會發送這些,但為什麼他們的缺席會被視為安全威脅?
我沒有編寫這些規則,但據我了解,不包含此標頭的客戶端與惡意客戶端之間以及包含它的客戶端與良性客戶端之間存在很強的相關性。
您可能會在我的日誌中通過快速 grep 找到某些不發送此標頭的機器人(例如:Pingdom、HostTracker、UpDowner、magpie-crawler、Yandex、Yodao、MJ12、GigaBot 和 LinkedInBot),但是如果您將其與匹配“正常”使用者代理(如 Chrome、Firefox、IE、Safari、Opera 等)的規則,那麼您將能夠避免阻止這些機器人。
有一些客戶端(或者可能是修改標頭的代理)發送
accept:
標頭(以及大多數其他小寫標頭)。我還不能確定這些是否是惡意的,但是它們都聲稱是“Firefox/3.6.8”並且具有:Via:HTTP/1.1 silk X-Forwarded-For:10.161.106.98
或標題中的其他一些 10.xxx IP 地址……這是可疑的。