2012-02-23 2 views
0

私はsshをポート80でトンネリングしたい(apacheで聞いた)。 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

Apacheのソースコードを変更する必要はありません解決策があります。 httpd.confファイルに次のように置く:あなたはすべての新しいApacheのバージョンにパッチを再適用する必要がありますので、Apacheのソースコードを変更する

# 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何年も経過している間、私は完全にapacheをあきらめて、nginxに切り替えました:) – felix021

関連する問題