Home » Security » Setup and Configured FirewallD Rules To Make Linux Servers Secure

Setup and Configured FirewallD Rules To Make Linux Servers Secure

The RHEL7 has introduce new security module/aplication/daemon for managing and support network/interface zone with named Firewalld. Firewalld replaces the iptables interface and it is compatible with both IPV version ipv4 and ipv6 and it’s related firewall settings.
firewalld provides facility to configure firewall rules dynamically on linux system and that rules applied instantly and no need to restart firewall
The old firewall module “system-config-firewall” was static and requires the firewall restart if need to change and modify the firewall rules as well as to unload the netfilter kernel modules for the new configuration. It works on D-BUS and zone concepts which makes firewall configuration smooth and easy.
The old static firewall system-config-firewall still available and usable but not possible to make enable both on same time, System administrators and users can decide that which firewall they want to use and enable it. The article will help you to setup FirewallD Rules on linux servers
What is a zone?
A network zone defines the extent of trust for network connections. this can be a 1 to several relation, which implies that a association will solely be a part of one zone, however a zone will be used for several network connections.

Predefined services
A service could be a combination of port and/or protocol entries. Optionally netfilter helper modules will be superimposed and additionally a IPv4 and IPv6 destination address.

Ports and protocols
Definition of transmission control protocol or udp ports, wherever ports will be one port or a port range.

ICMP blocks
Selected internet management Message Protocol (ICMP) messages. These messages are either data requests or created as a reply to data requests or in error conditions.

The addresses of a non-public network are mapped to and hidden behind a public IP address. this can be a variety of address translation.

Forward ports
A port is either mapped to a different port and/or to a different host.

Which zones square measure available?
The following zones are provided by firewalld classified in line with the default trust level of the zones from untrusted to trusted:

Any incoming network packets are dropped, there’s no reply. solely outgoing network connections are doable.

Any incoming network connections are rejected with associate icmp-host-prohibited content for IPv4 and icmp6-adm-prohibited for IPv6. solely network connections initiated from within the system are doable.

For use publicly areas. you do not trust the opposite computers on networks to not damage your computer. solely selected incoming connections are accepted.

For use on external networks with masquerading enabled particularly for routers. you do not trust the opposite systems on networks to not damage your computer. solely selected incoming connections are accepted.

For computers in your DMZ that are publicly-accessible with restricted access to your internal network. solely selected incoming connections are accepted.

For use in work areas. you always trust the opposite systems/computers/PC on networks to not damage your computer. solely selected incoming connections are accepted.

For use in home areas. you always trust the opposite systems/computers/PC on networks to not damage your computer. solely selected incoming connections are accepted.

For use on internal networks. you always trust the opposite laptops on the networks to not damage your computer. solely selected incoming connections are accepted.

All network connections are accepted.

In RHEL 7 and Centos 7 firewalld as well as the GUI (graphical user interface) configuration tool named firewall-config are by default installed. If not installed then use the below command.

[root@linuxpcfix~]# yum install firewalld firewall-config
[root@linuxpcfix~]# systemctl start firewalld

To disable, stop and get status firewalld
To disable the firewalld execute the following command from user root.

[root@linuxpcfix~]# systemctl disable firewalld
[root@linuxpcfix~]# systemctl stop firewalld
[root@linuxpcfix~]# systemctl status firewalld
[root@linuxpcfix~]# firewall-cmd –state

To verify the firewalld version use the below command.

[root@linuxpcfix~]# firewall-cmd –version

To view the active zones execute the following command from root

[root@linuxpcfix~]# firewall-cmd –get-active-zones
interfaces: em1

To verify the zone for an interface, for exercise em1, is currently assigned to, execute the below command:

[root@linuxpcfix~]# firewall-cmd –get-zone-of-interface=em1

To see all the interfaces assigned to a zone, suppose to you want to find out public zone, execute the following command from root:

[root@linuxpcfix~]# firewall-cmd –zone=public –list-interfaces

To List active zone and services.
To see the all the settings for a zone execute the following command here we are going to verify the ‘public’ zone settings.

[root@linuxpcfix~]# firewall-cmd –zone=public –list-all
public (default, active)
interfaces: em1
services: dhcpv6-client ssh
masquerade: no
rich rules:

the output will show that there is no active rule added yet, if you want to know that how to add, remove the modify the rules read continue remaining article.
To view currently all supported services perform the following command as root user

[root@linuxpcfix~]# firewall-cmd –get-service
amanda-clients bacula bacula-clients dhcpd dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

The above command will show the list the name of the services which are active in /usr/lib/firewalld/services/
To save the supported services that will be active after the firewall reload run the below command.

[root@linuxpcfix~]# firewall-cmd –get-service –permanent

To change firewall setttings.
Enable/Disable panic mode to drop all packets.
After enable the panic mode all incomming and outgoing packets will dorp.

[root@linuxpcfix~]# firewall-cmd –panic-on
[root@linuxpcfix~]# firewall-cmd –panic-off
[root@linuxpcfix~]# firewall-cmd –query-panic

To reload the firewall without interrupting user connection execute the following command.

[root@linuxpcfix~]# firewall-cmd –reload

To reload the firewall with interrupging user connection execute the below command.

[root@linuxpcfix`]# firewall-cmd –complete-reload

Add an Interface to a Zone
To add an interface to a zone then use the following command.

[root@linuxpcfix~]# firewall-cmd –zone=public –permanent –add-interface=em1

Add/remove port in firewalld
To open any port in public zone, execute the below command. For instance, here we are using port 8080 for public zone.

[root@linuxpcfix~]# firewall-cmd –permanent –zone=public –add-port=8080/tcp
[root@linuxpcfix~]# firewall-cmd –zone=public –list-ports
[root@linuxpcfix~]# firewall-cmd –zone=public –remove-port=8080/tcp
[root@linuxpcfix~]# firewall-cmd –zone=public –list-ports

Add/Remove services
dhcpv6-client and ssh pre-defined services in firealld, If you want to add and remove the services in firewalld then below command will help so perform the following commands a root user. Here we are going to add smtp service.

[root@linuxpcfix~]# firewall-cmd –zone=public – -add-service=smtp
[root@linuxpcfix~]# firewall-cmd –zone=public –list-services
dhcpv6-client smtp ssh
[root@linuxpcfix~]# firewall-cmd –zone=public –remove-service=smtp
[root@linuxpcfix~]# firewall-cmd –zone=public –list-services

Enable iptables services.
If you want to use the iptables services instead of firewalld then disable the firewalld and enable iptables services as given below.

[root@linuxpcfix`]# yum install iptables-services

To start, stop, restart iptables services perform the given below command from root user.

[root@linuxpcfix~]# systemctl start iptables
[root@linuxpcfix~]# systemctl start ip6tables
[root@linuxpcfix~]# systemctl enable iptables
[root@linuxpcfix~]# systemctl enable ip6tables


I am founder and webmaster of www.linuxpcfix.com and working as a Sr. Linux Administrator (Expertise on Linux/Unix & Cloud Server) and have been in the industry from last 7 years.

Leave a Reply

Your email address will not be published. Required fields are marked *


Time limit is exhausted. Please reload the CAPTCHA.

Categorized Tag Cloud