Network and Firewall
In this section you will find a summary about the recommended network and firewall settings for Kong.
Ports
Kong uses multiple connections for different purposes.
- proxy
- admin api
Proxy
The proxy ports is where Kong receives its incoming traffic. There are two ports with the following defaults:
8000
for proxying HTTP traffic, and8443
for proxying HTTPS traffic
See proxy_listen for more details on HTTP/HTTPS proxy listen options. For production environment it is common to change HTTP and HTTPS listen ports to 80
and 443
.
Kong can also proxy TCP/TLS streams. The stream proxying is disabled by default. See stream_listen for additional details on stream proxy listen options, and how to enable it (if you plan to proxy anything other than HTTP/HTTPS traffic).
In general the proxy ports are the only ports that should be made available to your clients.
Admin API
This is the port where Kong exposes its management API. Hence in production this port should be firewalled to protect it from unauthorized access.
8001
provides Kong’s Admin API that you can use to operate Kong with HTTP. See admin_listen.8444
provides the same Kong Admin API but using HTTPS. See admin_listen and thessl
suffix.
Firewall
Below are the recommended firewall settings:
- The upstream Services behind Kong will be available via the proxy_listen interface/port values. Configure these values according to the access level you wish to grant to the upstream Services.
- If you are binding the Admin API to a public-facing interface (via admin_listen), then protect it to only allow trusted clients to access the Admin API. See also Securing the Admin API.
- Your proxy will need have rules added for any HTTP/HTTPS and TCP/TLS stream listeners that you configure. For example, if you want Kong to manage traffic on port
4242
, your firewall will need to allow traffic on said port.
Transparent Proxying
It is worth mentioning that the transparent
listen option may be applied to proxy_listen and stream_listen configuration. With packet filtering such as iptables
(Linux) or pf
(macOS/BSDs) or with hardware routers/switches, you can specify pre-routing or redirection rules for TCP packets that allow you to mangle the original destination address and port. For example a HTTP request with a destination address of 10.0.0.1
, and a destination port of 80
can be redirected to 127.0.0.1
at port 8000
. To make this work, you need (with Linux) to add the transparent
listen option to Kong proxy, proxy_listen=8000 transparent
. This allows Kong to see the original destination for the request (10.0.0.1:80
) even when Kong didn’t actually listen to it directly. With this information, Kong can route the request correctly. The transparent
listen option should only be used with Linux. macOS/BSDs allow transparent proxying without transparent
listen option. With Linux you may also need to start Kong as a root
user or set the needed capabilities for the executable.