Skip to main content

Check which ports are open on your VPS firewall

See how to identify open, closed, or filtered ports across both the cloud firewall and your VPS OS firewall.

Andy Wallace avatar
Written by Andy Wallace
Updated over a month ago

A LumaDock VPS uses two possible layers of filtering: the cloud firewall in your control panel and the OS firewall inside the VPS.

To understand why a port is open or blocked, you need to test both layers and check whether a service is actually listening.

By default, the VPS firewall is enabled but has no rules, so all ports are open until you add restrictions.

How to check port status

When looking at ports, three outcomes help describe what is happening:

  • Open — a service is listening and the firewall allows traffic

  • Closed — no service is listening but the server responds to probes

  • Filtered — a firewall drops packets and the scan receives no reply


Step 1 — Check the cloud firewall in your control panel

Go to Service Management → Firewall for your VPS.

If you see no rule it means your VPS firewall is open and no port is closed.


Step 2 — Check services listening inside the VPS

Use ss to see which applications are bound to which ports.

sudo ss -tulpen

If the port appears as 127.0.0.1:PORT, the service listens only on localhost and will not be reachable externally until reconfigured.


A service bound to 0.0.0.0 or :: is reachable on all IPv4 or IPv6 addresses.


Step 3 — Inspect your OS firewall rules

Your VPS may use UFW, firewalld, or raw iptables/nftables depending on the OS.



Ubuntu and Debian (UFW)

sudo ufw status verbose sudo ufw allow 22/tcp sudo ufw allow 80,443/tcp sudo ufw allow 25565/tcp sudo ufw reload



CentOS, AlmaLinux, Rocky Linux (firewalld)

sudo firewall-cmd --state 
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-port=25565/tcp --permanent
sudo firewall-cmd --reload


​​iptables or nftables (if used directly)

sudo iptables -L -n -v 
sudo nft list ruleset

Step 4 — Test from outside your VPS

This shows what the internet sees when probing your ports.

nmap -Pn -p 22,80,443 YOUR_VPS_IP


For quick TCP checks:

nc -vz YOUR_VPS_IP 22 nc -vz YOUR_VPS_IP 443

If outside scans show filtered, a firewall is dropping packets.
If they show closed, traffic is reaching the VPS but nothing is listening.

Step 5 — Test locally inside the VPS

Use loopback tests to confirm an application is responding to requests.

curl -I http://127.0.0.1:80 nc -vz 127.0.0.1 80

If loopback works but the public IP fails, the service may be bound to localhost only or a firewall is blocking external traffic.

How to interpret results

  • If the service is listening and outside scans show filtered, check the cloud firewall and OS firewall.

  • If the service is listening but scans show closed, the application is not accepting connections on that interface.

  • If nothing is listening, start or reconfigure the application.

  • If localhost works but the public IP fails, adjust the bind address or firewall rules.

Common port checks

SSH (22)

sudo ss -tulpen | grep ':22' 
sudo ufw allow 22/tcp
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

Web (80, 443)

sudo ss -tulpen | egrep ':80|:443' 
sudo ufw allow 80,443/tcp
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

PostgreSQL (5432)

sudo ss -tulpen | grep ':5432' 
sudo ufw allow 5432/tcp
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

MySQL/MariaDB (3306)

sudo ss -tulpen | grep ':3306' 
sudo ufw allow 3306/tcp sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload

Minecraft Java (25565)

sudo ss -tulpen | grep ':25565' 
sudo ufw allow 25565/tcp
sudo firewall-cmd --add-port=25565/tcp --permanent
sudo firewall-cmd --reload


Notes on UDP

UDP scans are less reliable because UDP does not create a handshake. You can still test specific ports:

nmap -sU -Pn -p 53,123,1194 YOUR_VPS_IP


Security best practices

Only expose the ports your applications truly need.


Enable the cloud firewall if you want to restrict access by IP.


Avoid exposing databases to the public internet.


Use SSH keys, keep services updated, and disable unneeded ports.

Useful commands

Install diagnostic tools on Ubuntu or Debian:

sudo apt update && sudo apt install -y nmap netcat-openbsd

List processes using a port:

sudo lsof -iTCP:PORT -sTCP:LISTEN -n -P sudo ss -lptn | grep ":PORT"

Show listening sockets only:

sudo ss -tuln | sed -n '1p; /LISTEN/p'

This process helps identify whether a port issue is caused by the cloud firewall, the OS firewall, or an application that is not actually listening.

Did this answer your question?