2012-02-23 6 views
0

포트 80 (아파치 말 듣기)을 통해 내 ssh를 터널링하고 싶습니다. mod_proxy & mod_proxy_connect AllowCONNECT 지시어를 사용하면 CONNECThost:22 HTTP/1.1을 내 ssh 호스트에 연결할 수 있습니다. 그러나 의 CONNECT을 따르는 호스트는 제한이 없으며 해결책이 있습니까?mod_proxy_connect의 호스트를 제한하는 방법은 무엇입니까?

+0

apache.conf의''지시어는 무엇입니까? –

답변

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

관련 문제