24
FERM 18 de abril de 2007

FERM

Embed Size (px)

DESCRIPTION

Centro de Difusão de Tecnologia e Conhecimento

Citation preview

Page 1: FERM

FERM18 de abril de 2007

Page 2: FERM

Sumário

I Sobre essa Apostila 2

II Informações Básicas 4

III FERM 9

1 O que é o FERM 10

2 Plano de ensino 112.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Introdução, Caracteres especiais 143.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 Estrutura de um arquivo de firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4 Caracteres Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Palavras-Chave e parâmetros 174.1 Palavras-chave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.2 Parâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.3 Algumas Location Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4 Algumas Match Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.5 Algumas Target Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5 Variáveis, Funções, Include, Opções de comandos 215.1 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.2 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.3 Include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.4 Algumas opções de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1

Page 3: FERM

Parte I

Sobre essa Apostila

2

Page 4: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Conteúdo

O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.

O formato original deste material bem como sua atualização está disponível dentro da licençaGNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção demesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC ([email protected]) desde outubrode 2006. Críticas e sugestões construtivas são bem-vindas a qualquer tempo.

Autores

A autoria deste é de responsabilidade de Beatriz Marília Ferreira Ribeiro ([email protected]).

O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, quevem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto comoutros parceiros institucionais, atuando em conjunto com as universidades federais brasileirasque tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Softwarejunto a outras entidades no país.

Informações adicionais podem ser obtidas através do email [email protected], ou dahome page da entidade, através da URL http://www.cdtc.org.br.

Garantias

O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizamdireta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença

Copyright ©2006, Instituto Nacional de Tecnologia da Informação ([email protected]) .

Permission is granted to copy, distribute and/or modify this document under the termsof the GNU Free Documentation License, Version 1.1 or any later version published bythe Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-TILA. A copy of the license is included in the section entitled GNU Free DocumentationLicense.

3

Page 5: FERM

Parte II

Informações Básicas

4

Page 6: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Sobre o CDTC

Objetivo Geral

O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito dodesenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.

Objetivo Específico

Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário ede código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre osservidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercadonacional a adotar novos modelos de negócio da tecnologia da informação e de novos negóciosde comunicação com base em software não-proprietário e de código fonte aberto, oferecendotreinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar comoincentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento deprodutos de software não proprietários e de seu código fonte livre, articulando redes de terceiros(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-dutos de software livre.

Guia do aluno

Neste guia, você terá reunidas uma série de informações importantes para que você comeceseu curso. São elas:

• Licenças para cópia de material disponível

• Os 10 mandamentos do aluno de Educação a Distância

• Como participar dos foruns e da wikipédia

• Primeiros passos

É muito importante que você entre em contato com TODAS estas informações, seguindo oroteiro acima.

Licença

Copyright ©2006, Instituto Nacional de Tecnologia da Informação ([email protected]).

5

Page 7: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termosda Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posteriorpúblicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSAAPOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-mentação Livre GNU".

Os 10 mandamentos do aluno de educação online

• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado épré-requisito para a participação nos cursos a distância.

• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-tica é necessário para poder executar as tarefas.

• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,dos colegas e dos professores.

• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seuscolegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.

• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisãoe a sua recuperação de materiais.

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações erealizá-las em tempo real.

• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.

• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagense descobertas.

• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente éponto - chave na comunicação pela Internet.

• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual nãocontrola a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.

Como participar dos fóruns e Wikipédia

Você tem um problema e precisa de ajuda?

Podemos te ajudar de 2 formas:

A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:

. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informaçõesque sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a

6

Page 8: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação queinteresse ao grupo, favor postá-la aqui.Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico docurso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos maisefetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativopara solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadasa todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podemajudar.Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com aformalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópicoé recomendável ver se a sua pergunta já foi feita por outro participante.

A segunda forma se dá pelas Wikis:

. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podemser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece umótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, porpessoas de todas as partes do mundo. Acesse-a em português pelos links:

• Página principal da Wiki - http://pt.wikipedia.org/wiki/

Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!

Primeiros Passos

Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:

• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;

• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar dasferramentas básicas do mesmo;

• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;

• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.

Perfil do Tutor

Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.

O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivosvalores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita asidéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.

7

Page 9: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutorou instrutor:

• fornece explicações claras acerca do que ele espera, e do estilo de classificação que iráutilizar;

• gosta que lhe façam perguntas adicionais;

• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-que motivo a classificação foi ou não foi atribuída’;

• tece comentários completos e construtivos, mas de forma agradável (em contraste com umreparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, deameaça e de nervossismo’)

• dá uma ajuda complementar para encorajar um estudante em dificuldade;

• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;

• ajuda o estudante a alcançar os seus objetivos;

• é flexível quando necessário;

• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,talvez numa fase menos interessante para o tutor);

• escreve todas as correções de forma legível e com um nível de pormenorização adequado;

• acima de tudo, devolve os trabalhos rapidamente;

8

Page 10: FERM

Parte III

FERM

9

Page 11: FERM

Capítulo 1

O que é o FERM

FERM (For Easy Rule Making) é um software usado para facilitar as tarefas de escrita e leiturade regras de firewall.

10

Page 12: FERM

Capítulo 2

Plano de ensino

2.1 Objetivo

Qualificar técnicos e programadores no software FERM.

2.2 Público Alvo

Usuários finais ou novatos que desejam migrar os seus sistemas proprietários para softwarelivre.

2.3 Pré-requisitos

Os usuários deverão ser, necessariamente, funcionários públicos e ter conhecimentos básicospara operar um computador.

2.4 Descrição

O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodlecomo ferramenta de aprendizagem. O curso tem duração de uma semana e possui um conjuntode atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas deacordo com as instruções fornecidas. O material didático está disponível on-line de acordo comas datas pré-estabelecidas em cada tópico. A versão adotada do Nvu é a 1.0, caso possua outraversão, podem ocorrer diferenças com relação a este material.

2.5 Metodologia

O curso está dividido da seguinte maneira:

2.6 Cronograma

• Descrição das atividades

11

Page 13: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• De Seguda-Feira a Domingo

• Lição 1 - instalação, introdução, estrutura de um arquivo de firewall, caracteres especiais

• Lição 2 - Palavras chave e Parâmetros

• Lição 3 - Variáveis, funções, include, opções de parâmetros

• De Quinta-Feira a Domigo

• Avaliação de aprendizagem

• Avaliação do curso

As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces-sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá umanota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição, poiselas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor doque 6.0, sugerimos que você faça novamente esta lição. // Ao final do curso será disponibilizada aavaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão consideradaspara a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durantea avaliação final. // Aconselhamos a leitura da "Ambientação do Moodle"para que você conheçaa plataforma de Ensino a Distância, evitando dificuldades advindas do "desconhecimento"sobrea mesma. // Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvidadeverá ser enviada no fórum. Diariamente os monitores darão respostas e esclarecimentos.

2.7 Programa

O curso oferecerá o seguinte conteúdo:

• Instalação

• Introdução

• Estrutura de um arquivo de firewall

• Caracteres especiais

• Palavras chave e parâmetros

• Algumas location keywords

• Algumas match keywords

• Algumas target keywords

• Variáveis

• Funções

• Include

• Algumas opções de comandos

12

Page 14: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

2.8 Avaliação

Toda a avaliação será feita on-line.Aspectos a serem considerados na avaliação:

• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;

• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.

Instrumentos de avaliação:

• Participação ativa nas atividades programadas.

• Avaliação ao final do curso.

• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação eobtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordocom a fórmula abaixo:

• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições

• AF = Avaliações

2.9 Bibliografia

• Man page: http://ferm.foo-projects.org/ferm.html/

13

Page 15: FERM

Capítulo 3

Introdução, Caracteres especiais

3.1 Instalação

FERM é uma ferramenta de manutenção para complexos firewalls, a qual retira o problema deprecisar reescrever complexas regras várias vezes. FERM permite que todo o conjunto de regrasdo firewall sejam armazenadas em arquivos separados, para que no futuro possa ser carregadocom um só comando.

Sendo assim, FERM é um aplicativo super útil e interessante sob GPL na qual a licença podeser encontrada na página do "Free Software Foundation".Para instalar o ferm basta digitar no terminal, logado como root, o seguinte:apt-get install ferm

3.2 Introdução

O FERM é uma ferramenta que tem como função facilitar a tarefa de criação de regras defirewall. Ele suporta firewalls ipchains, regras de ipfwadm e firewalls iptables. Esse curso foi ba-seado na página de manual do FERM.

Vamos começar com um exemplo simples:

chain INPUT {proto tcp ACCEPT;

}

isto adicionará uma regra ao chain INPUT para que todos os pacotes tcp sejam aceitos. Ve-jamos o segundo exemplo:

chain (INPUT OUTPUT) {proto (udp tcp) ACCEPT;

}

Esse exemplo é equivalente a quatro regras:

iptables -A INPUT -p tcp -j ACCEPT

14

Page 16: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

iptables -A OUTPUT -p tcp -j ACCEPTiptables -A INPUT -p udp -j ACCEPTiptables -A OUTPUT -p udp -j ACCEPT

Pode-se perceber com esse exemplo que o FERM realmete simplifica bastante a criação deregras. O objetivo desse curso é justamete aprender como criar essas regras.

3.3 Estrutura de um arquivo de firewall

A estrutura de um arquivo de firewall deve ser semelhante a de um programa em C. Existemalguns caracteres especiais que podem ser usados nos arquivos de configuração do FERM, alémde utilizar também opções e parâmetros.

Com essas palavras você pode definir as características do seu firewall. Qualquer firewall éformado por duas funções principais: a primeira delas é verificar se o tráfego satisfaz certas con-dições, a segunda delas é definir o que deve ser feito com o tráfego.

3.4 Caracteres Especiais

Listarei a seguir alguns caracteres especiais:

• ; é usado o final de regras. É possível escrever mais de uma, separadas por ponto e vírgula,em cada linha. Porém, isso prejudica a legibilidade do programa.

• são usados para delimitar blocos de regras. Blocos são usados para facilitar a tarefa deescrever regras que têm os primeiros parâmetros iguais e os demais diferentes. Então, osparâmetros comuns às regras são escritos fora do bloco (apenas uma vez, à esquerda dobloco) e os diferentes dentro dele. Veja um exemplo:

chain INPUT proto tcp {syn DENY;ACCEPT;

}

esse bloco equivale as duas seguintes regras:

iptables -A INPUT -p tcp -y -j DENYiptables -A INPUT -p tcp -j ACCEPT

• $ - é na definição de variáveis. Esse é um recurso pode melhorar a legibilidade dos arqui-vos, se forem escolhidos nomes significativos para as variáveis. Ao executar as regras oFERM substitui as variáveis por seus valores. Veja um exemplo:

set IF eth0set $IF ACCEPT

15

Page 17: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

set TARGET $IF

o resultado dessas definições é o seguinte:

$IF = eth0$eth0 = ACCEPT$TARGET = eth0

• & - é usado na chamada de funções. Você aprenderá sobre elas posteriormente.

• ( ) - são usados na definição de listas de valores. Tais valores serão aplicados à palavra-chave a esquerda da lista. Exemplo:

proto ( tcp udp icmp )

o resultado serão três regras com os seguintes trechos:... -p tcp ...... -p udp ...... -p icmp ...

Veja outro exemplo:

chain (INPUT OUTPUT FORWARD) proto (icmp,udp,tcp) DENY;

esta linha tem como resultado 9 regras, pois há 9 possíveis combinações dos elementosdas duas listas. Observe duas coisas importantes: os elementos podem ser separados porespaços ou vírgulas, e as listas podem estar tanto à esquerda quanto à direita de palavras-chave, ao contrário dos blocos de regras, que têm de estar sempre à direita destas palavras.

• # - esse carácter é usado antes de comentários. Tudo que estiver na mesma linha destecarácter e que for escrito depois dele será ignorado. Fazer comentários é um bom hábito,que facilita a leitura do arquivo futuramente por nós mesmos, ou por uma pessoa diiferenteda que o escreveu.

• ’comando’ - executa, em um shell, o comando escrito dentro das aspas e escreve a men-sagem de saída desse comando.

16

Page 18: FERM

Capítulo 4

Palavras-Chave e parâmetros

4.1 Palavras-chave

Já foram citadas nas páginas anteriores algumas palavras chave, como "chain"e "ACCEPT".Nesta lição você aprenderá muitas outras.

Existem três tipos de palavras-chave, descritos a seguir:

• location keywords - definem onde uma regra será criada, por exemplo "table"ou chain".

• match keywords - executam um teste em todos os pacotes. Caso um ou mais dos pacotesnão passe nesse teste a regra não terá efeito. Exemplo: "proto", "daddr". Geralmantematches tem parâmetros: "proto tcp", "daddr 172.16.0.0/12".

• target keywords - especificam o que deve ser feito com um pacote. Exemplo: ” REJECT","ACCEPT", "goto"

Qualquer regra é costituída de uma location keyword, uma target keyword e algumas matchkeywords:

table filter #locationproto tcp dport (http https) #matchACCEPT #target

4.2 Parâmetros

Algumas palavras-chave precisam ser complementadas com parâmetros, que podem ser lite-rais, referências a variáveis ou listas. Exemplo:

proto tcpsaddr %TRUSTED_HOSTS;proto tcp dport (http https ssh);LOG log-prefix "funky wardriver alert: ";

Alguns parâmetros podem ser negados:

17

Page 19: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

proto !esp;proto udp dport !domain;

Para negar palavras chave que não recebem parâmetros basta digitar ! antes delas:

proto tcp !syn;

4.3 Algumas Location Keywords

domain [ip|ip6] - define o domínio. O padrão é ip, que significa IPv4, ip6 é usado para suporteao protocolo ipv6.

table [filter|nat|mangle] - especifica em qual tabela a regra será inserida. As opções são, "filter",que é o padrão, "nat"e "mangle"

chain [chain-name] - especifica em qual chain (dentro da tabela atual) a regra será inserida. Ge-ralmete as chains pré-definidas são "INPUT", "OUTPUT", "FORWARD", "PREROUTING"e "POS-TROUTING".

policy [ACCEPT|DROP] - especifica a política padrão do chain atual. Pode ser um dos tar-gets ACCEPT, DROP, REJECT etc. Os pacotes que não satisfazem as regras serão tratadosda maeira especificada pela política padrão. Para evitar ambiguidades, sempre especifique qualpolítica será adotada para cada chain.

subchain - funciona como um bloco normal, mas o FERM move as regras de detro desse blocopara outro chain. O nome do novo chain será escolhido automaticamente pelo FERM. Em muitoscasos isto é mais rápido que um simples bloco, porque o ferm pode pular um grande bloco casoa pré-condição for falsa. Veja um exemplo:

table filter chain INPUT {saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {

proto tcp dport (http https ssh) ACCEPT;proto udp dport domain ACCEPT;

}}

serão geradas então 20 regras. Se um pacote chega e não satisfaz o saddr, ainda assim se-rão testadas as 20 regras. Usando subchain a checagem será feita apenas uma vez. Assim, oprocesso será mais rápido.

table filter chain INPUT {saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) subchain {

proto tcp dport (http https ssh) ACCEPT;proto udp dport domain ACCEPT;

}}

18

Page 20: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

4.4 Algumas Match Keywords

interface [interface-name] - define o nome da interface. É equivalente a -i switch no iptables.

outerface [interface-name] - semelhante a interface, somente para testar a interface de saídados pacotes, como no iptables.

protocol [protocol-name|protocol-number] - atualmente são suportados pelo kernel os pro-tocolos tcp, udp e icmp, ou seus respectivos números.

saddr|daddr [address-spec] - testa os pacotes originados de determinado endereço(saddr) oudestinados a um determinado endereço(daddr). Exemplo:

saddr 192.168/8 ACCEPT; #idêntico ao próximo: saddr 192.168.0.0/255.255.255.0 ACCEPT;daddr my.domain.com ACCEPT;

fragment - especifica que apenas pacotes fragmentados devem ser testados. Quando o pacoteé maior que o tamanho máximo de pacote que um sistema está apto a tratar ele será dividido empedaços menores que serão enviados um a um como se fossem pacotes.

sport|dport [port-spec] - faz a verificação dos pacotes em portas TCP ou UDP especifica-das. sport verifica as portas de origem dos pacotes e dport verifica as portas de destino. Essaspalavras-chave (sport e dport) só podem ser usadas depois de especificados os protocolos "pro-tocol tcp"ou "protocol udp".

icmp-type [type] - usado para especificar um tipo de uma mensagem icmp. Pode ser usadoapenas após "protocol icmp".

module [module-name] - Carrega um módulo do iptables. A maioria dos módulos fornecemmais mach keywords.

4.5 Algumas Target Keywords

goto [custon-chain-name] - vai para um outro chain. Caso nesse novo chain não haja regrasretorna para o chain anterior, para a regra seguinte a do goto.

ACCEPT - aceita os pacotes.

DROP - bloqueia os pacotes sem fazer nenhuma advertência.

REJECT - rejeita os pacotes e envia um pacote ICMP para o remetente. Por padrão esse pacoteé port-unreachable, mas você pode especificar um outro tipo de pacote ICMP.REJECT; #padrãoREJECT reject-with icmp-net-unreachable; # outro tipo especificado

RETURN - finaliza o chain atual e, caso ele tenha sido chamado por um goto retorna ao chainque o chamou.

19

Page 21: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

NOP - nenhuma ação é realizada.

20

Page 22: FERM

Capítulo 5

Variáveis, Funções, Include, Opções decomandos

5.1 Variáveis

Variáveis são utilizadas com o objetivo de melhorar a legibilidade de arquivos de firewall, prin-cipalmente se estes forem complexos. Veja um exemplo de definição de variáveis:

def $DEV_INTERNET = eth0;def $PORTS = (http ftp);def $MORE_PORTS = ($PORTS 8080);

depois de definir as variáveis use-as da mesma forma que usaria os parâmetros que elas substi-tuem. Veja um exemplo:

chain INPUT interface $DEV_INTERNET proto tcp dport $MORE_PORTS ACCEPT;

OBS: as variáveis não podem conter palavras-chave como "proto"ou "interface"em seus nomes,apenas podem ter parâmetros.

O valor definido para uma variável dentro de um bloco só vale dentro dele. Por exemplo, notrecho seguinte:

def $DEV_INTERNET = eth1;chain INPUT {

proto tcp {def $DEV_INTERNET = ppp0;interface $DEV_INTERNET dport http ACCEPT;

}interface $DEV_INTERNET DROP;

}

a definição def $DEV_INTERNET = ppp0 só vale dentro do bloco

21

Page 23: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

{def $DEV_INTERNET = ppp0;interface $DEV_INTERNET dport http ACCEPT;

}

fora deste bloco continua valendo a definição def $DEV_INTERNET = eth1.

Se houver uma chamada a um arquivo no qual foi feita uma declaração de variável então a decla-ração continua valendo no bloco que fez a chamada. Isto é útil quando são necessárias muitasdeclarações. Neste caso pode-se fazer um arquivo só de declarações e incluí-lo no arquivo queusa as variáveis.

Variáveis Automáticas

Algumas variáveis vêm definidas pelo FERM. Você pode utilizá-las da mesma fora que utilizaas que você definiu. São variáveis pré-definidas:

• $DOMAIN - o domínio atual, que pode ser "ip"ou "ip6"

• $TABLE - a tabela atual.

• $CHAIN - o chain atual.

5.2 Funções

Funções são semelhantes a variáveis, a diferença é que funções podem ter parâmetros e queelas fornecem comandos, e não valores. Veja um exemplo:

def &FOO() = proto (tcp udp) dport domain;&FOO() ACCEPT;

def &TCP_TUNNEL($port, $dest) = { table filter chain FORWARD interface ppp0 proto tcpdport $port daddr $dest outerface eth0 ACCEPT;

table nat chain PREROUTING interface ppp0 proto tcp dport $port daddr 1.2.3.4 DNAT to$dest;}

&TCP_TUNNEL(http, 192.168.1.33);&TCP_TUNNEL(ftp, 192.168.1.30;&TCP_TUNNEL((ssh smtp), 192.168.1.2);

Uma chamda de fução que contém um bloco (como ...) tem de ser o último comando da regra,isto é, deve prceder um ;. No exemplo acima você pôde escrever ACCEPT depois da chamada a’&FOO()’ porque não há blocos em ’&FOO()’.

22

Page 24: FERM

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.3 Include

A palavra-chave include permite a inclusão de arquivos externos. Exemplo:

include ’vars.ferm’;

O nome do arquivo é relativo ao arquivo que faz a chamada, ou seja, quando é incluído /etc/ferm/ferm.conf. Variáveis e funções declaradas em um arquivo incluído ainda ficam disponíveis no arquivo noqual a chamada é feita. É possível também usar includes dentro de blocos:

chain INPUT {include ’input.ferm’;

}

Se você incluir um diretório ao invés de um arquivo todos os arquivos desse diretório serão incluí-dos. Exemplo:

include ’ferm.d/’;

5.4 Algumas opções de comandos

• –noexec - Pula os comandos iptables ao invés de executá-los.

• –lines - mostra as linhas do firewall geradas pelas regras. Essas linhas serão mostradasimeditamente antes de serem executadas. Assim, se houver uma mensagem de erro vocêpoderá ver a regra que o causou.

• –interactive - aplica as regras do firewall e pede uma confirmação do usuário. Caso nãohaja essa confirmação dentro de 30 segundos o firewall volta a configuração anterior.

• –help - mostra uma lista das opções disponíveis.

• –version - informa qual é a versão do programa.

• –fast - habilita o modo rápido. É feito o seguinte: o FERM cria o arquivo iptables-save eo intala com o iptables-restore. Dessa forma o FERM precisará chamar o iptables apenasuma vez.

• –domain - lida apenas com o domínio especificado. Caso o domínio não esteja especificadono arquivo de entrada pode ser que não haja nenhuma saída.

23