2013-07-02 1 views
5

Quando si esegue un server elasticsearch. Siamo in grado di accedere a www.example.com:9200Come disabilitare l'accesso remoto in elasticsearch

Ma voglio che l'accesso remoto a blocchi consenta solo l'accesso locale.

Come impostare?

+0

Potresti accettare/revocare la risposta che avevi se fosse utile o fornire un feedback in caso contrario? Qualcosa da aggiungere? – javanna

+0

Hai persino un firewall :-) – DanFromGermany

risposta

2

Elasticsearch consente di disabilitare l'endpoint http impostando http.enabled su false nelle impostazioni. Permette anche di avere un nodo locale che sarà raggiungibile solo nella stessa jvm. D'altra parte ti stai chiedendo come consentire solo l'accesso locale al resto dell'endpoint, che è diverso e richiede l'uso di strumenti aggiuntivi.

In effetti, non è una buona idea esporre elasticsearch a Internet. Vorrei usare un proxy come Apache o Nginx per limitare l'accesso ad esso e aprire per esempio solo alcuni degli endpoint disponibili, ma è necessario solo se si hanno utenti esterni che vogliono inviare messaggi direttamente a elasticsearch. Di solito non è così. O se si vuole negare l'accesso ad esso per tutti gli utenti esterni, perché è ad esempio solo il sito Web o l'applicazione che deve accedervi, basta utilizzare un firewall e impostare una regola adeguata per chiudere la porta 9200.

15

Invece di disabilitazione intero protocollo HTTP cambiando http.enabled a /etc/elasticsearch/elasticsearch.yml impostazioni (perché alcuni dei vostri API può usare l'endpoint HTTP, che è stato il mio caso), si può semplicemente impostare network.host: localhost nello stesso file.

Ciò renderà l'accesso HTTP :9200 disponibile solo dalla macchina/server locale.

+0

Questa dovrebbe essere la risposta accettata. Vedi anche qui: http://stackoverflow.com/questions/15503455/elasticsearch-allow-only-local-requests – tirdadc

1

È necessario impostare http.host su "127.0.0.1". In questo modo è possibile accedere a http sulla porta 9200 dall'host stesso, ma non dall'esterno. Ciò consente anche di inserire un proxy che ascolta su un'altra porta e filtri e passa le richieste in modo selettivo al nodo elasticsearch su localhost: 9200.

Ad esempio, è possibile rifiutare la richiesta di arresto, eseguire un'autenticazione di base utilizzando nginx e quindi passare tutte le richieste di query all'URL del cluster elasticsearch a http://localhost:9200.

Questo non include il firewall.