prefixkit Ask an engineerAsk RU

Port 9200 Elasticsearch

Elasticsearch REST API; exposed clusters leak billions of records.

Protocol
TCP
Service
Elasticsearch
Category
Databases
Exposing to the internet
Do not expose

Check if port 9200 is open

Is it safe to open

A database should only be reachable from the application servers. Bind it to localhost or a private network, require authentication and TLS, and connect from outside through a VPN or an SSH tunnel.

How to open port 9200

Open to everyone

# Linux iptables
iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
# Ubuntu ufw
ufw allow 9200/tcp
# firewalld
firewall-cmd --permanent --add-port=9200/tcp && firewall-cmd --reload
# MikroTik
/ip firewall filter add chain=input protocol=tcp dst-port=9200 action=accept place-before=0 comment="port 9200"
# Windows (PowerShell)
New-NetFirewallRule -DisplayName "Port 9200 TCP" -Direction Inbound -Protocol TCP -LocalPort 9200 -Action Allow

Only for your addresses

# allow only one address or network (replace 203.0.113.0/24)
iptables -A INPUT -p tcp --dport 9200 -s 203.0.113.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 9200 -j DROP
ufw allow from 203.0.113.0/24 to any port 9200 proto tcp
/ip firewall filter add chain=input protocol=tcp dst-port=9200 src-address=203.0.113.0/24 action=accept
/ip firewall filter add chain=input protocol=tcp dst-port=9200 action=drop

If the server is behind a router, you also need a port forward (dst-nat). Behind ISP CGNAT (100.64.0.0/10 on the WAN) forwarding will not help: you need a public IP or a VPN.

What is listening

Check on the server

# what listens on the port
ss -lntup | grep ':9200 '
netstat -ano | findstr :9200   # Windows
lsof -i :9200   # macOS
# test from another machine
nc -vz example.com 9200

Related ports