SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
1


 MINICURSO ­ CONTROLE E SEGURANÇA COM IPTABLES

Ministrante: Edson Marco Ferrari Junior
Local: CESUMAR ­­ Centro Universitário de Maringá
Carga horária: 8 horas
Data: 18 de novembro de 2006


Sumário
1. O que é um Firewall.......................................................................................................................    ........3
2. Conceito de protocolos..........................................................................................................      ................4
     2.1 O que é um protocolo de rede..............................................................................................            ..........4
         2.1.1 Protocolo TCP...............................................................................................    .........................4
             2.1.1.1 Estabelecendo uma conexão.......................................................................               ....................4
             2.1.1.2 Flags do protocolo TCP...................................................................................            ...............5
         2.1.2 Protocolo UDP.............................................................................................     ..........................5
         2.1.3 Protocolo ICMP...................................................................................................................      ...5
 3. Conceito de portas.................................................................................................................   ...............5
 4. IPTABLES.................................................................................................................................. ..........7
     4.1 Principais funções do iptables..................................................................................          .....................7
     4.2 Tabelas..................................................................................................................
                                                                                                                               .........................7
         4.2.1 FILTER.................................................................................................................................. .7
         4.2.2 NAT.................................................................................................................................
                                                                                                                                                  .......7
         4.2.3 MANGLE..................................................................................................     ............................7
     4.3 Chains..................................................................................................................
                                                                                                                              ..........................8
         4.3.1 Chains embutidas....................................................................................................       ...............8
             4.3.1.1 Chains da tabela FILTER..........................................................................             .....................8
             4.3.1.2 Chains da tabela NAT..........................................................................           ..........................8
         4.3.2 Chains criadas pelo usuário.........................................................................................            ..........9
         4.3.3 Trabalhando com as chains..............................................................................................             ......9
             4.3.3.1 Especificando o policiamento padrão de uma chain....................................................9           .
     4.4 Regras.................................................................................................................
                                                                                                                             ...........................9
         4.4.1 Adicionando regras.....................................................................................       .........................10
         4.4.2 Listando regras.............................................................................................................    ........10
         4.4.3 Apagando regras......................................................................................      ............................11
         4.4.4 Posição das regras...................................................................................................      .............12
         4.4.5 Inserindo regras em posição definida...........................................................................                  .......12
         4.4.6 Substituindo uma regra.........................................................................................          ...............12
     4.5 Definindo regras..................................................................................................   ........................13
         4.5.1 Tipos de protocolos..............................................................................................       ................13


Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
2

           4.5.1.1 TCP.........................................................................................................
                                                                                                                            ......................13
           4.5.1.2 UDP.......................................................................................................
                                                                                                                           .......................13
           4.5.1.3 ICMP...............................................................................................
                                                                                                                     .............................13
        4.5.2 Endereços de origem...................................................................................................     .........14
        4.5.3 Endereços de destino.........................................................................................................    ...14
        4.5.4 Portas de destino........................................................................................... .......................14
        4.5.5 Portas de origem..........................................................................................  ........................15
        4.5.6 Definindo múltiplas portas...............................................................................        ...................15
           4.5.6.1 Definindo uma faixa de portas.............................................................................             ........15
           4.5.6.2 Definindo várias portas..............................................................................................        ..15
        4.5.7 Definindo a interface...................................................................................    ........................15
        4.5.8 Endereço MAC.................................................................................................................   ....16
        4.5.9 Pacotes SYN.........................................................................................................................16
        4.5.10 Estado da conexão...........................................................................................    ...................16
        4.5.11 Exceções à regra.............................................................................................  ....................17
        4.5.12 Alvo das regras................................................................................................ ...................17
           4.5.12.1 DROP..........................................................................................................................17
           4.5.12.2 REJECT......................................................................................................  ................17
           4.5.12.3 LOG...........................................................................................................
                                                                                                                                 .................18
           4.5.12.4 RETURN................................................................................................    ....................18
           4.5.12.5 DNAT............................................................................................. ............................19
           4.5.12.6 SNAT..........................................................................................................................19
           4.5.12.7 MASQUERADE...................................................................................            .....................19
           4.5.12.8 Limite de conferencia de uma regra....................................................................                 .......19




Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
3


1. O que é um Firewall
       É um dispositivo de rede que tem a função de regular o tráfego que entre redes distintas, 
controlar   as   conexões   entre   elas.   Podemos   entender   por   firewall   filtros   de   pacotes   e   proxy   de 
protocolos.




       O  Firewall tem como objetivo proteger uma máquina ou rede contra acessos indesejados, 
controlar estes acesso e manter informações sobre as conexões.


2. Conceito de protocolos
      Para entendermos um firewall é necessário um conhecimento básico de protocolos de redes. 
Pelo menos os dois mais importantes: TCP e UDP.

         2.1 O que é um protocolo de rede
      É   um   padrão   que   específica   o   formato   de   dados   e   as   regras   a   serem   seguidas   para 
comunicação de máquinas em uma rede.

         2.1.1 Protocolo TCP
         O protocolo TCP baseia­se na comunicação ponto­a­ponto entre duas máquinas em rede.
         Este protocolo possui algumas características será útil na configuração de um firewall:
         •    Orientado a conexão: Antes do início da transferência de dados é necessário que ambas 
              as partes estejam de acordo.
         •    Confiabilidade: O TCP confirma a entrega de todos os pacotes ao destinatário.
         •    Three   Handshake:  Mecanismo  de  estabelecimento  e  finalização  de  conexão  a  três  e 

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
4

              quatro tempos, respectivamente, o que permite a autenticação e encerramento de uma 
              sessão completa. O TCP garante que, no final da conexão, todos os pacotes foram bem 
              recebidos.

         2.1.1.1 Estabelecendo uma conexão
        Geralmente, em uma conexão TCP existe a máquina designada servidor (a máquina que inicia 
o serviço e fica aguardando uma conexão) e em outro extremo o cliente (a máquina que se conecta a 
um servidor).
        Para iniciar a conexão a máquina cliente envia ao servidor um pacote TCP com a flag SYN 
ativa, e aguarda que o servidor aceite e lhe devolva um pacote com as flags  SYN+ACK  ativas. O 
cliente para informar o recebimento da confirmação do servidor devolve um pacote com a flag ACK 
ativa.
         Em cada pacote contém o número de identificação do pacote.




         2.1.1.2 Flags do protocolo TCP
         •    SYN: Quando setado em 1, significa que é um pacote de pedido de abertura de conexão.
         •    ACK:  Quando setado, sinaliza que este segmento contém o próximo octeto que o host 
              origem espera receber. É a flag de confirmação de recebimento de pacotes.
         •    FIN:  Esta   flag   é   a   informação   de   término   da   transferência   de   pacotes.   Solicita   a 
              desconexão. Este flag também deve ser confirmado.
         •    RST:  A flag  reset  indica que a conexão deve ser abortada e reinicia­se novamente  a 
              conexão.

         2.1.2 Protocolo UDP
       É um protocolo considerado não seguro. Isto se deve por ele não ser orientado a conexão.  O 
pacote poder ser entregue ou não, ele não irá tratar isto. Mas tem como vantagem a velocidade na 
entrega dos pacotes. Esta velocidade se deve já que ele não necessita fazer todas as verificações que o 
pacote TCP realiza. Este padrão de comunicação é muito utilizado em transmissão de vídeo e voz. 

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
5

Comunicações que necessitam de velocidade e não a garantia da entrega do pacote.

         2.1.3 Protocolo ICMP
         O  protocolo  ICMP é utilizado para reportar erros na rede. Mas ele também serve para a 
localização de hosts, através da aplicação PING. Também é possível com este protocolo descubrir a 
rota   utilizada   para   se   chegar   a   determinado   host,   com   a   aplicação  TRACEROUTE  (Linux,   ou 
TRACERT no Windows).


         3. Conceito de portas
       Portas são links para conexões de um computador para outro. Cada porta somente pode ter um 
serviço por protocolo.
       Para   efetuar   uma   conexão   é   necessário   que   no   computador   servidor   tenha   um   serviço 
aguardando  em   determinada   porta,   e   o   computador   cliente   saia   por   determinada   porta   para   se 
conectar.
        Para  direcionar a qual serviço o  cliente deseja conectar, ele informa no protocolo qual  o 
endereço do destino, e em qual porta ele irá se conectar, e qual porta ele está utilizando para iniciar 
esta conexão.
         Para exemplicar, utilizaremos uma conexão SSH.
        Para se fazer uma conexão SSH é necessário que haja um serviço aguardando a conexão em 
determinada porta, como no caso do SSH já é definida que será a porta 22. O computador cliente irá 
iniciar a conexão alocando uma porta nele, uma porta maior que 1024 (portas abaixo destas são portas 
reservadas), por exemplo a porta 1030, e vai conectar­se ao servidor na porta 22.
         ssh edmafer@127.0.0.1
         Visualização da conexão:




      Na primeira tela nós temos uma conexão  ssh  efetuada (neste caso estamos conectados na 
mesma máquina), na segunda tela nós podemos analisar as conexões efetuadas e utilizamos um filtro 


Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
6

(grep :22) para facilitar a visualização.
       Observaremos que nós possuímos um serviço que está com o estado ESTABELECIDA que 
tem como endereço local 127.0.0.1:33730 e a remota o endereço 127.0.0.1:22, na porta 22 um serviço 
com o estado OUÇA que é o servidor ssh aguardando uma nova conexão.
       A terceira é justamente o contrário, já que o teste foi testado na máquina local. É o servidor no 
endereço 127.0.0.1:22 e o cliente no endereço 127.0.0.1:33730.
         As portas abaixo de 1024 são portas reservadas para os serviços mais comuns, como exemplo:
    •    ftp porta 21 TCP
    •    ssh porta 22 TCP
    •    telnet porta 23 TCP
    •    smtp porta 25 TCP
    •    dns porta 53 UDP
    •    http porta 80 TCP
    •    pop3 porta 110 TCP
       Esta é uma lista resumida dos serviços mais comuns, é possível estar verificando os serviços 
mais comuns em: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
       As portas acima de 1024 são liberadas para outros serviços, e devem ser tratadas com muita 
atenção em um firewall. Estas portas devem obrigatoriamente ser bloqueadas e ir liberando somente o 
que é necessário.


         4. IPTABLES
        Netfilter é um módulo no kernel do Linux disponível desde o kernel versão 2.4.x que lhe 
abilita as funções de firewall, NAT e Log de utilização. Técnicamente o conhecido apenas como 
iptables.
       Iptables é o nome dado a ferramenta em linha de comando que configura este módulo. Esta 
ferramenta permite configurar as regras de firewall, NAT e logs.

         4.1 Principais funções do iptables
         a) Listar as regras de filtragem dos pacotes
         b) Adicionar, remover ou modificar as regras de filtragem dos pacotes
         c) Listar, apagar por regras os contadores das regras de filtragem dos pacotes

         4.2 Tabelas
       Tabelas é o local onde são armazenados os  chains  e conjuntos de regras com determinadas 
características em comum. As tabelas são referenciadas através da opção ­t e há 3 tabelas padrões no 

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
7

IPTABLES.

         4.2.1 FILTER
        Tabela padrão, caso não seja definido uma tabela com a opção  ­t.  Nesta tabela estarão as 
regras de filtragem e controle dos pacotes.

         4.2.2 NAT
        Tabela que contém regras que irão modificar conexões. Regras que gerarão outras conexões 
através de masquerading, source nat, destination nat, port forwarding.
       As   regras   contidas   nesta   tabela  serão  verificadas  antes   da   tabela  filter,   já   que   elas  irão 
modificar as regras.

         4.2.3 MANGLE
         Esta tabela ser para modificações especiais no cabeçalho dos pacotes. Esta tabela contém 
cinco   chains:  PREROUTING,  POSTROUTING,  INPUT,   OUTPUT  e  FORWARD.   As   regras 
contidas nas chains desta tabela serão verificadas antes das regras de outras tabelas.
      Como exemplo de utilização de uma regra na tabela mangle seria a alteração a alteração do 
TOS (Type of Service) do pacote.
        Usando o alvo TOS pode­se especificar a prioridade de uma pacote, tendo como valores 
aceitos:
         Espera Mínima 
                   É especificado através de Minimize­Delay, 16 ou 0x10 
         Máximo Processamento 
                  É especificado através de Maximize­Throughput, 8, ou 0x08. 
         Máxima Confiança 
                  É especificado através de Maximize­Reliability, 4 ou 0x04. 
         Custo mínimo 
                  Especificado através de Minimize­Cost, 2 ou 0x02. 
         Prioridade Normal 
                  Especificado através de Normal­Service, 0 ou 0x00.

         Regra para a chain output: iptables ­t mangle ­A OUTPUT ­p tcp ­­dport 80 ­j TOS ­­set­tos 16


         4.3 Chains
       Chains são os locais onde serão armazenadas as regras do firewall definidas pelo usuário. 
Existem dois tipos de chains, os embutidos e os criados pelo usuário.




Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
8


         4.3.1 Chains embutidas

         4.3.1.1 Chains da tabela FILTER
         •    INPUT ­­  Regras responsáveis pelo controle das  conexão que chegam com destino à 
              máquina
         Regra para a chain INPUT: iptables ­t filter ­A INPUT ­s 200.200.200.200 ­j DROP

         •    OUTPUT ­­ Regras responsáveis pelo controle das conexões que saem da máquina
         Regra para a chain OUTPUT: iptables ­t filter ­A OUTPUT ­d 200.200.200.200 ­j DROP

         •    FORWARD ­­  Regras responsáveis pelo controle das conexões que são redirecionadas 
              pela máquina
         Regra para a chain FORWARD: iptables ­t filter ­A FORWARD ­s 200.200.200.200 ­j DROP


         4.3.1.2 Chains da tabela NAT
    •    PREROUTING ­­ Consulta os dados que deverão ser modificados antes de serem enviados 
         para a chain
        Regra   para   a   chain   PREROUTING:  iptables  ­t   nat  ­A   PREROUTING  ­s   200.200.200.200  ­j   DNAT  ­­to  
192.168.1.5

    •    OUTPUT ­­ Consulta os dados gerados localmente e que necessitam ser modificados antes de 
         serem roteados. Este chain somente é consultado por conexões que se originam pela interfaces 
         da máquina firewall
    •    POSTROUTING ­­ Verificando os dados que precisam ser modificados após as verificações 
         das regras
     Regra para a chain POSTROUTING: iptables ­t nat ­A POSTROUTING ­s 192.168.1.0/24 ­p tcp ­­dport 80 ­j  
MASQUERADE


         4.3.2 Chains criadas pelo usuário
       Existe   a   possibilidade   de   o   usuário   criar   suas   próprias   chains,   organizando   as   regras 
agrupando regras de mesmas características. Como por exemplo regras para determinada interface, ou 
determinada rede.
         Criando uma nova chain: iptables ­N nova_chain
         Inserindo regras nesta chain: iptable ­A nova_chain ­p tcp ­­dport 80 ­j DROP
         Chamando esta chain: iptables ­j nova_chain
         Excluindo uma chain: iptables ­X nova_chain
         Alterando o nome de uma chain: iptables ­E nova_chain novo_nome_chain

       Desta forma sempre que a chain for chamada ela irá verificar todas as regras que nela estão 
contidas.

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
9


         4.3.3 Trabalhando com as chains
         Apagando as regras de uma chain: iptables ­F INPUT
         Zerando o contador de bytes de uma chain: iptables ­t nat ­Z PREROUTING
         Também é possível alterar toda uma tabela quando se omite a chain: iptables ­t nat ­F


         4.3.3.1 Especificando o policiamento padrão de uma chain
      O policiamento padrão determina qual será a ação da chain caso o pacote não se enquadre em 
nenhuma das regras que estão nela.
         As opções de policiamento padrão são:
         iptables ­P INPUT DROP 
         iptables ­P INPUT ACCEPT

      Onde na primeira opção todas os pacotes que não conferirem com as regras serão negados. E a 
segunda opção justamente o contrário, os pacotes serão aceitos.
       Um bom firewall bloqueia tudo para estar liberando somente o que é necessário, para 
bloquearmos tudo, definimos como policiamento padrão das chains como DROP, com isto os pacotes 
que não são tratados pelas regras serão negados.

         4.4 Regras
       Regras são comando passados ao iptables para configurá­lo para o tratamento dos pacotes. 
Liberá­los, bloqueá­los ou registrar log da sua passagem, ou tentativa de conexão.
       O iptables nos permite criar regras complexas, com várias condicionais para tratamento dos 
pacotes. As regras não possui um dinamismo de acordo com as si uação, mas isto pode ser fácilmente 
                                                                t
contornado com a utilização de scripts.

         4.4.1 Adicionando regras
        Todas as regras para o iptables são adicionadas com o uso da opção ­A e com a seguinte 
sintaxe:
         iptables ­t [tabela] ­A [chain] [opções] ­j [alvo]

         Todos os comandos são case­sensitive, ou seja ele diferencia maiúsculas de minúsculas.
         Abaixo um exemplo de adição de uma regra:
         iptables ­A INPUT ­s 127.0.0.1 ­j LOG ­­log­prefix “Log de acesso ”

       A regra acima é uma regra de controle, onde podemos logar todos os pacotes que coincidam 
com as condições descritas na regra.
         Abaixo listo outros tipos de regras:
         Bloqueando a porta 80 (http)



Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
10

         iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP
         Liberando acesso a porta 53 (DNS)
         iptables ­A INPUT ­p udp ­­dport 53 ­j ACCEPT
         Liberando acesso acesso de uma determinada rede ao servidor de e­mail (pop3 e smtp)
         iptables ­A INPUT ­p tcp ­m multiport ­­dport 25,110 ­s 192.168.5.0/24 ­j ACCEPT
         Fazendo um redirecionamento de porta
         iptables ­t nat ­A PREROUTING ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j REDIRECT ­­to­port 3128


         4.4.2 Listando regras
         Para listar as regras utiliza­se a opção ­L, a sintaxe do comando:
         iptables ­t [tabela] ­L

         Exemplificando o comando:
         iptables ­L

         Seu retorno será:
         root@ferrari:/home/edmafer# iptables ­L
         Chain INPUT (policy ACCEPT)
         target         prot  opt source                  destination
         DROP          tcp   ­­  anywhere             anywhere            tcp dpt:www
         ACCEPT     udp  ­­  anywhere             anywhere            udp dpt:domain
         ACCEPT     tcp   ­­  192.168.5.0/24       anywhere            multiport dports smtp,pop3


         Chain FORWARD (policy ACCEPT)
         target     prot opt source               destination


         Chain OUTPUT (policy ACCEPT)
         target     prot opt source               destination
         root@ferrari:/home/edmafer#

         Visualizando as regras da tabela nat:
         iptables ­t nat ­L

         E seu retorno será:
         root@ferrari:/home/edmafer# iptables ­t nat ­L
         Chain PREROUTING (policy ACCEPT)
         target             prot opt source               destination
         REDIRECT   tcp  ­­  192.168.5.0/24       anywhere            tcp dpt:www redir ports 3128

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
11



         Chain POSTROUTING (policy ACCEPT)
         target     prot opt source               destination


         Chain OUTPUT (policy ACCEPT)
         target     prot opt source               destination
         root@ferrari:/home/edmafer#

         Temos ainda algumas opções que poderemos estar verificando a na listagem das regras:
         •    ­v Exibe mais detalhes sobre as regras criadas, como a quantidade de pacotes e bytes 
              tratados pelas regras. E a quantidade de pacotes e bytes tratados pelas regras padrões das 
              chains.
         •    ­n Endereços de máquinas/portas não serão resolvidos, serão exibidos como números. Util 
              quando se possui muitas regras em um firewall.
         •    ­x Exibe valores exatos ao invés de arredondamentos.
         •    ­­line­numbers Exibe o número da posição da regra na primeira coluna da listagem.

         4.4.3 Apagando regras
         Para apagar as regras usaremos a opção ­F, e com a seguinte sintaxe:
         iptables ­t [tabela] ­F

         Apagando as regras da tabela
         Apagando da tabela filter
         iptables ­F
         Apagando da tabela nat
         iptables ­t nat ­F


         4.4.4 Posição das regras
        A ordem na regra na inserção dos comandos é importante. Percebe­se que os iniciantes na 
configuração de um firewall erram muito aqui. Uma regra inserida antes prevalecerá a outra inserida 
posteriormente.
         iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP
         iptables ­A INPUT ­p tcp ­­dport ­s 127.0.0.1 ­j ACCEPT

        Verifique as regras acima. Na primeira regra nós bloqueamos o acesso a porta 80, na segunda 
nós liberamos o acesso a porta 80, desde que esta conexão seja proveniente da máquina local.
       Isto não irá funcionar. Pois quando nosso firewall estiver verificando em qual regra se encaixa 
o pacote, ele irá encontrar a primeira e não fará mais verificações. Com isto a regra que libera o 

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
12

acesso da máquina local não terá função nenhuma já que a primeira a excluirá.
         Para funcionar as regras devem ficar assim:
         iptables ­A INPUT ­p tcp ­­dport 80 ­s 127.0.0.1 ­j ACCEPT
         iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP

       A não ser que a conexão seja local ele irá passar pela primeira regra já que os pacotes não 
coincidiram com as condições descritas na regra, e ela será negada na segunda.

         4.4.5 Inserindo regras em posição definida
       Com o uso da opção ­A inserimos as regras sempre uma posição depois da última inserida, e 
como vimos no tópico anterior isto pode nos gerar problemas se precisarmos inserir uma regra com 
mais especificações do que a já inserida.
         Por isto é possível inserimos uma regra em uma posição definida com a opção ­I.
         iptables ­I INPUT 1 ­s 127.0.0.1 ­p tcp ­­dport 80 ­j ACCEPT

       Assim nós estaremos inserindo esta regra na primeira posição, e a regra que estava na primeira 
posição automaticamente irá para a posição 2, e assim por diante.
         Desta forma nossa regra será verificada antes de uma regra mais abrangente atenda a conexão.

         4.4.6 Substituindo uma regra
        É possível nós mantermos um controle sobre as nossas regras, alterando­as sem a necessidade 
de se reiniciar todo o firewall. Por isto podemos estar substituindo as regras com a opção ­R.
         Vamos substituir a regra anterior para liberar acesso para toda a rede interna:
         iptables ­R INPUT 1 ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j ACCEPT

        Com este controles controles de regras, adicionar, excluir, inserir em posição definida e 
substituir, é possível criar scripts que vão alterando o nosso firewall de acordo com a necessidade de 
forma automática.

         4.5 Definindo regras
      Na definições de regras, podemos estar nos utilizando de várias verificações que nos permitem 
um controle maior sobre as conexões direcionadas ou originadas ao servidor.

         4.5.1 Tipos de protocolos

         4.5.1.1 TCP
      Em cada regra é possível estar definindo os tipos de protocolos a serem tratados, seja TCP, 
UDP e ICMP. Para isto utilizamos a opção ­p.
         iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP


Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
13

        Na regra acima as conexões que forem direcionadas a porta 80 e utilizem o protocolo tcp serão 
tratadas por ela. No caso negando a conexão.
         Mais informações: iptables ­p tcp ­h

         4.5.1.2 UDP
         iptables ­A INPUT ­s 192.168.5.0/24 ­p udp ­­dport 53 ­j ACCEPT

      Já na regra acima estaremos fazendo um filtro para permitir que o DNS seja consultado 
somente pela máquinas da rede interna utilizando o protocolo udp.
         Mais informações: iptables ­p udp ­h

         4.5.1.3 ICMP
         iptables ­A INPUT ­s ! 192.168.5.0/24 ­p icmp ­j REJECT

       Definimos nesta regra que qualquer pacote com o protocolo ICMP (ex. ping) que não tenha se 
originado na rede interna seja negado, e como mensagem de retorno será reject­with icmp­port­
unreachable, por causa do alvo reject.
       No protocolo icmp é possível a utilização da opção –icmp­type[tipo]. Onde poderemos estar 
informando qual é o tipo de comunicação icmp que deve ser tratada.
         Alguns tipos de comunicação icmp:
         echo­reply (pong)
         destination­unreachable
         network­unreachable
         host­unreachable
         protocol­unreachable
         port­unreachable

         Para outros tipos: iptables ­p icmp ­h
         Quando não definido o protocolo a regra aceitará qualquer protocolo.

         4.5.2 Endereços de origem
       É possível nas regras definirmos os endereços de origem. Isto é útil para estarmos validando 
as conexões e permitindo que determinados hosts, ou redes, sejam liberados, ou negados.
         iptables ­A INPUT ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j ACCEPT

         Nesta regra definimos que a rede 192.168.5.0 pode acessar o servidor http.
         iptables ­A INPUT ­s 200.200.200.200 ­j DROP

       Aqui definimos que a máquina na internet com o ip 200.200.200.200 em q
                                                                            ualquer porta, com 
qualquer protocolo não pode acessar nosso servidor.


Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
14


         4.5.3 Endereços de destino
       Podemos definir o destino das conexões com a opção ­d. Com isto é possível negar o acesso 
do servidor ou da rede a determinados endereços.
         iptables ­A FORWARD ­d 200.200.200.200 ­j DROP

      Na regra acima definimos que qualquer conexão que seja com o destino a máquina na internet 
200.200.200.200 não será redirecionada.
       Uma grande preocupação dos administradores de redes é o bloqueio de determinados sites, 
com esta opção podemos estar bloqueando.
         iptables ­A FORWARD ­d orkut.com ­j DROP

        Como visto foi utilizado como destino uma url ao invés do ip da máquina que se deseja 
bloquear o acesso. Isto é possível pois o iptables irá fazer a resolução do nome sempre que precisar 
verificar a regra. Assim é possível manter o controle sobre aqueles endereços que possuem ip 
dinâmicos.
       Assim qualquer que seja a origem do pacotes, indiferente da porta e do protocolo toda e 
qualquer conexão que desejar acessar o orkut.com não será redirecionada.

         4.5.4 Portas de destino
       Podemos definir qual é a porta de destino em que as regras estarão verificando com a opção ­­
destination­port, ou simplesmente ­­dport.
        Esta opção somente funcionará se anteriormente foi definido o tipo de protocolo que a regra 
estará conferindo.
         iptables ­A INPUT ­s ! 192.168.5.0/24 ­p tcp ­­dport 110 ­j DROP

       Foi definido aqui que não será possível conexões de fora da rede interna acessem o nosso 
servidor pop3.
        Com a definição das portas nós controlamos quais serviço poderão ser acessados através do 
nosso firewall. Verifique a tabela das portas comuns.

         4.5.5 Portas de origem
       Também podemos definir em qual porta está se originando a conexão com a opção ­­source­
port ou ­­sport.
         iptables ­A INPUT ­s 200.200.200.200 ­p tcp ­­sport 25 ­j ACCEPT

       Assim definiremos que a conexão que for proveniente do host 200.200.200.200 e que esteja 
sendo originada na porta 25 (smtp) seja aceita.




Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
15


         4.5.6 Definindo múltiplas portas
        Para facilitar o controle, poderemos estar definindo várias portas para a mesma regra, seja de 
destino ou de origem.

         4.5.6.1 Definindo uma faixa de portas
         iptables ­A INPUT ­p tcp ­­dport 1024:65535 ­j DROP

       Nesta regra nós definimos que todas as conexões com destino a portas altas (de 1024 até 
65535) sejam bloqueadas.
       Caso não seja definido a porta de inicial (:1024) ele assumirá como porta inicial a 0, e caso 
não seja definido a porta final (1024:) será assumido como porta final a 65535.

         4.5.6.2 Definindo várias portas
       Para definir várias portas que não estejam em uma faixa, poderemos estar utilizando o módulo 
multiport, que nos permite adicionar até 15 portas na mesma regra.
         iptables ­A INPUT ­s 192.168.5.0/24 ­p tcp ­m multiport ­­dport 22,25,80,110 ­j ACCEPT

        Aqui foram liberados os acessos para rede interna para os serviços ssh,smtp,http e pop3 
respectivamente.

         4.5.7 Definindo a interface
         Geralmente máquinas firewall trabalham com várias interfaces (placas de rede). Com a opção 
­i e ­o podemos estar definindo as interfaces de origem ou destino, respectivamente.
        Não é possível adicionar esta opção as regras de todas as chains, na tabela filter a interface de 
origem não poderá ser especificar em uma chain OUTPUT, e a de destino em um chain INPUT. E na 
tabela nat não será possível especificar a interface de saída na chain PREROUTING e a interface de 
origem nas chains OUTPUT E PREROUTING.
         iptables ­A INPUT ­i eth0 ­p tcp ­­dport 80 ­j ACCEPT

        Definimos que toda conexão que tenha chego pela eth0 (poderia ser a interface da rede 
interna) tenha acesso ao servidor http.
         iptables ­A FORWARD ­i eth0 ­o eth1 ­j DROP

       Sendo a interface eth0 nossa interface da rede interna, e a eth1 a interface conectada a internet, 
estaríamos bloqueando todo o acesso da rede interna a internet.
         Também é possível a utilização do coringa + que permite que definamos vários interfaces.
         iptables ­A FORWARD ­i wlan+ ­o eth0 ­j DROP

       Para aumentar a segurança da nossa rede, bloqueamos o acesso de todos os usuários 
conectados a nossa wireless, nas interfaces de 0 à 9 a rede interna.
         É possível fazer referências a interfaces que ainda não existem. Como conexões intermitentes 


Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
16

como ppp.

         4.5.8 Endereço MAC
        Para aumentar a segurança na validação da origem da conexão, é possível que se especifique 
qual é o endereço físico do host de origem, o endereço mac, com o módulo mac e a opção ­­mac­
source.
         iptables ­A INPUT ­s 192.168.5.2 ­m mac ­­mac­source 00:11:2F:DE:5F:4A ­p tcp ­­dport 22 ­j ACCEPT

       Estaremos aceitando somente a conexão do host 192.168.5.2 e que tenha como endereço físico 
00:11:2F:DE:5F:4A no serviço ssh.
       A especificação do mac em uma regra aumenta a segurança, mas não garante que um outro 
host não tenha seu endereço ip e seu endereço mac alterado.

         4.5.9 Pacotes SYN
       O pacotes SYN são utilizados para iniciarem uma conexão TCP, assim é possível bloquear 
novas conexões, ou filtra­las utilizando a opção –syn.
         iptables ­A INPUT ­p tcp ­­dport 22 ­­syn ­j DROP

       Esta regra não permite que nenhuma outra conexão ao serviço ssh se inicie, mas não irá 
cancelar as conexões já existentes.

         4.5.10 Estado da conexão
         Com o módulo state é possível estarmos conferindo o estado de uma conexão.
         •    NEW: Verifica se o pacote é responsável pelo inicio de uma nova conexão.
         •    ESTABLISHED: Se o pacote faz parte de uma conexão já estabilizada.
         •    RELATED: São pacotes que estão relacionados a outras conexões, como por exemplo 
              mensagens de erro icmp
         •    INVALID: Pacotes que não estão relacionados a nada, não puderam ser conferidos, como 
              respostas de conexões desconhecidas.
         iptables ­A INPUT ­s 192.168.5.0/24 ­p tcp –dport 22 ­m state –state NEW,ESTABLISHED ­j ACCEPT

        Estamos aceitando todas as novas conexões e as já existentes, desde que venham da nossa rede 
interna para o serviço ssh.
       Para se evitar processamento, como umas das primeiras regras deve se adicionar uma regra 
para negar conexões inválidas.
         iptables ­A INPUT ­m state –state INVALID ­j DROP


         4.5.11 Exceções à regra
         Como em alguns casos devemos criar uma exceção à regra, nós podemos estar utilizando o 

Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
17

identificador ! (not)  para informar que a próxima informação não deve ser verdadeira para conferir a 
regra.
         iptables ­A INPUT ­s !192.168.5.2 ­p tcp –dport 23 ­j DROP

         Neguei o acesso de todos que não possuam o ip 192.168.5.2 ao serviço telnet.
         iptables ­t nat ­A PREROUTING ­p ! icmp ­d 200.200.200.200 ­j DNAT –to 200.200.200.111

         Só faço o redirecionamento da conexão se o protocolo for diferente de icmp.
         iptables ­A INPUT ­p tcp –dport 25 ­m state –state ! NEW,ESTABLISHED ­j DROP

       Proibindo o acesso de pacotes que não estejam iniciando uma conexão, ou que não estejam 
relacionados a uma conexão já existente no serviço smtp.

         4.5.12 Alvo das regras
       Em toda regra é necessário se especificar um alvo. É ele que vai definir qual será a ação da 
regra quando as condições impostas sejam satisfeitas.

         4.5.12.1 DROP
      É o alvo padrão para negação de uma conexão. DROP faz o bloqueio e não retorna nada a 
máquina que originou a conexão, isto delata a um scanner que a a máquina possui um firewall.
         iptables ­A INPUT ­s ! 192.168.5.0/24 ­m state –state NEW,INVALID ­j DROP

        Estou negando toda nova conexão, e toda conexão inválida que seja originada de fora da rede 
interna.

         4.5.12.2 REJECT
        Também um alvo de negação, mas com reject é possível enviar de volta uma mensagem do 
tipo icmp.
         iptables ­A INPUT ­p tcp ­­dport 80 ­j REJECT ­­reject­with icmp­port­unreachable

         Será negada a conexão, e remetido a máquina que originou o pacote que a porta não existe.
         Verifique as opções de tipos icmp.

         4.5.12.3 LOG
        Este alvo nos permite um controle dos pacotes que são verificados pelo firewall. Define­se 
como se fosse uma regra, e ao satisfazer as condições, ele gera o log. Como o netfilter é um módulo 
do kernel, ele gera um log em /var/log/kern.log como um log do kernel. Mas é possível definir qual é 
o nível de log.
         iptables ­A INPUT ­p tcp –dport 22 ­j LOG –log­prefix”Acessaram o ssh ”

         E sempre que houver uma conexão ssh o resultado do log será:
Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00 


Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
18

SRC=10.1.58.108 DST=10.1.58.252 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=13237 DF PROTO=TCP 
SPT=4912 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0
Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00 
SRC=10.1.58.108 DST=10.1.58.252 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=13238 DF PROTO=TCP 
SPT=4912 DPT=22 WINDOW=65535 RES=0x00 ACK URGP=0
Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00 
SRC=10.1.58.108 DST=10.1.58.252 LEN=68 TOS=0x00 PREC=0x00 TTL=128 ID=13239 DF PROTO=TCP 
SPT=4912 DPT=22 WINDOW=65494 RES=0x00 ACK PSH URGP=0

        Nos logs temos informações importantes sobre o acesso, como a data, a frase informada em –
log­prefix, a interface de entrada, e se houve a interface de saída, o mac da máquina que originou o 
pacote, endereço ip da máquina de origem e o destino do pacote, protocolo, porta utilizada pela 
máquina de origem e a porta de destino, flags e outras informações.

         4.5.12.4 RETURN
         Este alvo permite que se retorne a chain anterior, sem continuar verificando as regras da chain 
atual.
         Útil para se fazer tratamento de exceções à regra.
         1. iptables ­N WEB
         2. iptables ­A INPUT ­p tcp ­­dport 80 ­j WEB
         3. iptables ­A INPUT ­p tcp ­­dport 80 ­j ACCEPT
         4. iptables ­A WEB ­s 192.168.5.2 ­j RETURN
         5. iptables ­A WEB ­j DROP

       Estamos fazendo um bloqueio do serviço http se a máquina que originou a conexão não seja a 
192.168.5.2.
         No passo 1 criamos uma chain chamada WEB, no passo 2 chamamos esta chain. No passo 3 
eu libero acesso ao serviço, mas como eu chamei a chain antes, eu redirecionei as regras, e esta não 
será verificada. A primeira regra da chain WEB é a verificação da origem. Caso seja a origem 
especificada, ela chama RETURN. Ele redireciona a verificação para a chain anterior, que no caso 
será a liberação da porta 80.

         4.5.12.5 DNAT
       Regra utilizada na chain PREROUTING, este alvo altera os pacotes editando o seu destino, 
assim redirecionando a conexão para outras máquinas.
         iptables ­t nat ­A PREROUTING ­p tcp –dport 80 ­j DNAT –to 192.168.5.2:3128

       Nesta regra estamos redirecionando toda a conexão que chega na porta 80 para a máquina 
192.168.5.2 na porta 3128, que é a porta padrão de um proxy.
         Na omissão da porta, será usada a porta de destino do pacote.




Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
19

         4.5.12.6 SNAT
       Regra da chain POSTROUTING ela faz alteração da origem do pacote, serve para fazer o 
acesso das máquinas da rede interna a internet, quando se utiliza um ou mais ip's fixos.
         iptables ­t nat ­A POSTROUTING ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j SNAT ­­to 200.200.200.200

       Com esta regra estamos alterando a origem do pacote para o ip da internet 200.200.200.200, 
quando é feita esta alteração o iptables cria uma tabela em memória onde no retorno da conexão ele 
sabe quem foi a máquina que originou esta conexão e devolve a ela os pacotes.
         iptables ­t nat ­A POSTROUTING ­s 192.168.5.0/24 ­j SNAT ­­to 200.200.200.200­200.200.200.250

       A diferença nesta regra é que ele vai utilizar uma faixa de ip's para as conexões.  Será 
escolhido um endereço de acordo com o último alocado.

         4.5.12.7 MASQUERADE
       Masquerade é um alvo utilizado também para alterar a origem de um pacote, permitindo que 
as máquinas da rede interna possam estar acessando a internet. Ele é utilizado nos casos em que não 
se possui um ip fixo. Ele verifica o endereço ip da interface de saída e utiliza ele para alterar o pacote.

         4.5.12.8 Limite de conferencia de uma regra
       Algumas regras devem ter limite para serem executadas. Como o número máximo de conexões 
ao serviço ssh por hora, quantidade de logs que devem ser armazenados, evitando­se um ataque de 
logs que poderia encher o seu hd. Assim com o módulo limit e a opção ­­limit poderemos estar 
definindo quantas vezes a regra deve ser validade em determinado tempo.
       iptables ­A INPUT ­p tcp ­­dport 22 ­m limit –limit 5/s ­j LOG ­­log­level 1 ­­log­prefix 
“Teste de log ssh ”




Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia 
desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para 
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Mais conteúdo relacionado

Mais procurados

Apostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracleApostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracle79anderson
 
Resolvendo problemas no seu micro 2007 - laercio vasconcelos -
Resolvendo problemas no seu micro   2007 - laercio vasconcelos -Resolvendo problemas no seu micro   2007 - laercio vasconcelos -
Resolvendo problemas no seu micro 2007 - laercio vasconcelos -Bianca Amarante
 
Apostila Curso Montagem E Manutenção De Micros
Apostila Curso Montagem E Manutenção De MicrosApostila Curso Montagem E Manutenção De Micros
Apostila Curso Montagem E Manutenção De MicrosInge Christmann
 
Apostila Excel 2000 - Treinamento Empresarial
Apostila Excel 2000 - Treinamento EmpresarialApostila Excel 2000 - Treinamento Empresarial
Apostila Excel 2000 - Treinamento EmpresarialAdriano Lima
 
Apostila ruby-completa
Apostila ruby-completaApostila ruby-completa
Apostila ruby-completamako2887
 
Aprenda a investir_na_bolsa
Aprenda a investir_na_bolsaAprenda a investir_na_bolsa
Aprenda a investir_na_bolsaJoao Rumpel
 
Vx 170 português
Vx 170 portuguêsVx 170 português
Vx 170 portuguêsFmoreira4
 
Vx 170 português
Vx 170 portuguêsVx 170 português
Vx 170 portuguêsruiv
 
Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...
Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...
Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...IOB News
 
Implantação de um Sistema de Gestão ERPFLEX WEB
Implantação de um Sistema de Gestão ERPFLEX WEBImplantação de um Sistema de Gestão ERPFLEX WEB
Implantação de um Sistema de Gestão ERPFLEX WEBerpflex
 

Mais procurados (19)

mateus
mateusmateus
mateus
 
Guia xerox workcentre_3550
Guia xerox workcentre_3550Guia xerox workcentre_3550
Guia xerox workcentre_3550
 
Dicionario de termos_de_informatica-3ed
Dicionario de termos_de_informatica-3edDicionario de termos_de_informatica-3ed
Dicionario de termos_de_informatica-3ed
 
Resumo de aulas lp1
Resumo de aulas lp1Resumo de aulas lp1
Resumo de aulas lp1
 
Sumario9788575222102
Sumario9788575222102Sumario9788575222102
Sumario9788575222102
 
Moodle
MoodleMoodle
Moodle
 
Apostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracleApostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracle
 
Resolvendo problemas no seu micro 2007 - laercio vasconcelos -
Resolvendo problemas no seu micro   2007 - laercio vasconcelos -Resolvendo problemas no seu micro   2007 - laercio vasconcelos -
Resolvendo problemas no seu micro 2007 - laercio vasconcelos -
 
Perl
PerlPerl
Perl
 
Apostila Curso Montagem E Manutenção De Micros
Apostila Curso Montagem E Manutenção De MicrosApostila Curso Montagem E Manutenção De Micros
Apostila Curso Montagem E Manutenção De Micros
 
Guia pro tools_basico
Guia pro tools_basicoGuia pro tools_basico
Guia pro tools_basico
 
Aprenda computaocompython
Aprenda computaocompythonAprenda computaocompython
Aprenda computaocompython
 
Apostila Excel 2000 - Treinamento Empresarial
Apostila Excel 2000 - Treinamento EmpresarialApostila Excel 2000 - Treinamento Empresarial
Apostila Excel 2000 - Treinamento Empresarial
 
Apostila ruby-completa
Apostila ruby-completaApostila ruby-completa
Apostila ruby-completa
 
Aprenda a investir_na_bolsa
Aprenda a investir_na_bolsaAprenda a investir_na_bolsa
Aprenda a investir_na_bolsa
 
Vx 170 português
Vx 170 portuguêsVx 170 português
Vx 170 português
 
Vx 170 português
Vx 170 portuguêsVx 170 português
Vx 170 português
 
Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...
Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...
Responsabilidade do Contador Prevenção no Controle de Lavagem de Dinheiro - I...
 
Implantação de um Sistema de Gestão ERPFLEX WEB
Implantação de um Sistema de Gestão ERPFLEX WEBImplantação de um Sistema de Gestão ERPFLEX WEB
Implantação de um Sistema de Gestão ERPFLEX WEB
 

Semelhante a Mini Curso – Controle e Segurança com Iptables

Manual Intelbras Impacta 1402.pdf
Manual Intelbras Impacta 1402.pdfManual Intelbras Impacta 1402.pdf
Manual Intelbras Impacta 1402.pdfGuilhermeDias277531
 
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalNcl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalRafael Carvalho
 
Curso Bolsa de Valores
Curso Bolsa de ValoresCurso Bolsa de Valores
Curso Bolsa de ValoresGrupo Shield
 
Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)
Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)
Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)Agassis Rodrigues
 
Linux basico
Linux basicoLinux basico
Linux basicoTiago
 
Manual gps tracker 7, multilaser gp015
Manual gps tracker 7, multilaser  gp015Manual gps tracker 7, multilaser  gp015
Manual gps tracker 7, multilaser gp015Jose llIMA
 
ISCRIZIONE BONEFRO ROCK CONTEST
ISCRIZIONE BONEFRO ROCK CONTESTISCRIZIONE BONEFRO ROCK CONTEST
ISCRIZIONE BONEFRO ROCK CONTESTmattley
 
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6Habro Group
 
K19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernateK19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernateElton Alex Silva
 
Manual geral trocadores de calor a placas - bermo (1)
Manual geral   trocadores de calor a placas - bermo (1)Manual geral   trocadores de calor a placas - bermo (1)
Manual geral trocadores de calor a placas - bermo (1)Wartsila Brasil
 
Aprenda computação com python 3.0 (1)
Aprenda computação com python 3.0 (1)Aprenda computação com python 3.0 (1)
Aprenda computação com python 3.0 (1)intaum
 
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Habro Group
 

Semelhante a Mini Curso – Controle e Segurança com Iptables (20)

Manual Intelbras Impacta 1402.pdf
Manual Intelbras Impacta 1402.pdfManual Intelbras Impacta 1402.pdf
Manual Intelbras Impacta 1402.pdf
 
Tutorial ruby
Tutorial rubyTutorial ruby
Tutorial ruby
 
Manual lexuz
Manual lexuzManual lexuz
Manual lexuz
 
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalNcl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
 
Php
PhpPhp
Php
 
Curso Bolsa de Valores
Curso Bolsa de ValoresCurso Bolsa de Valores
Curso Bolsa de Valores
 
Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)
Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)
Ihcat rvtar004 rev04-out2010_splitão_splitop_(fixo_inverter)
 
Linux basico
Linux basicoLinux basico
Linux basico
 
Mnl gp015
Mnl gp015Mnl gp015
Mnl gp015
 
Manual gps tracker 7, multilaser gp015
Manual gps tracker 7, multilaser  gp015Manual gps tracker 7, multilaser  gp015
Manual gps tracker 7, multilaser gp015
 
Apostila
ApostilaApostila
Apostila
 
Apostila esssa
Apostila   esssaApostila   esssa
Apostila esssa
 
Hardware idepac
Hardware idepacHardware idepac
Hardware idepac
 
ISCRIZIONE BONEFRO ROCK CONTEST
ISCRIZIONE BONEFRO ROCK CONTESTISCRIZIONE BONEFRO ROCK CONTEST
ISCRIZIONE BONEFRO ROCK CONTEST
 
Introdução às redes
Introdução às redesIntrodução às redes
Introdução às redes
 
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
Manual da Interface de Áudio FOCUSRITE Scarlett 6i6
 
K19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernateK19 k21-persistencia-com-jpa2-e-hibernate
K19 k21-persistencia-com-jpa2-e-hibernate
 
Manual geral trocadores de calor a placas - bermo (1)
Manual geral   trocadores de calor a placas - bermo (1)Manual geral   trocadores de calor a placas - bermo (1)
Manual geral trocadores de calor a placas - bermo (1)
 
Aprenda computação com python 3.0 (1)
Aprenda computação com python 3.0 (1)Aprenda computação com python 3.0 (1)
Aprenda computação com python 3.0 (1)
 
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (8)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Mini Curso – Controle e Segurança com Iptables

  • 1. 1 MINICURSO ­ CONTROLE E SEGURANÇA COM IPTABLES Ministrante: Edson Marco Ferrari Junior Local: CESUMAR ­­ Centro Universitário de Maringá Carga horária: 8 horas Data: 18 de novembro de 2006 Sumário 1. O que é um Firewall....................................................................................................................... ........3 2. Conceito de protocolos.......................................................................................................... ................4  2.1 O que é um protocolo de rede.............................................................................................. ..........4  2.1.1 Protocolo TCP............................................................................................... .........................4  2.1.1.1 Estabelecendo uma conexão....................................................................... ....................4  2.1.1.2 Flags do protocolo TCP................................................................................... ...............5  2.1.2 Protocolo UDP............................................................................................. ..........................5  2.1.3 Protocolo ICMP................................................................................................................... ...5  3. Conceito de portas................................................................................................................. ...............5  4. IPTABLES.................................................................................................................................. ..........7  4.1 Principais funções do iptables.................................................................................. .....................7  4.2 Tabelas.................................................................................................................. .........................7  4.2.1 FILTER.................................................................................................................................. .7  4.2.2 NAT................................................................................................................................. .......7  4.2.3 MANGLE.................................................................................................. ............................7  4.3 Chains.................................................................................................................. ..........................8  4.3.1 Chains embutidas.................................................................................................... ...............8  4.3.1.1 Chains da tabela FILTER.......................................................................... .....................8  4.3.1.2 Chains da tabela NAT.......................................................................... ..........................8  4.3.2 Chains criadas pelo usuário......................................................................................... ..........9  4.3.3 Trabalhando com as chains.............................................................................................. ......9  4.3.3.1 Especificando o policiamento padrão de uma chain....................................................9 .  4.4 Regras................................................................................................................. ...........................9  4.4.1 Adicionando regras..................................................................................... .........................10  4.4.2 Listando regras............................................................................................................. ........10  4.4.3 Apagando regras...................................................................................... ............................11  4.4.4 Posição das regras................................................................................................... .............12  4.4.5 Inserindo regras em posição definida........................................................................... .......12  4.4.6 Substituindo uma regra......................................................................................... ...............12  4.5 Definindo regras.................................................................................................. ........................13  4.5.1 Tipos de protocolos.............................................................................................. ................13 Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 2. 2  4.5.1.1 TCP......................................................................................................... ......................13  4.5.1.2 UDP....................................................................................................... .......................13  4.5.1.3 ICMP............................................................................................... .............................13  4.5.2 Endereços de origem................................................................................................... .........14  4.5.3 Endereços de destino......................................................................................................... ...14  4.5.4 Portas de destino........................................................................................... .......................14  4.5.5 Portas de origem.......................................................................................... ........................15  4.5.6 Definindo múltiplas portas............................................................................... ...................15  4.5.6.1 Definindo uma faixa de portas............................................................................. ........15  4.5.6.2 Definindo várias portas.............................................................................................. ..15  4.5.7 Definindo a interface................................................................................... ........................15  4.5.8 Endereço MAC................................................................................................................. ....16  4.5.9 Pacotes SYN.........................................................................................................................16  4.5.10 Estado da conexão........................................................................................... ...................16  4.5.11 Exceções à regra............................................................................................. ....................17  4.5.12 Alvo das regras................................................................................................ ...................17  4.5.12.1 DROP..........................................................................................................................17  4.5.12.2 REJECT...................................................................................................... ................17  4.5.12.3 LOG........................................................................................................... .................18  4.5.12.4 RETURN................................................................................................ ....................18  4.5.12.5 DNAT............................................................................................. ............................19  4.5.12.6 SNAT..........................................................................................................................19  4.5.12.7 MASQUERADE................................................................................... .....................19  4.5.12.8 Limite de conferencia de uma regra.................................................................... .......19 Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 3. 3 1. O que é um Firewall É um dispositivo de rede que tem a função de regular o tráfego que entre redes distintas,  controlar   as   conexões   entre   elas.   Podemos   entender   por   firewall   filtros   de   pacotes   e   proxy   de  protocolos. O  Firewall tem como objetivo proteger uma máquina ou rede contra acessos indesejados,  controlar estes acesso e manter informações sobre as conexões. 2. Conceito de protocolos Para entendermos um firewall é necessário um conhecimento básico de protocolos de redes.  Pelo menos os dois mais importantes: TCP e UDP. 2.1 O que é um protocolo de rede É   um   padrão   que   específica   o   formato   de   dados   e   as   regras   a   serem   seguidas   para  comunicação de máquinas em uma rede. 2.1.1 Protocolo TCP O protocolo TCP baseia­se na comunicação ponto­a­ponto entre duas máquinas em rede. Este protocolo possui algumas características será útil na configuração de um firewall: • Orientado a conexão: Antes do início da transferência de dados é necessário que ambas  as partes estejam de acordo. • Confiabilidade: O TCP confirma a entrega de todos os pacotes ao destinatário. • Three   Handshake:  Mecanismo  de  estabelecimento  e  finalização  de  conexão  a  três  e  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 4. 4 quatro tempos, respectivamente, o que permite a autenticação e encerramento de uma  sessão completa. O TCP garante que, no final da conexão, todos os pacotes foram bem  recebidos. 2.1.1.1 Estabelecendo uma conexão Geralmente, em uma conexão TCP existe a máquina designada servidor (a máquina que inicia  o serviço e fica aguardando uma conexão) e em outro extremo o cliente (a máquina que se conecta a  um servidor). Para iniciar a conexão a máquina cliente envia ao servidor um pacote TCP com a flag SYN  ativa, e aguarda que o servidor aceite e lhe devolva um pacote com as flags  SYN+ACK  ativas. O  cliente para informar o recebimento da confirmação do servidor devolve um pacote com a flag ACK  ativa. Em cada pacote contém o número de identificação do pacote. 2.1.1.2 Flags do protocolo TCP • SYN: Quando setado em 1, significa que é um pacote de pedido de abertura de conexão. • ACK:  Quando setado, sinaliza que este segmento contém o próximo octeto que o host  origem espera receber. É a flag de confirmação de recebimento de pacotes. • FIN:  Esta   flag   é   a   informação   de   término   da   transferência   de   pacotes.   Solicita   a  desconexão. Este flag também deve ser confirmado. • RST:  A flag  reset  indica que a conexão deve ser abortada e reinicia­se novamente  a  conexão. 2.1.2 Protocolo UDP É um protocolo considerado não seguro. Isto se deve por ele não ser orientado a conexão.  O  pacote poder ser entregue ou não, ele não irá tratar isto. Mas tem como vantagem a velocidade na  entrega dos pacotes. Esta velocidade se deve já que ele não necessita fazer todas as verificações que o  pacote TCP realiza. Este padrão de comunicação é muito utilizado em transmissão de vídeo e voz.  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 5. 5 Comunicações que necessitam de velocidade e não a garantia da entrega do pacote. 2.1.3 Protocolo ICMP O  protocolo  ICMP é utilizado para reportar erros na rede. Mas ele também serve para a  localização de hosts, através da aplicação PING. Também é possível com este protocolo descubrir a  rota   utilizada   para   se   chegar   a   determinado   host,   com   a   aplicação  TRACEROUTE  (Linux,   ou  TRACERT no Windows). 3. Conceito de portas Portas são links para conexões de um computador para outro. Cada porta somente pode ter um  serviço por protocolo. Para   efetuar   uma   conexão   é   necessário   que   no   computador   servidor   tenha   um   serviço  aguardando  em   determinada   porta,   e   o   computador   cliente   saia   por   determinada   porta   para   se  conectar. Para  direcionar a qual serviço o  cliente deseja conectar, ele informa no protocolo qual  o  endereço do destino, e em qual porta ele irá se conectar, e qual porta ele está utilizando para iniciar  esta conexão. Para exemplicar, utilizaremos uma conexão SSH. Para se fazer uma conexão SSH é necessário que haja um serviço aguardando a conexão em  determinada porta, como no caso do SSH já é definida que será a porta 22. O computador cliente irá  iniciar a conexão alocando uma porta nele, uma porta maior que 1024 (portas abaixo destas são portas  reservadas), por exemplo a porta 1030, e vai conectar­se ao servidor na porta 22. ssh edmafer@127.0.0.1 Visualização da conexão: Na primeira tela nós temos uma conexão  ssh  efetuada (neste caso estamos conectados na  mesma máquina), na segunda tela nós podemos analisar as conexões efetuadas e utilizamos um filtro  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 6. 6 (grep :22) para facilitar a visualização. Observaremos que nós possuímos um serviço que está com o estado ESTABELECIDA que  tem como endereço local 127.0.0.1:33730 e a remota o endereço 127.0.0.1:22, na porta 22 um serviço  com o estado OUÇA que é o servidor ssh aguardando uma nova conexão. A terceira é justamente o contrário, já que o teste foi testado na máquina local. É o servidor no  endereço 127.0.0.1:22 e o cliente no endereço 127.0.0.1:33730. As portas abaixo de 1024 são portas reservadas para os serviços mais comuns, como exemplo: • ftp porta 21 TCP • ssh porta 22 TCP • telnet porta 23 TCP • smtp porta 25 TCP • dns porta 53 UDP • http porta 80 TCP • pop3 porta 110 TCP Esta é uma lista resumida dos serviços mais comuns, é possível estar verificando os serviços  mais comuns em: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers As portas acima de 1024 são liberadas para outros serviços, e devem ser tratadas com muita  atenção em um firewall. Estas portas devem obrigatoriamente ser bloqueadas e ir liberando somente o  que é necessário. 4. IPTABLES Netfilter é um módulo no kernel do Linux disponível desde o kernel versão 2.4.x que lhe  abilita as funções de firewall, NAT e Log de utilização. Técnicamente o conhecido apenas como  iptables. Iptables é o nome dado a ferramenta em linha de comando que configura este módulo. Esta  ferramenta permite configurar as regras de firewall, NAT e logs. 4.1 Principais funções do iptables a) Listar as regras de filtragem dos pacotes b) Adicionar, remover ou modificar as regras de filtragem dos pacotes c) Listar, apagar por regras os contadores das regras de filtragem dos pacotes 4.2 Tabelas Tabelas é o local onde são armazenados os  chains  e conjuntos de regras com determinadas  características em comum. As tabelas são referenciadas através da opção ­t e há 3 tabelas padrões no  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 7. 7 IPTABLES. 4.2.1 FILTER Tabela padrão, caso não seja definido uma tabela com a opção  ­t.  Nesta tabela estarão as  regras de filtragem e controle dos pacotes. 4.2.2 NAT Tabela que contém regras que irão modificar conexões. Regras que gerarão outras conexões  através de masquerading, source nat, destination nat, port forwarding. As   regras   contidas   nesta   tabela  serão  verificadas  antes   da   tabela  filter,   já   que   elas  irão  modificar as regras. 4.2.3 MANGLE Esta tabela ser para modificações especiais no cabeçalho dos pacotes. Esta tabela contém  cinco   chains:  PREROUTING,  POSTROUTING,  INPUT,   OUTPUT  e  FORWARD.   As   regras  contidas nas chains desta tabela serão verificadas antes das regras de outras tabelas. Como exemplo de utilização de uma regra na tabela mangle seria a alteração a alteração do  TOS (Type of Service) do pacote. Usando o alvo TOS pode­se especificar a prioridade de uma pacote, tendo como valores  aceitos: Espera Mínima  É especificado através de Minimize­Delay, 16 ou 0x10  Máximo Processamento  É especificado através de Maximize­Throughput, 8, ou 0x08.  Máxima Confiança  É especificado através de Maximize­Reliability, 4 ou 0x04.  Custo mínimo  Especificado através de Minimize­Cost, 2 ou 0x02.  Prioridade Normal  Especificado através de Normal­Service, 0 ou 0x00. Regra para a chain output: iptables ­t mangle ­A OUTPUT ­p tcp ­­dport 80 ­j TOS ­­set­tos 16 4.3 Chains Chains são os locais onde serão armazenadas as regras do firewall definidas pelo usuário.  Existem dois tipos de chains, os embutidos e os criados pelo usuário. Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 8. 8 4.3.1 Chains embutidas 4.3.1.1 Chains da tabela FILTER • INPUT ­­  Regras responsáveis pelo controle das  conexão que chegam com destino à  máquina Regra para a chain INPUT: iptables ­t filter ­A INPUT ­s 200.200.200.200 ­j DROP • OUTPUT ­­ Regras responsáveis pelo controle das conexões que saem da máquina Regra para a chain OUTPUT: iptables ­t filter ­A OUTPUT ­d 200.200.200.200 ­j DROP • FORWARD ­­  Regras responsáveis pelo controle das conexões que são redirecionadas  pela máquina Regra para a chain FORWARD: iptables ­t filter ­A FORWARD ­s 200.200.200.200 ­j DROP 4.3.1.2 Chains da tabela NAT • PREROUTING ­­ Consulta os dados que deverão ser modificados antes de serem enviados  para a chain Regra   para   a   chain   PREROUTING:  iptables  ­t   nat  ­A   PREROUTING  ­s   200.200.200.200  ­j   DNAT  ­­to   192.168.1.5 • OUTPUT ­­ Consulta os dados gerados localmente e que necessitam ser modificados antes de  serem roteados. Este chain somente é consultado por conexões que se originam pela interfaces  da máquina firewall • POSTROUTING ­­ Verificando os dados que precisam ser modificados após as verificações  das regras Regra para a chain POSTROUTING: iptables ­t nat ­A POSTROUTING ­s 192.168.1.0/24 ­p tcp ­­dport 80 ­j   MASQUERADE 4.3.2 Chains criadas pelo usuário Existe   a   possibilidade   de   o   usuário   criar   suas   próprias   chains,   organizando   as   regras  agrupando regras de mesmas características. Como por exemplo regras para determinada interface, ou  determinada rede. Criando uma nova chain: iptables ­N nova_chain Inserindo regras nesta chain: iptable ­A nova_chain ­p tcp ­­dport 80 ­j DROP Chamando esta chain: iptables ­j nova_chain Excluindo uma chain: iptables ­X nova_chain Alterando o nome de uma chain: iptables ­E nova_chain novo_nome_chain Desta forma sempre que a chain for chamada ela irá verificar todas as regras que nela estão  contidas. Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 9. 9 4.3.3 Trabalhando com as chains Apagando as regras de uma chain: iptables ­F INPUT Zerando o contador de bytes de uma chain: iptables ­t nat ­Z PREROUTING Também é possível alterar toda uma tabela quando se omite a chain: iptables ­t nat ­F 4.3.3.1 Especificando o policiamento padrão de uma chain O policiamento padrão determina qual será a ação da chain caso o pacote não se enquadre em  nenhuma das regras que estão nela. As opções de policiamento padrão são: iptables ­P INPUT DROP  iptables ­P INPUT ACCEPT Onde na primeira opção todas os pacotes que não conferirem com as regras serão negados. E a  segunda opção justamente o contrário, os pacotes serão aceitos. Um bom firewall bloqueia tudo para estar liberando somente o que é necessário, para  bloquearmos tudo, definimos como policiamento padrão das chains como DROP, com isto os pacotes  que não são tratados pelas regras serão negados. 4.4 Regras Regras são comando passados ao iptables para configurá­lo para o tratamento dos pacotes.  Liberá­los, bloqueá­los ou registrar log da sua passagem, ou tentativa de conexão. O iptables nos permite criar regras complexas, com várias condicionais para tratamento dos  pacotes. As regras não possui um dinamismo de acordo com as si uação, mas isto pode ser fácilmente  t contornado com a utilização de scripts. 4.4.1 Adicionando regras Todas as regras para o iptables são adicionadas com o uso da opção ­A e com a seguinte  sintaxe: iptables ­t [tabela] ­A [chain] [opções] ­j [alvo] Todos os comandos são case­sensitive, ou seja ele diferencia maiúsculas de minúsculas. Abaixo um exemplo de adição de uma regra: iptables ­A INPUT ­s 127.0.0.1 ­j LOG ­­log­prefix “Log de acesso ” A regra acima é uma regra de controle, onde podemos logar todos os pacotes que coincidam  com as condições descritas na regra. Abaixo listo outros tipos de regras: Bloqueando a porta 80 (http) Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 10. 10 iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP Liberando acesso a porta 53 (DNS) iptables ­A INPUT ­p udp ­­dport 53 ­j ACCEPT Liberando acesso acesso de uma determinada rede ao servidor de e­mail (pop3 e smtp) iptables ­A INPUT ­p tcp ­m multiport ­­dport 25,110 ­s 192.168.5.0/24 ­j ACCEPT Fazendo um redirecionamento de porta iptables ­t nat ­A PREROUTING ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j REDIRECT ­­to­port 3128 4.4.2 Listando regras Para listar as regras utiliza­se a opção ­L, a sintaxe do comando: iptables ­t [tabela] ­L Exemplificando o comando: iptables ­L Seu retorno será: root@ferrari:/home/edmafer# iptables ­L Chain INPUT (policy ACCEPT) target         prot  opt source                  destination DROP          tcp   ­­  anywhere             anywhere            tcp dpt:www ACCEPT     udp  ­­  anywhere             anywhere            udp dpt:domain ACCEPT     tcp   ­­  192.168.5.0/24       anywhere            multiport dports smtp,pop3 Chain FORWARD (policy ACCEPT) target     prot opt source               destination Chain OUTPUT (policy ACCEPT) target     prot opt source               destination root@ferrari:/home/edmafer# Visualizando as regras da tabela nat: iptables ­t nat ­L E seu retorno será: root@ferrari:/home/edmafer# iptables ­t nat ­L Chain PREROUTING (policy ACCEPT) target             prot opt source               destination REDIRECT   tcp  ­­  192.168.5.0/24       anywhere            tcp dpt:www redir ports 3128 Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 11. 11 Chain POSTROUTING (policy ACCEPT) target     prot opt source               destination Chain OUTPUT (policy ACCEPT) target     prot opt source               destination root@ferrari:/home/edmafer# Temos ainda algumas opções que poderemos estar verificando a na listagem das regras: • ­v Exibe mais detalhes sobre as regras criadas, como a quantidade de pacotes e bytes  tratados pelas regras. E a quantidade de pacotes e bytes tratados pelas regras padrões das  chains. • ­n Endereços de máquinas/portas não serão resolvidos, serão exibidos como números. Util  quando se possui muitas regras em um firewall. • ­x Exibe valores exatos ao invés de arredondamentos. • ­­line­numbers Exibe o número da posição da regra na primeira coluna da listagem. 4.4.3 Apagando regras Para apagar as regras usaremos a opção ­F, e com a seguinte sintaxe: iptables ­t [tabela] ­F Apagando as regras da tabela Apagando da tabela filter iptables ­F Apagando da tabela nat iptables ­t nat ­F 4.4.4 Posição das regras A ordem na regra na inserção dos comandos é importante. Percebe­se que os iniciantes na  configuração de um firewall erram muito aqui. Uma regra inserida antes prevalecerá a outra inserida  posteriormente. iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP iptables ­A INPUT ­p tcp ­­dport ­s 127.0.0.1 ­j ACCEPT Verifique as regras acima. Na primeira regra nós bloqueamos o acesso a porta 80, na segunda  nós liberamos o acesso a porta 80, desde que esta conexão seja proveniente da máquina local. Isto não irá funcionar. Pois quando nosso firewall estiver verificando em qual regra se encaixa  o pacote, ele irá encontrar a primeira e não fará mais verificações. Com isto a regra que libera o  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 12. 12 acesso da máquina local não terá função nenhuma já que a primeira a excluirá. Para funcionar as regras devem ficar assim: iptables ­A INPUT ­p tcp ­­dport 80 ­s 127.0.0.1 ­j ACCEPT iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP A não ser que a conexão seja local ele irá passar pela primeira regra já que os pacotes não  coincidiram com as condições descritas na regra, e ela será negada na segunda. 4.4.5 Inserindo regras em posição definida Com o uso da opção ­A inserimos as regras sempre uma posição depois da última inserida, e  como vimos no tópico anterior isto pode nos gerar problemas se precisarmos inserir uma regra com  mais especificações do que a já inserida. Por isto é possível inserimos uma regra em uma posição definida com a opção ­I. iptables ­I INPUT 1 ­s 127.0.0.1 ­p tcp ­­dport 80 ­j ACCEPT Assim nós estaremos inserindo esta regra na primeira posição, e a regra que estava na primeira  posição automaticamente irá para a posição 2, e assim por diante. Desta forma nossa regra será verificada antes de uma regra mais abrangente atenda a conexão. 4.4.6 Substituindo uma regra É possível nós mantermos um controle sobre as nossas regras, alterando­as sem a necessidade  de se reiniciar todo o firewall. Por isto podemos estar substituindo as regras com a opção ­R. Vamos substituir a regra anterior para liberar acesso para toda a rede interna: iptables ­R INPUT 1 ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j ACCEPT Com este controles controles de regras, adicionar, excluir, inserir em posição definida e  substituir, é possível criar scripts que vão alterando o nosso firewall de acordo com a necessidade de  forma automática. 4.5 Definindo regras Na definições de regras, podemos estar nos utilizando de várias verificações que nos permitem  um controle maior sobre as conexões direcionadas ou originadas ao servidor. 4.5.1 Tipos de protocolos 4.5.1.1 TCP Em cada regra é possível estar definindo os tipos de protocolos a serem tratados, seja TCP,  UDP e ICMP. Para isto utilizamos a opção ­p. iptables ­A INPUT ­p tcp ­­dport 80 ­j DROP Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 13. 13 Na regra acima as conexões que forem direcionadas a porta 80 e utilizem o protocolo tcp serão  tratadas por ela. No caso negando a conexão. Mais informações: iptables ­p tcp ­h 4.5.1.2 UDP iptables ­A INPUT ­s 192.168.5.0/24 ­p udp ­­dport 53 ­j ACCEPT Já na regra acima estaremos fazendo um filtro para permitir que o DNS seja consultado  somente pela máquinas da rede interna utilizando o protocolo udp. Mais informações: iptables ­p udp ­h 4.5.1.3 ICMP iptables ­A INPUT ­s ! 192.168.5.0/24 ­p icmp ­j REJECT Definimos nesta regra que qualquer pacote com o protocolo ICMP (ex. ping) que não tenha se  originado na rede interna seja negado, e como mensagem de retorno será reject­with icmp­port­ unreachable, por causa do alvo reject. No protocolo icmp é possível a utilização da opção –icmp­type[tipo]. Onde poderemos estar  informando qual é o tipo de comunicação icmp que deve ser tratada. Alguns tipos de comunicação icmp: echo­reply (pong) destination­unreachable network­unreachable host­unreachable protocol­unreachable port­unreachable Para outros tipos: iptables ­p icmp ­h Quando não definido o protocolo a regra aceitará qualquer protocolo. 4.5.2 Endereços de origem É possível nas regras definirmos os endereços de origem. Isto é útil para estarmos validando  as conexões e permitindo que determinados hosts, ou redes, sejam liberados, ou negados. iptables ­A INPUT ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j ACCEPT Nesta regra definimos que a rede 192.168.5.0 pode acessar o servidor http. iptables ­A INPUT ­s 200.200.200.200 ­j DROP Aqui definimos que a máquina na internet com o ip 200.200.200.200 em q ualquer porta, com  qualquer protocolo não pode acessar nosso servidor. Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 14. 14 4.5.3 Endereços de destino Podemos definir o destino das conexões com a opção ­d. Com isto é possível negar o acesso  do servidor ou da rede a determinados endereços. iptables ­A FORWARD ­d 200.200.200.200 ­j DROP Na regra acima definimos que qualquer conexão que seja com o destino a máquina na internet  200.200.200.200 não será redirecionada. Uma grande preocupação dos administradores de redes é o bloqueio de determinados sites,  com esta opção podemos estar bloqueando. iptables ­A FORWARD ­d orkut.com ­j DROP Como visto foi utilizado como destino uma url ao invés do ip da máquina que se deseja  bloquear o acesso. Isto é possível pois o iptables irá fazer a resolução do nome sempre que precisar  verificar a regra. Assim é possível manter o controle sobre aqueles endereços que possuem ip  dinâmicos. Assim qualquer que seja a origem do pacotes, indiferente da porta e do protocolo toda e  qualquer conexão que desejar acessar o orkut.com não será redirecionada. 4.5.4 Portas de destino Podemos definir qual é a porta de destino em que as regras estarão verificando com a opção ­­ destination­port, ou simplesmente ­­dport. Esta opção somente funcionará se anteriormente foi definido o tipo de protocolo que a regra  estará conferindo. iptables ­A INPUT ­s ! 192.168.5.0/24 ­p tcp ­­dport 110 ­j DROP Foi definido aqui que não será possível conexões de fora da rede interna acessem o nosso  servidor pop3. Com a definição das portas nós controlamos quais serviço poderão ser acessados através do  nosso firewall. Verifique a tabela das portas comuns. 4.5.5 Portas de origem Também podemos definir em qual porta está se originando a conexão com a opção ­­source­ port ou ­­sport. iptables ­A INPUT ­s 200.200.200.200 ­p tcp ­­sport 25 ­j ACCEPT Assim definiremos que a conexão que for proveniente do host 200.200.200.200 e que esteja  sendo originada na porta 25 (smtp) seja aceita. Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 15. 15 4.5.6 Definindo múltiplas portas Para facilitar o controle, poderemos estar definindo várias portas para a mesma regra, seja de  destino ou de origem. 4.5.6.1 Definindo uma faixa de portas iptables ­A INPUT ­p tcp ­­dport 1024:65535 ­j DROP Nesta regra nós definimos que todas as conexões com destino a portas altas (de 1024 até  65535) sejam bloqueadas. Caso não seja definido a porta de inicial (:1024) ele assumirá como porta inicial a 0, e caso  não seja definido a porta final (1024:) será assumido como porta final a 65535. 4.5.6.2 Definindo várias portas Para definir várias portas que não estejam em uma faixa, poderemos estar utilizando o módulo  multiport, que nos permite adicionar até 15 portas na mesma regra. iptables ­A INPUT ­s 192.168.5.0/24 ­p tcp ­m multiport ­­dport 22,25,80,110 ­j ACCEPT Aqui foram liberados os acessos para rede interna para os serviços ssh,smtp,http e pop3  respectivamente. 4.5.7 Definindo a interface Geralmente máquinas firewall trabalham com várias interfaces (placas de rede). Com a opção  ­i e ­o podemos estar definindo as interfaces de origem ou destino, respectivamente. Não é possível adicionar esta opção as regras de todas as chains, na tabela filter a interface de  origem não poderá ser especificar em uma chain OUTPUT, e a de destino em um chain INPUT. E na  tabela nat não será possível especificar a interface de saída na chain PREROUTING e a interface de  origem nas chains OUTPUT E PREROUTING. iptables ­A INPUT ­i eth0 ­p tcp ­­dport 80 ­j ACCEPT Definimos que toda conexão que tenha chego pela eth0 (poderia ser a interface da rede  interna) tenha acesso ao servidor http. iptables ­A FORWARD ­i eth0 ­o eth1 ­j DROP Sendo a interface eth0 nossa interface da rede interna, e a eth1 a interface conectada a internet,  estaríamos bloqueando todo o acesso da rede interna a internet. Também é possível a utilização do coringa + que permite que definamos vários interfaces. iptables ­A FORWARD ­i wlan+ ­o eth0 ­j DROP Para aumentar a segurança da nossa rede, bloqueamos o acesso de todos os usuários  conectados a nossa wireless, nas interfaces de 0 à 9 a rede interna. É possível fazer referências a interfaces que ainda não existem. Como conexões intermitentes  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 16. 16 como ppp. 4.5.8 Endereço MAC Para aumentar a segurança na validação da origem da conexão, é possível que se especifique  qual é o endereço físico do host de origem, o endereço mac, com o módulo mac e a opção ­­mac­ source. iptables ­A INPUT ­s 192.168.5.2 ­m mac ­­mac­source 00:11:2F:DE:5F:4A ­p tcp ­­dport 22 ­j ACCEPT Estaremos aceitando somente a conexão do host 192.168.5.2 e que tenha como endereço físico  00:11:2F:DE:5F:4A no serviço ssh. A especificação do mac em uma regra aumenta a segurança, mas não garante que um outro  host não tenha seu endereço ip e seu endereço mac alterado. 4.5.9 Pacotes SYN O pacotes SYN são utilizados para iniciarem uma conexão TCP, assim é possível bloquear  novas conexões, ou filtra­las utilizando a opção –syn. iptables ­A INPUT ­p tcp ­­dport 22 ­­syn ­j DROP Esta regra não permite que nenhuma outra conexão ao serviço ssh se inicie, mas não irá  cancelar as conexões já existentes. 4.5.10 Estado da conexão Com o módulo state é possível estarmos conferindo o estado de uma conexão. • NEW: Verifica se o pacote é responsável pelo inicio de uma nova conexão. • ESTABLISHED: Se o pacote faz parte de uma conexão já estabilizada. • RELATED: São pacotes que estão relacionados a outras conexões, como por exemplo  mensagens de erro icmp • INVALID: Pacotes que não estão relacionados a nada, não puderam ser conferidos, como  respostas de conexões desconhecidas. iptables ­A INPUT ­s 192.168.5.0/24 ­p tcp –dport 22 ­m state –state NEW,ESTABLISHED ­j ACCEPT Estamos aceitando todas as novas conexões e as já existentes, desde que venham da nossa rede  interna para o serviço ssh. Para se evitar processamento, como umas das primeiras regras deve se adicionar uma regra  para negar conexões inválidas. iptables ­A INPUT ­m state –state INVALID ­j DROP 4.5.11 Exceções à regra Como em alguns casos devemos criar uma exceção à regra, nós podemos estar utilizando o  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 17. 17 identificador ! (not)  para informar que a próxima informação não deve ser verdadeira para conferir a  regra. iptables ­A INPUT ­s !192.168.5.2 ­p tcp –dport 23 ­j DROP Neguei o acesso de todos que não possuam o ip 192.168.5.2 ao serviço telnet. iptables ­t nat ­A PREROUTING ­p ! icmp ­d 200.200.200.200 ­j DNAT –to 200.200.200.111 Só faço o redirecionamento da conexão se o protocolo for diferente de icmp. iptables ­A INPUT ­p tcp –dport 25 ­m state –state ! NEW,ESTABLISHED ­j DROP Proibindo o acesso de pacotes que não estejam iniciando uma conexão, ou que não estejam  relacionados a uma conexão já existente no serviço smtp. 4.5.12 Alvo das regras Em toda regra é necessário se especificar um alvo. É ele que vai definir qual será a ação da  regra quando as condições impostas sejam satisfeitas. 4.5.12.1 DROP É o alvo padrão para negação de uma conexão. DROP faz o bloqueio e não retorna nada a  máquina que originou a conexão, isto delata a um scanner que a a máquina possui um firewall. iptables ­A INPUT ­s ! 192.168.5.0/24 ­m state –state NEW,INVALID ­j DROP Estou negando toda nova conexão, e toda conexão inválida que seja originada de fora da rede  interna. 4.5.12.2 REJECT Também um alvo de negação, mas com reject é possível enviar de volta uma mensagem do  tipo icmp. iptables ­A INPUT ­p tcp ­­dport 80 ­j REJECT ­­reject­with icmp­port­unreachable Será negada a conexão, e remetido a máquina que originou o pacote que a porta não existe. Verifique as opções de tipos icmp. 4.5.12.3 LOG Este alvo nos permite um controle dos pacotes que são verificados pelo firewall. Define­se  como se fosse uma regra, e ao satisfazer as condições, ele gera o log. Como o netfilter é um módulo  do kernel, ele gera um log em /var/log/kern.log como um log do kernel. Mas é possível definir qual é  o nível de log. iptables ­A INPUT ­p tcp –dport 22 ­j LOG –log­prefix”Acessaram o ssh ” E sempre que houver uma conexão ssh o resultado do log será: Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00  Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 18. 18 SRC=10.1.58.108 DST=10.1.58.252 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=13237 DF PROTO=TCP  SPT=4912 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0 Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00  SRC=10.1.58.108 DST=10.1.58.252 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=13238 DF PROTO=TCP  SPT=4912 DPT=22 WINDOW=65535 RES=0x00 ACK URGP=0 Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00  SRC=10.1.58.108 DST=10.1.58.252 LEN=68 TOS=0x00 PREC=0x00 TTL=128 ID=13239 DF PROTO=TCP  SPT=4912 DPT=22 WINDOW=65494 RES=0x00 ACK PSH URGP=0 Nos logs temos informações importantes sobre o acesso, como a data, a frase informada em – log­prefix, a interface de entrada, e se houve a interface de saída, o mac da máquina que originou o  pacote, endereço ip da máquina de origem e o destino do pacote, protocolo, porta utilizada pela  máquina de origem e a porta de destino, flags e outras informações. 4.5.12.4 RETURN Este alvo permite que se retorne a chain anterior, sem continuar verificando as regras da chain  atual. Útil para se fazer tratamento de exceções à regra. 1. iptables ­N WEB 2. iptables ­A INPUT ­p tcp ­­dport 80 ­j WEB 3. iptables ­A INPUT ­p tcp ­­dport 80 ­j ACCEPT 4. iptables ­A WEB ­s 192.168.5.2 ­j RETURN 5. iptables ­A WEB ­j DROP Estamos fazendo um bloqueio do serviço http se a máquina que originou a conexão não seja a  192.168.5.2. No passo 1 criamos uma chain chamada WEB, no passo 2 chamamos esta chain. No passo 3  eu libero acesso ao serviço, mas como eu chamei a chain antes, eu redirecionei as regras, e esta não  será verificada. A primeira regra da chain WEB é a verificação da origem. Caso seja a origem  especificada, ela chama RETURN. Ele redireciona a verificação para a chain anterior, que no caso  será a liberação da porta 80. 4.5.12.5 DNAT Regra utilizada na chain PREROUTING, este alvo altera os pacotes editando o seu destino,  assim redirecionando a conexão para outras máquinas. iptables ­t nat ­A PREROUTING ­p tcp –dport 80 ­j DNAT –to 192.168.5.2:3128 Nesta regra estamos redirecionando toda a conexão que chega na porta 80 para a máquina  192.168.5.2 na porta 3128, que é a porta padrão de um proxy. Na omissão da porta, será usada a porta de destino do pacote. Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  • 19. 19 4.5.12.6 SNAT Regra da chain POSTROUTING ela faz alteração da origem do pacote, serve para fazer o  acesso das máquinas da rede interna a internet, quando se utiliza um ou mais ip's fixos. iptables ­t nat ­A POSTROUTING ­s 192.168.5.0/24 ­p tcp ­­dport 80 ­j SNAT ­­to 200.200.200.200 Com esta regra estamos alterando a origem do pacote para o ip da internet 200.200.200.200,  quando é feita esta alteração o iptables cria uma tabela em memória onde no retorno da conexão ele  sabe quem foi a máquina que originou esta conexão e devolve a ela os pacotes. iptables ­t nat ­A POSTROUTING ­s 192.168.5.0/24 ­j SNAT ­­to 200.200.200.200­200.200.200.250 A diferença nesta regra é que ele vai utilizar uma faixa de ip's para as conexões.  Será  escolhido um endereço de acordo com o último alocado. 4.5.12.7 MASQUERADE Masquerade é um alvo utilizado também para alterar a origem de um pacote, permitindo que  as máquinas da rede interna possam estar acessando a internet. Ele é utilizado nos casos em que não  se possui um ip fixo. Ele verifica o endereço ip da interface de saída e utiliza ele para alterar o pacote. 4.5.12.8 Limite de conferencia de uma regra Algumas regras devem ter limite para serem executadas. Como o número máximo de conexões  ao serviço ssh por hora, quantidade de logs que devem ser armazenados, evitando­se um ataque de  logs que poderia encher o seu hd. Assim com o módulo limit e a opção ­­limit poderemos estar  definindo quantas vezes a regra deve ser validade em determinado tempo. iptables ­A INPUT ­p tcp ­­dport 22 ­m limit –limit 5/s ­j LOG ­­log­level 1 ­­log­prefix  “Teste de log ssh ” Este trabalho é licenciado sobre a licença Creative Commons Attribution­ShareAlike 2.5. Para visualizar uma cópia  desta   licença   visite   o   endereço:  http://creativecommons.org/licenses/by­sa/2.5/br/deed.pt  ou   envie   uma   carta   para  Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.