참고: 이 질문은내장된 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
다음의 사용을 지원합니다.patterns
alias match
일부 키워드( ,, )의 컨텍스트에서 location match
찾고 server match
있는 기능이 에서 구현되지 않았습니다 httpd
.
나는 당신의 의도를 달성하는 데 두 가지 방법이 있다고 봅니다.
- 메일링 리스트에 있는 크로스포스트
openbsd-misc
작성자 중 한 명이httpd
당신을 그곳으로 데려갈 수도 있습니다. - 사용
pf
방화벽에. 나는 다음과 같은 다양한 이유로 이 접근 방식을 적극 권장합니다.httpd
애플리케이션( )은 부하를 견딜 필요가 없으므로 서비스 거부 유형의 공격에 대해 더 높은 수준의 보호를 제공합니다.- 클라이언트의 패킷을 전체적으로 검사하고 차단할 수 있습니다(). 즉, 플러딩된 클라이언트는 포트
IP
에 연결하지 못할 수 있습니다.ssh
pf
배움은 참 행복한 일인 것 같아요 .
또한 해당 게시물에 대한 가능한 답변이 openbsd-misc
내 제안과 유사하다고 생각합니다. :)