0

ポート80(Apacheがリッスン)を介してsshをトンネリングしたい。mod_proxy と mod_proxy_connect はAllowCONNECTディレクティブを提供し、 CONNECT host:22 HTTP/1.1を使用して ssh ホストに接続できるようにします。しかし、 CONNECTに続くホストは限定されていません.解決策はありますか?

4

2 に答える 2

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 バージョンごとにパッチを再適用する必要があるため、メンテナンスの負担が生じます。

于 2016-12-25T23:56:48.367 に答える
0

私は自分でそれを理解しました。に数行追加するだけです

apache2.2/modules/proxy/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));
}
于 2012-02-24T10:52:21.963 に答える