Como posso permitir o tráfego proveniente de uma porta específica em regras de IPtables?

3

Eu tenho centos7 rodando em 2 VMs. O firewall está sendo executado nas duas máquinas VM. Suponha que algum aplicativo esteja sendo executado na máquina A que está usando a porta 5044. e eu tenho outra máquina chamada máquina B que tenta telnet esta máquina na porta 5044. Nesse tempo telnet é através da exceção dizendo

Trying 192.168.115.141...
   telnet: connect to address 192.168.115.141: No route to host

Mas após a comunicação do firewall de desligamento está funcionando bem. Mas eu não quero desativar o firewall. Então, como posso permitir que outra máquina B se comunique com a Máquina A. Você tem alguma idéia de onde e que tipo de política eu preciso definir nas tabelas de IP ou na lista de regras de firewall.

qualquer ajuda será apreciada.

    
por Yash Mangla 26.04.2018 / 12:58

1 resposta

2

O Centos 7 está usando firewalld por padrão. Atualmente, é uma interface de nível superior para o firewall fornecido pelo kernel iptables . Embora nenhum conhecimento real de iptables seja solicitado a usar firewalld , uma boa compreensão disso pode certamente ajudar. A interface principal para controlar firewalld é o comando firewall-cmd . Quando este comando é usado com --permanent , ele afetará apenas a configuração e não terá efeito visível (até que um recarregamento, um serviço seja reiniciado ou uma reinicialização). Quando esta opção não está presente, ela só terá efeitos imediatamente visíveis, sem alterar a configuração salva. Outras interfaces existem, por exemplo, uma GUI firewall-config .

firewalld tem muitos conceitos abstratos, como zonas . Por padrão, a zona pública está em uso, mas muitos são predefinidos (confiável, trabalho, dmz ...), cada um tendo uma função de uso e incluindo algumas configurações predefinidas (por exemplo: ssh é permitido por padrão na zona pública). Para um acesso de serviço restrito apenas a fontes específicas, é preferível usar uma zona alternativa (que pública). Talvez uma zona predefinida deva ser eleita, mas enfim, vamos criar uma nova, amarrá-la com uma fonte (IP de MachineB) e permitir a porta TCP 5044. Digamos que o IP de MachineB seja 10.0.3.66 (uma outra fonte válida seria exemplo, toda a LAN como fonte, para este exemplo, que seria 10.0.3.0/24 ):

# firewall-cmd --permanent --new-zone peervm
# firewall-cmd --permanent --zone peervm --add-source 10.0.3.66
# firewall-cmd --permanent --zone peervm --add-port 5044/tcp

Os efeitos na configuração são visíveis, por exemplo:

# egrep -r '10.0.3.66|5044' /etc/firewalld
/etc/firewalld/zones/peervm.xml.old:  <source address="10.0.3.66"/>
/etc/firewalld/zones/peervm.xml:  <source address="10.0.3.66"/>
/etc/firewalld/zones/peervm.xml:  <port protocol="tcp" port="5044"/>

A alteração é ativada com este comando:

# firewall-cmd --reload
success

Isso reconstruirá as regras de iptables subjacentes, com os efeitos visíveis, por exemplo, com:

# iptables-save |egrep '10.0.3.66|5044'
-A POSTROUTING_ZONES_SOURCE -d 10.0.3.66/32 -g POST_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A FORWARD_IN_ZONES_SOURCE -s 10.0.3.66/32 -g FWDI_peervm
-A FORWARD_OUT_ZONES_SOURCE -d 10.0.3.66/32 -g FWDO_peervm
-A INPUT_ZONES_SOURCE -s 10.0.3.66/32 -g IN_peervm
-A IN_peervm_allow -p tcp -m tcp --dport 5044 -m conntrack --ctstate NEW -j ACCEPT

O uso de uma camada de abstração pode gerar muitas regras padronizadas, como acima, para o que poderia ser basicamente feito com apenas uma regra iptables (colocar entre algumas regras padrão não mostradas aqui):

# iptables -I INPUT -s 10.0.3.66/32 -p tcp --dport 5044 -j ACCEPT

Assim, quando proficiente com iptables , nos casos mais simples, ou no outro extremo do espectro, para casos muito complexos não facilmente cobertos com firewalld , deve-se considerar o uso de regras iptables diretas com outro conjunto de ferramentas de configuração salvas, por exemplo, no CentOS usando iptables-services em vez de firewalld .

    
por 28.04.2018 / 15:08