Question

How to block IP range or country with firewalld?

Posted December 7, 2016 34.4k views
CentOSFirewall

Hello,

How can I block IP range or entire country on CentOS 7 with FirewallD? The IP range starts with 180.76.15.* and is Chinese IP.

The command below works for single IP but not for range:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='180.76.15.154' reject" 

I tried with this command for the range but without success:

firewall-cmd –permanent –add-rich-rule=“rule family=‘ipv4’ source address='180.76.15/24’ reject”

Cheers

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
5 answers

I think the correct command is:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='180.76.15.0/24' reject"

Pay attention to highlighted part

You have to reload firewalld after adding a permanent rule.

firewall-cmd --reload

Thank you xMudrii,

This command is executed successfully. Lets see if it works and the Chinese visitors from 180.76.15* will not have access to the site anymore.

Cheers,
Ivo

The command is not working, I run the command and reload my firewall for the changes to take effect, but unfortunately the 180.76.15* still have access to my site. Any other ideas?

Yeah, I have an idea, why not utilize “UFW” or iptables (conntrack allows the user to log access).

dnf install ufw -y
systemctl enable –now ufw
systemctl start –now ufw

ufw enable

ufw insert 1 deny in from 180.76.15.0/24 to any comment "Block China Access" # Blocks TCP and UDP access

iptables

iptables -I INPUT 1 -p all -s 180.76.15.0/24 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j REJECT
Submit an Answer