Como negar acesso a uma porta específica quando o destino NÃO é um host específico?

4

Estou tentando DENY acessar a porta 1000 quando ela está sendo acessada por meio de qualquer host ou IP que NÃO seja um host específico.

Ou seja,
Se eu tentar acessar o serviço em sub.domain.com:1000 I deve entrar.
Se eu tentar acessar o serviço em sub.domain2.com:1000 I não deve entrar, mesmo que ambos os domínios sejam registros A apontando para o mesmo servidor.

Estou tentando realizar isso usando o iptables com as seguintes regras, mas não está funcionando. Está permitindo conexões com qualquer host / ip de destino, não apenas aquele que eu configurei uma regra ACCEPT para.

iptables -A INPUT -p tcp --destination sub.domain.com --dport 1000 -j ACCEPT
iptables -A INPUT -p tcp --dport 1000 -j DROP

O sub.domain2.com neste exemplo, hospeda serviços diferentes, e é por isso que não consigo simplesmente remover esse ponteiro DNS.

    
por Patrik Alienus 02.01.2014 / 15:28

1 resposta

5

O IPTables está trabalhando no nível IP e TCP, por isso não conhece o DNS.

Quando um cliente cria uma conexão TCP com um nome DNS, primeiro procura o endereço IP correspondente ao nome DNS e, em seguida, conecta-se ao IP, não ao nome DNS.

Isso significa que o IPTables não pode saber a qual nome DNS um cliente está se conectando, ele só sabe para qual IP o cliente se conecta.

Se você especificar --destination sub.domain.com como um parâmetro, o IPTables simplesmente fará um nome procurar o IP que corresponde a esse nome e, em seguida, usar o IP em suas regras.

Se sua porta 1000 serve HTTP, seria possível configurar um servidor HTTP nessa porta para não manipular solicitações para domínios diferentes de sub.dominio.com, mas o IPTables não tem as informações necessárias para isso.

Se você pudesse colocar sub.domain.com e sub.domain2.com em dois IPs diferentes no mesmo servidor, o IPTables poderia negar o acesso a um, mas não ao outro, porque ele poderia decidir com base no IP.

Isso ilustra muito bem que o Domain Name System está em cima de Transport (TCP) e Internet (IP), para mais detalhes, você pode ler o artigo da wikipedia sobre isso:

    
por 02.01.2014 / 16:38