firewalld, permitindo apenas SSH de um IP específico que faz parte de uma zona diferente

0

Meu objetivo é servir o ldap para todos os clientes em 172.26.143.0/24, mas o SSH deve estar disponível somente para 172.26.143.3. Eu tentei com o seguinte:

# This is where eth0 is and no services/ports are assigned to this zone:
firewall-cmd --set-default-zone=drop
firewall-cmd --zone=internal --add-source=172.26.143.0/24 --permanent
firewall-cmd --zone=internal --add-service=ldap --permanent
firewall-cmd --zone=trusted --add-source=172.26.143.3 --permanent
firewall-cmd --zone=trusted --add-service=ssh --permanent
firewall-cmd --reload

Com esta configuração, o 172.26.143.3 não é compatível com o SSH para este host. Só se eu adicionar o serviço ssh a zona = interna, o que eu não quero. Como posso conseguir isso?

    
por scaarup 04.11.2016 / 07:48

1 resposta

1

A resposta específica é criar uma regra rica (uma regra direta também funcionaria, suponho), pois ambas são avaliadas antes de fontes e interfaces.

firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family=ipv4 source address=172.26.143.3 accept'

Por que isso não funciona porque as definições de origem nas zonas internas e confiáveis se sobrepõem. Esta é uma fraqueza / aborrecimento / bug (?) Do firewalld onde as sobreposições de fontes não são realmente permitidas. Ele funciona, mas depende da ordem. O firewalld avalia as zonas quando há uma sobreposição como essa. Eu não olhei para o código, mas algumas explicações dizem que quando há uma sobreposição, as zonas são avaliadas alfabeticamente e em outro lugar, é baseada na ordem em que as regras foram definidas. De qualquer maneira, no seu exemplo, a zona interna está captando o tráfego SSH e soltando-o.

    
por 11.05.2017 / 11:40

Tags