2012-02-23 30 views
0

我想通過我的ssh通過端口80(由Apache聽)。 mod_proxy & mod_proxy_connect向我提供AllowCONNECT指令,允許我使用CONNECThost:22 HTTP/1.1連接到我的ssh主機。但主機以下CONNECT不受限制,有沒有解決方案?如何限制mod_proxy_connect的主機?

+0

那麼'apache.conf中''指令呢? – 2012-03-01 14:48:29

回答

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文件如下:

# 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> 

修改Apache的源代碼創建一個維護的負擔,因爲你有你的補丁重新申請每一個新版本的Apache。

+0

非常感謝!儘管sooooooooo多年過去了,但我已經完全放棄了apache,並轉而使用nginx :) – felix021 2018-01-16 14:41:37

相關問題