This question already has an answer here:
- block all but a few ips with firewalld 3 answers
I am trying to use FirewallD to restrict access to a CentOS server from other machines on the network. It has a single network interface and it is operating in the public zone. Lets say that the ip address of this server 10.10.1.20.
What I want to do is to allow only machines with IP addresses 10.10.1.125 and 10.10.1.126 to be able to connect (ssh and https) to this server. None of the other ip addresses should be able to connect to this server (or even know that it exists).
I tried using FirewallD's rich rules as follows (on 10.10.1.20)
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.0/24" drop' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.125" accept' sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="10.10.1.126" accept'
But it doesn't seem to work. I cannot make ssh connections to 10.10.1.20 from 10.10.1.125 or 10.10.1.126.
I tried entering the rules in the reverse order, but it still does not work.
Can someone help me out here? Do I need to change the zone from public to a more restrictive one like drop before the rules I wrote above can be applied?