FirewallD: Permitir conexões apenas de determinados endereços IP [duplicados]

2

Estou tentando usar o FirewallD para restringir o acesso a um servidor CentOS de outras máquinas na rede. Ele tem uma única interface de rede e está operando na zona pública . Vamos dizer que o endereço IP deste servidor 10.10.1.20.

O que eu quero fazer é permitir que apenas máquinas com endereços IP 10.10.1.125 e 10.10.1.126 possam se conectar (ssh e https) a este servidor. Nenhum dos outros endereços IP deve ser capaz de se conectar a este servidor (ou mesmo saber que ele existe).

Eu tentei usar as regras avançadas do FirewallD da seguinte forma (em 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'

Mas parece que não funciona. Não consigo fazer conexões ssh para 10.10.1.20 a partir de 10.10.1.125 ou 10.10.1.126.

Eu tentei inserir as regras na ordem inversa, mas ainda não funciona.

Alguém pode me ajudar aqui? Preciso alterar a zona de pública para uma mais restritiva, como uma queda antes que as regras que escrevi acima possam ser aplicadas?

    
por thisisshantzz 20.08.2016 / 10:11

2 respostas

7

Regras avançadas não são o melhor caminho para isso. Eles só vão criar confusão, agora e depois.

Entenda que uma zona firewalld corresponde a um conjunto de serviços que você deseja permitir e às origens do tráfego para esses serviços.

Tudo o que você precisa fazer é definir os serviços que deseja permitir na zona (que você provavelmente já fez) e depois definir as fontes.

As origens de tráfego podem ser designadas de duas maneiras: por interface ou por endereço IP de origem. O tráfego que corresponde a qualquer fonte passa por essa verificação.

Portanto, o que você deseja fazer é adicionar os endereços IP permitidos para acessar os serviços e, em seguida, remover a interface (se houver).

firewall-cmd --zone=public --add-source=10.10.1.25
firewall-cmd --zone=public --add-source=10.10.1.26
firewall-cmd --zone=public --remove-interface=enp2s1
firewall-cmd --runtime-to-permanent

E note que você provavelmente não deseja fazer isso na public zone, mas crie uma nova zona. Essa zona tem várias coisas configuradas para serem permitidas por padrão (como DHCP), o que pode causar problemas se você remover a interface e restringir a região pelo endereço IP de origem.

    
por 20.08.2016 / 22:46
-1
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" source address="10.10.1.125" accept'
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="https" source address="10.10.1.125" accept'
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" source address="10.10.1.126" accept'
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="https" source address="10.10.1.126" accept'
firewall-cmd --reload 

e reinicie o serviço de firewall.

firewall bloqueia todas as conexões por padrão. Então você precisa adicionar apenas essas regras.

    
por 20.08.2016 / 15:10