Quando você envia uma solicitação HTTP para o outro servidor, você está usando o TCP. Primeiro, um pacote SYN vai para o outro servidor a partir de uma porta alta aleatória, então você receberá uma resposta ACK. Finalmente, você envia SYN / ACK para o servidor e o servidor responde com o documento solicitado (em vários pacotes). Suas regras não permitem que o pacote ACK seja recebido e, portanto, a conexão não pode ser estabelecida. Adicione uma regra como:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Você não recebe logs do iptables gratuitamente. Suas regras devem se parecer com:
# if no rule matched, the input should be dropped
-P INPUT DROP
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# etc
# the limit prevents your logs from being flooded if there are a lot packets being captured
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied" --log-level debug
Observe que omiti iptables
antes dos comandos, recomendo usar iptables-restore
(ou iptables-apply
para teste) para evitar o bloqueio se uma regra não se aplicar. O arquivo a ser passado para o comando se parece com:
*FILTER
# your rules here, for example:
-P INPUT DROP
-P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT
Uma nova linha depois da linha COMMIT
é obrigatória.
Por padrão, as entradas vão para /var/log/kern.log
. Não é bom se você quer diferenciar entre mensagens do kernel e do iptables, então crie um filtro para o rsyslog em /etc/rsyslog.d/iptables.conf
contendo:
:msg,contains,"iptables denied" /var/log/iptables.log
& ~
Isso filtrará os erros do iptables e os enviará para /var/log/iptables.log
.