Skip to main content

VPS: Managing Firewall in Linux

This guide was created with the following products:

(Details may vary with products from different providers but the main concepts remain the same)

Introduction

For a lot of services and programs, you have to allow external connections. This is possible by setting up a firewall. In this guide, you will learn how to set up a firewall and allow those connections.

Preparation

To install the firewall, you need to connect to your server via SSH. If you don't know how, you can look at our initial access guide. After connecting, you should update the server by using apt update and apt upgrade.

Using UFW (Easy)

There are multiple firewall programs for Linux, this guide will focus on the 2 most popular ones: UFW and IPTables. We will start with UFW, as it is easier to set up and manage.

Installing UFW

You can install UFW simply via APT using sudo apt install ufw. To not loose the connection via SSH, you should not activate it yet, first you have to set it up.

Setting up UFW

We recommend using the following policies by default:

sudo ufw default deny incoming and sudo ufw default allow outgoing

Now you should allow the SSH connection and any other port you want to open now:

sudo ufw allow 22 for SSH

sudo ufw allow 80 example for HTTP

sudo ufw allow 25565 example for a Minecraft Server

To enable UFW, you have to run sudo ufw enable. You can always open more ports, if needed, using sudo ufw allow PORT

Add Port Forwardings

To forward a port, you can simply use this command:

For TCP ports:

sudo ufw allow PORT/tcp replacing PORT with the port you want to forward.

Example: sudo ufw allow 25565/tcp for a Minecraft server

For UDP ports:

sudo ufw allow PORT/udp replacing PORT with the port you want to forward.

Example: sudo ufw allow 9987/udp for a TeamSpeak 3 server

List and remove Port Forwardings

To display all port rules, you can run sudo ufw status numbered. If you want to remove a rule, you can sudo ufw delete NUMBER, using the number of the rule in the list.

Installing IPTables (Advanced)

Most System already include IPTables by default, but to make sure you can run sudo apt install iptables.

Setting up IPTables

First, set the default policies and settings:

sudo iptables -P INPUT DROP to disallow all incoming connections

sudo iptables -P FORWARD DROP to disallow all forwardings

sudo iptables -P OUTPUT ACCEPT to accept all outgoing connections

sudo iptables -A INPUT -i lo -j ACCEPT to allow the loopback

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT to allow all existing connections

Now you should allow the SSH connection and any other port you want to open now:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT for SSH

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT example for HTTP

sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT example for a Minecraft Server

Then you have to make the rules persistent, so they are still active after you restart the server. Install the IPTables persistent package using sudo apt install iptables-persistent. Then apply it using sudo netfilter-persistent save. And add it to the autostart with sudo systemctl enable netfilter-persistent.

Add Port Forwardings

To forward a port, you can simply use this command:

For TCP ports:

sudo iptables -A INPUT -p tcp --dport PORT -j ACCEPT replacing PORT with the port you want to forward.

Example: sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT for a Minecraft server

For UDP ports:

sudo iptables -A INPUT -p udp --dport PORT -j ACCEPT replacing PORT with the port you want to forward.

Example: sudo iptables -A INPUT -p udp --dport 9987 -j ACCEPT for a TeamSpeak 3 server

List and remove Port Forwardings

You can display all rules using this command: sudo iptables -L --line-numbers. If you want to remove a rule, you use sudo iptables -D INPUT NUMBER replacing NUMBER with the one from the list you want to remove.

Conclusion

You have successfully installed a firewall on your Linux server and created your very own port rules. You can also use this guide for forwarding more ports. For further questions or assistance, please don't hesitate to contact our support team, which is available daily to assist you! 🙂