This article is about how to block ping requests to Linux Server. We will also describe how to unblock the ping requests in case you need to use ping for system administration and troubleshooting.
Note: The commands discussed here have been tested on Ubuntu 20.04 LTS.
Ping works by sending an ICMP packet (Echo request) to the destination system and then receives a response ICMP packet (Echo reply). In Linux, the ping command continues sending ICMP packets until you stop it using Ctrl+C.
In order to block ping requests, you will need to ignore/block the ICMP echo requests that are sent to your server. There are following two ways through which you can block/unblock ICMP echo requests to the Linux server.
Let’s get started.
Through kernel parameters, you can block ping requests either temporarily or permanently. Kernel parameters can be modified through sysctl command, /sys/proc directory, and /etc/sysctl.conf file.
The sysctl command in Linux is used to read and write kernel parameters in the /proc/sys directory. Using this command, we can set up kernel parameters to block/unblock ping requests. The kernel parameter net.ipv4.icmp_echo_ignore_all controls whether the system should respond to the ICMP echo request. The default value of it is ‘0’ which means to respond to the ICMP request.
In order to block ping request, issue the following command in Terminal:
This command sets the kernel parameter to ‘1’ which means to ignore all the ICMP requests.
Now all the ping requests to your system will be blocked and the sender will receive no response as shown in the below screenshot.
To unblock the ping requests, again run the same command by changing the parameter value to default ‘0’.
Alternatively, you can block the ping requests by changing the kernel parameter value in the /proc/sys directory using the echo command. However, to use this method, you will need to run the command as root.
In order to block ping request, first switch to root account using the following command in Terminal:
When prompted for the password, enter the password for root.
Then issue the following command in Terminal:
To unblock the ping requests, the command would be:
Kernel parameters can also be modified through the /etc/sysctl.conf file. This file will allow you to permanently block ping requests to your server.
In order to block ping request to your system, edit /etc/sysctl.conf file:
Then append the following line in the file:
Save and close the file.
Then issue the following command in Terminal to apply this configuration without reboot:
To unblock ping requests, edit the /etc/sysctl.conf file:
Then modify the value of net.ipv4.icmp_echo_ignore_all to ‘0’:
Save and close the file.
Then issue the following command in Terminal to apply this configuration without reboot:
Iptables is a firewall utility in Linux that controls incoming and outgoing traffic based on certain rules. It comes preinstalled in the Ubuntu system. In case, it is missing from the system, you can install it using the following command in Terminal:
To block ping requests to your system, type following command in Terminal:
Where the A flag is used to add a rule in iptables and icmp-type 8 is the ICMP type number used for echo request.
The above command will add a rule in the firewall that will block any incoming ping requests to your system. By adding this rule, anyone sending the ping request to your system will see the “Destination Port Unreachable” message as shown in the below screenshot.
If you do not want this message to appear, use the following command replacing REJECT with DROP:
Now anyone sending the ping request to your system will see the following similar output:
In order to unblock ping requests to your server, type the following command in Terminal:
Where the D flag is used to delete a rule in iptables and icmp-type 8 is the ICMP type number used for an echo request.
In order to make these rules persistent after a system reboot, you will need iptables-persistent package. Issue the below command in Terminal to install iptables-persistent:
You will be asked to confirm whether you want to proceed with the installation or not. Hit y to proceed, after which the system will start the installation and once completed, it will be ready to use.
After adding or deleting any rule, issue the following commands in Terminal to make them survive the system reboot.
In order to view all the rules added to your iptables, issue the following command in Terminal:
That is all there is to it! In this article, we have discussed how to block/unblock ping requests to Linux Server either through the kernel parameters or through iptables utility. Hope this helps!
You’ve recently installed VMware Workstation on your Ubuntu system and encountered the frustrating “Could not…
Have you ever found yourself staring at a terminal full of 404 errors while trying…
One particularly frustrating error that many users face when trying to upgrade from Ubuntu 18.04 …
In the world of containerization, time synchronization issues can create unexpected roadblocks when working with…
If you’ve recently upgraded to Ubuntu 23.04 or newer, you might have encountered a frustrating…
Canonical announces the General Availability of Ubuntu for the NVIDIA® Jetson Orin™ for edge AI…