Webserver
OpenBSD httpd.conf 條件
注意:這個問題是關於名為的內置 OpenBSD http 伺服器
httpd
及其配置。它不適用於任何其他 Web 伺服器。是否可以對新的 OpenBSD http 伺服器進行執行時條件配置
httpd
?一個天真的例子是server "myserver.com" { if $REMOTE_ADDR == "127.0.0.1" block drop }
禁止本地訪問。
另一個可能更相關和更具啟發性的範例是,如果我正在實現從特定位置執行的遠端服務的介面,那麼我將受益於類似的東西
remote_service1_ip = "192.168.0.1" server "myserver.com" { location "/remote_service1_api/" { if $REMOTE_ADDR != $remote_service1_ip block drop } }
如果這是可能的,那麼正確的做法是什麼?
更一般地說 - 在 OpenBSD 的
man
-page 中httpd.conf
指定了許多預定義的宏,如以下所述block
:$DOCUMENT_URI The request path. $QUERY_STRING The optional query string of the request. $REMOTE_ADDR The IP address of the connected client. $REMOTE_PORT The TCP source port of the connected client. $REMOTE_USER The remote user for HTTP authentication. $REQUEST_URI The request path and optional query string. $SERVER_ADDR The configured IP address of the server. $SERVER_PORT The configured TCP server port of the server. $SERVER_NAME The name of the server. %n The capture index n of a string that was captured by the enclosing location match option.
我想知道如何使用它們。在重定向上下文中使用
$REMOTE_ADDR
對我來說似乎相當愚蠢,我想應該有其他東西可以使用它們,但我在文件中找不到或理解任何這樣的案例。
雖然
httpd
支持patterns
在某些關鍵字(alias match
、、 )的上下文中使用location match
,server match
但您正在尋找的功能未在httpd
.我看到了兩種實現你的意圖的方法:
- 郵件列表上的交叉
openbsd-misc
郵件 - 的作者之一httpd
可能會在那裡接你- 用於
pf
防火牆。我強烈推薦這種方式,原因有很多,包括
- 對拒絕服務類型的攻擊提供更高級別的保護,因為應用程序 (
httpd
) 不必承受任何負載IP
來自客戶端的數據包可以在全域( )範圍內被檢查和阻止- 即氾濫的客戶端可能無法連接到ssh
埠我認為,
pf
學習可以是一件非常令人滿意的事情。此外,我懷疑對相應文章的可能答案
openbsd-misc
與我的建議相似:)