Arquivo mensal: novembro 2008

Personalizando e Colorindo o Prompt do Bash

Você já viu como é colorido o console padrão do Gentoo Linux? Ficou com inveja?
Então vamos ver como deixar o seu prompt do bash totalmente colorido.

Primeiro você deve descobrir qual arquivo governa a configuração do seu bash.
Em algumas distribuições é o /etc/bashrc, em outras é o /etc/profile. Você pode descobrir isso com o comando:

% grep “export PS1” /etc/*

E se esse comando não retornar nada, use o (mais demorado):

% grep “export PS1” /etc/* –recursive

Vamos supor agora que você tenha descoberto. É o /etc/profile (no Gentoo é esse mesmo).

Primeiro de tudo, logue-se como root.
Se você estiver no X como usuário comum, abra um terminal qualquer e digite:

% su –

Esse sinal de “menos” é para carregar as variáveis de ambiente do superusuário. Não entendeu?
Então peço pra você simplesmente acreditar, porque variáveis de ambiente não são o objetivo dessa dica 🙂

Segundo de tudo, possivelmente o ato mais importante!
BACKUP. Faça uma cópia de segurança do arquivo que você descobriu que contém essa configuração. Se algo der errado (acredite, a chance é GRANDE!), você terá como restaurar seu bash e fazê-lo funcionar normalmente de novo.

Agora que você sabe que o arquivo é o /etc/profile e já fez o seu backup, pode abri-lo com o editor de sua preferência.
Se você estiver no KDE, sugiro o kedit ou o kwrite. Se estiver no GNOME, sugiro o gedit. Para todos, sugiro o nano. Chega de sugestões! 🙂

Localize a linha que começa por:

export PS1

“PS1” é o prompt que o bash te dá. Agora basta você dizer o que quer que apareça no seu prompt do bash.
Por exemplo, o meu é assim:

export PS1=’\[33[01;33m\]\t \[33[01;32m\]\u@\h [33[01;34m\]\w \$ \[33[00m\]’

Isso deixa o meu prompt assim:

01:35:42 (em amarelo) usuario@minhamáquina (em verde) /usr/src/linux (em azul) $ (em azul)

Note, na linha do /etc/profile, os caracteres “\t”, “\u”, “\h”, “\w” e “\$”.
Eles indicam o que deve ser mostrado nesse ponto.

“\t” vem de “time”, e mostra a hora. Por isso a primeira coisa que aparece no meu prompt é a hora.

“\u” vem de “user”, e mostra o nome do usuário logado. Por isso no meu aparece usuario

“\h” é o “host”, ou seja, o nome da máquina, que faz aparecer “minhamáquina”.
Note que entre o \u e o \h existe um arroba. Isso faz aparecer “usuario@minhamaquina”. Já tá dando pra entender?

“\w” vem de “where”, e mostra o diretório onde eu me localizo no momento. O “~” que eu disse que aparece é porque eu estava no meu diretório /home/usuario naquele momento.
Aqui é interessante. Se você colocar um “\W” (maiúsculo), ele vai mostrar somente o diretório exato onde você se encontra, sem mostrar os diretórios abaixo de você. No meu caso, se tivesse um “\W” em vez do “\w”, eu só veria:

01:35:42 usuario@minhamaquina linux $

(com as devidas cores, é claro).

Por último, o \$ não é nada especial, ele simplesmente mostra o próprio símbolo “$”.

Pronto? Ainda não! Faltam as cores!

A parte das cores é um pouco mais sofisticada. Você vê as partes do PS1 que contêm os pares “01;33”, “01;32” e “01;34”? São exatamente esses pares que indicam a cor que deve aparecer.
E o “33” que aparece em cada um desses termos, você vê? Infelizmente eu ainda não consegui descobrir como funcionam esses números, mas mexendo neles só consegui estragar o prompt. 😦
Se você souber e quiser me explicar o significado do 33, por favor mande um e-mail para natunobilis[NOSPAM]gentoobr.org

Então vamos voltar à parte legal. As cores no bash são padronizadas. Então, você pode aproveitar o arquivo de configuração das cores de arquivos (/etc/DIR_COLORS) para descobrir qual cor é qual.
Dê um :

% grep “Attribute” /etc/DIR_COLORS -A5

D eve mostrar todas as cores. Se isso não funcionar, você pode simplesmente abrir o arquivo (dessa vez eu recomendo o comando less) e verificar cada uma das cores.
Para os apressados, e também para os que não conseguirem de jeito nenhum descobrir as cores no DIR_COLORS, aí vai a minha cópia do DIR_COLORS:

# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Ou seja, o par “01;33” diz para o termo “\t” (hora) aparecer na cor amarela, e em negrito.

Na prática, o atributo “negrito” (“bold”) só faz a cor aparecer como esperamos. Experimente mudar o atributo para 00 (ou seja, nenhum). Veja que a cor sairá meio marrom.

A minha opinião é que, na prática, somente os atributos “bold” e “none” (respectivamente, 00 e 01) são úteis. Os outros costumam incomodar mais do que
embelezar.

Como você já deve ter notado, a cor do texto é controlada pelo valor do par que vem depois do ponto-e-vírgula. No caso do “01;33”, a cor é “amarelo”. É possível mudar também a cor do fundo. Mas eu considero este um bom jeito de deixar seu prompt mais feio, e não mais bonito 😛

Você pode experimentar, em vez de usar um par “01;33”, usar “01;33;41”, para ver uma letra amarela num fundo vermelho (bonito…)

Notas: a cor definida no primeiro termo do PS1 se estenderá até o seu final, caso você não use outra cor em algum termo posterior. Ou seja, na minha configuração acima, se você deixar o primeiro termo (“\t”) com a cor amarela, e não definir cor para os termos subseqüentes (“\u”,”\h”,”\w” e “\$”), todos os termos aparecerão em amarelo!

O mesmo vale para o fundo. Se você escolher um fundo vermelho para o primeiro termo, e não definir cor *de fundo* para os termos subseqüentes, todos eles ficarão vermelhos, mesmo que eles tenham diferentes cores para os caracteres!

Debian: placa de rede mudando de eth0 para eth1, eth2 etc

O Debian (e outras distros que usam kernel 2.6) utiliza o udev como hotplug (ou sistema plug-and-play). Com isso, ao inserir uma placa de rede nova ou ao trocá-la de slot, você terá o nome eth0 mudado para eth1 etc. Exemplo: você instala uma placa de rede Intel. Ela é a eth0. Agora você a remove e coloca uma 3Com no lugar dela. Você terá a eth1 (ao invés de eth0).

Caso queira retornar ao nome eth0, bastará editar o arquivo /etc/udev/rules.d/z25_persistent-net.rules. O conteúdo deste arquivo é simples e fácil de entender. Procure a linha correta e renomeie o eth0 para eth1.

Apache Server Redirects Sem ModRewrite – Alguns exemplos

Você pode usar dentro do .htaccess (em configuração padrão) estes redirecionamentos, sem que necessite ter e habilitado o modrewrite do Apache server

Movendo para um arquivo

Redirect 301 /a/arquivo.html /b/arquivo.html

Redirecionar sua Home Page ou a raiz para um outro domínio

Redirect 301 / http://www.outro-dominio.com.br

Redirecionar um caminho para outro

RedirectMatch 301 /blog(.*) /$1

ou

RedirectMatch 301 /pasta/(.*) /pasta-antiga/$1

Redirecionar o seu site inteiro para um arquivo apenas

Este redirecionamento é útli para quando você por o site em manutenção, fazer com que qualquer página acessada seja redirecionado para uma pagina de aviso, ou informativo que está em manutenção.

RedirectMatch 302 ^/ /temporariamente-em-manutencao.html

Obs: o 302 informa que é um redirecionamento temporário, pois serve para que o robo dos site de busca( Google, Yahoo e outros) entenda que é temporário essa ação.

VIM: Como deixar seu vim colorido

abra o arquivo /etc/vim/vimrc

(escolha o editor de sua preferência)

Basta somente remover o comentário da linha referente a:

syntax on

Comigo, removi aspas duplas, mas pode ter tralha (#), remova e coloque ele para moer 😛

OBS: Pode ocorrer o erro abaixo

Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on
Press ENTER or type command to continue

Este erro será corrigido instalando a versão “recheada” do vim, fazendo um $ sudo apt-get install vim (Distribuições derivadas do Debian ou no próprio).

Alterando senha do root no Linux através do boot loader

Este tutorial tem como único objetivo auxiliar a efetuar a alteração da senha do usuário root (super usuário) em casos de emergência, como por esquecimento ou alteração por usuários não autorizados, visto que isso já ocorreu comigo.

Durante o processo de inicialização do Boot Loader, pressione “ESC” para que o mesmo acesse as opções de boot, será exibido algo parecido com:

“Nome da distribuição”, Kernel 2.6.24-16-generic
“Nome da distribuição”, Kernel 2.6.24-16-generic (Recovery Mode)
“Nome da distribuição”, memtest86+

Se em sua distribuição exibir somente a primeira opção não há problemas, pois é exatamente ela que utilizaremos, a versão do kernel que é exibida também não afetará o procedimento. Com o foco na opção de boot normal, pressione a tecla “e” (sem aspas), será então exibido algo parecido com:

root (hd0,1)
kernel /boot/vmlinux-2.6.24-16-generic root=UUID=ccf43445hasshak
initrd /boot/initrd.img-2.6.24-16-generic
quiet

Se em sua distribuição aparecer de forma diferente também não há problemas, pois estaremos utilizando a linha que contém os parâmetros ao kernel e com certeza estará lá, em nosso caso deixaremos o foco em “kernel /boot/vmlinux-2.6.24-16-generic root=UUID=ccf43445hasshak” e pressionaremos a tecla “e” (sem aspas) novamente, você então estará com o cursor no final da linha que define os parâmetros do kernel do Linux, bastando somente acrescentar ao final da linha a seguinte instrução: “init=/bin/bash” (sem aspas) conforme o exemplo abaixo:

kernel /boot/vmlinux-2.6.24-16-generic root=UUID=ccf43445hasshak init=/bin/bash

Após inserir o parâmetro, pressione enter para confirmar, você notará que o mesmo voltará para o menu anterior, bastando somente com o foco ainda em “kernel /boot/vmlinux-2.6.24-16-generic root=UUID=ccf43445hasshak init=/bin/bash” pressionar a tecla “b” (sem aspas). Será então dado início ao processo de boot, aguarde o término do mesmo.

Este parâmetro faz com o que o kernel seja inicializado, porém desviando o init a um bash com poderes de root, porém ainda sem permissões para escrita. Para que isso seja permitido é necessário remontar a raiz (/) com tais permissões, utilize então o seguinte comando no terminal que foi inicializado:

# mount -o remount,rw /

Pronto! Já estamos com permissões de leitura e escrita. Agora vamos literalmente efetuar a alteração da senha, digite:

# passwd root

Entre com a senha desejada e repita a mesma novamente quando solicitado. Então reinicialize o sistema utilizando o comando:

# reboot

Ao reinicializar o computador os parâmetros inseridos do boot loader serão descartados, voltando somente os parâmetros originais, o que faz com que o sistema operacional seja inicializado normalmente.

Agora é só logar com o usuário root e a nova senha.

Fonte

Login Lento no Proftpd && Prendendo usuário no Home

Inserindo essas duas linhas no fim do arquivo /etc/proftpd/proftpd.conf você vai evitar que o proftpd resolva o DNS reverso de todos os hosts que estão tentando se conectar no seu servidor de ftp, o que causaria uma certa “lentidão” na hora do login.

UseReverseDNS off
IdentLookups off

Para prender o usuário no seu diretório Home, impedindo assim que ele possa navegar em outros diretórios que não seja o dele /home//, insira essa linha no final do arquivo /etc/proftpd/proftpd.conf .

DefaultRoot ~

😀

PPPoE + NAT no OpenBSD

Essa dica mostrará como configurar o OpenBSD 4.x para se conectar na internet utilizando o PPPoE, bem como configurar o NAT para que os computadores da LAN possam acessar a internet através do OpenBSD.

Habilitar o Forwarding de pacotes

  # sysctl net.inet.ip.forwarding=1

Para que a configuração seja ativada no boot, modifique a linha net.inet.ip.forwarding=0 para net.inet.ip.forwarding=1 no arquivo de configuração /etc/sysctl.conf

Configurando a Interface Externa

Criar o arquivo /etc/hostname.pppoe com o seguinte conteúdo:

  inet 0.0.0.0 255.255.255.255 NONE pppoedev INTERFACE \
        authproto pap authname USER authkey PASSWORD up
        dest 0.0.0.1
        !/sbin/route add default 0.0.0.1

Obs: Troque INTERFACE pela interface física que está conectada com o modem ADSL (O modem deve estar como bridge). Também troque USER e PASSWORD pelo usuário e senha do provedor.

Depois de configurar a interface pppoe, deve configurar a interface física que está conectada ao modem ADSL. Para isso inclua apenas um up no arquivo /etc/hostname.interface, troque o .interface pelo respectivo nome da interface. Lembre-se, o OpenBSD não reconhece as interfaces pela tipo de conexão, mas sim pelo chipset(modelo) da placa de rede. Por exemplo, no meu caso ficaria:

  # echo "up" > /etc/hostname.fxp0

Se estiver configurado um default gateway para a máquina, deve removê-lo, pois agora quem irá fornecê-lo será o servidor PPPoE.

  # rm -f /etc/mygate

Configurando a Interface Interna (LAN)

Definir um ip fixo para a placa de rede da LAN, para isso é muito simples, basta apenas incuir a seguinte linha no arquivo de configuração /etc/hostname.interface. Por exemplo:

  # echo "inet 10.10.2.254 255.255.255.0 NONE" > /etc/hostname.vr0

Reiniciar as interfaces

  # sh /etc/netstart

NAT

Para configurar o NAT deve conhecer o básico do PF, mas aqui irei mostrar como configurar, de forma simples, para que as máquinas da rede interna possam acessar a internet através da Máquina com OpenBSD.

Habilite o PF

  # pfctl -e

Edite o arquivo /etc/pf.conf e inclua as seguintes linhas:

  # macros
  if_ext="pppoe0"
  if_int="vr0"
  rede="192.168.1.0/24"

  # Ativa o scrub, ""Scrubbing" é o processo de normalização de pacotes, para que
  # não haja ambiguidades na interpretação pelo destino final do pacote. A
  # diretiva scrub também remonta pacotes fragmentados, protegendo alguns
  # sistemas operacionais de algumas formas de ataque, e descarta pacotes TCP
  # que possuam combinações de flag inválidas."

  scrub in

  # NAT
  # Utiliza-se o "( )" na interface externa, quando o ip válido é dinâmico

  nat on $if_ext from !($if_ext) -> ($if_ext)

  #EOF

Lembre-se, essa é uma configuração simples do PF e apenas com NAT, é preciso configurar também as regras de filtragem e que não se encontram nessa configuração.

Carregando o Firewall

  # pftcl -f /etc/pf.conf

Visualizando as regras de NAT

  # pfctl -sn

Para que a configuração do PF seja ativada durante o boot, modifique a linha pf=NO para pf=YES no arquivo de configuração /etc/rc.conf. Também aproveite e verifique a seguinte linha pf_rules=/etc/pf.conf e caso o arquivo de configuração esteja em outro lugar, modifique a linha.

Espero ter mostrado, de forma simples e funcional, como configurar o OpenBSD para utilizar PPPoE e para realizar traduções de endereços (NAT).

fonte:

Montando um servidor PPPoE com autenticacao por radius + controle de volume de usuarios (Parte 4)

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>

4) Limitação de banda por IP
——————————

Essa parte do howto é opcional, so façaa se você quiser limitar banda por IP
ou classe de seus usuários.

Vamos pegar ainda o exemplo citado na secao 3 onde o usuário joao que tem
o IP 192.168.3.3, onde você quer limitar seu IP a 128k. Para isso use a
seguinte sintaxe com o ipfw:

# ipfw add 1 pipe 10 tcp from any to 192.168.3.3
# ipfw pipe 10 config bw 128Kbit/s

Agora caso queira limitar sua classe inteira:

# ipfw add 2 pipe 11 tcp from any to 192.168.3.0/24

# ipfw pipe 11 config bw 128Kbit/s

Agora caso queira limitar a entrada e saida de trafego ou seja o
download/upload da rede faca o seguinte:

# ipfw add 4 pipe 13 tcp from 192.168.3.0/24 to any out
# ipfw add 5 pipe 14 tcp from any to 192.168.3.0/24 in
# ipfw pipe 13 config bw 128Kbit/s
# ipfw pipe 14 config bw 128Kbit/s

Substitua os valores acima ou o IP de acordo com sua necessidade.

Agora para que isso seja iniciado no boot coloque no arquivo
/etc/ipfw.rules ( que foi criado na secao 1) as seguintes regras:

/sbin/ipfw add 1 pipe 10 tcp from any to 192.168.3.3
/sbin/ipfw pipe 10 config bw 128Kbit/s

Nota: ou uma das regras acima citada nos exemplos que melhor lhe
satisfazer.

salve o arquivo e pronto, quando sua maquina for rebootada as configura coes
ja serão setadas automaticamente.

Montando um servidor PPPoE com autenticacao por radius + controle de volume de usuarios (Parte 3)

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>

3) Montagem do controle de volume de usuários. (IPA – IP Accounting Software)
—————————————————————————

Primeiramente vou explicar o que é controle de volume de usuários.

Essa parte pode ser uma das mais uteis para empresas e para serviços de
banda larga, isso porque traves do IPA ( IP Accounting Software ) que eh
o programa q utilizaremos aqui e também está em anexo, nós podemos controlar o
trafego dos usuários por IP ( por isso eh tão importante setar o IP do
usuário no radius).

Por ex, vamos supor que você gostaria q o usuário joao que sempre conecta
com o IP 192.168.3.3 (setado no radius) só pudesse trafegar 15MB por dia,
e que se ele ultrapasse esse limite ele seria bloqueado, sendo
desbloqueado automaticamente no outro dia e ainda seria direcionado
para uma pagina falando q ele ultrapassou o seu limite diário.

Com o IPA isso q foi descrito acima eh possível, eh o que veremos abaixo.

Primeiro pegue o ipa em http://www.simon.org.ua/ipa e descompacte-o e instale-o:

# tar zxfv ipa-1.1.3.tar.gz
# cd ipa-1.1.3
# make
# make install
# cd /usr/local/etc/rc.d; mv ipa.sh.sample ipa.sh

O arquivo de configuração do ipa fica em /usr/local/etc/ipa.conf eh
nele que são colocadas todas as configurações.

Usaremos no arquivo de configuração o exemplo citado acima, mas você pode
muda-lo de acorda com suas necessidades.

Edite e coloque no /usr/local/etc/ipa.conf as seguintes linhas:

global {
update_db_time = 1m
}
rule 192.168.3.3 {
ipfw = 214 215
startup {
exec = /sbin/ipfw add 214 allow all from 192.168.3.3 to any
exec = /sbin/ipfw add 215 allow all from any to 192.168.3.3
}
limit 15m {
byte_limit = 15m
info = 15 Mbytes por dia
zero_time = +d
reach {
exec = /sbin/ipfw add 210 fwd 192.168.1.1,80 tcp from 192.168.3.3 to any 80
exec = /sbin/ipfw add 211 deny tcp from any to 192.168.3.3
}
expire {
expire_time = +d
exec = /sbin/ipfw del 210
exec = /sbin/ipfw del 211
}
}
}

Salve o arquivo.

Vou agora explicar parte por parte da configuração para que caso você queira
mudar/adicionar mais coisas, fique fácil:

global {
update_db_time = 1m
}

# Essa linha como o próprio nome diz, ela eh global, será lida
# por todas as regras. O update_db_time significa de quanto em quanto
# tempo será feito o update do volume de dados trafegados pelo(s) IP(s).

————————

rule 192.168.3.3 {

# “rule” no caso seria o nome da regras, ai fica a critério de cada um
# dar o nome que quiser a regras, mas em nosso caso eh melhor dar o nome
# da regra o numero IP para que não fique confuso.

———————-

ipfw = 214 215
startup {
exec = /sbin/ipfw add 214 allow all from 192.168.3.3 to any
exec = /sbin/ipfw add 215 allow all from any to 192.168.3.3
}

# Essas regras sao iniciadas na inicialização do ipa, elas são muito
# importantes pois eh atraves delas eh q se faz a contagem do numero de
# bytes utilizado pelo IP.

————————

limit 15m {
# Caso queira mudar o limite você pode alterar para Nk, Nm, Ng onde “N” eh o
# numero de limite “k” kbytes, “m” mgbytes e “g”, gigabytes.

byte_limit = 15m
# Caso queira mudar o limite você pode alterar para Nk, Nm, Ng onde “N” eh o
# numero de limite “k” kbytes, “m” mgbytes e “g”, gigabytes.

info = 15 Mbytes por dia
# Somente uma informação para controle. você pode alterar com o seu limite
# desejado.

zero_time = +d
# zero_time, significa quando sera zerada a contagem de bytes, +d significa
# que sera zerada no próximo dia, você pode usar Ns, Nm, Nh, +d, +m onde
# “N” eh o tempo, “s” segundos, “m” megabytes e “h” hora, +d dia e +m mes.

reach {
# Caso atinja o limite executar os comandos abaixo:

exec = /sbin/ipfw add 210 fwd 192.168.1.1,80 tcp from 192.168.3.3 to any 80
# Essa linha de execução do ipfw eh importante pois eh ela que redireciona
# o usuário para a pagina do servidor falando q ele ultrapassou o seu
# limite. Troque o IP 192.168.1.1 para o IP do seu servidor e o IP
# 192.168.3.3 para o IP do seu cliente. Com isso quando chegar ao limite dele
# ele ao tentar acessar uma pagina cairá diretamente na pagina do
# servidor.

exec = /sbin/ipfw add 211 deny tcp from any to 192.168.3.3
# Essa linha bloqueia qualquer pacote tcp vindo de qualquer
# cliente de IP 192.168.3.3

————————

expire {
# expiracao

expire_time = +d
# tempo de expiracao, esse sera quanto tempo o usuário ficara bloqueado,
# por ex: como acima esta “+d” significa que ele sera desbloqueado, para
# que possa acessar novamente somente no outro dia. Pode ser usado também Ns,
# Nm, Nh onde “N” eh o tempo, “s” segundos, “m” minutos e “h” hora.

exec = /sbin/ipfw del 210
exec = /sbin/ipfw del 211
# Depois um dia bloqueado, eh liberado novamente o acesso do usuário eh
# deletando-se a regras 210 e 211 do ipfw

Agora seu ipa esta pronto para ser usado. Eh importante ressaltar que no
arquivo ipa.conf você pode acrescentar quantos IPs quiser basta criar uma
nova “rule” para cada IP. Por ex vamos supor que quero criar regras para
3 IPs 192.168.2.1, 192.168.2.2 e 192.168.2.3 ai neste caso ficaria assim:

global {
update_db_time = 1m
}
rule 192.168.2.1 {
ipfw = 214 215
startup {
exec = /sbin/ipfw add 214 allow all from 192.168.2.1 to any
exec = /sbin/ipfw add 215 allow all from any to 192.168.2.1
}
limit 100k {
byte_limit = 100k
info = 100 Kbytes por dia
zero_time = +d
reach {
exec = /sbin/ipfw add 210 fwd 192.168.1.1,80 tcp from 192.168.2.1
to any 80
exec = /sbin/ipfw add 211 deny tcp from any to 192.168.2.1
}
expire {
expire_time = +d
exec = /sbin/ipfw del 210
exec = /sbin/ipfw del 211
}
}
}

rule 192.168.2.2 {
ipfw = 224 225
startup {
exec = /sbin/ipfw add 224 allow all from 192.168.2.2 to any
exec = /sbin/ipfw add 225 allow all from any to 192.168.2.2
}
limit 10m {
byte_limit = 10m
info = 10m Mbytes por dia
zero_time = +d
reach {
exec = /sbin/ipfw add 220 fwd 192.168.1.1,80 tcp from 192.168.2.2
to any 80
exec = /sbin/ipfw add 221 deny tcp from any to 192.168.2.2
}
expire {
expire_time = 1h
exec = /sbin/ipfw del 220
exec = /sbin/ipfw del 221
}
}
}

rule 192.168.2.3 {
ipfw = 234 235
startup {
exec = /sbin/ipfw add 234 allow all from 192.168.2.3 to any
exec = /sbin/ipfw add 235 allow all from any to 192.168.2.3
}
limit 1g {
byte_limit = 1g
info = 1 Gbytes por dia
zero_time = 1h
reach {
exec = /sbin/ipfw add 230 fwd 192.168.1.1,80 tcp from 192.168.2.3
to any 80
exec = /sbin/ipfw add 231 deny tcp from any to 192.168.2.3
}
expire {
expire_time = 10s
exec = /sbin/ipfw del 230
exec = /sbin/ipfw del 231
}
}
}

Caso você queria informa coes sobre como esta um determinado IP, pode-se usar
o ipastat que mostra estatísticas de cada IP, a sintaxe de uso eh:

# ipastat -r regras -l limite

Ex:

# ipastat -r 192.168.2.1 -l 100k
+————-+———–+——-+——————–+
| Rule | Rule.Info | Limit | Limit.Info |
+————-+———–+——-+——————–+
| 192.168.2.1 | | 100k | 100 Kbytes por dia |
+————-+———–+——-+——————–+
+——-+————+——–+————+
| Cntr | Byte_limit | Cntr | Byte_limit |
| Bytes | Bytes | Mbytes | Mbytes |
+——-+————+——–+————+
| 0 | 102400 | 0 | 0 |
+——-+————+——–+————+
+——–+———————+
| Status | Date |
+——–+———————+
| Start | 2001.07.11/18:36:59 |
| Zero | 2001.07.12/00:00:00 |
+——–+———————+

Para outras regras do ipastat digite:
# ipastat –h

Para maiores detalhes sobre o ipa recomendo as manpages dele
# man ipa
# man ipa.conf

Há também otimos exemplos de configuração do IPA em:
/usr/local/share/ipa/examples

Montando um servidor PPPoE com autenticacao por radius + controle de volume de usuarios (Parte 2)

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>

2) Montagem do radius
———————-

O Radius fara a autenticação dos seus usuários, aqui usaremos o
radiusd-cistron versão 1.6.4 que pode ser pego em ftp://ftp.freeradius.org/pub/radius/ .

Copie o radiusd-cistron-1.6.4.tar.gz para /usr/ports/distfiles e depois
digite:

# cd /usr/ports/net/radiusd-cistron
# make install

Com isso o radius foi instalado, e também foi colocado automaticamente um
shell script em /usr/local/etc/rc.d para que ele seja iniciado no
boot do sistema. Agora vamos configurar o radius.

Os arquivos de configuração dele são instalados por default em
/usr/local/etc/raadb .

Edite o arquivo clientes e coloque o seu IP da placa de rede e a “key”
por ex:

# Client Name Key
#—————- ———-
#portmaster1.isp.com testing123
#portmaster2.isp.com testing123
#proxyradius.isp2.com TheirKey
192.168.1.1 teste

Agora edite o arquivo naslist e coloque seu IP o nome da maquina e o tipo.
Os tipos válidos são: “livingston”, “cisco”, “multitech”, “computone”,
“max40xx”, “portslave”, “tc”, “pathras”, “usrhiper”, “other”.

Por ex:
# NAS Name Short Name Type
#—————- ———- —-
192.168.1.1 falcao other

Agora edite o arquivo mais importante que eh o users , eh nele que ficam
todos os seus usuários que serão autenticados no radius. Coloque nele as
seguintes linhas:

# essa primeira linha deve ser padrão, ela deve ser colocada no arquivo

DEFAULT Framed-Protocol = PPP
Simultaneous-Use = 1,
Fall-Through = Yes

# substitua “LOGIN” pelo login do seu usuário, “SENHA” pela senha do seu
# usuário e “IP” pelo IP fixo que seu usuário sempre receberá quando
# conectar. O “IP” tem q ser dado pois ele eh fundamental para que mais
# pra frente seja limitado o volume de trafego por usuário.

LOGIN Framed-Protocol = PPP, Password = SENHA
Framed-IP-Address = IP,
Service-Type = Framed-User,
Framed-MTU = 1492,
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP

# abaixo um exemplo de como ficaria:

joao Framed-Protocol = PPP, Password = abcd1234
Framed-IP-Address = 192.168.3.3,
Service-Type = Framed-User,
Framed-MTU = 1492,
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP

Pronto, seu radius esta configurado. Rode-o com executando:

# radiusd -y

Eh importante salientar que o radius possui diversas outras configurações,
como: autenticação por grupo, liberação que mais de um usuario logue com o
mesmo login, entre outras coisas. Para isso aconselho que seja lida a
documentação, já que aqui estamos configurando somente o necessário para a
nossa solução.