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