The Beginner’s Guide to iptables, the Linux Firewall

The Beginner’s Guide to iptables, the Linux Firewall

Here we can see, “The Beginner’s Guide to iptables, the Linux Firewall”

What is a Firewall?

A firewall may be a system that gives network security by filtering incoming and outgoing network traffic supported by a group of user-defined rules. Generally, a firewall aims to scale back or eliminate unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an important layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.

A firewall typically establishes a barrier between a trusted, secure internal network and another outside network, like the web, that’s assumed not to be secure or trusted. Firewalls are often categorized as either network firewalls or host-based firewalls. Network firewalls are software appliances running on general-purpose hardware or hardware-based firewall computer appliances that filter traffic between two or more networks. Host-based firewalls provide a layer of software that controls the network traffic in and out of that single machine. Routers that pass data between networks contain firewall components and may often perform basic routing functions also; Firewall appliances can also offer other functionality to the internal network they protect, like acting as a DHCP or VPN server for that network.

TCP network traffic moves around a network in packets, which are containers that contains a packet header—this contains control information like source and destination addresses and packet sequence information—and the info (also referred to as a payload). While the control information in each packet helps ensure that its associated data gets delivered properly, the weather it contains also provides firewalls a spread of the way to match packets against firewall rules.

It is important to notice that receiving incoming TCP packets requires the receiver to send outgoing acknowledgment packets back to the sender. The mixture of the control information within the incoming and outgoing packets is often wont to determine the connection state (e.g., new, established, related) between the sender and receiver.


In the Linux ecosystem, tables may be a widely used firewall tool that interfaces with the kernel’s Netfilter packet filtering framework. For users and administrators who don’t understand the architecture of those systems, creating reliable firewall policies is often daunting, thanks to challenging syntax and several interrelated parts present within the framework.

Also See:  How to Enable Dark Mode in Microsoft Office

The iptables firewall works by interacting with the packet filtering hooks within the Linux kernel’s networking stack. These kernel hooks are referred to as the Netfilter framework.

Every packet that enters the networking system (incoming or outgoing) will trigger these hooks because it progresses through the stack, allowing programs that register with these hooks to interact with the traffic at key points. The kernel modules related to iptables register at these hooks to ensure that the traffic conforms to the conditions laid out by the firewall rules.

Netfilter Hooks

As packets progress through the stack, they will trigger the kernel modules that have registered with Netfilter hooks. The hooks that a packet will trigger depends on whether the packet is incoming or outgoing, the packet’s destination, and whether the packet was dropped or rejected at a point.

The following hooks represent various well-defined points within the networking stack:


This hook is going to be triggered by any incoming traffic very soon after entering the network stack. This hook is processed before any routing decisions are made regarding where to send the packet.


This hook is triggered after an incoming packet has been routed if the packet is destined for the local system.


This hook is triggered after an incoming packet has been routed if the packet is to be forwarded to a different host.


This hook is triggered by any locally created outbound traffic as soon it hits the network stack.


This hook is triggered by any outgoing or forwarded traffic after routing has taken place and just before being put out on the wire.

Kernel modules that wish to register at these hooks must provide a priority number to determine the order during which they’re going to be called when the hook is triggered. This provides the means for multiple modules (or multiple instances of an equivalent module) to be connected to each of the hooks with deterministic ordering. Each module will be called successively and can return a choice to the Netfilter framework after processing that indicates what should be through with the packet.

IPTables is that the name of a firewall system that operates through the instruction on Linux. This program is especially available as a default utility on Ubuntu. Administrators often use the IPTables firewall to permit or block traffic into their networks. If you’re new IPTables, then one among the primary belongings you got to do is update it or install it’s using the subsequent command:

$ sudo apt-get install iptables

While new instruction interfaces users find there’s a learning curve attached to IPTables, the utility itself is straightforward enough to use. There are a variety of core commands that act as your bread and butter for controlling traffic. That being said, you would like to be very careful when making changes to IPTables rules. Entering the incorrect command can lock you out of IPTables altogether until you address the matter within the physical machine.

In this article, we’re getting to provide you with a basic guide to IPTables and introduce you to the basics. Before we get to the guts of IPTables, you would like to form sure that you have a VPA running Ubuntu 16.04 and an area machine with an SSH client. If you have already got these, then it’s time to start.

IPTables Tutorial: Chains

One of the elemental concepts to return to grips with in IPTables is that of chains, and a sequence is a rule. The filter’s tables have three chains you’ll encounter on IPTables; INPUT, FORWARD, and OUTPUT.

  • INPUT: The INPUT chain is that the rule that controls incoming packets. Here you’ll block or allow new connections, and you’ll do that supported port, protocol, and source IP address.
  • FORWARD: The FORWARD chain filters incoming packets that are being forwarded to a special end location. You’re unlikely to use this chain unless you’re routing or trying to find forwarding specifically.
  • OUTPUT: The OUTPUT chain is employed to manage outgoing packets and connections. It’s important to notice that if you ping an external host, then the input chain will be wont to return the info to you.

Default Chain Behaviour

You may want to leap straight into configuring particular rules when starting, but you would like to require a step back to define the default behavior first. To spot what the default behavior of your chains is, you’ll get to run the command:

$ sudo iptables -L command 

This will show the following:

user@ubuntu:~$ sudo iptables -L -v
Chain INPUT  (policy ACCEPT) 
Chain FORWARD (policy ACCEPT) 
Chain OUTPUT (policy ACCEPT) 

This information tells you exactly what your chains are configured to try to do. Within the example, the input, forward, and output chains are configured to accept traffic. These settings are a direct start line as they don’t block any connections that you might want.

However, if you find that your policies aren’t accepting connections, then you’ll enter each of the subsequent commands to accept all connections:

$ sudo iptables —policy INPUT ACCEPT
$ sudo iptables —policy OUTPUT ACCEPT
$ sudo iptables —policy FORWARD ACCEPT

Once your defaults are aligned to accept all connections, you’ll control access to IPTables by blocking IP addresses and port numbers. This enables you to specify which connections you would like to dam instead of blocking everything by default.

If you’re working with particularly sensitive information, then you’ll configure your defaults to block all connections automatically. In this manner, you’ll use IPTables to select individual IP addresses that you want to permit. To try to do this, you would like to input the subsequent command:

$ sudo iptables —policy INPUT DROP
$ sudo iptables —policy OUTPUT DROP
$ sudo iptables —policy FORWARD DROP

Most users will be happier accepting all connections, but it’s worth remembering if you’re performing on a high-security server.

Configuring Individual Connections

Once you’ve configured your default chain behavior, it’s time to configure individual connections. This is often the purpose where you configure what’s mentioned as a connection-specific response. This essentially tells IPTables the way to interact when connected to an IP address or port. These responses are as follows; ACCEPT, DROP, REJECT.

As you’ll see within the image above, the user has defined chain rules to permit, drop, or reject the connection supported the wants. Below may be a description of what each response entails:

  • Accept: This configuration allows the connection to require place.
  • Drop: Drop blocks the connection without interacting with the source in any way.
  • Reject: This blocks the attempted connection but also sends a mistake message. This is often generally to notify the source that your firewall has blocked the connection attempt.

How to Allow or Block Connections

There are many various ways to dam or allow connections counting on your settings. The examples below use the covert blocking method of using Drop drop connections with no interaction. iptables -A allows us to feature additional caveats to the principles established by our default chain settings. You see the way to use this command to dam connections below:

Blocking a single IP address:

$ sudo iptables -A INPUT -S -j DROP

In the example above, you’d replace with the IP address you would like to dam.

Also See:  New Mobvoi TicWatches won’t run Wear OS 3 at launch, upgrade in 2022

Blocking a range of IP addresses:

$ sudo iptables -A INPUT -s -j DROP    


$ sudo iptables -A INPUT -s -j DROP

Blocking a single port:

$ sudo iptables -A INPUT -p tcp —dport ssh -s -j DROP 

Note that any protocol or port number often replaces the ‘ssh. It’s also important to notice that the -p TCP segment of the code is employed to ask whether the protocol you would like to dam is using UDP or TCP.

If the protocol uses UDP, you will enter -p UDP rather than -p tcp. you’ll also block all connections from IP addresses by entering the subsequent command:

$ sudo iptables -A INPUT -p tcp —dport ssh -jDROP

Two-Way Communication: Connection States IPTables Tutorial

Most of the protocols you encounter require communication to travel both ways to transfer to require place. This suggests that transfers are made from input and output. What goes into your system is as important as what comes out. Connection states allow you to combine and match between two-way connections and one-way connections. Within the example below, the SSH protocol has blocked SSH connections from the IP address but permits ones to the IP address:

$ sudo iptables -A INPUT -p tcp —dport ssh -s -m state —state NEW, ESTABLISHED -j ACCEPT 

$ sudo iptables -A OUTPUT -p tcp —sport 22 -d -m state —state ESTABLISHED -J ACCEPT 

Once you’ve entered a command to vary connection states, you would like to save lots of your changes. If you don’t, then once you close the utility, your configuration will be lost. Counting on the distribution system you’re using, and there are a variety of various commands you’ll use:


$ sudo /sbin/iptables-save

Red Hat / CentOS –

$ sudo /sbin/service iptables save


$ sudo  /etc/init.d/iptables save 

Remembering to use these commands is significant because it’ll eliminate the effort to configure whenever you load the utility.

Deleting a Rule

Just as important as having the ability to save lots of your rules is having the ability to delete them. If you create an error or want to eliminate an old rule, then you’ll use the choice –D command. This command must be combined with the amount of the Rule you enter, and the amount tells IPTables which Rule is to be deleted. For instance, if you were to enter:

$ sudo iptables -D INPUT 10

Then the 10th Rule you configured would be deleted.

If you want to wash house and take away a variety of rules, you’ll use the -F command. you’ll do that by entering the following:

$ sudo iptables -F

This will clear the whole set of rules and flush your IPTable.

IPTables: Learn Chain Rules!

That concludes our IPTables tutorial. As you’ll see, IPTables may be a versatile tool for blocking and allowing traffic on Linux distributions. Using the utility effectively involves fixing your default configurations effectively and building additional rules on top of that. The default configurations will allow you to stipulate your broad traffic intentions to permit or deny traffic; the principles will allow you to structure your approach regarding IP addresses, ports, and protocols.

We’ve only scratched the surface with IPTables potential, and there are plenty of various commands that you can use to decide how you experience the traffic on your server. However, we recommend that you get the fundamentals down before you begin with other commands. for instance, you’ll want to urge your head around basic chains rules before committing to anything more specialized.

Once you’ve become familiar with how IPTables works, then you’ll start incorporating even more rules to customize your experience. In doing so, you’ll be ready to specify exactly what quiet connections you’ll allow with much greater precision than ever before.


I hope you found this guide useful. If you’ve got any questions or comments, don’t hesitate to use the shape below. 

User Questions:

  1. Why iptables are utilized in Linux?

iptables may be an instruction interface wont to found out and maintain tables for the Netfilter firewall for IPv4, included within the Linux kernel. The firewall matches packets with rules defined in these tables then takes the necessary action on a possible match. … Rule is condition wont to match the packet.

  1. What is Netfilter in Linux?

Netfilter may be a framework provided by the Linux kernel that permits various networking-related operations to be implemented within the sort of customized handlers. … Netfilter represents a group of hooks inside the Linux kernel, allowing specific kernel modules to register callback functions with the kernel’s networking stack.

  1. Are iptables changes immediate?

iptables rules become immediately. Because your script is Appending (-A) to the INPUT and OUTPUT chains, your rules are being added to the top of these chains. If you’ve got other terminating rules that precede these rules, then they’re going to become (and later rules will not).

Also See:  A third-party app for Windows 11 makes it too easy to install Android APKs
  1. Do you guys use iptables / firewalls on your hosted server? And what for?

Do you guys use iptables / firewalls on your hosted server? And what for? from linux

  1. Struggling to know iptables / firewall configuration? This helped pull back the curtain.

Struggling to understand iptables / firewall configuration? This helped pull back the curtain. from sysadmin