OpenBSD httpd.conf条件

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
  }
}

これが可能であれば、正しいアプローチは何ですか?

より一般的に - 事前定義されたマクロがたくさんあります。man-OpenBSD ページ-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私にとってはやや愚かなようです。これを使用する他の用途があるべきだと思いますが、ドキュメントでそのようなユースケースを見つけるか理解することはできません。

ベストアンサー1

また、httpd以下の使用をサポートしています。patternsalias match一部のキーワード(、、、)のコンテキストでlocation match探してserver matchいる機能はで実装されていませんhttpd

私はあなたの意図を達成するための2つの方法があると思います。

  1. メーリングリストのクロスポスト作成openbsd-misc者の一人がhttpdあなたをそこに連れて行くことができます。
  2. 使用pfファイアウォールに。私は次のようなさまざまな理由でこのアプローチを強くお勧めします。
    • httpdアプリケーション( )は負荷に耐える必要がないため、サービス拒否タイプの攻撃に対してより高いレベルの保護を提供します。
    • クライアントのパケットを完全に確認してブロックできます()。つまり、フラッディングされたクライアントはポートIPに接続できない可能性があります。ssh

pf学びはとても幸せなことだと思います。

また、その投稿に対する可能な答えがopenbsd-misc私の提案に似ていると思います。 :)

おすすめ記事