포트 80 (아파치 말 듣기)을 통해 내 ssh를 터널링하고 싶습니다. mod_proxy & mod_proxy_connect AllowCONNECT 지시어를 사용하면 CONNECThost:22 HTTP/1.1
을 내 ssh 호스트에 연결할 수 있습니다. 그러나 의 CONNECT을 따르는 호스트는 제한이 없으며 해결책이 있습니까?mod_proxy_connect의 호스트를 제한하는 방법은 무엇입니까?
0
A
답변
0
나는 그것을 스스로 알아 냈습니다. 그냥 변경 아파치 소스 코드를 필요로하지 않는 솔루션이있는
apache2.2/모듈/프록시/mod_proxy_connect.c 123
char *allowed_hosts[] = {
"your host",
"127.0.0.1",
"localhost"
};
int hosts_num = sizeof(allowed_hosts)/sizeof(allowed_hosts[0]);
int k;
for (k = 0; k < hosts_num; k++) {
if (strncmp(uri.hostname, allowed_hosts[k], strlen(allowed_hosts[k])) == 0) {
break;
}
}
if (k == hosts_num) {
return ap_proxyerror(r, HTTP_BAD_GATEWAY,
apr_pstrcat(p, "host not allowed for: ",
uri.hostname, NULL));
}
1
에 몇 줄을 추가합니다. httpd.conf 파일에 다음을 넣어 : 당신은 모든 새로운 아파치 버전으로 패치를 다시 적용해야하기 때문에 아파치 소스 코드를 변경
는# By default, deny everyone. If you don't,
# others will be able to connect to port 22 on any host.
<Proxy *>
Order deny,allow
Deny from all
</Proxy>
# Only allow CONNECT to specific hosts;
<ProxyMatch (^(host1\.com|host2|host3):22$)>
Order allow,deny
Allow from all
</ProxyMatch>
, 유지 보수 부담을 만듭니다.
+0
고마워요! sooooooooo 많은 년이 지났을 때, 나는 완전히 아파치를 포기하고 nginx로 전환 :) – felix021
apache.conf의''지시어는 무엇입니까? –