Escolar Documentos
Profissional Documentos
Cultura Documentos
Ateno: essas anotaes foram criadas por Edgar Paes (edgar.paes@lagoinha.com) na turma de
2010 do SSA. Por favor no compartilhem sem anuncia explcita do Edgar, a quem agradecemos por
liberar suas anotaes pessoais, complemento bem relevante pras turmas :-)
Treinamento SSA
Histria
A DEC, em 1965 criou uma linhagem de mainframe conhecido como PDP, que era
a base de chips de silcio. O primeiro sistema operacional utilizado foi o GENIE, e
posteriormente o CTSS do MIT.
Preemptivo granularidade do escalonador, que medida em HZ. Respeita-se o
time slice, ou time sharing, ou seja, antes da preempo, verifica-se a prioridade.
Todo esse processo conhecido como Multiplexao, o qual derivou o MULTICS,
que demandou um consrcio de 08 empresas e bem como um fundo da UCLA. A
AT&T tinha interesse simplesmente em desenvolver mecanismos que possibilitasse
o processo de Switching de telefonia de forma computacional. Porm, havia
conflitos de interesses, onde tcnicos da AT&T possuam um determinado
interesse, e os da IBM possuam outros, de forma que o projeto de um sistema
operacional multitarefa no estava sendo possvel.
Brian Kernnighan, criador do PMI, assumiu a liderana do projeto, e a AT&T
abandonou o projeto do MULTICS (1969). Ken Thompson, Denis Riche, Joseph
Francis Osanna, continuaram com as ideias do desenvolvimento do Sistema
Operacional.
Ken Thompson modificou o Multics, transformando os Jobs em processos de 165535 (PID), um outro programa mapeava a geometria da memria e sua
respectiva alocao de pginas, tambm um outro programa que separa as
pginas de memria em duas primitivas (atualmente so oito tipos de primitivas):
Segment Stack Size (SSS), que continha o programa de fato, que era o exec, o
corpo do PID e o DSS Dynamic Allocate Stack Size, que consistia nas variveis
alocadas pelo PID. Um outro programa separava a DSS (para gravar o highscore
do jogo). Um outro programa era utilizado para gravao em Fita Magntica, que
na verdade foi o principio de FS File System de 512 Bytes e depois 1k. Outro
para gravar no FS e o Loader, que carregava o programa em estado de execuo
junto com o highscore, que originou posteriormente as bibliotecas compartilhadas.
Houve modificaes para jogar em modo versus, que possibilitou o Gerenciamento
de Portas Seriais: Serial Input e Serial Output (SIO), onde o PID recebia o SIO que
funcionou da seguinte forma:
std output SIO
W^R = Write XOR Read, onde uma pgina deve estar Write pelo menos uma vez, e um
Read pelo menos uma vez. Com isso, se uma pgina estiver True, ser True somente
para o processo acessando aquela pgina de memria, se outros processos tentarem
acessar a pgina e gerar entradas True, pelo XOR, a pgina ser Falsa, no permitindo o
acesso. Tambm criou o sysTrace, o Super Smach Stack (gcc 5.2).
O 386BSD mudou de nome (quatro meses depois) em1993 para FreeBSD.
Strings no kernel32.dll
# strings /bin/ls | grep color ABC
# strings kernel32.dll netinet.dll ipnat.sys powershell.exe
ftp.exe ftp.mib | grep Calif
Site
que
esclarecem
as
novas
implementaes.
CD1 Base binria de instalao, cdigo-fonte e documentao.
CD2 Pacotes pr-compilados;
DVD1 Pacotes Extras + CD1 + CD2 + Live CD para resoluo de problemas.
Mini-inst No tem nada, somente a base principal, sem documentao, cdigo-fonte,
etc.
Boot Only Somente para boot, utilizado para instalao via rede.
Tarefa pr-instalao (E/S (Teclado, Monitor), Storage (Disco) e Media (CD, DVD))
regra.
-02 UFS2 (Esta opo no est disponvel por padro).
Para apagar inodes, utilizado a syscall unlink(), por exemplo, o
comando # rm utiliza a syscall unlink().
O Squid sempre grava arquivos de tamanho fixo de 8K.
# dd if=/dev/zero of=/usr/local/squid/cache/teste.bin bs=8k
count=500000 Um banchmark de performance em SATA2 deve ser de 165MBytes/s.
O FreeBSD sempre deve ser instalado na partio primria, o FreeBSD no instala em
partio que no seja primria.
Configurao de Parties
/ = 512M
Swap = 2 * Phisycal Memory + 10%(Phisycal Memory)
/var = 35%
/tmp = 512M
/usr = 65%
Padro FreeBSD Brasil
/ 512M
Swap =
/tmp =
/var =
/usr =
Soft Updates
Userdata Dados dos usurios (arquivos, dados gravados), aplicaes, etc.
Metadata dados (informaes) do userdata. constitudo por filename, inode, inode de
inicio, inode de fim, etc.
O LFS, faz sync somente em dados importantes que so gravados em arquivos de log
(Log File System) (disco (EEPROM) em um disco de alta velocidade, de forma que no se
perde o que estava em disco, pois os metadados so gravados em log. O Journaling
utiliza uma partio separada para armazenar esses arquivos, e essa partio sempre
sncrona. A partio de /boot sempre assncrona. O Raiserfs (o desenvolvedor do
Raiserfs est preso por assassinar toda sua famlia) possui uma implementao muito
boa de Journaling.
O Soft Updates (Sncrono)
Uma variao de 500 linhas de cdigos sobre o UFS. Na usenix 8 foi feito um benchmark
de oito testes, sendo que em todos apresentaram segurana equivalentes. O Soft
Updates ganhou 6, empatou 1 e perdeu 1 (leitura de files menores armazenados
sequencialmente).
Durante a instalao:
Alt+F2 Debug
Alt+F4 Prompt com o que j est sendo instalado.
POS-INSTALAO
/boot/device.hint Configuraes de hint.
Trocando o menu Beast
# cd /boot
# ls *.4th
# ee beastie.4th
Alm de trocar o menu beast, tambm deve-se estudar o que o safe mode executa, de
forma que se o sistema boota em safe mode, mas no boota em estado default, devese desabilitar as variveis que so desabilitadas durante o boot em safe mode, talvez seja
problema com ACPI, DMA, ou outro hardware.
Composio de Discos
(PATA) ata0
Master: ad0
Slave: ad1 (Slave sempre tem ID mpar)
(PATA) ata1
Master: ad2
Slave: ad3
(SATA) ata3
Master: ad6 (sempre ID par) e No existe Slave em SATA
Device Name:
ad0s1 (s1 Slice 1)
ad0s2b Primeiro Canal IDE (IDE 0), Master, Segundo Slice, Label
2
# dumpfs /usr/local/squid/cache
# umount -f /usr/local/squid/cache
# tunefs -o space /usr/local/squid/cache (Otimiza para espao
(ignora escrita de disco))
# tunefs -o time /usr/local/squid/cache (Otimiza para tempo de escrita
(ignora economia de disco))
# man tunefs
# vidcontrol (Muda a cor do terminal)
possvel, com o tunefs, habilitar e desabilitar o Soft Updates.
# ls -l /boot/mbr /boot/boot0
Esses arquivos so de 512 Bytes, e so os arquivos de MBR, sendo que o boot0 um
backup do /boot/mbr.
/boot/boot1 Carrega o boot2 (Boot Manager) caso durante a instalao tenha sido
instalado o Boot Manager. Em caso contrrio, procura por /boot/config, onde -P -s 9600
(boota na interface serial ativa (freebsd como roteador). Tambm, pelo boot.config
possvel carregar o sistema a partir de outra partio.
O /boot/boot2 carrega o /boot/device.hints e /boot/defaults/loader.conf
Nunca deve-se alterar as configuraes dos arquivos nas estruturas de defults, como
/boot/defaults, /etc/defaults, etc. Com isso, caso tenha que modificar uma
configurao no /boot/loader, ento, deve-se consultar as opes em
/boot/defaults/loader.conf, ento cria-se uma cpia do arquivo original, no caso
/boot/loader.conf
e
acrescenta
as
configuraes
necessrias
do
/boot/defaults/loader.conf
# man rc.conf
#
#
#
#
#
#
man
man
man
man
man
man
Para criar arquivos de que executam procedimentos, deve-se criar arquivos no rc.d,
obedecendo as prerrogativas de PROVIDE, REQUIRE, KEYWORD, BEFORE (se
necessrio).
# /etc/rc.d/named rcvar
UNIX BSICO
Arquivos de TTY
# /etc/tty
Neste diretrio traz o controle de terminais remotos, fsicos e discados. Nele tambm
configura-se segurana bsica quanto aos TTY. Aps o ttyv9, comea a ser acrescido
como ttyva at ttyvf
Aps as alteraes,
# Kill -HUP 1 (init)
Configurao de Rede
# ifconfig <interface> <opcao>
Configurando IP
# ifconfig <interface> <ip/mascara>
# ifconfig <interface> <ip> <netmask>
Verificando as velocidades suportadas
# ifconfig -m sis0
# ifconfig sis0 media 100baseTX mediaopt full-duplex
Dica: Utilize o mouse para para copiar e colar a sada do comando # ifconfig sis0 -m
Adicionando Rotas
#
#
#
#
#
route
route
route
route
route
@201.48.151.193
No /etc/rc.conf:
syslogd_enable=YES
syslogd_flags=-a 201.48.151.193
PERMISSO
# top -o time
# systat
# vmstat Memria virtual
# iostat troughput de disco
# iostat -w1
# gstat troughput de disco. Nesse programa, deve-se observar a
coluna %busy, onde caso esteja chegando a 100%, representa
gargalo. A coluna L(q) (Lenth Queue), que representa a fila de
processos esperando para escrever em disco. As duas colunas devem
ser combinadas, devendo observar o coluna %busy em funo da
coluna L(q), porm, deve-se ater que caso chege a 97.0%, por
exemplo, este deve ser constante, e no espordico.
# uptime
# swapinfo
Enviando Sinais para os daemons
- TERM = -9 Mata o processo;
- HUP = -1 Aborta
- ABRT Aborta
- SGV (Falha de Segmentao) (Signal 11) Geralmente ocasionado por
problema fsico na memria RAM. Error: Signal 11.
Referncias On-line FreeBSD
http://www.freebsd.org/docs Site oficial do Projeto FreeBSD
http://www.fug.com.br Grupo de usurios de FreeBSD do Brasil. Assinar a lista.
Http://free.bsd.com.br Site do Jean
#
#
#
#
Quando instalar uma nova shell via ports, por exemplo, bash, necessrio
adicion-lo no /etc/shells
alias ls -ls -G Criando alias. O -G exibe cores do sistema.
set autolist Exibe e auto completa comandos e diretrios.
setenv EDITOR ee
setenv Exibe todas as variveis de ambiente.
Agendamento de Processos
O crontab em nvel de sistema est localizado em /etc/crontab.
Minuto / hora / dia_semana / ms / mes_do_ano / usurio / comando
01
00
*
*
* Executa todos os dias a 00:01
root
/root/backup.sh
cd /usr/ports/www/admuser
make fetch
ls /usr/ports/distfiles
make checksum
make extract
make patch
make configure
make build
make install
# whereis portaudit
Todos os arquivos do ports que passam por processo de busca, esto localizados no
arquivo indexado /usr/ports/INDEX-8.
# make deinstall Remove todos os binrios e arquivos correlatos ao port.
Instalando Aplicaes em Pool de Mquinas
# make package instala e cria o arquivo admuser-2.3.2.tbz, para ser utilizado em
outras mquinas.
# cd /usr/ports/databases/mysql50-server/
# make BUILD_OPTIMIZED=yes install
Alguns casos, deve-se vasculhar o arquivo Makefile do port e verificar muito mais opes
disponveis sempre.
Instalao via binrio (semelhante a .rpm, .deb)
# pkg_add pacote.tbz
# pkg_info
# pkg_delete pacote Deleta o pacote baseado na saida da informao do
pkg_info.
# pkg_add -rv admuser Baixa do FreeBSD.org.
# pkg_create -b pacote Cria um arquivo pacote.tbz (binrio).
Em servidores sempre utiliza-se instalao via Ports, pois o compilador otimizado para a
arquitetura de hardware do servidor em questo. Os pacotes binrios so sempre
compilados para uma arquitetura genrica, tal qual Linux.
Atualizando a Coleo de Ports
Portsnap Faz um snapshot da rvore de ports e confere com o repositrio central do
FreeBSD.org.
# portsnap fetch extract
# portsnap fetch
# portsnap update
0 3 * * * root /usr/sbin/portsnap cron
Posteriormente, basta utilizar o portsnap update.
Atualizao dos Pacotes Instalados
Portaudit
#
#
#
#
cd /usr/ports/ports-mgmt/portaudit
make install
rehash
portaudit -Fda
guias
Configuraes:
# cd /usr/local/etc
Deve-se inicializar as aplicaes dbus* e hald*, que tratam das configuraes de
interfaceamento de teclado e mouse do Xorg.
No /etc/rc.conf
dbus_enable=YES
hald_enable=YES
# /usr/local/etc/rc.d/dbus start
# /usr/local/etc/rc.d/hald start
# Xorg -configure
Gera-se o arquivo /root/xorg.conf.new
# X -config /root/xorg.conf.new
# ee /etc/ttys, basta configurar para on na linha /xdm para iniciar sempre em modo
grfico.
COMPILAO DO KERNEL
# uname -a
FreeBSD 8.1-RELEASE #0 Identifica o nmero de vezes que o kernel foi compilado.
# /boot/kernel/kernel Kernel do FreeBSD, possui, no Kernel Genrico,
aproximadamente 11MB, que um valor alto para o sistema.
Arquivos de Configurao
# cd /sys/i386/conf/
Crossbuilding- possvel criar um kernel FreeBSD ia64, amd64, arm, etc, em uma
arquitetura i386.
Arquivos /sys/i386/conf:
DEFAULTS: Diretivas de configuraes padres que devem ser obrigatrias para a
compilao do Kernel em funo da arquitetura.
GENERIC: Arquivo com as configuraes que compem o Kernel genrico.
GENERIC.HINTS: Arquivo semelhante a /boot/device.hints, porm, so compiladas
estaticamente, que no recomendvel.
PAE: Arquivo de Extenso de Memria Fsica. Em caso memria acima de 04GB de RAM
em arquitetura de 32 bits, utilizado para estender a capacidade de gerenciamento em
funo da limitao de sistemas 32 Bits. Quando habilita-se suporte a PAE, no
possvel compilar os mdulos de Kernel estaticamente, somente em runtime. Tambm,
diversos drivers e outras diretivas no iro funcionar ou no foram testadas, observar as
diretivas nodevice.
XEN: Para atuar como guest no sistema de virtualizao do XEN de forma customizada.
NOTES: Arquivo de referncias de toda as opes de Kernel do FreeBSD dentro da
arquitetura em questo. Deve ser consultado em diversas ocasies.
/sys/conf/NOTES: Este arquivo independente de arquitetura, ou seja, referncia base
de configuraes para todas as arquiteturas, por exemplo, opes de Firewall esto
contidas neste arquivo.
*******************************************************************************************************
* bpf Utilizado para suporte a sniffers, criando um subsistema de rede virtual para tal
*fim.
*******************************************************************************************************
# make LINT Concatena as opes de kernel de /sys/i386/conf/NOTES com
/sys/conf/NOTES, e cria o arquivo LINTS, porm sem comentrios.
Melhor prtica:
# cd /sys/i386/conf/
# cat /sys/conf/NOTES NOTES > NOTES_FULL
**************************************************************
* nload Monitoramento, parecido com iptrafic
*
Atualizando o FreeBSD
Modelo de desenvolvimento do Projeto FreeBSD
O FreeBSD no possui dono majoritrio, sendo que desenvolvido tambm por outros
desenvolvedores. O OpenBSD s possui um mantenedor. O Projeto formado como:
Core Team: Composto por seis pessoas eleitas a cada dois anos, que tomam as decises
cruciais quanto ao Projeto FreeBSD. O corpo do Core Team definido pelos Commiters.
Commiters: Colaboram com projeto FreeBSD, atualmente aproximadamente 400
comitters. Os commiters so designados a trabalhar nas subdivises de Kernel, Userland,
Docs e Ports.
Contribuidores: Colaboram com o projeto de forma indireta.
Branches:
FreeBSD-CURRENT o FreeBSD que est em desenvolvimento e no est pronto
para produo.
FreeBSD-RELEASE o FreeBSD em mdia.
FreeBSD-Stable o processo de atualizao do source. Aps baixar o FreeBSDRELEASE, feito a atualizao do Sistema, e ento este tornado Stable. considerado
o cdigo mais recente.
Sries (RELENG_X) a ltima da srie em questo, por exemplo, a srie 8, possui
como RELENG, o 8.1.
O ciclo de vida do FreeBSD de a cada 3 verses. No lanamento do FreeBSD 9.0, a
verso do FreeBSD 6.0 deve ser descontinuada.
CVS Control Version System
Web: http://cvsweb.freebsd.org
CVSUP: O CVSUP programa que conecta no servidor do freebsd.org e faz uma
comparao com a verso do usurio. Atualmente, aps ser escrito em C (Antes era em
Perl, localizado em /usr/ports/net/cvsup, passou a ser instalado na Base,
conhecido como CSUP.
# cat /usr/local/share/examples/cvsup/stable-supfile Atualiza o
FreeBSD para Stable.
Alterar a linha host para host=cvsup2.br.FreeBSD.org
Na Linha,
*default release=cvs tag=RELENG_8_1 Atualiza somente patchs de
Segurana.
Opes:
*default release=cvs tag=. - Atualiza para o Current.
*default release=cvs RELENG_8 Atualiza a verso 8 (Recomendvel).
# cd /boot/
# csup -g L2 /root/sup* && make buildworld
Este arquivo pode ser baixado em: http://main.bh.freebsdbrasil.com.br/~jmelo/sup e
http://main.bh.freebsdbrasil.com.br/~jmelo/sup2. (acessvel em: 22/09/2010)
Tambm possvel atualizar o ports via cvsup. Atualmente somente via portsnap.
Os arquivos que podem ser utilizados para atualizar via csup so:
doc-supfile Atualiza documentaes.
ports-supfile Atualiza a rvore de Ports, porm utilizado o # portsnap fetch
extract.
stable-supfile Atualiza o FreeBSD para Stable (ou PRE-RELEASE)
Gerando o Arquivo de Atualizao
# grep -v '#' stable-supfile > sup-stable
# ee sup-stable
Alterar:
*default host=cvsup.br.FreeBSD.org
# csup -g -L2 sup-stable
Verificando o Mirror mais rpido (mecanismo automizado)
# cd /usr/ports/sysutils/fastest_cvsup
# make install
# rehash
# fastest_cvsup -c br -Q Verifica o mirror mais rpido.
# csup -g -L2 -h 'fastest_cvsup -c br -Q' stable-supfile Faz o
processo automtico pegando a sada do comando fastest_cvsup -c br -Q e
colocando como host no arquivo stable-supfile.
Aps atualizar o cdigo-fonte, inicia-se a construo do mundo (userland).
Ento,
# csup -g -L2 -h 'fastest_cvsup -c br -Q' stable-supfile && make
buildworld
compilado dentro de /usr/obj, onde consta tudo que foi reconstrudo, mas ainda no foi
instalado. Recompilando o kernel sem os mdulos:
# cd /sys/i386/conf
# ee SSA
# make buildkernel KERNCONF=SSA && make installkernel KERNCONF=SSA
Enfim, Passos de atualizao (Exceto o processo de csup, todo o processo restante
feito em /usr/src):
1) # cd /usr/src &&
csup -g -L2 -h 'fastest_cvsup -c br -Q'
/usr/share/examples/cvsup/stable-supfile && make buildworld
Atualiza o cdigo-fonte (/usr/src/) e compila/reconstri toda a userland do sistema
em /usr/obj/
2) # make buildkernel KERNCONF=SSA && make installkernel
KERNCONF=SSA Compila o Kernel
3) # make installworld Instala a userland que foi compilada pelo processo de
buildworld.
Otimizando o compilador:
# ee /usr/src/share/examples/etc/make.conf
# ee /etc/make.conf
CPUTYPE?=athlon-xp
Flags:
CPUTYPE?=pentium3 (Tipo de CPU pode ser encontrado em # dmesg | more), nas
linhas acima do arquivo /usr/src/share/examples/etc/make.conf, que h tipos
de CPU para AMD CPUs, Intel CPUs e Via CPUs.
CPUTYPE?= Verifica se exite configurao, caso exista ignora, em caso contrrio utiliza
pentium3.
CPUTYPE+= Verifica se exite configurao de CPUTYE e concatena com a existente.
No utilizando aplicaes da userland:
# /usr/src/contrib
# ee /etc/make.conf
NO_TELNET=YES
### NO_APLICAO=YES###
Implementando Journal
S vivel em parties acima de 01 GB. No possvel instalar o Journal durante a
instalao do FreeBSD, somente aps a instalao. Deve-se deixar uma partio
separada para o log do Journal. Utiliza-se o gjournal para configurar o Journal.
Criando uma partio virtual
# dd if=/dev/zero of=disco.bin bs=1024k count=1500
# mdconfig -a -t vnode -f disco.bin -u 0 O arquivo alocado em
memria na posio 0.
# /dev/md0 Memory Disc
# gjournal load
# gjournal label md0 Neste disco, so gravados as informaes de log dos
metadados.
# grournal label md0 md1 Neste caso, utilizado um disco para dados e outro
para log de informao de metadados.
# newfs -J /dev/md0.journal
# mdconfig -d -u 0 Para destruir o disco virtual, se necessrio.
# mount /dev/md0.journal /mnt
# mount -o async /dev/md0.journal /mnt Garante performance e o torna
assncrono.
No /etc/fstab
/dev/md0.journal
fsck (0))
/mnt ufs
rw,async
0(no
ser
utilizado
Desfazendo o Processo
#
#
#
#
umount /mnt
gjournal stop md0.journal Parando o sistema jornalado.
gjournal clear md0 Limpa todas as referncias de metadados.
mdconfig -d -u 0
/
ufs
/tmp ufs
/usr ufs
rw
rw
rw
1
1
# ee /boot/loader.conf
geom_mirror_load=YES
#
#
#
#
reboot
gmirror configure -a gm0
gmirror insert gm0 ad2 inserindo o segundo disco.
gmirror status Exibe o processo de sincronizao.
da FAPESP foi organizada posteriormente pelo Governo Federal, onde foi criado CG.BR,
e abaixo deste, o NIC.BR e Registro.BR.
Os Servidores podem Ser:
Forwarders, Recursivos, Autoritativos e Cache.
O Bind9 foi totalmente reescrito depois da serie 8, mantendo somente o nome e parser
(configurao). A veracidade da resposta baseada na QID (Query ID) que randmica.
J ocorreram 06 casos de envenenamento de cache. Esta sendo criado o BindX, que
suporta a falha e erros fatais, como negao de servio, de forma que a falha s ocorra
na Thread, e no no servio.
Novos Recursos
Xfer Signature - Assinatura de Transferncia, Views, ACL, IPV6, DNS Security,
NSEC/NSEC3 (RFC5155).
O DNS da Microsoft, MS-CWrap, no possui suporte a ACL, e no possui Segurana.
A Microsoft utiliza o Bind, mas no compliance com as RFCs.
#
#
#
#
#
/etc/rc.d/named rcvar
man chroot
mkdir /bin/ls
ldd /bin/ls
cp -p /lib/lib /tmp
127.0.0.1:53
127.0.0.1:953
127.0.0.1:53
# ee /etc/resolv.conf
# cat /etc/resolv.conf
nameserver 127.0.0.1
nameserver 201.48.151.193
Neste momento o servidor assume a funo de Recursivo.
*:*
*:* --> rndc
*:*
# nslookup www.ig.com.br
Server:
127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name:
www.ig.com.br
Address: 187.31.64.25
O NSLOOKUP, mais humana, amigvel. O dig, mais tcnico.
# tcpdump -n -v -i rl0
# dig www.uol.com.br
Busca Rescursiva
# nslokup www.bsd.com.br 201.48.151.193
# dig @201.48.151.193 www.uol.com.br
DNS no tem funo especifica traduzir endereo, mas o tipo de informao, no tipo A,
trata de endereos.
# nslookup -type=MX bsd.com.br
# dig bsd.com.br MX
Resource Records
Categorias:
Baseados na RFC 1035
Estruturais:
Garantem a existncia da Zona:
SOA 6(cdigo)
RFC1035
Start of Authority
NS
2
RFC1035
Lista de Name Servers com Autoridade Diz
que auto suficiente autoritrio e os nameservers tambm que respondem pelo domnio.
MAPEAMENTO:
A
1
PTR
RFC Nome IP
RFC1035
IP Nome
COMPLEMENTARES:
HINFO
13
RFC1035
TXT 16
1035
WKS 11
RFS1035 Descontinuado e substitudo pelo SRV
AAA IPV6
O Registro LOC, utilizado para fornecer latitude e longitude, de forma que o GPS
consiga encontrar o endereo da empresa atravs do DNS.
# rndc dumpdb Faz um dump e grava no diretrio /var/namedb/var/dump/dump-db
# cat dump-db til para verificar poison cache, verificaes do que h em cache.
Toda vez que restarta o named ele perde o cache, se o cache existir, no so perdidas.
options {
directory
"/etc/namedb"; //WorkDirectory
// No /var/log/messages vai aparecer: The work directory is not writable
// ISSO E TIMO, pois quem escreve no workdir o Sysadmin, e no a aplicao
pid-file
"/var/run/named/pid";
dump-file
"/var/dump/named_dump.db"; //dump de cache em memria
//cache-file
"/var/dump/outro-cache-db"; //compartilhar cache via NFS
statistics-file "/var/stats/named.stats"; // # rndc stats | # less
named.stats. Pode ser utilizado com CACTI
listen-on
{ 127.0.0.1; 201.48.151.206; };
allow-recursion { 127.0.0.1; 201.48.151.192/27;};
// recursion yes|no;
A frase Lame Name Server on xxx, onde xxx = IP, significa configurao atrasada, isto
quer dizer que um dos servidores, por exemplo, o Slave esta desatualizada, que a
definio do Serial, esta com a configurao atrasada. No caso do servidor Primrio, o
named.root que esta desatualizado.
# mv named.root
# fetch ftp://ftp.internic.net/domain/named.root
# diff -u named.root.dist named.root A diferena sera nos bytes, onde 08
espaos so oito bytes, um TAB consome um 1 byte.
# named-checkconf /etc/namedb/named.conf Faz a verificao do arquivo
named.conf
Por padro o named j vem com recurso habilitada.
Quando utilizar ACLs, fica mais fcil gerenciar as recurses:
acl <nome> {
ip;
rede/bitmask;
!ip;
outra-acl;
};
ACLs Padres
localhost loopback e ip
localnets Rede que o servidor faz parte (IP pblico).
any; todos
none; ningum
Exemplos:
acl vcnao {
!201.48.151.206; Todos IPs, exceto este. (Cuidado, pois permitir uma rede
que o IP faz parte e neg-lo depois, ainda assim este ter acesso, pois a avaliao
realizada first-match-wins).
};
acl clients {
localhost;
localnets;
};
# nslookup www.hotmail.com 200.210.70.5 Caso um site resolve, e outros
no resolvem, significa que at o BIND 9.2.2, o cache ainda faz recursividade, de forma
que possvel mapear os tipos de sites que a empresa em questo acessam.
# nslookup www2.hotmail.com 200.201.48.151
# nslookup www2.hotmail.com ns1.hotmail.com
# nslookup www2546464646.hotmail.com ns1.hotmail.com
Em provedores, geralmente h diversos POPs, que possuem Gateways comuns (Upper
Gateways), que tambm pode ser um servidor DNS, ou tambm,
outro servidor DNS:
[INTERNET]
|
+------[GW UPPER]---+
|
|
[POP]
[POP]
Neste caso, utiliza-se forward, onde o POP2, pode verificar no POP, ou GW UPPER.
Isto s deve ser utilizado neste caso especifico:
forwarders {
pop.telecom.com.br
gw.upper.telecom.com.br
};
Existem dois tipos de Cache
Positivo: Baseado em informao que existe
Negativo: Baseado em informacao que no existe, o cliente requisita www.44.com.br,
ou seja, o endereo no existe, mas o servidor ainda assim faz cache, em caso de outro
cliente requisitar a mesma informao, no sera necessrio procurar novamente, para
isso tambm utilizado o minimum, no arquivo de zona.
A diretiva min-cache-ttl configurado para valor alto pode gerar complicaes. O mincache-ttl do Terra 'e de 1 Ms, dessa forma, quem utiliza o DNS do cache podem ter
problema de atualizao, tendo informao antiga por mais tempo.
IN
IN
IN
IN
IN
IN
IN
NS
NS
NS
A
MX
MX
MX
ns1
ns2
www
ftp
mx1
mx2
mx3
IN
IN
IN
IN
IN
IN
IN
A
201.48.151.207
A
201.48.151.206
CNAME
ns1.ssa.com.br.
CNAME
ns1.ssa.com.br.
A
201.48.151.207
A
201.48.151.207
A
201.48.151.207
ns1.ssa.com.br.
ns2.ssa.com.br.
ns1.locaweb.com.br.
201.48.151.207
10
mx1.ssa.com.br.
20
mx2.ssa.com.br.
20001
mx3.ssa.com.br. ;QMTP > 20000
SPF - Sender Policy Framwork, atua tanto no DNS quanto no MTA. Deve ser publicado no
DNS. A partir do BIND 9.2.4. O draft RFC 4408.
# nslookup -type=TXT uol.com.br
Server:
201.48.151.207
Address:
201.48.151.207#53
Non-authoritative answer:
uol.com.br text = "v=spf1 ip4:200.221.11.0/24 ip4:200.221.29.0/24
ip4:200.221.4.0/24 ip4:187.17.116.0/24 ip4:200.98.217.0/24
ip4:200.147.1.0/29 ip4:200.147.32.248/29 ip4:200.147.2.0/27
ip4:200.147.34.0/27 -all"
Authoritative answers can
uol.com.br
nameserver
uol.com.br
nameserver
uol.com.br
nameserver
be found from:
= charles.uol.com.br.
= borges.uol.com.br.
= eliot.uol.com.br.
Caso esteja com o final "~all", o MTA decide se vai aceitar ou no.
@
IN
MX
@
IN
MX
@
IN
MX
;@
IN
TXT
;@
IN
SPF
-all" ;RECOMENDADO
;@
IN
SPF
considerados validos.
10
mx1.ssa.com.br.
20
mx2.ssa.com.br.
20001 mx3.ssa.com.br. ;QMTP > 20000
"v=spf1 mx ip4:200.214.160.20 ip4:189.112.64.82 -all"
"v=spf1
mx
ip4:200.214.160.20
ip4:189.112.64.82
"v=spf1 mx -all" ; SOMENTE OS MX Registrados serao
IN
IN
IN
A
A
A
201.200.200.200
201.200.200.200
201.200.200.200
# nslookup www50.ssa.com.br No caso a ? faz com que o que for digitado depois
de wwww seja aceito.
# nslookup abcdef.ssa.com.br faz com que qualquer coisa que for digita
precedendo o domnio .ssa.com.br seja aceito.
############ EXERCICIO ZONA NANACA.COM.BR ######################
$TTL 14400
@
IN
SOA ns1.nanaca.com.br. webmaster.nanaca.com.br. (
2010092300
86400
3600
604800
86400
)
@
IN
NS
ns1.nanaca.com.br.
@
IN
NS
ns2.nanaca.com.br.
@
IN
A
201.48.151.207
@
IN
MX
10
mx1.nanaca.com.br.
@
@
ns1
ns2
www
mx1
mx2
IN
IN
IN
IN
IN
IN
IN
IN
MX
20
mx2.nanaca.com.br.
SPF "v=spf1 mx -all"
A
201.48.151.207
A
201.18.151.206
CNAME
ns1.nanaca.com.br.
A
201.48.151.207
A
201.48.151.207
A
201.48.151.207
name = capeta.freebsdbrasil.com.br.
expire = 691200
minimum = 10800
Authoritative answers can
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
in-addr.arpa
nameserver
be found from:
= l.root-servers.net.
= m.root-servers.net.
= h.root-servers.net.
= f.root-servers.net.
= k.root-servers.net.
= e.root-servers.net.
= g.root-servers.net.
= b.root-servers.net.
= c.root-servers.net.
= a.root-servers.net.
= d.root-servers.net.
= i.root-servers.net.
origin = capeta.freebsdbrasil.com.br
mail addr = root.capeta.freebsdbrasil.com.br
serial = 2010043001
refresh = 3600
retry = 900
expire = 3600000
minimum = 3600
rede
webmaster.nanaca.com.br. (
@
@
207
206
IN
IN
IN
IN
NS
NS
PTR
PTR
ns1.nanaca.com.br.
ns2.nanaca.com.br.
ns1.nanaca.com.br.
ns1.elianderson.com.br.
dinamica {
algorithm hmac-md5;
secret "4e5bebbe5153ea311b36b843bb658fd3";
};
zone "ssa.com.br" {
type master;
file "/etc/namedb/dynamic/ssa.com.br.zone";
update-policy{
//grant <chave> domain ANY;
//grant <chave> subdomain mx1.ssa.com.br. ANY;
grant dinamica subdomain mx1ssa.com.br. ANY;
};
};
SGBD - MySQL
O MySQL Dual License. O MYSQL pertencia a MySQL AB, empresa alem~a, comprada
pela SUN, e depois a SUN foi comprada pela Oracle. Quando a empresa utiliza o MySQL
e aufere lucro de uma aplicao instalada em clientes, deve-se pagar licena. O valor 'e
U$250,00 por ano, antes com a SUN eram U$80,00.
Flags de Otimizao
BUILD_OPTIMIZED=yes No funciona no Linux.
BUILD_STATIC=yes Utiliza a biblioteca do MySQL em modo esttico, ha um
consumo de aproximadamente 4% de memria e aproximadamente um ganho de 15%.
WITH_FEDERATE Cluster baseado em distribuio de contedo, ele consegue deixar
uma parte do database em cada N, que pode permitir um balanceamento e ganhar mais
performance.
# du -s * | sort -n (Procurando diretorios grandes)
# cd /usr/ports/databases/mysql50-server
# make Para ver as opes de flags.
# /usr/local/etc/rc.d/mysql-server rcvar
# mysql
mysql_enable="NO"
#
(default: "")
Deve-se habilitar no /etc/rc.conf como na sada acima.
#/usr/loca/etc/rc.d/mysql-server start
# sockstat -4l | grep mysql
mysql
mysqld
1623 10 tcp4
*:3306
*:*
Check List
* REMOVER O DATABASE Test
* COLOCAR SENHA PARA O ROOT
mysql> drop database test;
Query OK, 0 rows affected (0.02 sec)
+---------------------------+
| Tables_in_mysql
|
+---------------------------+
| columns_priv
|
| db --> IMPORTANTE
| func
|
| help_category
|
| help_keyword
|
| help_relation
|
| help_topic
|
| host
|
| proc
|
| procs_priv
|
| tables_priv
|
| time_zone
|
| time_zone_leap_second
|
| time_zone_name
|
| time_zone_transition
|
| time_zone_transition_type |
| user --> IMPORTANTE
+---------------------------+
17 rows in set (0.00 sec)
where
Flush
to
BACKUP DO MYSQL
NUNCA GERE BACKUP QUE NAO SEJA DE QUERY INTEIRA
# mysqldump -u root -p mysql > /usr/home/edgarx/Desktop/backup.sql
Enter password:
# cd /usr/home/edgarx/Desktop/
# ls
DNS
backup.sql edgar-arquivos
# mysql -u root -p mysql < backup.sql
Enter password:
FORMA CORRETA:
#
mysqldump
-c
-u
root
/usr/home/edgarx/Desktop/backupcompleto.sql
-p
mysql
>
= 3306
= /tmp/mysql.sock
Por padro, o MySQL faz locktable, para evitar escrita por mais de um processo, como
restaurar backup.
Skip-locking Eleva a performance, porem no deve ter atualizao enquanto o
banco esta rodando (por exemplo, backup)
key_buffer = 16M Quantidade de memoria reservada para gravar log em RAM de
toda estrutura indexada de banco de dados, por exemplo, CREATE INDEXEX (DBA). Em
produo, no minimo 08MB (se utilizar indexao);
max_allowed_packet = 1M o tamanho mximo de uma coluna de cada registro.
S eleva-se em casos que possui campos binrio. O erro de packet, neste caso a
coluna do registro.
table_cache = 64 Garante as table_cache mais acessadas em disco. Com o
show full processlist, deve-se levantar o numero de tabelas acessadas
simultaneamente em disco, ou seja, numero de tabelas abertas em horrio de pico.
sort_buffer_size = 512K Utilizada principalmente em Sorter By e Group By e
Order By, que so tarefas pesadas, trabalha junto com o myisam_sort_buffer_size
(engine), que e quantidade de cache para lembrar de todas as respostas de querys mais
populares, comuns, que usam order by e group by. Por padro vale 2M, se estiver
trabalhando com MySAM, tentar usar com pelo menos de 25% da memoria RAM.
net_buffer_length = 8K Deve ignorar, o MySQL aloca memoria antecipadamente
antes de enviar o pacote pela rede. Estudar sobre isto.
read_buffer_size = 256K Cache genrico de SELECT.
read_rnd_buffer_size = 512K Se for necessrio porque deve-se utilizar
clculos matemticos, exemplo select rand(5); calculo matemtico com valores no
previsveis, tenta melhorar levando para memoria parte do processo. Deve-se evitar esses
tipos de clculos aleatrios.
myisam_sort_buffer_size = 8M (25% de memoria RAM)
# skip-networking
# Disable Federated by default
skip-federated
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
long_query_time=20 (Valor em segundos)
log_slow_queries
Exibe as queries que estao demorando mais do que
long_query_time. Muito til para analisar se as configuraes de tunnings, ou queries
mal feitas, problemas com ordenao, sorteadas por grupo etc.
max_connections = 5000 Numero maximo de conexoes simultaneas
max_connect_erros = 10000 Se gerar mais de 256 erros (queryes erradas,
retorno invalido) na mesma sesso, bloqueada a conexo, (FLUSH USERTABLE), se
aumentar eleva a possibilidade de erros.
interactive_timeout = 500 Por padro vale 0, se o usurio ficar utilizando o slot,
o idle de inatividade for alto, desconectado. A conexo persistentes pode ser um
problema com essa diretiva, ento no deve utiliz-la.
wait_timeout = 750 (segundos) Queries que esto executando mais do que
wait_timeout, sera criado um timeout.
max-allowed-regs=5000 O MySQL no impe limite de quota de disco, porem h
um limite de registro que um database pode ter.
README
simple_httpd
simple_httpd.c simple_httpd.o
*:*
*:*
# telnet 0 80
Outras opes so o lighthttp, muito utilizado para configuraes em servidores
standalones, com pouca requisio, como por exemplo, o FeeNAS, PF Sense, etc. Outra
opo o aolserver, que da suporte a TCL, que concede performance muito maior do que
PHP e Java. A TCL nativamente multithread.
# apachectl configtest Faz o parse do arquivo de configurao httpd.conf.
/usr/local/etc/apache2 Workdir
# ls
Includes httpd.conf
envvars.d magic
mime.types
ssl.conf
tcp4
tcp4
tcp4
tcp4
tcp4
tcp4
6
6
6
6
6
6
*:80
*:80
*:80
*:80
*:80
*:80
*:*
*:*
*:*
*:*
*:*
*:*
A primeira instancia sobe como root (em funo de fazer Bind em porta baixa), e nunca
atende os clientes, porem cria os 5 start-servers, de forma que h 6 processos. Os
start-servers, se for necessrio, starta os min-spare-severs, ou seja, startservers * min-spare-servers. Aps 25 conexes simultneas, criado mais um
start-servers em cada start-servers, de forma que o limite seja
MaxStartServers. O primeiro fork(), iniciam 5 processos StartServers, que
requerem uma nica syscall. MinSpareServer e StartServers devem ser iguais.
Apos as 55, o root comea a colocar as requisies em fila, essa fila vai ate a quantidade
de no mximo de MaxClients. MaxClients deve ser no mximo (3 *
(StartServers * MaxSapare) + StartServers), que a recomendao da
Apache Foundation, onde h no mximo dois slots de espera. Cada MinSpareServer
deve esperar no mximo 02 slots em fila. Se acima de MaxClients, e depois de
Timeout segundos, ento, o root exibe na tela TimeOut, ou Server Busy.
ServerLimit, essa diretiva deve ser modificada em caso de MaxClients for superior a
256, tambm ServerLimite deve ser igual a MaxClients, quando este for superior a
256 (que um struct do cdigo-fonte do apache)
O apachegraceful apenas reativa as configuraes alteradas no httpd.conf.
O FreeBSD para as principais features de Webserver mantem aceleradores em kernel,
que so aceleradores accf_http (ACCEPT_FILTER_HTTP, ACCEPT_FILTER_DATA,
ACCEPT_FILTER_DNS).
Para carregar uma pagina, so necessrias aproximadamente 08 syscalls, como
receive_buffer, send_buffer, etc. Com o ACCEPT_FILTER_HTTP,
todo o processo feito em uma nica syscall.
# cat /usr/local/etc/rc.d/apache2
eval apache2ssl_enable=\${apache2ssl_${profile}_enable:-NO}
eval
apache2_flags="\${apache2_${profile}_flags:-$
{apache2_flags}}"
eval
apache2_http_accept_enable="\${apache2_$
{profile}_http_accept_enable:-${apache2_http_accept_enable}}"
-->
configurar no /etc/rc.conf
eval
apache2limits_enable="\${apache2limits_$
{profile}_enable:-${apache2limits_enable}}"
eval
apache2limits_args="\${apache2limits_$
{profile}_args:-${apache2limits_args}}"
# ee /etc/rc.conf
apache2_enable="YES"
apache2_http_accept_enable="YES"
Carregando como modulo
# cd /usr/src/sys/modules/accf_http/
# make
# make install
# kldload accf_http
# kladstat
O ARQUIVO /USR/LOCA/ETC/APACHE2/HTTPD.CONF
LockFile Utilizado em Cluster, onde so acessado arquivos (NFS, por exemplo). O
Apache precisa saber que h concorrncia de escrita. Tambm, nunca coloque o NFS
externo, por exemplo, um NAS, mas somente local. Enfim, quando h mais de um
processo acessando o mesmo arquivo compartilhado.
ScoreBoardFile Estatsticas
Timeout Quanto tempo o apache vai manter o cliente em fila, depois de Timeout :
Server Timeout
KeepAlive Criado a partir do HTTP 1.1, aproveita sesses HTTP em andamento.
MaxKeepAliveRequest Numero de clientes que vai lembrar. Numero de clientes que
acessam a pagina. Acima disso, 'e refeito o processo de ThreeWayHandshake.
TCP/80
[FIREFOX]
[HTTPD]
-------------(syn,!ack(sem ack))--------->
<------------(syn,rst)-------------------> O rst (redefina o criterio de syncronizacao
<------------(syn,ack)-------------------> Se estiver ouvindo (ThreeWayHandshake)
-------------(ack)-----------------------> (Sessao)
<------------(ack)------------------------------------(ack)-----------------------> (GET /arquivo.html HTTP/1.0)
<------------(ack)------------------------ (RESPONSE-BODY (2Kb)) offset/1/2 (Fragmentado,
MTU de 1500 Bytes)
-------------(ack)-----------------------> (RECEBI 1/2)
<------------(ack)------------------------ (RESPONSE-BODY)
-------------(ack)-----------------------> (RECEBI 2/2)
<------------(fin,ack)-------------------- (Termino)
-------------(ack)----------------------->
No caso da Keep Alive, em vez de um fin,ack, ele envia uma flag com ack,acknumber,keepalive. Cada pagina de memoria (4k) possvel lembrar de dois clientes
(2K por cliente). 100 clientes consomem 200Kb de pagina de memoria.
No quadro acima h quatro momentos (estados) separados, sendo o
setup(threewayhandshake), h uma comunicao estabelecida(sesso), depois o
encerramento. Ha trs estados. O quarto estado, seria a ausncia desses estados, de
forma que na prxima conexo, todo o processo seja refeito e avaliado pelo Firewall,
ainda que seja da mesma origem, etc.
Modulos de Tunning
<IfModule prefork.c>
StartServers
5
MinSpareServers
5
MaxSpareServers
10
MaxClients
150
MaxClientes
3*((StartServers*MaxSapareServers)+StartSevers)
MaxRequestsPerChild 0
</IfModule>
Maximo
<IfModule worker.c>
StartServers
2
#MaxClients
150 Pode-se comentar, pois prefork.c tem
precedencia sobre worker.c
MinSpareThreads
25 25 * NCPU
MaxSpareThreads
75 Soma de todos os processos 3*MinSpareThreads
ThreadsPerChild
25 Limite maximo de cada processo. Boa
Pratica: MaxSapare/(StartServers*MaxSpare)+StarServers) ou liberar
no minimo MinSpareThreads.
#MaxRequestsPerChild 0
</IfModule>
CONFIGURACAO DE CONTEXTO
Contexto o isolamento de configurao de recurso baseado em algum critrio.
FilesMatch "^\.ht" Tudo que comea com .ht.
<FilesMatch ".*\.mp3$"> Tudo que termina com mp3.
</FilesMatch>
O mod_access, definido no mod_access_module, trabalha com ACL, e funciona em
qualquer contexto.
Alias Faz um mapeamento hierrquico de uma estrutura de arquivo.
Alias "/lojafree" "/usr/local/data/client1" Faz com que quando o
cliente digitar site.com.br/lojafree, a estrutura fsica vai para estrutura virtual.
# REDIRECT Faz redirecionamento temporrio ou permanente, somente para url.
Redirect permanent /loja2 http://www.disney.com
[Fri Sep 24 10:40:15 2010] [error] [client 127.0.0.1]
denied by server configuration: /usr/home/cliente1/
client
Esse erro sempre em funo do mod_access, deve-se criar um contexto Directory com
as permisses adequadas.
Order <allow,deny|deny,allow>
Allow from <nome_dns|ip|rede/bitmask|all|*.freebsdbrasil>
Deny from <nome_dns|ip|rede/bitmask|all|*.freebsdbrasil>
Para permitir server side include. Nunca execute um include dentro de server-side com
CGI.
<!-- #include "outro.html">
Lembrar que o Apache last-match-wins, mesmo permitindo a todos (Allow from
all), a ltima regra diz Deny from 200.48.151.206.
Diretrios: /usr/home/cliente1/ e /usr/home/cliente1/download
Alias "/loja" "/usr/home/cliente1/"
<Directory "/usr/home/cliente1">
Order Allow,Deny
Allow from all
Options -Indexes
Deny from 200.48.151.206
</Directory>
<Directory "/usr/home/cliente1/download">
Options +Indexes FollowSymLinks
outros diretorios dentro destes usurios.
</Directory>
Permite
navegao
aos
Contextos de Autenticao
Basic - Trabalha em texto plano;
Digest - Trabalhe com hash criptografado na senha, que na verdade um hash da
senha mais um secret da engine do apache.
AUTENTICACAO BASIC
Exemplo:
# cd /usr/home/cliente1/
# mkdir secreto
# echo "ACESSO SECRETO" > secreto/index.html
# htpasswd -m -c /usr/local/etc/apache2/senhas.conf edgar Para os
prximos usurios no necessrio a flag -c (criar). O -m para utilizar MD5.
<Directory "/usr/home/cliente1/secreto">
Order Allow,Deny
Allow from all
AuthType Basic
AuthName "Acesso Registro"
AuthUserFile /usr/local/etc/apache2/senhas.conf
Require valid-user
# Require user edgar
</Directory>
AUTENTICACAO DIGEST
Combinao criptogrfica da senha, realm e usurio.
Deve-se descomentar o modulo para digest na linha:
LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
# htdigest -c /usr/local/etc/apache2/digest.conf "Acesso Restrito"
edgar A flag -c deve ser omitida na criacao dos proximos usuarios
<Directory "/usr/home/cliente1/secreto">
Order Allow,Deny
Allow from all
AuthType Digest
AuthName "Acesso Restrito"
AuthDigestFile /usr/local/etc/apache2/digest.conf
Require valid-user
# Require user edgar
</Directory>
# COMBINANDO DOIS METODOS. NEGA PARA TODOS, MAS PERMITE SE FOR
INTERNO, POREM EXTERNO, 'E NECESSACIO AUTENTICACAO
<Directory "/usr/home/cliente1/secreto">
Order Deny,Allow
Deny from all
Allow from 192.168.10.0/20
AuthType Digest
AuthName "Acesso Restrito"
AuthDigestFile /usr/local/etc/apache2/digest.conf
Require valid-user
Satisfy any
# Require user edgar
</Directory>
SERVER INFO
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 201.48.151.207 127.0.0.1
</Location>
SERVER STATUS
ExtendedStatus On Descomentar
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 201.48.151.207 127.0.0.1
</Location>
PID Acc M
CPU SS
Req
VHost
Request
1695 0/0/0
W
0.00 0
127.0.0.1 edgar.ssa.com.br
Conn Child
0
0.0 0.00 0.00
GET /server-status HTTP/1.1
Slot Client
CONFIGURANDO O MOD_DEFLATE
Permite enviar respostas via deflate, que faz com que as respostas sejam compactadas.
Essa possibilidade 'e registrada em RFC.
LoadModule deflate_module libexec/apache2/mod_deflate.so
################# PATRICK MOD_DEFLATE ######################
<IfModule mod_deflate.c>
#
# Definicoes globais para mod_deflate
# cada definicao pode ser customizada em containers
# Directory ou VirtualHost
#
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|jpg|gif)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
#SetEnvIfNoCase Request_URI \.swf$ no-gzip dont-vary # avaliar caso-a-caso
DeflateCompressionLevel 5 --> Por omissao o valor 'e 3. O recomendavel 'e 5
DeflateMemLevel 9
DeflateWindowSize 15
BrowserMatch
BrowserMatch
BrowserMatch
BrowserMatch
^Mozilla/4 gzip-only-text/html
^Mozilla/4\.0[678] no-gzip
\bMSIE !no-gzip !gzip-only-text/html
"Opera/(9|8|7|6|5)" no-gzip
(%{ratio_info}n%%)'
</IfModule>
# Passa com preferencia quem faz Full Caching
Header set X-Cache "HIT from varnished.internal"
Header set X-Cache "HIT from Thunder"
#######################################################################
No /usr/local/etc/apache2/httpd.conf
Include etc/apache2/mod_deflate.conf
################## WebDAV #############
Permite uma estrutura HTTP que recebe arquivo. Faz praticamente, um mapeamento do
Servidor Web como um disco virtual. Possui baixssimo, que mitigado com autenticao.
recomendvel utilizar com Digest e HTTPS.
No /usr/local/etc/apache2/httpd.conf
# apachectl -t -D DUMP_VHOSTS
#################### APACHE-SSL ######################
A identificao de CN no X.500 no Apache a URL FQDN. A criptografia na sesso ocorre
de forma simtrica. A chave simtrica negociada com base na assimtrica. O primeiro
byte durante a conexo j configurada. O SSL - Secure Socket, a segurana em
nvel de socket, onde trata no TCP, o TLS na camada 7, onde
# telnet smtp.gmail.com 25
Trying 74.125.67.109...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP i30sm3770134anh.9
ehlo
250-mx.google.com at your service, [201.48.151.207]
250-SIZE 35651584
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
# openssl s_client -connect www.gmail.com:443
CONNECTED(00000003)
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
--Certificate chain
0
s:/C=US/ST=California/L=Mountain
View/O=Google
Inc/CN=mail.google.com
i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
i:/C=US/O=VeriSign,
Inc./OU=Class
3
Public
Primary
Certification Authority
--Server certificate
-----BEGIN CERTIFICATE----MIIDIjCCAougAwIBAgIQHxn23jXdY6FCkYrVLMCrEjANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
MTEyMTgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRgw
FgYDVQQDFA9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBANknyBHye+RFyUa2Y3WDsXd+F0GJgDjxRSegPNnoqABL2QfQut7t9CymrNwn
E+wMwaaZF0LmjSfSgRSwS4L6ssXQuyBZYiijlrVh9nbBbUbS/brGDz3RyXeaWDP2
BnYyrVFfKV9u+BKLrebFCDmzQ0OpW5Ed1+PPUd91WY6NgKtTAgMBAAGjgecwgeQw
DAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0
ZS5jb20vVGhhd3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEF
BQcDAgYJYIZIAYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0
cDovL29jc3AudGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3
dGUuY29tL3JlcG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEF
BQADgYEAicju7fexy+yRP2drx57Tcqo+BElR1CiHNZ1nhPmS9QSZaudDA8jy25IP
VWvjEgaq13Hro0Hg32ZNVK53qcXwjWtnCAReojvNwj6/x1Ciq5B6D7E6eiYDSfXJ
8/a2vR5IbgY89nq+wuHaA6vspH6vNR848xO3z1PQ7BrIjnYQ1A0=
-----END CERTIFICATE----subject=/C=US/ST=California/L=Mountain
View/O=Google
Inc/CN=mail.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
--No client certificate CA names sent
--SSL handshake has read 1773 bytes and written 325 bytes
--New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher
: RC4-SHA
Session-ID:
DFD3B3CE007865BD3E947043E3B95C36AE991888FD87019CD6D996974F7E40C2
Session-ID-ctx:
Master-Key:
7E9B9B71FC0CE77EE8755D7E41783ACF172CD093B0B5783B9C50A84313E4F2B71B
1CCEFF00E119D6C4DEFA1FBFD86C81
Key-Arg
: None
Start Time: 1285342811
Timeout
: 300 (sec)
Verify return code: 20 (unable to get local issuer
certificate)
--GET HTTP/1.0
HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.com
Content-Length: 218
Date: Fri, 24 Sep 2010 18:50:54 GMT
Server: GFE/2.0
<HTML><HEAD><meta
http-equiv="content-type"
content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com">here</A>.
</BODY></HTML>
read:errno=0
MasterKey, a chave proposta para a criptografia, pois a criptografia ira ocorrer de forma
simtrica, no entanto para garantir que a chave confivel, enviado tambm o
SessionID, que criptografou com a chave privada, e a chave publica tambm foi enviada,
como pode ser visto em Server Certificate, que compreende a chave entre BEGIN
CERTIFICATE e END CERTIFICATE.
[PUB KEY] VerySign
|
[KEY] =================================================> [CSR]
|
[CRT] (Certificado)
# grep -v
comentrios.
ssl.conf.bkp
>
ssl.conf
Implentando SSL
# mkdir ssl.key Chave Privada
# mkdir ssl.csr Assinatura
# mkdir ssl.crt Certificado
Gerando a chave privada (1024 bits)
# openssl genrsa -out ssl.key/www.nanaca.com.br.key 1024
Generating RSA private key, 1024 bit long modulus
............................++++++
...............................++++++
e is 65537 (0x10001)
Gerando o Pedido de Certificado assinando-o com a Chave Privada
# openssl req -new -key ssl.key/www.nanaca.com.br.key -out
ssl.csr/www.nanaca.com.br.csr
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name
or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Minas Gerais
Locality Name (eg, city) []:Belo Horizonte
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nanaca
LTDA
Organizational Unit Name (eg, section) []:TI
Common Name (eg, YOUR name) []:www.nanaca.com.br
Email Address []:tecnologia@nanaca.com.br
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:23grdess
An optional company name []:Nanaca-LTDA
Apos este processo a chave pode ser enviada para a CertSign e conseguir um Certificado
Valido.
Assinando a Chave Auto-Assinada
# openssl x509 -days 365 -req -in ssl.csr/www.nanaca.com.br.csr
-signkey ssl.key/www.nanaca.com.br.key -out
ssl.crt/www.nanaca.com.br.crt
Signature ok
subject=/C=BR/ST=Minas
Gerais/L=Belo
Horizonte/O=Nanaca
LTDA/OU=TI/CN=www.nanaca.com.br/emailAddress=tecnologia@nanaca.com
.br
Getting Private key
builtin
dbm:/var/run/ssl_scache
300
file:/var/run/ssl_mutex
<VirtualHost _default_:443>
DocumentRoot "/usr/home/www/nanaca"
ServerName www.nanaca.com.br:443
ServerAdmin tecnologia@nanaca.com.br
ErrorLog /var/log/nanaca-ssl-error.log
TransferLog /var/log/nanaca-ssl-access.log
SSLEngine on
SSLCipherSuite
+eNULL
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:
SSLCertificateFile
/usr/local/etc/apache2/ssl.crt/www.nanaca.com.br.crt
SSLCertificateKeyFile
/usr/local/etc/apache2/ssl.key/www.nanaca.com.br.key
<FilesMatch "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog /var/log/httpd-ssl_request.log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
################### FIM DE ARQUIVO ############
# apachectl stop
# apachectl startssl
No /etc/rc.conf apache2ssl_enable="YES"
# lynx https://www.nanaca.com.br
LINGUAGEM DE PROGRAMACA PHP
A linguagem implementa aproximadamente 40% do Padro POSIX.1e. Esta em
/usr/ports/php5, que o Core do PHP. Opes:
CLI - Linha de Comando
CGI - O php roda em soquete de rede e processa o que esta em memoria-socket.
APACHE - Cria um modulo nativo para o Apache
AP2FILTER - Capacidade de PHP de processar expresses regulares. Ainda nao esta
testado e funcional.
SUHOSIN - Expresso em japons que significa o incrvel drago vermelho que protege,
baseado em projeto de segurana Hardening PHP.
MULTIBYTE - Possibilidade de carregar extenses externas que no foram carregas no
S.O, por exemplo, extenses de terceiros, ou proprietrios, por exemplo, da ZEND.
MAILHEAD - Quando utilizar a funo mail, ele acrescenta um header que indica quem
index.php3
index.php4
# apachectl configtest
# apachectl graceful
# cp php.ini-production php.ini
register_globals = On A varivel estar global para todos. A varivel estar
disponvel para todos os scripts, de forma que o escopo torna-se nico.
$saida = shell_exec("/bin/ls");
safe_mode = Quando habilitado faz seguimentao de memoria para cada varivel
(mesmo com Register Globals). Existe tambm a comparao de UID, garantido que cada
dono de arquivo lhe seja de fato como dono. Tambm, desabilita shell_exec,
system, etc.
open_basedir = /usr/local/www:/tmp Limita as operaes em arquivo para
aquele diretrio e os diretrios abaixo dele, no caso www e tmp.
disable_functions = Desabilita phpinfo(), fsockopen(), etc.
No diretrio TREINA do Treinamento h diversas configuraes quanto a segurana em
PHP.
expose_php = Off
Firewall
Componentes de Segurana Formais
- Melhores praticas geridas e fomentadas pelo NIST, SANS Security e ISC^2.
- Mltiplos domnios de segurana: IDS/IPS, Firewall, Proxy. O Proxy de entrada
consegue garantir segurana dentro de um contexto, de forma que o processo de negocio
ocorra a contento, onde possvel exigir processos de negcios (logon, separacao de
politicas), utilizado muito tambm em WebService, HAProxy (Proxy Reverso) e Varnished
(Cache de Entrada), o mod_proxy do Apache.
- Firewall por roteamento nulo, onde gera-se uma rota que encaminha para endereo
nulo, descartando pacotes. Utiliza-se next-hope para uma blackhole, por exemplo:
# ifconfig disc0 create
# route add -host 200.200.200.200 -iface disc0
# set nexthop blackhole (OpenBGP)
Firewall Por Filtragem de Pacotes
Todo dispositivo que pode ser utilizado entre dois ou mais seguimentos de redes
gerenciando os pacotes:
TCB - Trusted Code Base, Appliance com Firewall. TCB TCSEC/A2 X400 BAE Systems
(NAI) so funciona em Appliance.
O Nokia FW IPSO, baseado no FreeBSD.
Firewall Livres:
IPFIREWALL, IPFILTER, PACKETFILTER, NetFilter, IPchains.
PFSense - Recomendavel.
#################### IPFirewall ######################
IPFirewall / IPFW
- Histrico
o mais integrado sistema de Firewall do FreeBSD, que consegue inclusive, fazer firewall
para sistemas de arquivos, onde permite-se ou nega que determinado ID do usurio
acesse a determinado diretrio.
Topologias:
- Deve-se projetar o Firewall cautelosamente, avaliando-se os pr-requisitos, melhores
praticas, etc.
Screengin Router
Um roteador com ACL, que classificado como um Firewall.
Dual Homed
Ligao nica e fsica interligando dois permetros (Bastion Host). Avalie o trafego entre
dois permetros.
dns_slave="201.48.151.206"
# WEB
#
# REGRAS INCREMENTADAS A PARTIR DO SCRIPT PADRAO EM
/etc/rc.firewall
# LIMPANDO AS REGRAS
$fw -f flush
# TCP FLAGS #$fw add deny
#$fw add deny
#$fw add deny
#$fw add deny
# STATEFULL DINAMICO
$fw add check-state
# ANTISPOOF
$fw add deny all from any to any not antispoof
# TIMESTAMP
$fw add deny all from any to any ipoptions ts
# REMONTA PACOTES FRAGMENTADOS DEMAIS (FRAGMENTOS FORCADOS POR
WINDOW SIZE)
$fw add reass all from any to any in
# FIREWALL STATEFULL -VEM ANTES DAS REGRAS DE FATO
$fw add allow { tcp or udp or sctp } from any to any established
# LIBERA O FIREWALL PARA O MUNDO - NAO NECESSARIO PELO FATO DE
ESTAR UTILIZANDO CHECK-STATE - STATEFULL DINAMICO
#$fw add allow all from me to any out { xmit $ife or xmit wlan0 }
# REGRAS PARA LOOPBACK
$fw add pass all from any to any via lo0
$fw add deny all from any to 127.0.0.0/8
$fw add deny ip from 127.0.0.0/8 to any
# PERMITE ICMP
# O PROTCOLO ICMP, PELO CABECALHO SAO PROCESSADOS SOMENTE 20
BYTES. O TOTAL DE PAYLOAD NAO
# PODEM PASSAR DO MINIMO DE 20 BYTES (CABECALHO) E NO MAXIMO 128
BYTES (MICROSOFT WINDOWS) + 20 BYTES
# DO CABECALHO
$fw add pass icmp from any to any icmptypes 0,3,8,11,12 iplen 20148
# DNS E PERMICAO PARA TRASNFERENCIA DE ZONA
$fw add allow udp from any to any 53 { via $ife or via wlan0 }
keep-state
$fw add allow udp from any 53 to any { via $ife or via wlan0 }
keep-state
$fw add allow tcp from $dns_slave to me 53 in recv $ife keep-state
tcpflags syn,!ack
$fw add allow tcp from any to any 53 { via $ife or via wlan0 }
iplen 120-1500 keep-state tcpflags syn,!ack
### COM A DIRETIVA KEEP-STATE TCPFLAGS SYN,!ACK VERIFICADO TODO O
HANDSHAKE ANTES DE GERAR STATE
$fw add allow tcp from any to me 443 in recv $ife keep-state
tcpflags syn,!ack
$fw add reset log logamount 1000 tcp from any to me 80 in keepstate
#### QUESTOES DE PERFORMANCE NA AVALIACAO DE REGRAS ####
######################## RADIX TREE TABLE #######################
# $fw table 1 add 201.48.151.201
# $fw table 1 add 201.48.151.202
# $fw table 1 add 201.48.151.203
# $fw table 1 add 201.48.151.204
# $fw table 1 add 201.48.151.205
# $fw table 1 add 201.48.151.206
#
#
#
#
ipfw
ipfw
ipfw
ipfw
table
table
table
table
all list
1 list
1 flush
all flush
# POLITICA: FECHADA
#
$fw add 65534 deny all from any to any
################FIM DO ARQUIVO #############################
SETUP LIMIT
setup limit src-addr 2 dst-addr 10 - Aceita somente 02 conexes de uma
origem e permite no mximo 10 conexes, permitindo no mximo 5 clientes.
ipfw add prob 0.5 deny icmp from any to any icmptypes 8 - neste caso,
provavelmente, em 10 pings, 5 pings sero aceitos.
# ipfw add fwd 201.48.151.203 all from me to any out - policy based
routing, em que 'e escolhido um outro
# ipfw add fwd <ip-proxy>,80 tcp from any to not me 80 in - Proxy
Transparente.
Balanceamento por sesso
# ipfw add prob 0.5 fwd <gateway> all from me to any out setup
keep-state
# ipfw add fwd <outrogateway> all from me to any out setup keepstate
# ifpw table 2 list
# ipfw table 2 add 201.48.151.201 201.48.181.193
#
#
#
#
ipfw
ipfw
ipfw
ipfw
table
table
table
add 1
Gateway
Flags
Refs
Use
201.48.151.193
UGS
25
4734
link#4
UH
1643
link#1
1625
link#1
UHS
3287
Internet6:
Destination
Flags
Netif Expire
::1
lo0
fe80::%lo0/64
lo0
fe80::1%lo0
UHS
lo0
ff01:4::/32
lo0
ff02::%lo0/32
lo0
edgar# setfib -1 netstat -rn
Routing tables
Internet:
Destination
Netif Expire
127.0.0.1
lo0
201.48.151.192/27
sis0
Gateway
::1
UH
link#4
link#4
fe80::1%lo0
fe80::1%lo0
Gateway
Flags
Refs
Use
link#4
UH
link#1
Internet6:
Destination
Flags
Netif Expire
::1
lo0
fe80::%lo0/64
lo0
fe80::1%lo0
UHS
lo0
ff01:4::/32
lo0
ff02::%lo0/32
lo0
Gateway
::1
UH
link#4
link#4
fe80::1%lo0
fe80::1%lo0
*:8668
*:*
# sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 1 -> 1
# echo 'gateway_enable="YES"' >> /etc/rc.conf
LSNAT RFC2931 - Permite balancear sesses de entrada para rede falsa via NAT.
Para outros Links (EMBRATEL, CTBC, GVTA)
######## ARQUIVO NATD.CONF COM DUAS INSTANCIAS #############
# PLACA DE REDE EXTERNA (Internet)
interface sis0
dynamic yes
# same_ports no - NAT Assimetrico
# same_ports yes - NAT Simetrico (recomendvel)
same_ports yes
use_sockets yes
# FAZ NAT SOMENTE PARA RFC1918
unregistered_only yes
################## PUBLICANDO SERVIDORES ############################
#
# PODE-SE CRIAR VARIAS INTERFACES VIRTUAIS, FAZENDO COM QUE CADA
#SERVIDOR
# DA LAN RESPONDA PELO IP VIRTUAL CORRESPONDENTE
#
# redirect_port <proto> <ip_interno>:<porta> [ip_externo]:<porta>
redirect_port tcp 192.168.0.206:443 201.48.151.207:443
# NAT 1:1
# redirect_address <ip_interno> <ip_externo>
redirect_address 192.168.0.207 201.48.151.207
#
# NAT EMBRATEL
#
instance embratel
dynamic yes
interface wlan0
use_sockets yes
same_ports yes
unregistered_only yes
port 8669
################# ENFILEIRAMENTO DE PACOTES - QoS ################
KAME (www.kame.net) - Projeto de tecnologias focadas em Internet, sempre licenciadas
BSD, foram criadas tecnologias como IPSEC, IPv6, SCTP. etc. Um dos projetos o ALTQ
(Alternative Queueing). Jun Ichiro Itojun Hagino, que foi commiter do Projet FreeBSD,
OpenBSD, NetBSD, Desenvolvedor Linux, Desenvolvedor SUN, Cisco, faleceu aos 33
anos.
Quando o ALTQ foi criado, foram gerados as disciplinas:
- PRIQ
- HFSC
- CBQ (LINUX)
- ECN (Parte do IPv6)
- RED e GRED
- WFQ
O PF Implementa todas as disciplinas, exceto WFQ. Luigi Rizzo, na dissertao de
Mestrado, Na Universitat dI Piazza, Roma, criou o DUMMYNET,
que trabalha na classificao e separao de trafego IP, utilizando-se de Pipes, a Cisco
utilizou o WF2Q, a Junniper criou o WF2Q+, que 'e utilizado pelo DUMMYNET.
Para ter suporte a DUMMYNET, basta adicionar no Kernel. Trs duas novas acoes no
IPFW (pipe, queue) e dois comandos (config pipe e configue queue).
pipe <1 - 65535> - O numero do PIPE no reflete na ordem de processamento, execuo
das regras.
Q1W5 Q2W10
QW315
5
10
25
---- ---- ---40
40
40
-------------------1024
Q1W5 Q2W10
QW315
1
1
1
---- ---- ---6
3
2
-------------------1024
MMC:
Q1W5 - 1/6 / 1024 = 170Kb
Q2W10 - 1/3 / 1024 = 341Kb
Q3W15 - 1/2 / 1024 = 512Kb
#### Arquivo de rc.ipfw Completo ####
#!/bin/sh
fw="/sbin/ipfw"
# INTERFACE EXTERNA
ife="sis0"
# SERVIDORES
# DNS
dns_slave="201.48.151.206"
# DESABILITA RECURSO QUE IMPOSSIBILITA QUE CONTROLE DE BANDA
# GERADO PELO
#DUMMYNET NAO FACAM BYPASS PELO FIREWALL. TODO O PROCESSO PASSARA
# PELA
#VALIDACAO DO FIREWALL VARIAS VEZES
$fw disable one_pass
#
REGRAS
INCREMENTADAS
/etc/rc.firewall
# LIMPANDO AS REGRAS
$fw -f flush
# TCP FLAGS #$fw add deny
#$fw add deny
#$fw add deny
BLOQUEAR
tcp from
tcp from
tcp from
PARTIR
DO
SCRIPT
PACOTES INVALIDOS
any to any tcpflags syn,fin
any to any tcpflags fin,!ack
any to any frag
PADRAO
EM
#REDE INTERNA
$fw
$fw
$fw
$fw
$fw add queue 31 all from any to 192.168.0.209 out via wlan0
$fw queue 30 config weight 10 pipe 20
$fw queue 31 config weight 15 pipe 21
$fw pipe 20 config bw 1Mb queue 10
$fw pipe 21 config bw 1Mb queue 10
####################################################################
#
# QoS => 50% = http + https ; 25% = SMTP, POP3, IMAP ; 25% = RESTO
# TOTAL DA BANDA = 5Mbps
# JUSTA (WF2Q+)
#
$fw
$fw
$fw
$fw
$fw
$fw
$fw
$fw
$fw add queue 10 all from any not to any 80,443,25,110,143 in via
wlan0
$fw add queue 11 all from any not 80,443,110,25,143 to any out via
wlan0
$fw queue 10 config weight 25% pipe 20
$fw queue 11 config weight 25% pipe 21
$fw pipe 20 config bw 5Mb queue 10
$fw pipe 21 config bw 5Mb queue 10
#######################################################################
######## IPFW CAMADA 2 LLC/MAC
############
00:0c:6e:33:08:63/24 any
########### AQUI COLOCARIA-SE O PROXY TRANSPARENTE #################
#$fw add fwd 201.48.151.200,80 tcp from any to not me 80 in
########################################################################
###
########################## NAT #############################
### PRIMEIRA INSTANCIA
$fw add divert 8668 all from 192.168.0.0/24 to any out via $ife
$fw add divert 8668 all from any to me in recv $ife
$fw add allow tcp from 192.168.0.0/24 to any in via wlan0 setup
keep-state
$fw add allow udp from 192.168.0.0/24 to any in via wlan0 keepstate
### SEGUNDA INSTANCIA - EMBRATEL
$fw add divert 8669 all from 192.168.0.0/24 to any out via $ife
$fw add divert 8669 all from any to me in recv $ife
$fw add allow tcp from 192.168.0.0/24 to any in via wlan0 setup
keep-state
$fw add allow udp from 192.168.0.0/24 to any in via wlan0 keepstate
### PERMITE PUBLICACAO
$fw add allow tcp from any to 192.168.0.207 80 out via wlan0
##################################################################
#########
### TEMPORARIO
# $fw add allow all from any to any
# PERMITE ICMP
# O PROTCOLO ICMP, PELO CABECALHO SAO PROCESSADOS SOMENTE 20
#BYTES. O TOTAL DE PAYLOAD NAO
# PODEM PASSAR DO MINIMO DE 20 BYTES (CABECALHO) E NO MAXIMO 128
#BYTES (MICROSOFT WINDOWS) + 20 BYTES
# DO CABECALHO
$fw add pass icmp from any to any icmptypes 0,3,8,11,12 iplen 20148
# DNS E PERMICAO PARA TRASNFERENCIA DE ZONA
$fw add allow udp from any to any 53 { via $ife or via wlan0 }
keep-state
$fw add allow udp from any 53 to any { via $ife or via wlan0 }
keep-state
$fw add allow tcp from $dns_slave to me 53 in recv $ife keep-state
tcpflags syn,!ack
$fw add allow tcp from any to any 53 { via $ife or via wlan0 }
iplen 120-1500 keep-state tcpflags syn,!ack
ipfw
ipfw
ipfw
ipfw
table
table
table
table
all list
1 list
1 flush
all flush
############################EXEMPLOS ############################
# PERMITE SSH
# FIREWALL ATOMICO { IP or IP } / { recv INTERFACE or INTERFACE }
# $fw add pass tcp from { 201.48.151.206 or 201.48.151.205 } to me
dst-port 22 in recv $ife
#
# OUTRA FORMA OTIMIZADA - LENDO OS 24 BITS DA REDE MAIS 8 BITS
#PARA O ULTIMO OCTETO
# $fw add pass tcp from 201.48.151.190/24{201,202} to me dst-port
22 in recv $ife
#
# LENDO RANGES DE IP
# $fw add pass tcp from 201.48.151.190/24{201,202,205-240} to me
dst-port 22 in recv $ife
#
#$fw add pass tcp from 201.48.151.206,201 to me dst-port 22 in
recv $ife
#$fw add deny tcp from any to me dst-port 22 in
#
# PERMITE APACHE NA LAN E WEB HTTPS
#$fw add pass tcp from 201.48.151.192/27 to me dst-port 80 in recv
$ife
#$fw add deny log logamount 1000 tcp from any to me
#
# OUTRA ABORDAGEM: NEGAR A QUEM NAO EH DE DIREITO
# $fw add pass tcp from not 201.48.151.190/24{201,202,205-240} to
me dst-port 22 in recv $ife
#
#
# DNS (TODOS PODEM CONSULTAR, MAS SOMENTE SLAVES (TCP) PODEM
TRANSFERI ZONAS
#
#################################################################
#
# POLITICA: FECHADA
#
$fw add 65534 deny all from any to any