Estou aprendendo como usar o iptables
e estou escrevendo um firewall muito simples no Ubuntu.
Usando apenas a tabela de filtros , adicionei as seguintes regras
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
como eu quero deixar passar apenas os pacotes que eu desejo.
Então eu tentei adicionar regras para fazer conexões HTTP simples e, assim, para uma primeira tentativa, adicionei
iptables -A INPUT -p tcp -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
a primeira linha para aceitar todo o tráfego TCP e a segunda para aceitar as respostas do DNS.
Da mesma forma, para a cadeia OUTPUT, adicionei
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
Mas quando tento usar lynx
, a conexão não ocorre.
Eu acho que o único problema é o DNS, já que todo o tráfego TCP é aceito.
Mas os pacotes de / para a porta 53 podem passar pelo firewall ... então, onde está o problema?
Eu adicionei as duas regras a seguir e agora funciona.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
e usando o Wireshark, percebi que as solicitações de DNS também são de / para a interface de loopback. Eu nunca imaginei isso ... por quê?