Firewalld: Como colocar na lista de permissões apenas dois endereços IP, não na mesma sub-rede

2

Estou executando o firwalld em um VPS / webserver.

A public zone é active e default (e eu não quero a alteração disso). Como eu permito que somente esses dois endereços IP externos acessem o VPS (ou seja, todos os serviços que defini no public zone):

   IP1:  11.22.33.44/24
   IP2:  55.66.77.88/24

Estes são endereços IP falsos e notam que estão intencionalmente não na mesma sub-rede .

Acho que entendo por que o seguinte não funciona (bloqueia um ou outro IP).

user$ sudo firewall-cmd --zone=public --permanent --add-source=11.22.33.44/24
user$ sudo firewall-cmd --zone=public --permanent --add-source=55.66.77.88/24

user$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="11.22.33.44/24" invert="True" drop' 
user$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="55.66.77.88/24" invert="True" drop'
user$ sudo firewall-cmd --reload

O que preciso modificar para que isso funcione (para que ele não bloqueie um IP ou outro ou ambos)?

Obrigado! :)

EDIT : Eu também tentei uma máscara% bit /32 para todos os quatro comandos acima. Infelizmente isso não ajudou. Ainda procurando uma solução.

Acho que a lógica pode soar algo como: if IP1 or IP2, allow it and stop processing the chain. else Continue processing the chain, where the very next rule would be to DROP. . Algo assim.

EDIT2 : lançando a saída de sudo firewall-cmd --list-all-zones abaixo. Observe que removi todas as regras mencionadas acima, pois elas não estavam funcionando. Então, o abaixo está de volta à estaca zero.

user$ sudo firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


public (active)
  target: default
  icmp-block-inversion: no
  interfaces: venet0:0 venet0
  sources: 
  services: ssh-vps http https
  ports: 8080/tcp 8080/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: echo-reply echo-request timestamp-reply timestamp-request
  rich rules: 

trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
    
por prismalytics.io 09.10.2017 / 09:41

1 resposta

0

Aqui estão 2 questões:

1) Você está tentando acessar o public zone, que também é o interface zone , já que tem 2 interfaces atribuídas a ele. O default destino para esta zona é aceitar icmp pacotes e rejeitar todo o resto.

2) Você precisaria de uma zona privilegiada (chamada de zona de origem) que permite que IPs específicos tenham acesso aos serviços do sistema. Essa zona privilegiada terá o destino ACCEPT e terá precedência sobre a public zone.

Então minha resposta seria essa.

1) A trusted zone deve lidar com o seu IP de origem (vindo do tráfego). Por exemplo:

firewall-cmd --permanent --zone=trusted --add-source=11.22.33.44 --add-source=55.66.77.88
firewall-cmd --reload

A trusted zone transmitirá o tráfego para a public zone. A public zone processará ssh-vps http https services. Esta é a maneira recomendada de configurar o firewalld.

2) Defina o destino como default para a zona trusted .

firewall-cmd --permanent --zone=trusted --set-target=default
firewall-cmd --reload
    
por 09.10.2017 / 12:08