Você está na página 1de 5

Introduo: o que esperar deste artigo

Ao contrrio de outros artigos e tutoriais sobre iptables, este no se dispe a ensinar sua sintaxe, como construir regras e como bloquear este ou aquele tipo de pacote. Artigos meus futuros podero passear por este caminho, muito embora j se tenha muito material na Internet sobre isto. Ele se destina a explicar a origem dos termos "tabelas" do iptables, o que e para que ser!em as tabelas nat, filter e mangle. "nde, ou seja, em qual tabela se de!e colocar as regras para este ou aquele objeti!o. Este artigo apro!eita tamb m para esclarecer algumas diferen#as interessantes, como para que ser!e o $E%E&' e qual a diferen#a dele para o ($")* Algumas defini#es sero rele!antes e merecem serem citadas antes da leitura+

,uando falo de "n-!el" no artigo .ex+ n-!el de Enlace/ estou me referindo ao modelo de camadas '&)0I), composto por apenas ,1A'$" camadas e no 2E'E como no modelo "2I. 3o modelo '&) as camadas so o E34A&E, onde se tem na sua imensa maioria o padro de rede Ethernet como refer5ncia+ " n-!el de $E(E, respons!el pelo roteamento, onde se tem o I) na sua !erso 6 como mais significati!o7 " n-!el de '$A32)"$'E, com seus pacotes 1() e '&), dentre outros7 " o n-!el de aplica#o, com os protocolos 8'), 9''), etc7 " n-!el 8:2I&" no fa; parte do modelo de camadas '&)0I), pois restrito ao fabricante da placa.

Em termos de nomenclatura geralmente se generali;a chamando tudo de pacote. )or m, quando se quer deixar mais espec-fico em qual n-!el estamos lidando, pode<se se usar a nomenclatura "quadro" para o n-!el de Enlace, "datagrama" ip para o n-!el de rede e "pacote" para o de transporte .sendo que o '&) muitas !e;es usam a pala!ra "segmento"/. 3a aplica#o o que tem so dados. =as como o iptables atua em princ-pio nas camadas de rede, ip de origem ou de destino, e na de transporte .porta origem e destino/, o pacote pode ser considerado, neste artigo, como um termo gen rico .">2+ certo que o iptables tamb m permite atuar no enlace e at mesmo na aplica#o, com os de!idos m?dulos adicionados/.

Por onde passa um datagrama


" iptables, presente no Linux a partir do @ernel A.6, usa o conceito de "ganchos" do netfilter, permitindo a!aliar um datagrama em alguns pontos dentro do @ernel.

&onforme pode ser obser!ado na 8igura B, um datagrama I) dentro do @ernel do 4inux passa por !rias etapas.

>asicamente um datagrama I)

de um dentre tr5s tipos+

B. " datagrama chegou por uma de suas interfaces, o n-!el de enlace !iu o seu mac address no quadro ethernet. &ontudo o datagrama no destinado ao nCmero I) desta mquina. 2e a mquina no for configurada para atuar como roteador, o datagrama descartado. 2e a mquina esti!er atuando como roteador, o datagrama de!e ser roteado por ela. A. " datagrama chegou por uma de suas interfaces, o n-!el de enlace !iu o seu mac address no quadro ethernet e ele destinado ao I) desta mquina, logo de!e ser entregue a um de seus processos locais .se for 9''), por exemplo, de!e ser entregue ao apache/. D. " datagrama I) foi gerado por um de seus processos locais, por um cliente de email por exemplo, e de!e ser repassado a outra mquina. &ada datagrama passa por uma etapa de roteamento, onde o @ernel decide para onde ele !ai. 3esta etapa que so consultadas, se for o caso, as tabelas de roteamento. "s do tipo B de!em serem roteados para fora da mquina, que no caso de!e estar atuando como roteador, sendo que na etapa de roteamento o @ernel decide qual o pr?ximo ponto de rota que de!e ser usada. 2e for para o I) desta mquina, o roteamento que !erifica isto .isto , recebe o datagrama, !5 que local e entrega ao n-!el de transporte, que ir repass<lo ao processo correspondente/. (a mesma forma, pacotes os gerados por processos locais tamb m passam pelo roteamento para serem encaminhados. 4ogo, todos os datagramas passam de uma forma ou de outra, pela etapa de roteamento. &aso ele precise ser repassado a outra mquina .somente se ela esti!er atuando como roteador I)/, a etapa de "repasse de pacotes" reali;a as altera#es necessrias, como a reescrita total do cabe#alho de enlace .trocando o =A& origem para o seu/, atuali;a#o do ''4, etc. E!idente que isto ap?s a deciso de roteamento, pois a escrita do cabe#alho de enlace le!a em conta o destino.

Ganchos do netfilter
" netfilter introdu;iu "ganchos", pontos ao longo do ciclo de !ida de um datagrama onde o mesmo pode ser a!aliado por regras de fireEall. A 8igura A destaca estes pontos.

)ode<se obser!ar pela 8igura A, que+ 1m datagrama destinado ao processo local+ )ode ser capturado para a!alia#o ao entrar na Interface, pelo gancho B, chamado pelo @ernel de )$E$"1'I3F. )ode ser capturado para a!alia#o pelo gancho 6, chamado pelo @ernel de I3)1'. 1m datagrama gerado por um processo local+ )ode ser capturado para a!alia#o pelo gancho G, chamado pelo @ernel de "1')1'.

)ode ser capturado para a!alia#o pelo gancho D, chamado de )"2'$"1'I3F.

1m datagrama que esteja apenas passando por esta mquina, no gerada e no destinada ao ip ela+ )ode ser capturado para a!alia#o ao entrar na Interface, pelo gancho B, chamado pelo @ernel de )$E$"1'I3F. )ode ser capturado para a!alia#o pelo gancho A, chamado pelo @ernel de 8"$HA$(. )ode ser capturado para a!alia#o pelo gancho D, chamado de )"2'$"1'I3F.

)or existirem estes ganchos e a possibilidade de a!aliar um datagrama e tomar decises de fireEall sobre ele nestes pontos, o iptables introdu; filas de regras .listas/ nestes pontos. &ada gancho pode possuir um ou mais conjuntos de regras.

Enfim, as tabelas
Ao todo so tr5s as tabelas mais importantes do iptables+ filter nat mangle

A tabela filter de!e conter apenas regras que determinam se um pacote de!e ser aceito ou no. 3esta tabela no poss-!el colocar regras para alterar algum parImetro, como ip ou porta. A tabela nat ser!e para reali;ar opera#es de tradu#o sobre I) e0ou porta, tanto de origem como de destino, muito embora tamb m permita recus<lo .no ser abordada neste artigo/. )or fim a tabela mangle ser!e para reali;ar altera#es mais profundas e bi;arras nos pacotes, como alterar o ''4, '"2, etc .no ser abordada neste artigo/. As a#es operadas sobre um pacote basicamente podem ser recus<lo ou deix<lo passar, mas o iptables possui !rias maneiras de "recusar" e ainda permite reali;ar logs. &omo dito, opera#es de altera#o de pacotes, seja I) ou porta, no pode ser reali;ada na tabela filter, mas sim na nat ou mangle. Em termos de filtragem, para impedir que pacotes que no queremos entrem na mquina, nos interessa. a tabela filter que

A tabela filter
Entram nesta tabela o conjunto de regras com finalidades gerais, como bloquear, negar, reali;ar logs. As regras existentes nesta tabela no tem poder de alterar as configura#es dos pacotes. >asicamente todas as regras de filtragem esto nesta tabela, pois ela de uso geral. )ara inserir uma regra em uma lista, pode<se usar <A para A))E3(, inserindo<a no final, ou <I para I32E$', inserindo<a 3" I3:&I" .a sintaxe profunda das regras no o foco deste artigo/. A tabela filter possui tr5s conjuntos de regras, ou seja, tr5s listas sendo que cada uma delas est associada a um gancho+ I3)1'+ esta fila de regras recebe este nome justamente por ser aplicada aos pacotes na posi#o do gancho 6. 4ogo apenas os pacotes destinados ao ip da mquina atual sero a!aliados por e!entuais regras existentes nesta tabela. 2intaticamente para inserir regras nesta lista usa<se os parImetros de iptables .o comando est incompleto/+ iptables -t filter -A INPUT [regra] "1')1'+ esta fila de regras recebe este nome justamente por atuar no gancho G .tamb m chamado pelo @ernel de "1')1'/. 4ogo sero a!aliados pelas regras presentes nesta lista apenas os pacotes originados por processos locais da mquina. 2intaticamente para inserir uma regra nesta lista usa<se o comando+ iptables -t filter -A OUTPUT [regra] 8"$HA$(+ esta fila de regras recebe este nome justamente por atuar no gancho A .tamb m chamado pelo @ernel de 8"$HA$(/. 4ogo sero a!aliados por estas regras os pacotes que esto sendo repassados por esta mquina, no so para ela e nem originados por ela. 2intaticamente para inserir uma regra nesta lista usa<se o comando+

iptables -t filter -A FOR AR! [regra] A tabela filter a tabela bsica do iptables e so em suas listas que de!em ser inseridas regras de filtragens gerais, que no so complexas, como proibir ou permitir ips, portas, etc. 3a 8igura D pode ser obser!ado a atua#o do conjunto de regras desta tabela sobre os ganchos.

&ada regra pode reali;ar uma determinada a#o ao pacote .representado graficamente por <j/, sendo que na filter as seguintes a#es so poss-!eis+ $E%E&'+ o pacote, uma !e; que casou com a regra, rejeitado. (emais regras existentes so ignoradas e o pacote definiti!amente j te!e seu destino selado+ ser descartado. 2e for usado $E%E&' o remetente do pacote ser a!isado com uma mensagem de erro, normalmente um I&=) de "porta inating-!el" .mas o iptables permite ao usurio mudar o tipo de retorno se ele quiser/. Em termos de seguran#a pode no ser interessante de!ol!er uma resposta ao remetente, pois isto iria ine!ita!elmente dar a conhecer a ele o nCmero I) do fireEall. ($")+ o ($") tem o mesmo efeito do $E%E&' e a mesma aplica#o, com a diferen#a de que no retornado nenhuma mensagem de erro ao remetente .ele no saber o que aconteceu com o pacote/. Em se tratando de 8"$HA$( .repasse/ pode ser con!eniente usar ($") ao in! s de $E%E&' para que um poss-!el atacante no saiba o I) do fireEall que rejeitou o seu pacote. =as isto de!e ser bem analisado, pois se o remetente no souber o que ocorreu, ele poder ficar ainda tentando !rias !e;es at desistir por time out. 2e o teu fireEall o roteador principal, no tem porque escond5<lo, pois ele um ponto de rota mesmo. =as se ele for transparente .atuando em modo bridge/, a- pode ser uma boa estrat gia no dar nada ao remetente. A&&E)'+ Aceita um pacote, deixando que ele siga o seu percurso. " A&&E)', como os anteriores, causa o t rmino de teste nesta tabela, ou seja, o pacote j foi aceito e no ser mais testado por nenhuma outra regra posterior nesta tabela .mas ainda poder ser testado por outra tabela, como pela mangle ou nat, por exemplo. Acredito que o Cnico exemplo onde isto possa acontecer ele ser A&EI'" no filter 8"$HA$(, mas ser ($")A(" no nat )"2'$"1'I3F, j que o nat tem tamb m o poder de reali;ar ($")/. 4"F+ reali;a um log deste pacote no sistema .geralmente no 0!ar0log0sJslog ou messages/. Ao contrrio das demais a#es .($"), A&&E)' e $E%E&'/, ao aplicar um log no pacote o mesmo ainda continua sendo testado pelas regras seguintes da fila atual. 1ma a#o do tipo 4"F no causa o t rmino do teste. &aso seja do interesse do usurio ele pode configurar uma mensagem de log que aparecer nos logs facilitando a anlise.

Concluso
Este artigo te!e como moti!a#o apenas mostrar a estrutura interna do iptables e no ensinar a escre!er regras sintaticamente corretas e poderosas. Atra! s do entendimento correto de como o iptables atua, pode<se determinar onde e de que forma pacotes de!em ser filtrados+ 2e estou configurando um fireEall pessoal, na minha mquina des@top ou no meu ser!idor, sendo que ela no roteador+ as regras para filtrar o conteCdo de!ero ir na tabela filter, na lista I3)1' para filtrar o que est entrando na minha mquina, destinada ao I) dela e na tabela filter, lista "1')1' para os pacotes gerados pela minha mquina. 2e estou configurando um fireEall de rede, que filtra todo o conteCdo que entra e sai da minha rede para o mundo+ as regras iro todas na tabela filter, lista 8"$HA$(. )ara representar o destino .est entrando ou est saindo/ posso usar o parImetro <i interface ou <o interface .o 8"$HA$( o Cnico que permite <i e <o na mesma regra, querendo di;er, se esti!er entrando por aqui e saindo por ali.../. 2e meu fireEall um fireEall de rede, mas tamb m possui alguns ser!i#os nele, como proxJ ou de email, de!o inserir regras tando no filter I3)1'0"1')1' para definir a pol-tica dele enquanto ser!idor, como no filter 8"$HA$( para proteger minha rede. $egras adicionadas no filter 8"$HA$( no atuam sobre pacotes destinados ao nCmero I) de uma mquina. 2e desejo alterar caracter-sticas de ip ou porta, trocando<as, de!o usar a tabela nat e para isto preciso aguardar o pr?ximo artigo. +<(

http://www.vivaolinux.com.br/artigo/Script-de-firewall-completissimo/?pagina=2 http://www.vivaolinux.com.br/topico/Squid- ptables/!irewall-inicio-automatico "ra incluir seu script no boot# seguinte: $. %le deve estar em /etc/init.d/ &o seu '( esta). 2. %le precisa ser execut(vel &chmod +x) &o seu '( est(). *. %le precisa ser lido pelo rc.local... para incluir ele na iniciali+a,-o execute comando a seguir. .as aten,-o: s/ vai funcionar se voc0 executar como root dentro da pasta /etc/init.d/ 1/digo:
#update-rc.d [script] defaults

2. "ara remover da iniciali+a,-o# fa,a: 1/digo:


#update-rc.d [script] remove

Você também pode gostar