Como permito que apenas determinados IPs acessem uma determinada porta?

Como permito que apenas determinados IPs acessem uma determinada porta?

Tenho um servidor central com um banco de dados instalado e vários servidores distribuídos que chamam esse banco de dados central. Por razões de segurança, gostaria que o servidor central fosse acessado apenas por servidores conhecidos.

Então, o que estou tentando conseguir aqui é permitir que a porta 5432 seja acessada pelos servidores 192.168.1.5 e 192.168.2.6.

iptables -A INPUT -s 192.168.1.5,192.168.2.6 -d ??.??.??.?? -p tcp --dport 5432 -j ACCEPT

Isso está correto?

O que não entendo é a opção de especificar um destino. O destino no INPUT é sempre o próprio servidor, não? Por que então é configurável? Preciso defini-lo ou, ao deixá-lo de fora, ele apontará automaticamente para o mesmo servidor?

Responder1

Primeiro, você precisa dividir sua regra em duas regras (tentei usando um comando especificando ambos os IPs e parece funcionar). O resultado final são duas regras como as seguintes:

iptables -A INPUT -s 192.168.1.5 -p tcp --dport 5432 -j ACCEPT
iptables -A INPUT -s 192.168.2.6 -p tcp --dport 5432 -j ACCEPT

Em segundo lugar, você pode omitir -dpara corresponder a qualquer IP. Como se trata de INPUTuma cadeia, é necessário corresponder a um dos IPs da máquina.

Terceiro, não se esqueça de ter uma DROPregra porque se você tiver apenas essas duas regras ACCEPTcomo política padrão para INPUTa cadeia. Todas as conexões serão permitidas.

Além disso, pode ser necessário permitir RELATEDo ESTABLISHEDtráfego para que os pacotes fluam em ambas as direções. Isso depende das suas regras (o que é permitido e o que é descartado). Aqui está a regra:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

informação relacionada