Comment autoriser uniquement les demandes locales pour elasticsearch? Commandez donc comme:
curl -XGET 'http://localhost:9200/Twitter/_settings'
ne peut être exécuté que sur localhost et demander comme:
curl -XGET 'http://mydomain.com:9200/Twitter/_settings'
serait rejeté?
Parce que, d'après ce que je vois, elasticsearch le permet par défaut.
MODIFIER:
Selon http://www.elasticsearch.org/guide/reference/modules/network.html vous pouvez gérer bind_Host
paramètre pour autoriser les hôtes. Et par défaut, il est défini sur anyLocalAddress
Pour elasticsearch avant la version 2.0.0, si vous souhaitez que le transport http et le transport elasticsearch interne écoutent uniquement sur localhost, ajoutez simplement la ligne suivante à elasticsearch.yml
fichier.
network.Host: "127.0.0.1"
Si vous souhaitez que seul le transport http écoute sur localhost, ajoutez plutôt la ligne suivante.
http.Host: "127.0.0.1"
À partir de la version 2.0, elasticsearch écoute uniquement sur localhost par défaut. Ainsi, aucune configuration supplémentaire n'est nécessaire.
Si votre objectif final est de refuser toute demande provenant de l'extérieur de la machine hôte, le moyen le plus fiable serait de modifier iptables de l'hôte afin qu'il refuse toute demande entrante aux ports de service utilisés par ElasticSearch (9200- 9300).
Si l'objectif final est de s'assurer que tout le monde se réfère au service à l'aide d'un DNS exclusif, il vaut mieux y parvenir avec un serveur HTTP qui peut proxy des requêtes telles que HTTPd ou nginx.
J'utilise ce paramètre:
http.Host: "127.0.0.1"
Ce paramètre n'accepte pas les requêtes http pour les requêtes externes.