SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
FERM
18 de abril de 2007
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 11
2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Introdução, Caracteres especiais 14
3.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Estrutura de um arquivo de firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Caracteres Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Palavras-Chave e parâmetros 17
4.1 Palavras-chave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Parâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Algumas Location Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4 Algumas Match Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.5 Algumas Target Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5 Variáveis, Funções, Include, Opções de comandos 21
5.1 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.3 Include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.4 Algumas opções de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1
Parte I
Sobre essa Apostila
2
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ça
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de
mesmo nome, tendo inclusive uma versão traduzida (não oficial).
A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro
de 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 (beatriz@cdtc.org.br)
.
O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que
vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com
outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras
que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software
junto a outras entidades no país.
Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da
home 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 responsabilizam
direta 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 (cdtc@iti.gov.br) .
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published by
the 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 Documentation
License.
3
Parte II
Informações Básicas
4
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 do
desenvolvimento 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 e
de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os
servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios
de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo
treinamento 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 como
incentivadores 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 de
produtos 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ê comece
seu 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 o
roteiro acima.
Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br).
5
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. 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 seus
colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.
• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais.
• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-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, aprendizagens
e 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ão
controla 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ções
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a
6
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 que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.
. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalizaçã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 podem
ser 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, por
pessoas 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 das
ferramentas 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 respectivos
valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.
7
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 tutor
ou 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 um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaç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
Parte III
FERM
9
Capítulo 1
O que é o FERM
FERM (For Easy Rule Making) é um software usado para facilitar as tarefas de escrita e leitura
de regras de firewall.
10
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 software
livre.
2.3 Pré-requisitos
Os usuários deverão ser, necessariamente, funcionários públicos e ter conhecimentos básicos
para operar um computador.
2.4 Descrição
O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodle
como ferramenta de aprendizagem. O curso tem duração de uma semana e possui um conjunto
de atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas de
acordo com as instruções fornecidas. O material didático está disponível on-line de acordo com
as datas pré-estabelecidas em cada tópico. A versão adotada do Nvu é a 1.0, caso possua outra
versã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
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á uma
nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição, pois
elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor do
que 6.0, sugerimos que você faça novamente esta lição. // Ao final do curso será disponibilizada a
avaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão consideradas
para a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durante
a avaliação final. // Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça
a plataforma de Ensino a Distância, evitando dificuldades advindas do "desconhecimento"sobre
a mesma. // Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida
deverá 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
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 e
obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo
com 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
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 de
precisar reescrever complexas regras várias vezes. FERM permite que todo o conjunto de regras
do firewall sejam armazenadas em arquivos separados, para que no futuro possa ser carregado
com um só comando.
Sendo assim, FERM é um aplicativo super útil e interessante sob GPL na qual a licença pode
ser 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 de
firewall. 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
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A INPUT -p udp -j ACCEPT
iptables -A OUTPUT -p udp -j ACCEPT
Pode-se perceber com esse exemplo que o FERM realmete simplifica bastante a criação de
regras. 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. Existem
alguns caracteres especiais que podem ser usados nos arquivos de configuração do FERM, além
de 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 de
escrever regras que têm os primeiros parâmetros iguais e os demais diferentes. Então, os
parâmetros comuns às regras são escritos fora do bloco (apenas uma vez, à esquerda do
bloco) 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 DENY
iptables -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 o
FERM substitui as variáveis por seus valores. Veja um exemplo:
set IF eth0
set $IF ACCEPT
15
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 elementos
das duas listas. Observe duas coisas importantes: os elementos podem ser separados por
espaç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 deste
cará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 diiferente
da 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
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 pacotes
não passe nesse teste a regra não terá efeito. Exemplo: "proto", "daddr". Geralmante
matches 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 match
keywords:
table filter #location
proto tcp dport (http https) #match
ACCEPT #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 tcp
saddr %TRUSTED_HOSTS;
proto tcp dport (http https ssh);
LOG log-prefix "funky wardriver alert: ";
Alguns parâmetros podem ser negados:
17
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 suporte
ao 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 tratados
da maeira especificada pela política padrão. Para evitar ambiguidades, sempre especifique qual
política será adotada para cada chain.
subchain - funciona como um bloco normal, mas o FERM move as regras de detro desse bloco
para outro chain. O nome do novo chain será escolhido automaticamente pelo FERM. Em muitos
casos isto é mais rápido que um simples bloco, porque o ferm pode pular um grande bloco caso
a 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, o
processo 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
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ída
dos 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) ou
destinados 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 em
pedaç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. Essas
palavras-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 usado
apenas após "protocol icmp".
module [module-name] - Carrega um módulo do iptables. A maioria dos módulos fornecem
mais mach keywords.
4.5 Algumas Target Keywords
goto [custon-chain-name] - vai para um outro chain. Caso nesse novo chain não haja regras
retorna 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ão
REJECT reject-with icmp-net-unreachable; # outro tipo especificado
RETURN - finaliza o chain atual e, caso ele tenha sido chamado por um goto retorna ao chain
que o chamou.
19
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
NOP - nenhuma ação é realizada.
20
Capítulo 5
Variáveis, Funções, Include, Opções de
comandos
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, no
trecho 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
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 muitas
declarações. Neste caso pode-se fazer um arquivo só de declarações e incluí-lo no arquivo que
usa as variáveis.
Variáveis Automáticas
Algumas variáveis vêm definidas pelo FERM. Você pode utilizá-las da mesma fora que utiliza
as 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 que
elas 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 tcp
dport $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
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 no
qual 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 mostradas
imeditamente 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ão
haja 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 e
o intala com o iptables-restore. Dessa forma o FERM precisará chamar o iptables apenas
uma vez.
• –domain - lida apenas com o domínio especificado. Caso o domínio não esteja especificado
no arquivo de entrada pode ser que não haja nenhuma saída.
23

Mais conteúdo relacionado

Mais procurados

De javaparapython
De javaparapythonDe javaparapython
De javaparapythonTiago
 
Tcl tk
Tcl tkTcl tk
Tcl tkTiago
 
Selinux
SelinuxSelinux
SelinuxTiago
 
Servidor de emails_seguro
Servidor de emails_seguroServidor de emails_seguro
Servidor de emails_seguroTiago
 
Pen linux
Pen linuxPen linux
Pen linuxTiago
 
Fw builder
Fw builderFw builder
Fw builderTiago
 
X dialog
X dialogX dialog
X dialogTiago
 
Pascal
PascalPascal
PascalTiago
 
Python gtk
Python gtkPython gtk
Python gtkTiago
 
Tunelamento
TunelamentoTunelamento
TunelamentoTiago
 
Monitoramento
MonitoramentoMonitoramento
MonitoramentoTiago
 
Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodleTiago
 
Screen
ScreenScreen
ScreenTiago
 
Instalacao xoops
Instalacao xoopsInstalacao xoops
Instalacao xoopsTiago
 
Ppt pd
Ppt pdPpt pd
Ppt pdTiago
 
Wx python
Wx pythonWx python
Wx pythonTiago
 

Mais procurados (20)

Xdmcp
XdmcpXdmcp
Xdmcp
 
De javaparapython
De javaparapythonDe javaparapython
De javaparapython
 
Tcl tk
Tcl tkTcl tk
Tcl tk
 
Selinux
SelinuxSelinux
Selinux
 
Servidor de emails_seguro
Servidor de emails_seguroServidor de emails_seguro
Servidor de emails_seguro
 
Pen linux
Pen linuxPen linux
Pen linux
 
Fw builder
Fw builderFw builder
Fw builder
 
X dialog
X dialogX dialog
X dialog
 
Pascal
PascalPascal
Pascal
 
Samba
SambaSamba
Samba
 
Inkscape
InkscapeInkscape
Inkscape
 
Python gtk
Python gtkPython gtk
Python gtk
 
Tunelamento
TunelamentoTunelamento
Tunelamento
 
Monitoramento
MonitoramentoMonitoramento
Monitoramento
 
Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodle
 
Screen
ScreenScreen
Screen
 
Instalacao xoops
Instalacao xoopsInstalacao xoops
Instalacao xoops
 
Plone
PlonePlone
Plone
 
Ppt pd
Ppt pdPpt pd
Ppt pd
 
Wx python
Wx pythonWx python
Wx python
 

Destaque

Хлорелла для человека БИОЭРАГРУПП
Хлорелла для человека БИОЭРАГРУППХлорелла для человека БИОЭРАГРУПП
Хлорелла для человека БИОЭРАГРУППAkulova Alina
 
Brown bag sessions git workshop
Brown bag sessions git workshopBrown bag sessions git workshop
Brown bag sessions git workshopBishant Shrestha
 
Unicom India Testing Week: Testing @ cross roads...
Unicom India Testing Week: Testing @ cross roads...Unicom India Testing Week: Testing @ cross roads...
Unicom India Testing Week: Testing @ cross roads...Sridhar Throvagunta, PMP
 
Just a few things about France
Just a few things about France Just a few things about France
Just a few things about France Rebeca Barbu
 
SHM Research Report
SHM Research ReportSHM Research Report
SHM Research ReportYi Yang
 
QAI STC 2014 Plenary Keynote: Innovation & agility in testing a paradigm shift
QAI STC 2014 Plenary Keynote: Innovation & agility in testing   a paradigm shiftQAI STC 2014 Plenary Keynote: Innovation & agility in testing   a paradigm shift
QAI STC 2014 Plenary Keynote: Innovation & agility in testing a paradigm shiftSridhar Throvagunta, PMP
 
Recommendation Letter for Jennifer Mason
Recommendation Letter for Jennifer MasonRecommendation Letter for Jennifer Mason
Recommendation Letter for Jennifer MasonJennifer Mason
 
2016 Q3 Trends and Highlights
2016 Q3 Trends and Highlights2016 Q3 Trends and Highlights
2016 Q3 Trends and HighlightsJose Santana
 
Влияние конкуренции на деятельность фирм
Влияние конкуренции на деятельность фирмВлияние конкуренции на деятельность фирм
Влияние конкуренции на деятельность фирмВадим Кудрин
 
Presentation on Repository Control System
Presentation on Repository Control SystemPresentation on Repository Control System
Presentation on Repository Control SystemMd. Mujahid Islam
 
Your WordPress Site Has Been Hacked: What Now?
Your WordPress Site Has Been Hacked: What Now?Your WordPress Site Has Been Hacked: What Now?
Your WordPress Site Has Been Hacked: What Now?Keanan Koppenhaver
 
Презентация психолога детского дома Худаниной Е.В.
Презентация психолога детского дома Худаниной Е.В.Презентация психолога детского дома Худаниной Е.В.
Презентация психолога детского дома Худаниной Е.В.Александр Фатеев
 
Social Geek Radio 2016 Highlights
Social Geek Radio 2016 HighlightsSocial Geek Radio 2016 Highlights
Social Geek Radio 2016 HighlightsDeb Evans, CFE
 
Agile pmo brussels 2012
Agile pmo brussels 2012Agile pmo brussels 2012
Agile pmo brussels 2012Participium
 

Destaque (20)

leer-mas
leer-masleer-mas
leer-mas
 
Хлорелла для человека БИОЭРАГРУПП
Хлорелла для человека БИОЭРАГРУППХлорелла для человека БИОЭРАГРУПП
Хлорелла для человека БИОЭРАГРУПП
 
GMAT
GMATGMAT
GMAT
 
Tabelka
TabelkaTabelka
Tabelka
 
Brown bag sessions git workshop
Brown bag sessions git workshopBrown bag sessions git workshop
Brown bag sessions git workshop
 
Unicom India Testing Week: Testing @ cross roads...
Unicom India Testing Week: Testing @ cross roads...Unicom India Testing Week: Testing @ cross roads...
Unicom India Testing Week: Testing @ cross roads...
 
Just a few things about France
Just a few things about France Just a few things about France
Just a few things about France
 
Graduation Marksheets
Graduation MarksheetsGraduation Marksheets
Graduation Marksheets
 
SHM Research Report
SHM Research ReportSHM Research Report
SHM Research Report
 
Sin título 1
Sin título 1Sin título 1
Sin título 1
 
QAI STC 2014 Plenary Keynote: Innovation & agility in testing a paradigm shift
QAI STC 2014 Plenary Keynote: Innovation & agility in testing   a paradigm shiftQAI STC 2014 Plenary Keynote: Innovation & agility in testing   a paradigm shift
QAI STC 2014 Plenary Keynote: Innovation & agility in testing a paradigm shift
 
THE MOBILIZATION OF WOMEN IN POLITICS
THE MOBILIZATION OF WOMEN IN POLITICSTHE MOBILIZATION OF WOMEN IN POLITICS
THE MOBILIZATION OF WOMEN IN POLITICS
 
Recommendation Letter for Jennifer Mason
Recommendation Letter for Jennifer MasonRecommendation Letter for Jennifer Mason
Recommendation Letter for Jennifer Mason
 
2016 Q3 Trends and Highlights
2016 Q3 Trends and Highlights2016 Q3 Trends and Highlights
2016 Q3 Trends and Highlights
 
Влияние конкуренции на деятельность фирм
Влияние конкуренции на деятельность фирмВлияние конкуренции на деятельность фирм
Влияние конкуренции на деятельность фирм
 
Presentation on Repository Control System
Presentation on Repository Control SystemPresentation on Repository Control System
Presentation on Repository Control System
 
Your WordPress Site Has Been Hacked: What Now?
Your WordPress Site Has Been Hacked: What Now?Your WordPress Site Has Been Hacked: What Now?
Your WordPress Site Has Been Hacked: What Now?
 
Презентация психолога детского дома Худаниной Е.В.
Презентация психолога детского дома Худаниной Е.В.Презентация психолога детского дома Худаниной Е.В.
Презентация психолога детского дома Худаниной Е.В.
 
Social Geek Radio 2016 Highlights
Social Geek Radio 2016 HighlightsSocial Geek Radio 2016 Highlights
Social Geek Radio 2016 Highlights
 
Agile pmo brussels 2012
Agile pmo brussels 2012Agile pmo brussels 2012
Agile pmo brussels 2012
 

Semelhante a Ferm

Intro micro software
Intro micro softwareIntro micro software
Intro micro softwareTiago
 
Nessus
NessusNessus
NessusTiago
 
Drupal
DrupalDrupal
DrupalTiago
 
Inkscape
InkscapeInkscape
InkscapeTiago
 
Drivers de dispostivos_linux
Drivers de dispostivos_linuxDrivers de dispostivos_linux
Drivers de dispostivos_linuxTiago
 
Quanta
QuantaQuanta
QuantaTiago
 
Linguagem ruby
Linguagem rubyLinguagem ruby
Linguagem rubyTiago
 
Jabber
JabberJabber
JabberTiago
 
Postfix
PostfixPostfix
PostfixTiago
 
Nagios2
Nagios2Nagios2
Nagios2Tiago
 
K mobile jpilot_kpilot
K mobile jpilot_kpilotK mobile jpilot_kpilot
K mobile jpilot_kpilotTiago
 

Semelhante a Ferm (20)

J2me
J2meJ2me
J2me
 
Intro micro software
Intro micro softwareIntro micro software
Intro micro software
 
Ftp
FtpFtp
Ftp
 
Mrtg
MrtgMrtg
Mrtg
 
Qemu
QemuQemu
Qemu
 
Nessus
NessusNessus
Nessus
 
Drupal
DrupalDrupal
Drupal
 
Inkscape
InkscapeInkscape
Inkscape
 
Ltsp
LtspLtsp
Ltsp
 
Drivers de dispostivos_linux
Drivers de dispostivos_linuxDrivers de dispostivos_linux
Drivers de dispostivos_linux
 
Uml
UmlUml
Uml
 
Quanta
QuantaQuanta
Quanta
 
Linguagem ruby
Linguagem rubyLinguagem ruby
Linguagem ruby
 
Squid
SquidSquid
Squid
 
Jabber
JabberJabber
Jabber
 
Lvm
LvmLvm
Lvm
 
Postfix
PostfixPostfix
Postfix
 
Nagios2
Nagios2Nagios2
Nagios2
 
K mobile jpilot_kpilot
K mobile jpilot_kpilotK mobile jpilot_kpilot
K mobile jpilot_kpilot
 
Horde
HordeHorde
Horde
 

Mais de Tiago

Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotprojectTiago
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascalTiago
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascalTiago
 
Python bge
Python bgePython bge
Python bgeTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharpTiago
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpTiago
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpTiago
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpTiago
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharpTiago
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantesTiago
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharpTiago
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivosTiago
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafaelTiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharpTiago
 
Classes csharp
Classes csharpClasses csharp
Classes csharpTiago
 
C# o basico
C#   o basicoC#   o basico
C# o basicoTiago
 

Mais de Tiago (20)

Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotproject
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascal
 
Python bge
Python bgePython bge
Python bge
 
Curso python
Curso pythonCurso python
Curso python
 
Curso python
Curso pythonCurso python
Curso python
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharp
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharp
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharp
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharp
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharp
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantes
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharp
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivos
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafael
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharp
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
C# o basico
C#   o basicoC#   o basico
C# o basico
 

Ferm

  • 2. 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 11 2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3 Introdução, Caracteres especiais 14 3.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3 Estrutura de um arquivo de firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 Caracteres Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4 Palavras-Chave e parâmetros 17 4.1 Palavras-chave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Parâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.3 Algumas Location Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.4 Algumas Match Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.5 Algumas Target Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5 Variáveis, Funções, Include, Opções de comandos 21 5.1 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.2 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3 Include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.4 Algumas opções de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1
  • 3. Parte I Sobre essa Apostila 2
  • 4. 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ça GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de mesmo nome, tendo inclusive uma versão traduzida (não oficial). A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro de 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 (beatriz@cdtc.org.br) . O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software junto a outras entidades no país. Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da home 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 responsabilizam direta 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 (cdtc@iti.gov.br) . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the 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 Documentation License. 3
  • 6. 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 do desenvolvimento 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 e de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo treinamento 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 como incentivadores 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 de produtos 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ê comece seu 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 o roteiro acima. Licença Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br). 5
  • 7. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA APOSTILA. 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 seus colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo. • 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão e a sua recuperação de materiais. • 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e realizá-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, aprendizagens e 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ão controla 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ções que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a 6
  • 8. 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 que interesse ao grupo, favor postá-la aqui. Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais efetivos para esta prática. . O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem ajudar. Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a formalizaçã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 podem ser 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, por pessoas 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 das ferramentas 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 respectivos valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar. 7
  • 9. 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 tutor ou 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 um reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de ameaç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
  • 11. Capítulo 1 O que é o FERM FERM (For Easy Rule Making) é um software usado para facilitar as tarefas de escrita e leitura de regras de firewall. 10
  • 12. 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 software livre. 2.3 Pré-requisitos Os usuários deverão ser, necessariamente, funcionários públicos e ter conhecimentos básicos para operar um computador. 2.4 Descrição O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodle como ferramenta de aprendizagem. O curso tem duração de uma semana e possui um conjunto de atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas de acordo com as instruções fornecidas. O material didático está disponível on-line de acordo com as datas pré-estabelecidas em cada tópico. A versão adotada do Nvu é a 1.0, caso possua outra versã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
  • 13. 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á uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição, pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor do que 6.0, sugerimos que você faça novamente esta lição. // Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durante a avaliação final. // Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de Ensino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma. // Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá 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
  • 14. 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 e obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo com 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
  • 15. 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 de precisar reescrever complexas regras várias vezes. FERM permite que todo o conjunto de regras do firewall sejam armazenadas em arquivos separados, para que no futuro possa ser carregado com um só comando. Sendo assim, FERM é um aplicativo super útil e interessante sob GPL na qual a licença pode ser 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 de firewall. 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
  • 16. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF iptables -A OUTPUT -p tcp -j ACCEPT iptables -A INPUT -p udp -j ACCEPT iptables -A OUTPUT -p udp -j ACCEPT Pode-se perceber com esse exemplo que o FERM realmete simplifica bastante a criação de regras. 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. Existem alguns caracteres especiais que podem ser usados nos arquivos de configuração do FERM, além de 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 de escrever regras que têm os primeiros parâmetros iguais e os demais diferentes. Então, os parâmetros comuns às regras são escritos fora do bloco (apenas uma vez, à esquerda do bloco) 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 DENY iptables -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 o FERM substitui as variáveis por seus valores. Veja um exemplo: set IF eth0 set $IF ACCEPT 15
  • 17. 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 elementos das duas listas. Observe duas coisas importantes: os elementos podem ser separados por espaç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 deste cará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 diiferente da 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
  • 18. 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 pacotes não passe nesse teste a regra não terá efeito. Exemplo: "proto", "daddr". Geralmante matches 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 match keywords: table filter #location proto tcp dport (http https) #match ACCEPT #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 tcp saddr %TRUSTED_HOSTS; proto tcp dport (http https ssh); LOG log-prefix "funky wardriver alert: "; Alguns parâmetros podem ser negados: 17
  • 19. 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 suporte ao 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 tratados da maeira especificada pela política padrão. Para evitar ambiguidades, sempre especifique qual política será adotada para cada chain. subchain - funciona como um bloco normal, mas o FERM move as regras de detro desse bloco para outro chain. O nome do novo chain será escolhido automaticamente pelo FERM. Em muitos casos isto é mais rápido que um simples bloco, porque o ferm pode pular um grande bloco caso a 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, o processo 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
  • 20. 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ída dos 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) ou destinados 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 em pedaç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. Essas palavras-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 usado apenas após "protocol icmp". module [module-name] - Carrega um módulo do iptables. A maioria dos módulos fornecem mais mach keywords. 4.5 Algumas Target Keywords goto [custon-chain-name] - vai para um outro chain. Caso nesse novo chain não haja regras retorna 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ão REJECT reject-with icmp-net-unreachable; # outro tipo especificado RETURN - finaliza o chain atual e, caso ele tenha sido chamado por um goto retorna ao chain que o chamou. 19
  • 21. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF NOP - nenhuma ação é realizada. 20
  • 22. Capítulo 5 Variáveis, Funções, Include, Opções de comandos 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, no trecho 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
  • 23. 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 muitas declarações. Neste caso pode-se fazer um arquivo só de declarações e incluí-lo no arquivo que usa as variáveis. Variáveis Automáticas Algumas variáveis vêm definidas pelo FERM. Você pode utilizá-las da mesma fora que utiliza as 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 que elas 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 tcp dport $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
  • 24. 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 no qual 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 mostradas imeditamente 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ão haja 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 e o intala com o iptables-restore. Dessa forma o FERM precisará chamar o iptables apenas uma vez. • –domain - lida apenas com o domínio especificado. Caso o domínio não esteja especificado no arquivo de entrada pode ser que não haja nenhuma saída. 23