Somente uma observação muiiiitttoooooo importante o REJECT ou DROP sempre vem por ultimo, primeiro vem o ACCEPT
Versão Imprimível
Somente uma observação muiiiitttoooooo importante o REJECT ou DROP sempre vem por ultimo, primeiro vem o ACCEPT
Senhor, as regras de iptables, seguem precedencia.
Portanto se ele está liberando tudo logo no começo não irá atender a sua necesside que é bloquear a porta 80. Portanto se você analizar as regras que ele colocou ( independente da Policy da Chain ) quando o pacote for recebido e atender a 1 condição, que é "pode tudo", automaticamente o pacote 'não irá mais verificar as demais regras.
Por tanto se o DENY ou REJECT forem os ultimos não adiantará absolutamente nada que é justamente o problema que ele está enfrentando.
OK, qualquer duvida adicional pode perguntar... Aproveite este tópico.
Caso não tenha entendido sua necessidade, mil perdões.
Citação:
Postado originalmente por whinston
Meu amigo,
Primeiro, quanto a ordem das regras, realmente deve-se colocar as ACCEPT antes dos DROP, mas quando se trata de CHAINS diferentes, não faz a mínima diferença em que ordem voce vai carrega-las dentro do seu script. Manter as regras juntas serve apenas para manter a organização do script...
ex.:
$IPTABLES -A FORWARD -s $LAN -d $WAN -j ACCEPT
$IPTABLES -A INPUT -p tcp -s $WAN -d $IP_EXTERNO --dport 22 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
faz o mesmo efeito que:
$IPTABLES -A INPUT -p tcp -s $WAN -d $IP_EXTERNO --dport 22 -j ACCEPT
$IPTABLES -A FORWARD -s $LAN -d $WAN -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
a ordem citada nesse exmplo não vai mudar a ordem em que o pacote vai percorrer as regras dentro do kernel.
Segundo, pelo que entendí, basta substituir essas 3 regras de FORWARD que voce postou aqui por 1 única que permita qualquer porta, exceto a 80. defina a politica padrão pra DROP e pronto.
ou seja:
no início da contrução das regras de FORWARD voce coloca
$IPTABLES -P FORWARD DROP
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport ! 80 -j ACCEPT
só isso (não se esqueça de permitir outras coisas que voce não tenha postado). e na POSTROUTING pode manter o que voce já tem.
Acredito que seja isso. Se alguém discordar, por favor posta aí para ajudar nosso amigo que gosta de mandar usuários metidos a esperto pro RH... :)
Abraços a todos.
valeu velhinho, mas olha soh..vc falo que accept vem antes do drop e postou:
$IPTABLES -P FORWARD DROP
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport ! 80 -j ACCEPT
ou seja, drop antes. como q fica, rs? to meio perdido
Citação:
Postado originalmente por sadirj
Amiguinho Whinston, vou tentar te explicar rapidamente, a sua dúvida de organização de Firewall.
Existem várias maneiras de se configurar um Firewall, com regras de DROP primeiro, com regras de ACCEPT primeiro e assim por diante, Porém tudo depende de como você irá planejar o seu Firewall. O que vc pretende ? O que vc quer fazer ? essas perguntas devem estar claras na sua cabeça. As respostas podem ser mais diversas ainda para resolver o seu problema inicial. Que erá um simples problema de precedencia.
A sugestão de configuração do nosso amigo sadirj é uma ótima forma de se começar a configurar um Firewall. Mas imagine um Firewall com um Script de 700 linha e você com uma necessidade pontual precisando bloquear este acesso. Estamos falando aqui de uma necessidade coorporativa certo ?.
Ou você começa a criar o seu script de firewall com um conhecimento geral sobre as suas necessidades ou a chance do seu firewall ter uma brecha de segurança é muito grande. Você precisa ter conhecimento suficiente sobre as regras e estruturas do iptables para fazer o que precisa.
Quanto o que vem primeiro ou depois se é ACCEPT ou DROP, de novo depende da necessidade atual. Ficando claro esses pontos
O iptables (Netfilter ) utiliza tabelas de INPUT, FORWARD, OUTPUT, NAT e MANGLE, essas tabelas são responsáveis pela implantação de um firewall, cada uma com sua caracteristica. As regras postadas pelo sadirj onde ele utiliza a opção P, ele está se referindo a POLICE da CHAIN FORWARD ou seja, se ele está DROPando a CHAIN FORWARD, isso significa que qualquer coisa que passar de uma interface para outra será DROPado. OK. Usando uma simples analogia, seria você colocar um cadeado na geladeira.
Quando ele fala da regra $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Ele está se referindo que todas as conexões que forem estabelecidas e amarradas ele faz o seu caminho de volta sem necessidade de uma regra adicional para isso.
Com essa regra ele controla as conexões que j;a foram estabelecidas a partir de alguma regra. Sem a necessidade de efetuar a regra de volta. ( OBS. O ipchains vc precisava fazer isto.)
Usando a analogia ainda é como se você abrisse a geladeira para pegar o leite, e depois que usar o leite você coloca o leite devolta a geladeira ( sem ter que abrir e fechar a geladeira )
E para finalizar a regra $IPTABLES -A FORWARD -p tcp --dport ! 80 -j ACCEPT
Simplesmente Libera tudo exceto a porta 80 utilizando o wildcat ! como parametro para exceto.
As regras de NAT é uma outra estoria que se você tiver necessidade eu te explico.
Mediante tudo isso, acredito que você possa ter concluido que existem várias maneiras de se configurar um Firewall, e que depende de que e pra que você o quer. E que todos os lugares o levam a um unico objetivo que é bloquear a porta 80. O principal de tudo é que vc realmente tenha ententendido a diferença entre CHAIN e RULE e as suas polices.
Desculpe pelo texto confuso, mas é que o assunto é chato mesmo.
Depois dessa você vai mandar não só um mas uns tres para o RH
:wink: