iptables permite INPUT a partir de um URL específico

1

Estou usando o DD-WRT e posso fazer telnet para adicionar regras de iptable.

Estou procurando uma regra que permita IN de um endereço específico (digamos, mydomain.com) na porta 80 que apontará para um IP interno (digamos, 192.168.0.200). Nota: Eu adicionei um registro A a mydomain.com para apontar para o meu endereço IP.

Eu tentei:

iptables -I INPUT -p tcp --src mydomain.com --dport 80 -j ACCEPT

iptables -I INPUT -p tcp --port 80 -m string --hex-string "|08|mydomain|03|com" -algo bm -j ACCEPT

Eu sei que posso fazer login na interface da web do DD-WRT e usar o encaminhamento de porta para fazer isso. E se eu fizer isso, funcionará, mas não quero permitir todas as solicitações na porta 80, apenas as com mydomain.com. Isso é possível?

    
por gibsonhill 30.03.2015 / 17:07

1 resposta

1

Você não pode fazer isso. Uma solicitação TCP é iniciada por um pacote SYN que contém nenhum dado . Você obtém os números de porta e os endereços IP, mas não o nome do host.

Você pode escrever algumas regras complicadas que aceitam a conexão e procurar o primeiro pacote com dados para corresponder ao cabeçalho Host - que não é garantido que esteja no primeiro pacote de dados, mas geralmente é. Então você mataria a conexão se o primeiro pacote de dados não fosse uma solicitação para o seu domínio. Claro, então há o problema se a solicitação segundo na conexão. E que alguém realmente tentando ignorar o seu firewall pode fazer todos os tipos de truques. Por exemplo, coloque seu domínio em algum outro lugar do pacote.

Se você realmente precisa fazer filtragem como essa, você precisa de um proxy HTTP.

PS: Não tenho certeza do que você está tentando combinar com essa string hexadecimal. O cabeçalho Host está em ASCII simples, não no formato de cadeia de comprimento do DNS. Então, seria apenas --hex-string "mydomain.com" .

    
por 30.03.2015 / 18:10