OpenBSD httpd.conf 조건

OpenBSD httpd.conf 조건

참고: 이 질문은내장된 OpenBSD http 서버의 이름은 다음과 같습니다.httpd그리고 그 구성. 다른 웹 서버에서는 작동하지 않습니다.

새로운 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.

나는 당신의 의도를 달성하는 데 두 가지 방법이 있다고 봅니다.

  1. 메일링 리스트에 있는 크로스포스트 openbsd-misc작성자 중 한 명이 httpd당신을 그곳으로 데려갈 수도 있습니다.
  2. 사용pf방화벽에. 나는 다음과 같은 다양한 이유로 이 접근 방식을 적극 권장합니다.
    • httpd애플리케이션( )은 부하를 견딜 필요가 없으므로 서비스 거부 유형의 공격에 대해 더 높은 수준의 보호를 제공합니다.
    • 클라이언트의 패킷을 전체적으로 검사하고 차단할 수 있습니다(). 즉, 플러딩된 클라이언트는 포트 IP에 연결하지 못할 수 있습니다.ssh

pf배움은 참 행복한 일인 것 같아요 .

또한 해당 게시물에 대한 가능한 답변이 openbsd-misc내 제안과 유사하다고 생각합니다. :)

관련 정보