Firewall is a software that acts as a shield between the user’s system and external network allowing some packets to pass while discarding other’s. Firewall commonly operates on network layer i.e. on IP packets both Ipv4 and Ipv6.
Whether a packet will pass or will be blocked, depends on the rules against such type of packets in the firewall. These rules can be built-in or user-defined ones. Each packet which enters the network has to pass through this shield which verifies it against rules defined in it for such type of packets.
Each rule has a target action which is to be applied in case the packet fails to satisfy it. On Linux systems, firewall as a service is provided by many software, most common which are: firewalld and iptables.
In Linux, there are many different types of firewalls used, but most standard ones are Iptables and Firewalld, which is going to discuss in this article.
What is FirewallD?
FirewallD is the Dynamic Firewall Manager of Linux systems. This service is used to configure the network connections, thus deciding which external network or internal packets to allow traversing the network and which to block.
It allows two types of configurations, permanent and runtime. Runtime configurations will get lost ones the service is restarted while the permanent ones get retained across the system boot so that they are followed every time the service gets active.
Corresponding to these configurations, firewallD has two directories, default/fallback one (/usr/lib/firewall) which is lost one's system is updated and the system configuration (/etc/firewall) which remains permanent and overrides the default one is given. This is found as a default service in RHEL/CentOS 7 and Fedora 18.
What is Iptables?
Iptables is another service which decides to allow, drop or return IP packets. Iptables service manages Ipv4 packets while Ip6tables manages Ipv6 packets. This service manages a list of tables where each table is maintained for different purpose like ‘filter‘ table is for firewall rules, ‘nat‘ table is consulted in case of a new connection, ‘mangle‘ in case of packet alterations and so on.
Each table further has chains which can be built-in or user-defined where a chain signifies a set of rules which are applied to a packet, thus deciding what the target action for that packet should be i.e. it must be ALLOWED, BLOCKED or RETURNED. This service is a default service on systems like RHEL/CentOS 6/5 and Fedora, ArchLinux, Ubuntu etc.
How to Start/Stop and Enable/Disable FirewallD Service
If you’re using CentOS/RHEL 7 or Fedora 18+ versions, you should follow below instructions to manage FirewallD service.
Start FirewallD Service
# systemctl start firewalld
Stop FirewallD Service
# systemctl stop firewalld
Check the Status of FirewallD
# systemctl status firewalld
Check the State of FirewallD
# firewall-cmd --state
As an alternative, you can disable the firewalld service so that it doesn’t apply rules to packets and enable ones needed again.
Disable FirewallD Service
# systemctl disable firewalld
Enable FirewallD Service
# systemctl enable firewalld
Mask FirewallD Service
# systemctl mask firewalld
Also, you can mask the firewall service which creates a symbolic link of the firewall.service to /dev/null, thus disabling the service.
Unmask FirewallD Service
# systemctl unmask firewalld
This is reverse of masking the service. This removes the symlink of the service created during masking, thus re-enabling the service.
How to Start/Stop and Enable/Disable IPtables Service
On RHEL/CentOS 6/5/4 and Fedora 12-18 iptables firewall comes as pre and later, the iptables service can be installed via:
# yum install iptables-services
Then, the service can be started, stopped or restarted via following commands:
Start Iptables Service
# systemctl start iptables OR # service iptables start
Stop Iptables Service
# systemctl stop iptables OR # service iptables stop
Disable Iptables Service
# systemctl disable iptables Or # service iptables save # service iptables stop
Enable Iptables Service
# systemctl enable iptables Or # service iptables start
Check Status of Iptables Service
# systemctl status iptables OR # service iptables status
On Ubuntu and some other Linux distributions however, ufw is the command which is used to manage the iptables firewall service. Ufw provides an easy interface for the user to handle the iptables firewall service.
Enable Ufw Iptables Firewall
$ sudo ufw enable
Disable Ufw Iptables Firewall
$ sudo ufw disable
Check Status of Ufw Iptables Firewall
# sudo ufw status
However, if you want to list chains in iptables which contains all the rules following command can help you achieve the same:
# iptables -L -n -v
These are the techniques which can help you start, stop, disable and enable the packet management services in Linux Based Systems. Different Linux distros can have different services as default, like: Ubuntu can have iptables as the default and pre-installed service, while CentOS can have firewalld as the default configured service for managing incoming and outgoing of IP packets.