#
# IPFIREWALL
#
IPFW ---> interface de comando do IPFIREWALL (firewall nativo do FreeBSD)
|
|
implementa a filtragem de pacotes
IP e controle de trafego de rede
ACIONANDO O IPFIREWALL
- adicionando as opcoes apropriadas ao kernel ou;
- usando o kldload para carregar os modulos do ipfw.
(kldload ipfw)
A compilacao estatica proporciona uma melhor performance e permite que se adici-
one opcoes mais detalhadas de configuracao, como por exemplo, a geracao e limi-
tacao de logs.
ACIONANDO O FIREWALL NA INICIALIZACAO
{/etc/[Link]}
firewall_enable="YES"
firewall_type="OPEN"
firewall_script="/etc/[Link]" #conjunto de regras customizado.
#este arquivo sera carregado sempre que o firewall
#for iniciado.
SINTAXE DE REGRAS BASICAS DO IPFW
- qualquer regra pode ser adicionada pelo console, com o comando ipfw.
- as regras sao obedecidas de cima para baixo.
- a ultima regra sempre define a politica padrao do firewall.
<comando> [<nr regra>] <acao> <protocolo> from <origem> to <destino>
comando: add, delete
nr regra: 0 a 65535
acao: allow (pass,permit,accept) e deny (drop)
protocolo: proto que se deseja que a regra combine (/etc/protocols) - "ip" ou
"all" englobam todos os protocolos.
origem e destino: pode ser um endereco ip, endereco de rede com mascara e portas
se o proto for tcp ou udp.
a) listar regras ativas
ipfw list
ipfw -t list (mostra a data e hora que um pacote coincidiu com uma regra)
ipfw -a list
ipfw show (lista o nr de vezes que um pacote passou (ou foi bloqueado) por
uma regra, e o numero de bytes que esse trafego gerou)
b) adicionar uma regra
ipfw add 100 allow tcp from any to any
ipfw add 200 deny all from [Link] to any
ipfw add 300 deny icmp from any to any
ipfw add 400 allow all from [Link]/24 to any
ipfw add 500 deny all from any to [Link]:[Link]
ipfw add 600 allow tcp from any to [Link] 21,22,23
ipfw add 700 deny udp from any to [Link] 1024-1028
c) apagar uma regra
ipfw del 400
d) limpar todas as regras
ipfw flush
ipfw -f flush (nao pede confirmacao)
UM ARQUIVO DE REGRAS BASICO - /etc/[Link]
|--------------------------------------------------------|
| |
| #!/bin/sh |
| |
| fw="/sbin/ipfw" |
| #controle para a rede lo0 |
| $fw add allow ip from any to any via lo0 |
| $fw add deny ip from [Link]/8 to any |
| $fw add deny ip from any to [Link]/8 |
| |
| $fw add allow ip from any to any |
| |
| |
| |
|--------------------------------------------------------|
#### CONTROLE DE BANDA ####
Para se implementar controle de banda e preciso o uso do dummynet. E necessario,
entao, adicionar uma opcao ao kernel:
options DUMMYNET
Depois de compilado o kernel o administrador podera especificar a criacao de
tuneis ("pipes") para controle de trafego.
Criacao de tuneis -------> comando "pipe <pipe #>" no ipfw
Exemplo:
pipe 10 config bw 100Kbit/s
O pipe e apenas mais uma acao para o ipfw, assim como add e delete, portanto
antes de cada comando e feita uma chamada ao ipfw.
O tunel criado anteriormente vai limitar o fluxo de informacoes para uma
velocidade maxima de 100 kilobits por segundo.
Medidas de velocidade de trafego pode ser indicada por: bit/s, Byte/s, Kbit/s,
kbyte/s, Mbit/s, Mbyte/s.
Filas de Tuneis
A necessidade seguinte e definir o tamanho das filas dos tuneis gerados.
As filas sao utilizadas pelos tuneis para forcar as limitacoes e atrasos de
banda. Seu tamanho e geralmente configurado em "Kbytes", mas tambem pode ser
definido em slots.
1 slot equivale a 1 pacote. Se a MTU das interfaces de rede e de 1500 bytes,
quer dizer que o tamanho maximo de um pacote sera de 1500 bytes.
Por padrao o tamanho de cada fila e de 50 slots.
(50 * 1500 bytes ou 12000 bits = 75 kbytes ou 600 kbits)
Por exemplo, vamos criar um tunel que simule a velocidade maxima de um modem
de 56k.
pipe 10 config bw 56kbit/s
Considerando o tamanho padrao de uma fila seria necessario 11 segundos aproxi-
madamente para a fila ser preenchida. Isso geraria um atraso inaceitavel para
por o trafego em andamento.
Para evitar este tipo de problema e recomendavel ajustar manualmente o tamanho
da fila.
Quanto menor a banda disponivel, menor deve ser a fila.
pipe 10 config bw 56kbit/s queue 5kbytes
O controle de banda pode ser feito por IP de host ou endereco de rede.
Por exemplo: Suponhamos que eu queira limitar a banda do host [Link] para
300 kbps de download e 300 kbps de upload. Vamos supor tambem que
o servidor tenha duas interfaces de rede e a interface da LAN seja
a rl0. As regras ficariam da seguinte forma:
ipfw pipe 100 config bw 300Kbit/s queue 10Kbytes
ipfw pipe 101 config bw 300Kbit/s queue 10Kbytes
ipfw add 100 pipe 100 ip from any to [Link]/32 out via rl0 //lim. download
ipfw add 101 pipe 101 ip from [Link]/32 to any in via rl0 //lim. upload
O controle de banda por rede segue o mesmo padrao so que, nesse caso, sera o
endereco de rede configurado na regra. Se temos por exemplo, uma rede com
endereco [Link]/29 (com seis enderecos de hosts) a configuracao da regra
ficaria assim:
ipfw pipe 100 config bw 500Kbit/s queue 10Kbytes
ipfw pipe 101 config bw 500Kbit/s queue 10Kbytes
ipfw add 100 pipe 100 ip from any to [Link]/29 out via rl0 //lim. download
ipfw add 101 pipe 101 ip from [Link]/29 to any in via rl0 //lim. upload
Se tivessemos todos os 6 hosts dessa rede usando o link ao mesmo tempo, os 500
kbps definidos na regra do ipfw seriam divididos para as seis maquinas.