howto para trabalho de conclusao do curso de tecnologia de redes de computadoresDescrição completa
How to Installation Office 2010 Under Wine Ubuntu
IP-MASQ-HOWTO the Official Linux Documentation Project (LDP) HOWTO Distribution Site
Descripción completa
Ceramic and Mylar Capacitor Value Howto and Code Sheet. Great as a printout for a workshop or lab walls. Authored by Benjamin LuckDescripción completa
How to install CCcamFull description
HowTo...Subscription and Notification with SAP NetWeaver Gateway - Android Code
VNC is considered the standard in remote GUI software for connecting to a Linux machine from a remote host, but VNC usually offers a slow unresponsive GUI experience. An alternative solution…Full description
VNC is considered the standard in remote GUI software for connecting to a Linux machine from a remote host, but VNC usually offers a slow unresponsive GUI experience. An alternative solution is XRD...
howto
gjfjhFull description
IPFW-HOWTO
Atençã o: o: este documento apesar de datado, é ainda considerado pr ático, e a melhor introdução ao
IPFIREWALL(4) disponível publicamente na Internet. Todas as informações aqui disponíveis continuam v álidas e aplicáveis nas versões mais recentes do FreeBSD. Contudo, uma série de recursos n ão são documentados neste documento, a saber: •
Controle de Banda e QoS com WF2Q+
•
;Suporte ALTQ;
•
Blocos OR;
•
Tabelas e análise binária avançada;
•
Grupos de Regras;
•
Marcação de Pacotes;
•
Filtro de Camada 2;
•
Filtro de Camada 7 em conjunto com Netgraph;
•
Balanceamento e Redundância de Firewall (IPFW TEE);
•
Recursos anti-spoof nativos; nativos;
•
Filtro IPv6;
•
Outros de menor relev ância;
O leitor deste documento é fortemente indicado a obter mais informa ções sobre os recursos acima. As fontes de informação recomendadas são o histórico da lista de discuss ões FUG-BR e o livro FreeBSD: Poder para Servir , de Patrick Tracanelli e Tracanelli e Jean M. Melo , este que por sua vez documenta todos os tópicos não abordados aqui, com amplos detalhes. á em plena sincronia com a vers ã ã o 0.4 deste HOW-TO. A diferen ç ça entre a vers ã ã o 0.3 e a Este documento est á ão corre çõ çõ es á ficas í ngua 0.4 s ã es ortogr á em l í ngua inglesa.
Este documento encontra-se dispon ível no website da FreeBSD Brasil por refer ência histórica (especialmente links links referenciados referenciados por engines engines de de busca). O endereco permanente deste documento em sua versão original é: http://free.bsd.com.br/~eksffa/freebsd/ipfw.txt
http://www.freebsdbrasil.com.br Reprodu çã çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
http://www.freebsdbrasil.com.br Reprodu çã çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
http://www.freebsdbrasil.com.br Reprodu çã çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
V.0.3br_pt Se existirem perguntas ou comentários, por favor, envie-os para [email protected]. [email protected]. A versão mais recente desse documento vai estar sempre disponível em www.freebsd-howto.com. Os direitos de reprodução desse documento são reservados. Versão em português desse documento sob responsabilidade de Patrick Tracanelli ([email protected]) ([email protected]) e Maurício Goto ([email protected]). [email protected]). A versão mais recente do mesmo estará sempre disponível em http://free.bsd.com.br/~eksffa http://free.bsd.com.br/~eksffa/freebsd/ipfw.tx /freebsd/ipfw.txt t Sumário. 1. 2.
Informacoes gerais sobre a Filtragem de Pacotes de Rede Acionando o Ipfirewall(4)
2.1. (OPEN firewalls) 2.2.
O /etc/rc.firewall /etc/rc.firewall e firewalls com política aberta Carregando Rulesets (conjunto de regras) 2.2.1. Tipos de Firewall pré-definidos 2.2.2. Tipos de Firewall Personalizado
3.
Sintaxe de regras básicas do Ipfw(8) 3.1. 3.2. 3.3. 3.4.
Listando Regras Ativas Comandos básicos e suas funções Especificando Protocolos Especificando endereços de Origem e de Destino 3.4.1. Uma introdução à Netmask e Bitmask 3.4.2. Especificando Portas e Faixas Faixas de Portas
4.
Sintaxe de regras avançadas do ipfw(8) 4.1. 4.2. 4.3.
A ação "unreach" Controle de Interface e de Fluxo Combinando tipos de pacotes ICMP e TCP específicos 4.3.1. icmptypes 4.3.2. tcpflags, setup & established 4.3.3. ipoptions
4.4. 4.5. 5.
Reconhecendo Pacotes Fragmentados Filtragem baeada em UID e GID
Logs (Logging) 5.1. 5.2.
Propriedades de Logs Configurações de Logs do sistema 5.2.1. Opções do Kernel http://www.freebsdbrasil.com.br
Reprodu çã çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
5.2.2. Configurando o syslog(8) 5.2.3. Configuração do newsyslog(8) pra fazer rotacionamento de logs (log rotation) 5.3. 6.
Configuração de log nas regras
Introdução à filtragem 'Stateless' e 'Stateful' de pacotes 6.1. Configurações 'Stateful' Iniciais 6.2. Configurações 'Stateful' Avançadas 6.3. Anatomia de uma Regra Dinâmica
7.
Traffic Shapping (controle de tráfego) 7.1. Probabilidade de Ocorrências (Probability Matching) 7.2. Dummynet
Reinjection) 8.
7.2.1. Enfileiramento de pipes (Pipe Queues) 7.2.2. Máscaras de pipes (Pipe Masks) 7.2.3. Remanejamento de pacotes pacotes por pipes (Packet Fluxo do Tráfego pelo Firewall
Apêndice A: Exemplos de Configurações de Firewall;
1.
Informacoes gerais sobre a Filtragem de Pacotes de Rede;
IPFW(8), a interface de comando do IPFIREWALL(4) é o utilitário mais comum e mais popular pra implementar i mplementar a filtragem de pacotes IP e controle de tráfego de rede no FreeBSD, e é a ferramenta de FIREWALL nativa com a qual o FreeBSD trabalha por padrão (mesmo considerando que, inicialmente o firewall é desabilitado a nível de kernel). A forma lógica como o IPFW trabalha suas regras é parecida com a adotada em muitos outros filtros de pacotes (Packet Filters), com excessão do IPFilter, que opera com um padrão pra tratar as regras que é menos eficiente e requer bem mais cuidado na hora de ajustar o firewall (se você tem familiaridade com o ipf(8), por exemplo, perceba a utilização da chave 'quick', necessária para que o ipf(8) não traverse a regra inteira, todas as vezes que ela é lida; entre outros fatores particulares de utilização do IPFilter). Mas isso não tira a qualidade e o poder de implementação de firewalls do ipf(8), que tem também suas próprias vantagens. A escolha final em relação a qual ferramenta de Filtragem de Pacotes utilizar, é uma decisão pessoal, a não ser que você tenha necessidade de alguma característica de um Firewall que o outro não possua, contudo, nós vamos abordar uma comparação entre as duas ferramentas posteriormente. Como já dito antes, ipfirewall(4) é um firewall por filtragem de pacotes, o que significa que ele atua monitorando pacote-a-pacote pacote-a-pacote todas as conexões, e a partir da série 4.x do FreeBSD (FreeBSD 4.0), o ipfirewall(4) também pode gerenciar uma filtragem por estado (stateful) de conexões mais rudimentares, de acordo com estados de conexão. Esse comportamento é sempre transparente pros usuários, ou seja, ninguém vai notar que existe um firewall presente, até que um evento aguardado seja bloqueado. http://www.freebsdbrasil.com.br Reprodu çã çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
Um firewall costuma ser arquitetado de diversas formas, mas todas as maneiras podem ser simplificadas com base em duas políticas de filtragem: aberto e fechado. O Firewall que segue uma política aberta permite que todos os pacotes sejam roteados por padrão, e bloqueia aqueles que pertencem a um tipo de conexão que não é desejado, ou seja, "abre tudo e bloqueia os indesejados". Já o firewall que segue uma política fechada, faz o inverso, bloqueando todo o roteamento de pacotes, e libera um a um o tráfego de conexões permitidas. Essa segunda implementação proporciona um firewall muito mais rígido, contudo sua configuração é bem mais trabalhosa, porque você pode facilmente bloquear o tráfego de algum serviço que esteja sendo utilizado na rede. Alguns protocolos estabelecem conexões dinâmicas, que são bem mais difíceis de se prever, mas você tem como estar atento a esse tipo de situação.
2.
Acionando o Ipfirewall(4);
O ipfirewall(4) pode ser iniciado de duas formas: você pode adicionar as opções apropriadas no seu kernel através do seu arquivo de configurações, e compilar um novo kernel pro seu sistema; ou você pode usar o kldload(8) pra carregar dinâmicamente o módulo base do ipfw(8), o ipfw.ko, no kernel. As duas abordagens funcionam bem pra adicionar um firewall(4) com configurações básicas, contudo, a compilação estática proporciona, com pouca diferença, uma melhor performance, mas permite ainda que se adicione opções mais detalhadas de configuração, como por exemplo, a geração e limitação de logs. Pra carregar o ipfw de forma dinâmica, simplesmente use o comando: root@eeviac~# kldload ipfw root@eeviac~# Pra acionar o ipfirewall(4) de forma estática, o equivalente seria adicionar a seguinte linha no arquivo de configurações do seu kernel: options
IPFIREWALL
Em seguida a compilação e instalação acionaria o ipfirewall(4) estático no kernel, logo após a próxima inicialização do sistema. Contudo, as coisas não são tão simples quanto parecem, se você simplesmente seguir os passos descritos acima quando estiver na frente da máquina, vai perceber que existe a necessidade de algumas opções adicionais pra poder usar a estação. Se você prestar atenção nos conceitos de política de firewall citados acima (aberto e fechado), vai entender porque o uso do equipamento vai se complicar muito, se você não perceber que o firewall usa uma política padrão fechada. Se você simplesmente adicionar o ipfirewall(4) sem nenhuma configuração posterior, todo o tráfego de rede vai ser bloqueado, ou seja, nenhum pacote será roteado. Isso fatalmente pode se tornar um tormento se você for adicionar o firewall remotamente. É claro que esse tipo de dor de cabeça pode ser evitada, mesmo considerando que não é recomendado acionar o ipfirewall(4) remotamente, tanto de forma estática quanto dinâmica. Se, de qualquer maneira, você quiser carregar o ipfirewall(4) de um computador remoto, então recomendados que se faça da seguinte forma: http://www.freebsdbrasil.com.br Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
root@eeviac~# kldload ipfw && \ ipfw -q add 65000 allow all from any to any root@eeviac~# Assim você vai automaticamente adicionar uma regra pra permitir todo o tráfego da rede, ao invés de bloquea-lo, evitando assim que você perca a conexão com a máquina remota. De qualquer forma, é recomendável que se carregue o ipfirewall(4) dessa maneira em máquinas locais também, especialmente se elas estiverem conectadas em rede, pra não perder uma conexão em andamento. Acionar o ipfirewall(4) no kernel, de forma estátita em uma máquina remota, contudo, requer um pouco mais de trabalho. O motivo é simples, quando você termina de instalar um novo kernel, você é obrigado a rebootar a sua máquina, ai sim, a partir da próxima inicialização ela irá utilizar o novo kernel. Contudo se você somente adicionar o ipfirewall(4) no kernel, assim que o sistema estiver no ar, ele não vai estar roteando os pacotes, ou seja, você não vai conseguir estabelecer uma conexão remota novamente com a máquina. Então antes de inicializar o sistema com um novo kernel você tem que definir alguma maneira pra máquina aceitar a sua conexão, pra que assim você não seja bloqueado pelo seu próprio firewall. Pra você fazer isso, basta adicionar duas linhas no seu rc.conf, uma que vai acionar o firewall na inicialização da máquina, e outra pra definir o tipo de firewall que vai ser iniciado. No caso firewall do tipo aberto (OPEN). Então basta adicionar as seguintes entradas no seu /etc/rc.conf: firewall_enable="YES" firewall_type="OPEN" Existem ainda outros tipos de firewall previamente definidos no /etc/rc.firewall, mas nós vamos tratar deles posteriormente. Por enquanto vamos começar com uma política de firewall aberta (OPEN). Ainda existe uma alternativa muito boa pra se definir uma política aberta como padrão pro ipfw(8) no kernel. Você pode simplesmente adicionar a seguinte linha no arquivo de configuração do seu kernel: options
IPFIREWALL_DEFAULT_TO_ACCEPT
Nesse caso, as opções que nós adicionamos no rc.conf anteriormente não serão *necessárias*, porque nós não vamos *precisar* do /etc/rc.firewall pra configurar uma política aberta de firewall, porque essa política já vai ser iniciada por padrão no kernel. Contudo, ainda que você escolha definir uma política de firewall padrão no kernel, é interessante adicionar aquelas opções ao /etc/rc.conf porque posteriormente nós vamos usar o /etc/rc.firewall pra carregar nossas próprias regras de configurações de firewall. Adicionar essas opções ao /etc/rc.conf também é válido se você vai carregar o kernel dinâmicamente, porque se eventualmente seu sistema for reinicializado, o módulo ipfw.ko não vai ser carregado de forma automática. As funções de carregamento do firewall pelo /etc/rc.conf permite-nos carregar o módulo ipfw.ko automaticamente. Ainda existem outras opções pro ipfirewall(4) que são possíveis se nós formos acionar o firewall de forma estática no kernel, até o início da série 4.x do FreeBSD algumas dessas opções não podiam ser acionadas se não fosse de http://www.freebsdbrasil.com.br Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
forma estática no kernel, mas nas versões mais recentes foram definidas algumas variávies do kernel, mutáveis via sysctl(8), que não restringem mais essas opções ao kernel estático. Além do IPFIREWALL_DEFAULT_TO_ACCEPT nós ainda temos as seguintes opções: options options options
A opção IPFIREWALL_VERBOSE permite logar o tráfego de pacotes com o ipfirewall(4), ecoando informações sobre atividade dos pacotes pro syslogd(4), em cada regra que tiver a opção "log" definida. Vamos aborda-la com mais detalhes posteriormente. A opção IPFIREWALL_FORWARD permite que os pacotes sejam redirecionados para outros hosts, utilizando o comando "fwd" do ipfirewall(4). Redirecionar o pacote (FORWARD) é fazer com que ele siga de um ponto específico (host, rede, porta) para outro. Vamos tratar desse assunto com mais detalhes ao longo do documento. A opção IPFIREWALL_VERBOSE_LIMIT=# define um limite de pacotes que serão logados para uma regra específica. Dessa forma, o syslogd(8) não será sobrecarregado com mensagens relativas à atividades do ipfirewall(4), os comentários do kernel para essa opção diz que isso é uma forma de evitar negação de serviço com os logs gerados para algumas regras de firewall, caso um possível ataque gere muitas ocorrências da mesma regra. O "#" deve ser substituído com o número de vezes que se deseje que as atividades de cada regra seja logada. Dessa forma, se definirmos, por exemplo IPFIREWALL_VERBOSE_LIMIT=100 (padrão), quando existirem 100 ocorrências da mesma regra, as informações sobre a atividade de pacotes daquela regra deixará de ser logada. Se você usa IPv6, as seguintes opções no kernel terão efeito correspondente sobre as ações do firewall quanto a pacotes IPv6: options options options options
Pra habilitar as mesmas opções do ipfirewall(4) sem recompilar o seu kernel, você vai definir as variáveis correspondentes por meio do sysctl(8), por exemplo: eksffa@eeviac~# sysctl -w net.inet.ip.fw.verbose=1 eksffa@eeviac~# sysctl -w net.inet.ip.fw.verbose_limit=100 eksffa@eeviac~# sysctl -w net.inet.ip.forwarding=1 Ainda existem mais quatro opções relacioadas ao ipfirewall(4) que podem ser definidas no kernel, mas não serão discutidas no momento, porque não são necessárias para a implementação básica de um firewall. Essas opções envolvem situações mais complexas e específicas de roteamento de pacotes, e vamos tratar delas assim que começarmos a tratar essas configurações. http://www.freebsdbrasil.com.br Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
2.1.
O /etc/rc.firewall e firewalls com política aberta (OPEN firewalls);
Ainda que você defina ou não o tipo de firewall que você vai estar trabalhando, sempre que a opção firewall_enable="YES" é adicionada no rc.conf e o sistema é iniciado, o /etc/rc.firewall é lido e executado também, a partir das configurações definidas no rc.conf, e os seguintes comandos são sempre adicionados ao ipfw(8): ${fwcmd} add 100 pass all from any to any via lo0 ${fwcmd} add 200 deny all from any to 127.0.0.0/8 A variável ${fwcmd} é definida anteriormente no rc.firewall, implicando quando o ipfw(8) vai ser executado de forma silenciosa (opção -q) ou não. A primeira regra em questão, permite todo tráfego proveniente da interface de loopback (a lo0), e a segunda regra bloqueia todo o tráfego direcionado à rede localhost (127.0.0.0). A primeira regra é necessária pra permitir comunicação inter-processos locais (local IPC), e a segunda regra evita que qualquer pacote externo adentre o endereço de host local (localhost address), que é o endereço de loopback, protegendo assim o tráfego local. Se essas regras não existirem e o firewall tiver uma política padrão fechada, você vai encontrar problemas na inicialização de alguns serviços, especialmente serviços RPC(3), entre outros problemas. Por isso vale ressaltar a impostância de se definir o firewall da forma correta, onde o uso do /etc/rc.firewall via rc.conf é altamente recomendável. Se você fizer a opção por um script shell que carregue todas as suas regras e que seja executado sempre que o sistema iniciar, você deve ficar atento a essas e outras regras que não devem faltar ao seu firewall. Em seguida, quando você define um firewall do tipo "OPEN" (aberto) no rc.conf, o rc.firewall ativa a seguinte regra no firewall: ${fwcmd} add 65000 pass all from any to any Essa regra permite que todo tráfego externo seja aceito como entrada (com excessão pro loopback, já que a rede localhost é previamente bloqueada) e todo o tráfego interno seja aceito como saída. A mesma função do IPFIREWALL_DEFAULT_TO_ACCEPT no kernel. Se a política aberta é definida no kernel, a regra número 65535 vai ser automaticamente carregada como "allow ip from any to any" no lugar de "deny ip from any to any", posteriormente adicionando a regra número 65000. Isso cria uma redundância de política de firewall aberta. Então, é mais indicado definir o tipo de firewall como "UNKNOWN" (desconhecido) se você adicionou a política aberta (IPFIREWALL_DEFAULT_TO_ACCEPT) no kernel, e não quer permitir mais nenhuma regra do rc.firewall. Para isso, inclua as seguintes linhas no seu /etc/rc.conf: firewall_enable="YES" firewall_type="UNKNOWN" Se você quer simplesmente habilitar o firewall para trabalhar algumas http://www.freebsdbrasil.com.br Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
regras e ver como o ipfirewall(4) do FreeBSD funciona, ou ainda, apenas bloquear alguns hosts específicos, e manter as suas configurações propícias às suas próprias regras, então você pode seguramente pular pro nosso capíulo 3. Contudo, se sua intenção é usar algum dos conjuntos de regras nativas já existentes no rc.firewall, ou criar seu próprio conjunto de regras, então as opções "OPEN" ou "UNKNOWN" não são suficientes. Então não pule pra seção 3 (lol).
2.2.
Carregando Rulesets (conjunto de regras);
Existem duas opções distintas em relação à um comjunto de regras pro seu firewall: a primeira opção é usar uma das definições de firewall já existentes no rc.firewall, e a segunda é criar sua própria definição, com seu próprio conjunto de regras. Os autores do firewwall nativo do FreeBSD, ipfirewall(4), recomendam o segundo caso, por duas rasões simples: - Você pode customizar suas regras de firewall pra satisfazerem da melhor forma as suas necessidades, sem nunca tocar no rc.firewall, que pode ser mantido como uma referência geral sempre que você precisar. - Você vai ser obrigado a se familiarizar com o uso do ipfw(8) e sua sintaxe, se tornando mais experiente na definição de firewall, e ficando mais a vontade com o ipfw(8). 2.2.1. Tipos de Firewall pré-definidos; É óbvio que a decisão final é a do administrador da rede, ou do responsável pelo firewall, no caso você que está lendo esse documento. Se você preferir usar os conjuntos de regras de firewall pré-definidos no rc.firewall, então é recomendado que você leia todas elas, pra se tornar familiar e saber exatamente como cada tipo de firewall funciona, antes de ativar qualquer um dos tipos pré-definidos. O controle que gerencia qual definição de firewall carregar é feito pela opção firewall_type="" no rc.conf. Além de "OPEN" existem ainda mais 3 tipos de firewall disponíveis: "CLIENT" - Essa definição de tipo de firewall (firewall_type) permite todo o tráfego proveniente da rede local (por exemplo, uma rede interna atrás de NAT) pra ela mesma. Bloqueia pacotes fragmentados, permite que mensagens de email, resoluções de nomes (DNS) e NTP sejam enviadas pra dentro e fora da rede, e não permite nenhuma máquina que esteja fora da rede interna iniciar conexões TCP com máquinas dentro da rede. Se a rede estiver por trás de uma implementação básica de NAT sem nenhuma opção de proxie carregada isso já seria impossível. Esse tipo de firewall funciona com política aberta ou fechada, definida no kernel, ou seja, não faz diferença se você colocou IPFIREWALL_DEFAULT_TO_ACCEPT ou IPFIREWALL_DEFAULT_TO_DENY como padrão. "SIMPLE" - Esse tipo de firewall é uma contradição. Apesar do nome SIMPLE, ele é muito mais complexo que a definição CLIENT, e requer que o usuário tenha algum conhecimento nos padrões RFC de Internet pra poder entender suas definições de regras de firewall. Essa regra vai evitar spoofing (técnica onde uma máquina se faz passar por outra, alterando seu endereçamento IP) não http://www.freebsdbrasil.com.br Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
permitindo a entrada de nenhum pacote que tenha um endereço de retorno igual ao endereço de qualquer host dentro da rede interna. Vai bloquear todos os pacotes endereçados como de redes privadas, conforme definido na RFC 1928, evitando o tráfego pra dentro ou fora da rede, e vai bloquear ainda todas as redes nãoroteaveis, conforme definido no Internet-Drafts da IETF (disponível em http://www.ietf.org/internet-drafts/draft-manning-dsua-03.txt). Esse tipo de firewall vai permitir tráfego de e-mail, de WWW, de DNS, e NTP, e vai permitir também pacotes fragmentados, e em relação às conexões TCP iniciadas por hosts fora da rede, o firewall não vai apenas bloquear, como na definição CLIENT, vai também logar todas essas tentativas. "CLOSED" - Tecnicamente essa definição não é um conjunto de regras de firewall, porque não adiciona nenhuma regra. Na verdade, aqui acontece tudo que nós insistimos que você deve evitar, ou seja, estabelece uma política fechada, negando todo e qualquer tráfego da rede (exceto o tráfego via lo0 que nós vimos anteriormente que é controlado por padrão). Essa definição simplesmente desabilita todos os serviços IP na rede, a não ser que no seu kernel você tenha adicionado a regra de política aberta. Então, ajustar o firewall pra CLOSED vai ser necessário em casos *extremos* onde você prefere (ainda que temporariamente) tirar toda a sua rede de funcionamento. Ou seja, não defina como padrão no rc.conf. 2.2.2. Tipos de Firewall Personalizado; Se você decidiu estabelecer um conjunto de regras customizado, então é recomendável que você especifique um arquivo, ao invés de um dos tipos de firewall abordados acima. A maneira de se estabelecer esse tipo personalizado de firewall é a mesma, utilizando a opção firewall_type no rc.conf, contudo, basta indicar o caminho (path) pro seu arquivo de regras: firewall_enable="YES" firewall_type="/etc/rc.firewall.rules" Dessa forma você vai poder definir sua própria configuração de firewall no arquivo /etc/rc.firewall.rules, o qual será carregado sempre que seu firewall for iniciado. Se você preferir ainda que seu firewall seja iniciado de forma silenciosa, basta incluir no rc.conf: firewall_quiet="YES" O formato do seu conjunto de regras será apresentado de forma um pouquinho diferente nesse arquivo, em relação ao que você encontra no rc.firewall. O motivo é simples, o rc.firewall é um 'shell script' sh(1) escrito de forma que possa rodar por si próprio, enquanto o arquivo que define as suas regras personalizadas estão ali simplesmente para serem processadas pelo ipfw(8). A principal diferença é que você não vai usar nada correspondente à variável ${fwcmd} usada no rc.firewall. Simplesmente as regras. Posteriormente, vamos construir um arquivo de regras próprio, e então vamos ver isso passo-a-passo.
3.
Sintaxe de regras básicas do Ipfw(8); http://www.freebsdbrasil.com.br
Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
A sintaxe das regras de firewall no FreeBSD são simples. Qualquer regra pode ser adicionada pelo console, com o comando ipfw(8). Antes de nos aprofundarmos nas sintaxes das regras do ipfirewall(4), contudo, vamos verificar como podemos listar as regras que estão ativas no momento. 3.1.
Listando Regras Ativas;
A forma mais simples possível de se listar as regras ativas no firewall: root@eeviac~# ipfw list Dessa forma, você vai estar listando todas as regras ativas no momento, seguindo a ordem do número da regra. Por exemplo: root@eeviac~# ipfw list 00101 deny log logamount 100 tcp from any to 192.168.1.0/24 12345 00102 deny log logamount 100 tcp from any to 192.168.1.0/24 21 00103 allow tcp from any any 65535 deny all from any to any Dessa forma, ainda que, a regra número 00103 tenha sido adicionada antes da regra 00101, a de número menor será mostra antes, porque a ordem das regras também influi na forma como o ipfirewall(4) vai se comportar. Pra mostrar a data e hora da última vez que um pacote coincidiu com uma regra basta usar a opção timestamp do ipfw(8): root@eeviac~# ipfw -t list 00101 Fri Sep 21 06:31:23 2001 deny log logamount 100 tcp from any to 192.168.1.0/24 12345 00102 Tue Sep 18 00:33:12 2001 deny log logamount 100 tcp from any to 192.168.1.0/24 21 00103 Sat Sep 22 19:12:15 2001 allow tcp from any any 65535 deny all from any to any root@eeviac~# date Sat Sep 22 19:12:24 GMT 2001 Ou seja, nesse caso, a última vez que a regra 00101 bloqueou um pacote foi na madrugada do dia anterior, a regra 00102 bloqueou um pacote também aos 33 minutos de 2 dias atrás, e o último pacote permitido pelo firewall foi há 9 segundos. Detalhe no comando date posterior que ilustra a data corrente. Por último, se nós queremos listar o número de vezes que um pacote passou (ou foi bloqueado) por uma regra, e o número de bytes que esse tráfego gerou, podemos fazer o seguinte: root@eeviac~# ipfw -a list ou root@eeviac~# ipfw show http://www.freebsdbrasil.com.br Reprodu çã o integral ou parcial permitida desde que as fontes originais sejam mencionadas.
IPFW-HOWTO
Os dois comandos vão apresentar as mesmas informações, dispostas da mesma maneira. A primeira coluna é o número da regra, em ordem como ela é verificada. A segunda coluna informa quantas vezes aquela regra coincidiu com um pacote, seguido do (terceira coluna) número de bytes que trafegaram pela regra, e finalmente a regra em sí. Existem algumas sintaxes curtas pra esses comandos. Por exemplo, "ipfw s" tem o mesmo efeito que "ipfw show"; "ipfw l" o mesmo que "ipfw list", etc. 3.2.