treinamento ssa 2010

87
Notas da FreeBSD Brasil: Atenção: essas anotações foram criadas por Edgar Paes ( [email protected] ) na turma de 2010 do SSA. Por favor não compartilhem sem anuência explícita do Edgar, a quem agradecemos por liberar suas anotações pessoais, complemento bem relevante pras turmas :-) Treinamento SSA História A DEC, em 1965 criou uma linhagem de mainframe conhecido como PDP, que era a base de chips de silício. 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 preempção, verifica-se a prioridade. Todo esse processo é conhecido como Multiplexação, o qual derivou o MULTICS, que demandou um consórcio 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. Porém, havia conflitos de interesses, onde técnicos da AT&T possuíam um determinado interesse, e os da IBM possuíam outros, de forma que o projeto de um sistema operacional multitarefa não estava sendo possível. Brian Kernnighan, criador do PMI, assumiu a liderança 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 1- 65535 (PID), um outro programa mapeava a geometria da memória e sua respectiva alocação de páginas, também um outro programa que separa as páginas de memória em duas primitivas (atualmente são 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 variáveis alocadas pelo PID. Um outro programa separava a DSS (para gravar o highscore do jogo). Um outro programa era utilizado para gravação em Fita Magnética, 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 execução junto com o highscore, que originou posteriormente as bibliotecas compartilhadas. Houve modificações 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

Upload: rootbsd

Post on 17-Nov-2015

63 views

Category:

Documents


5 download

DESCRIPTION

Treinamento FreeBSD SSA

TRANSCRIPT

  • Notas da FreeBSD Brasil:

    Ateno: essas anotaes foram criadas por Edgar Paes ([email protected]) 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 1-65535 (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

    mailto:[email protected]

  • std input SIO

    Com todo esse processo houve os conceitos: Monoltico/Monobloco (que gerencia todo um conjunto de processos bsicos,

    como memria, disco), no caso o Kernel. O Multics era Multi Kernel, ou Micro kernel, onde as aplicaes executam em regies de memria diferentes. O MAC OS X Kernel Monoltico (projeto Darwin), onde h diversos microkernels (para drivers) que no comunicam entre s, somente com o kernel monoltico. Outro sistema operacional de microkernel o GNX Os outros sistemas so monolticos e carregam (registram) mdulos, mas no so microkernels.

    - O PDP-11 de Berkeley, alm de estar na Internet (ns2.berkeley.edu, que o DNS Secundrio) tem um update de 26 anos.- Com a linguagem C, foi possvel a Portabilidade. Ken Thompson foi aluno de Bob Fabry durante o Doutorado e Ps-doutorado.- Inicialmente o PDP-11/45, possua system crash quando utilizado em duas controladoras, este bug foi identificado por Keith Standiford. Ken Thompson depurou o problema via Modem.

    Unix (evoluo) Atravs das mudanas principais e relevantes de Bill Joy e Chuck Haley gerou o Unix 6 V Changes, o qual era a evoluo iniciada em Berkeley e concluida aps a concluso de ken Thompson. Posteriormente houve 30 melhorias no sistema que o diferenciavam muito do Unix da AT&T. Em 1977: BSD Unix Berkeley Software Distrubtion of Unix Operating System.

    - A VAX 11/780 possua arquitetura de 32 Bits, Possui muito mais discos, permitindo at mesmo SCSI (primeira da histria).

    Memria Virtual Desenvolvida por Marshall Kirk Mckusick. O 3BSD foi o primeiro sistema a utilizar o subsistema de mquina virtual.

    Em funo de questes de patente, recursos financeiros, entre outros, o DARPA contatou Boby Fabry para utilizao do BSD de Berkeley, onde em 5 meses, 100% dos computadores da ARPANET utilizava o 3BSD.

    O HTTP foi criado na universidade de UCLA. O BSD adotou o Job Control, que o escalonamento: crontab (periodicidade), at

    (executa em data especifica), envio de sinais em background (ctrl + z), comando (# j exibe jobs) exemplos: # sleep 10&& ls / # sleep 10; ls.

    A Calculadora HP utiliza a linguagem LISP. Mackusick criou os conceitos de inodes, formatao, partio, quota por bytes, etc.,

    junto com o UFS e posteriormente o FFS (Fast File System). O NTFS utiliza Journaling.

    O TCP/IP foi desenvolvida por Bob Kahl e Vincent Cerf (Universidade de Purdue Vice Presidente do Google).

    - O Brasil segue a Lei escrita, conhecida como positivista.

    Licena GPL: Baseada principalmente nos seguintes quesitos: Liberdade para Ler, Acesso, Modificao, Estudo, Redistribuio no item 1. No item 2, nada em qualquer hiptese pode impedir as liberdades asseguradas no item 1. No item 3, Qualquer produto derivado dessa licena, torna-se automaticamente GPL, etc. So 08 termos com 29 requisitos. A verso do Kernel 0.3 foi a primeira verso sob GPLv2.

  • 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

    BAE Systems De propriedade da NAI Labs, que o X400 (Classificao A2 (Mxima)).

    Windows Server, Linux (Debian, Slackware, etc.) C3Red Hat e Suse B1FreeBSD, Mac OS Server Leopard B2

    FreeBSD 7

    phkmalloc(4) jemalloc(4) Utilizado tambm no Firefox 3, Solaris e Oracle. um alocador de memria otimizado.

    Kernel 2.6.23 O Linux adotou o escalonador (schedule) CFS em vez de OCS, CFS possui mais performance para Desktop, porm, para ambiente de Servidores OCS muito melhor em funo de IO Bound e CPU Bound.

    FreeBSD 8

    Memory Superpages (McKusick) Quando aloca-se memria, o kernel aloca um nmero de pginas de memria, o tamanho de pgina de 4k. Quando necessrio alocar 80k, aloca-se 20 pginas, 79k 20 pginas, 1k uma pgina, etc. Ou seja, em dado momento h um desperdcio de pginas de memria, com o Memory Superpages, o tamanho d pgina varivel em funo da necessidade do PID, porm, a pgina de memria nunca ser menor que 4K.

    Http://www.netcraft.com

    INSTALAO

    http://www.freebsd.org/releases/errata Neste site encontra-se anomalias geralmente em decorrncia de hardware. Geralmente no possui erratas, mas deve-se olhar.

    http://www.freebsd.org/releases/hardwarenotes Deve colocar no checklist antes de colocar no oramento de aquisio de hardware, principalmente quanto ao Chipset.

    http://www.freebsd.org/releases/releasenotes Site que esclarecem as novas

    http://www.netcraft.com/http://www.freebsd.org/releases/releasenoteshttp://www.freebsd.org/releases/hardwarenoteshttp://www.freebsd.org/releases/errata

  • 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))

  • Menu de Opes de Instalao Menu Beast

    Opo 1: Boot FreeBSD [default] Entra por defaultOpo 2: Boot FreeBSD witch ACPI disabled Desabilita a interface de controle de energia, que foi criada pela Microsoft e Intel para eliminar limitaes do hardware (nmero de interrupes, no pode usar o mesmo ID de Interrupo). No uma boa ideia utilizar ACPI, pois esta no passa de uma gambiarra. Esta opo trabalha com perspectiva inversa, de forma que a ACPI DEVE estar ligada na BIOS, pois se estiver desligada, essa opo liga a ACPI.

    Opo 6: Escape to loader prompt Utilizado para comandos que no esto por padro habilitados no menu.

    # show Exibe diversas diretivas que tratam de como resolver problemas de incompatibilidade de hardware.

    # boot (Boot Normal); boot -s (Boot Single Mode),

    Inicializao probe Momento de reconhecimento de drivers.

    Com a tecla Scroll Lock, ativado o probe buffer, quer permite re-visualizar as mensagens do probe.

    Entrando no Loader Prompt (Opo 6)

    As variveis de loader so divididas em trs categorias principais:

    Variveis de Comportamento de Loader

    Controlam o boot logo, boot delay time, arquivos a carregar carregamento de mdulos

    Variaveis de Tunning (Load Time Tunable)H duas perspectivas de sysctl, que utiliza se de variveis MIBs, que um banco de dados hierrquico, onde uma executada em ambiente de produo, o kern.maxfiles, que trada dos Files Descriptors. Esta uma MIB sysctl de Runtime, e no de Load Time (No momento de loader do Kernel, que aps a alterao torna-se Read Only).

    hw. Modifica o modo, uma varivel qualitativa, faz modificao de comportamento de recursos.

    kern. Permite tunning de performance atravs do dimensionamento de recursos de alocao para cada recurso de kernel, ou seja, valores quantitativos.

    # set (para definir) unset (para destruir)# set kern.hz=200# set kern.ipc.sndbuff=8192 (8k)

    kern.pic Reservado para comunicao de syscalls, que so recursos de alocao do prprio kernel.

    # man loader.conf

  • Variveis hint (Dica)

    Trata de como o Kernel deve controlar determinado hardware (por exemplo, habilita tal recurso, aloca interrupo em tal recurso, etc.)

    hint...= - Device control (ad, da, ata, sio, etc) - unidade do device (0, 1, 2) at (barramento onde device est isa, pci, usb), port (endereo de memoria de inicio de requisies), portsize (numero de portas usadas pelo device) device_reserved = (portsize*port), maddr (endereo inicial de memoria usada pelo device) msize (tamanho do espao em memria usado), flags (define bits adicionais ao device), disable ( se definido como 1, indica para no alocar recursos)

    Em caso de problemas, sempre utilizar o boot verbose.Processo de Boot [Default]

    Pressionando as teclas Alt+F2 exibido uma tela de debug, que tambm pode ser utilizado para verificar o teclado correto digitando-se as letras.

    A opo Fixit permite entrar em modo de reparo, principalmente no DVD, que possui um live CD.

    Opo Custom

    Menu Options

    NFS Secure [NO] NFS Server que trabalha apenas em portas baixas. Em sistemas Linux roda somente em portas altas, em solaris somente em porta baixa. Isto para instalao via NFS.

    NFS Slow [NO] NFS Server para conexes lentas. Tambm Utilizado para instalao via NFS.

    NFS TCP [NO] Utilizado para forar TCP, pois por padro UDP.NFS Version 3 [YES] Utiliza a verso 3.Debuggin [YES] Exibe detalhes de instalao.No Warings [NO] No ser exibido alertas.Yes To All [NO] Define Yes para todas as perguntas do sistema.Package Temp /var/tmp Arquivos temporriosFixed Console [standart/serial] Em qual mecanismo ser visualizada

    a instalao, em caso de serial, ser impossvel instalar o FreeBSD, geralmente utilizado para debbugin de Roteadores.

    Re-Scan Device Hardwares no detectados, utiliza o rescan device.

    Newfs Args -b 16384 -f 2048-b block size, que o tamanho lgico do inode que alocado.-f Fragment Size, quando um arquivo form menor que o block size, em

    quanto Fragment Size ser gravado.

    Utiliza a regra 8/1. Em caso de SPARC, PowerPC e Alpha no necessrio utilizar a regra 8/1, ou seja, 8 * 2048 = 16384. Em discos SSD tambm no necessrio seguir a

  • 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

    / = 512MSwap = 2 * Phisycal Memory + 10%(Phisycal Memory)/var = 35%/tmp = 512M/usr = 65%

    Padro FreeBSD Brasil

    / 512M (i386) ou 1024M (ia64)Swap = MF * 2 + 10% (Acima de 16GB, Swap = RAM)/tmp = 1GB/var = 5GB/usr = 06GB a 08GB

    Se necessrio, criar as parties:/var/db Banco de Dados/var/log Para Log Server/var/dados Samba/usr/local Para muitas aplicaes

    ATENO: No Slice que contm o diretrio /, deve-se utilizar a tecla s (Set Bootable), e depois a tecla w (write).

    Com a opo z, pode-se customizar o blocksize e o fragmentset (obedencendo a regra 8/1). Para parties do Squid (/usr/local/squid/cache) usar: -b 8192 -f 1024.

    No caso de servidores dedicados a banco de dados eleva-se o blocksize para -b 32768 -f 4096.

    Samba 128K -b (128 * 1024) -f (128 * 1024) / 8

    var Variable Content data, onde o contedo do diretrio variam e so temporriosusr Unix Resource Recursos . O POSIX recomenda que o diretrio de usurios estejam sob /usr, ou seja, /usr/home/diretorio_do_usuario.

    * Sempre deve-se reservar pelo menos 10% do Slice.

  • 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 DebugAlt+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, deve-se 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) ata0Master: ad0Slave: ad1 (Slave sempre tem ID mpar)

    (PATA) ata1Master: ad2Slave: ad3

    (SATA) ata3Master: 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/boot0Esses 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 rc.conf | grep em0# man 7 hier Toda a estrutura hierrquica do FreeBSD documentada.# man 9 style# man sis Manual explicativo da Placa de Rede SiS 900.# man lint# man ident

    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

    Configurando IP

    # ifconfig # ifconfig

    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

    Detectando erros de transmisso

    # netstat -i

    As colunas mais importantes so: 0errs e Coll (Coliso). Ipkts (Input Packets), Ierrs (Erros de entrada), Idrop (Pacotes de entrada dropados), Opkts (Erros de Sada).

    O FreeBSD trabalha exclusivamente com IRQ dedicados, no possvel utilizar IRQ compartilhado.Modificando IRQ

  • Identificado IRQ compartilhada.

    # dmesg | grep irq

    Com a sada, deve-se verificar todas as IRQ que so idnticos aos da placa de rede. Para modifica-los h opes como: Modificar na BIOS, utilizar as variveis de hint)

    # ifconfig sis0 polling# ifconfig sis0 -polling (remove o polling)

    Em caso de erros de compartilhamento de IRQ, no dmesg exibido sis0: Watchdog timeout, tambm no /var/log/messages. Em casos raros, pode ser tambm um problema na placa.

    Trabalhando com Alias

    # ifconfig sis0 alias# ifconfig sis0 192.168.10.10/24 alias# ifconfig sis0 192.168.10.10/24 -alias (removendo o alias)

    O ARQUIVO RC.CONF

    # cat /etc/defaults/rc.conf | grep ifconfig

    ###### RC.CONF ####

    # Arquivo de configuracao do arquivo rc.conf# Criado em 21/09/2009 por Jean Melo # Alterado por: Danton Dorati

    # HABILITA REDE moused_enable=YES

    # CONFIGURACOES DE REDEifconfig_sis0=inet 201.48.151.207/27

    # CONFIGURANDO O ALIASifconfig_sis0_alias0=inet 192.168.10.207/24 # O primeiro alias sempre deve comear com 0.ifconfig_sis0_alias1=inet 192.168.10.10/24

    ##### FIM DO ARQUIVO ####

    # cd /etc/rc.d# ls | wc -l# sh /etc/rc.d/netif restart

    mailto:[email protected]:[email protected]

  • Adicionando Rotas

    # route add -net 192.168.10.0/24 172.16.10.1# route add -host 192.168.10.10 172.16.10.1# route delete -net 192.168.10.0/24 172.16.10.1# route add -net 192.168.10.0/24 172.16.10.1 -iface sis0# route add -host 192.168.10.10 -iface sis0

    -h Para chegar a um host.-net Para chegar a toda uma rede.

    Rota Default

    # route add default # route delete default# netstat -rn

    FreeBSD como Router

    No /etc/rc.conf,gateway_enable=YESdefaultrouter=201.48.151.207/27

    Configurao de rotas estticas no rc.conf

    ########### RC.CONF ########static_routes=rota1 rota2 jean filialroute_rota1=-host 172.16.0.1 192.168.10.route_rota2=-net 10.0.0.0/24 172.16.0.1(gateway quem me leva a rede)route_jean=route_filial=#############################

    # route flush Apaga todas as rotas

    sh /etc/rc.d/routing restart

    ou

    # sysctl -a# sysctl net.inet.ip.forwarding=1

    # tcpdump -i sis0 icmp# tcpdump -i sis0 host 172.16.0.1

    Quando h problemas com roteamento, onde no h rota de volta, o icmp exibe somente requisies de echo request (exibido pelo host pingando no host de destino), aps as configuraes corretas, verifica-se atravs do tcpdump -i sis0 host 172.16.0.1, verifica-se icmp echo request e icmp echo reply.

    # netstat -an Exibe servios que esto ativos (rodando);# sockstat -4l Exibe servios em IPv4. A coluna Foringn Address indica quais

  • redes, Ips, que este servio aceita conexes.

    # ee /etc/resolv.confnameserver 201.48.151.193nameserver 201.48.151.194

    # ee /etc/hosts201.48.151.207 edgar.ssa.com.br edgar

    FSCK Verificando a integridade dos discos

    # cat /etc/defaults/rc.conf | grep fsck

    CONTORNANDO PROBLEMAS:

    A diretiva moused_enable est faltando aspas, o que gerar um erro.

    moused_enable=YES

    Problema:/etc/rc.conf: 11: Syntax errorResoluo:# mount -a# ee /etc/rc.confmoused_enable=YES# returnOu,Resoluo:# mount /usr# mount -u -o rw / Montando a partio como escrita# ee /etc/rc.conf# return

  • Problema com o FSTAB

    Problema:Problemas ocorridos com o /etc/fstab, que geralmente sintaxe errada quando inserida manualmente, ou qualquer outro problema que o arquivo este corrompido. O erro exibido abaixo:

    : Mount using filesystem eg. Ufs:/dev/da0s1a

    ufs:/dev/ad0s1a (Atente-se ao Slice que foi utilizado para o /)

    1) Deve-se entrar no Single Mode (Opo 4)2) ufs:/dev/ad0s1a3) Montar o barra como escrita: # mount -u -o rw /dev/ad0s1a /4) Reparar o /etc/fstab

    Em caso de solicitar que utilize o FSCK:

    # fsck -t ufs /dev/ad0s1a (Aps utilizar o ufs:/dev/ad0s1a)# mount -u -o rw /dev/ad0s1a /# mv /etc/fstab.bkp /etc/fstab

    Outra opo, no Menu Beastie: [opo 6]

    OK> set vfs.root.mountfrom=/dev/ad0s1aOK> set vfs.root.mountfrom.options=rwOK> boot

    PERIODIC /etc/periodic

    Os scripts do /etc/periodic executados diariamente esto localizados em /etc/periodic/daily. Para habilita-los, primeiramente, consultar /etc/defaults/periodic.conf. Quando configurado para fazer backups com a opo 200.backup-passwd, os arquivos so armazenados em /var/backups.

    # touch /etc/periodic.conf

    Editar o arquivo acima com as diretivas desejadas em /etc/defaults/periodic.conf.

    # cd /etc/periodic/daily# ee 200.passwd-backup Verificar as variveis que contm os paths para backup, ou outra finalidade.# sh 200.passwd-backup Base de Usurios do FreeBSD

    /etc/master.passwd Contm os usurios do sistema e bem como o hash de senha criptografada do usurio./etc/passwd Base dedados dos usurios. Os usurios que contm :*: so usurios criados pelo sistema. Toda o ndice (base indexada) de base de dados do usurio est localizado em /etc/pwd.db e /etc/spwd.db.

  • Reconstruindo a Base de dados

    Antes, aps habilitar o periodic, para fazer backup de master.passwd, copiar:

    # cp /etc/bakcups/master.passwd.bak /etc/master.passwd# cd /etc# pwd_mkdb -d /etc/ master.pwd

    Caso no esteja com backup:

    # cd /usr/src/etc# cp /usr/src/etc/master.passwd /etc/master.passwd# pwd_mkdb -d /etc/ master.pwd

    Quando perder a senha de root, entrar em single user mode e reconfigurar a senha de root.

    # chfn edgarpaes Para manipulao de usrios# vipw Para editar o arquivo /etc/master.passwd# pw user add edgarpaes -s /bin/csh -d /usr/home/ -G whell -m (cria o home do usurio)# passwd edgarpaes# rmuser -ry [Remove todos os dados do usurio, home, e-mails, etc.]# pw userdel

    LOGS

    /var/log/auth.log Informaes sobre tentativas de autenticao./var/log/cron Informaes sobre as entradas executadas pelo crontab./var/log/debug.log Informaes sobre debug relevantes do sistema./var/log/lastlog Registro das ltimas informaes sobre logons no sistemas. O comando # last trs informaes deste arquivo. /var/log/lpd-errs Registro de informaes sobre erros de impresso/var/log/maillog Registro de e-mails/var/log/messages Registra informaes gerais do sistema./var/log/ppp.log Registra informaes de conexo discada./var/log/security Registra informaes de logs do Firewall./var/log/userlog Registra criao de usurios, remoo, etc./var/log/wtmp Gera informaes de quem est logado no sistema atualmente./var/log/xferlog Log do X.

    No /etc/syslog.conf, possvel redirecionar os logs para um SysLog Server, dessa forma, basta editar: (Escuta na porta: 514 UDP)

    *.* @201.48.151.193

    No /etc/rc.conf:

    syslogd_enable=YESsyslogd_flags=-a 201.48.151.193PERMISSO

  • # chmod u=rwx,g=rx,o=r arquivo.txt # chmod u=rwx,g=,o= arquivo.txt [rwx------]

    4 - r2 - w1 - x

    # chmod 0660 teste.txt# chown arquivo.txt# chown arquivo.txt Altera somente o grupo, omitindo o primeiro parmetro.# chgrp jean arquivo.txt

    Criando um diretrio oculto. Para acess-lo necessrio digitar da mesma forma como foi criado.

    # mkdir .. # cd .. # rm -rf ..

    Link Simbolico

    # ln -s /usr/home/edgar /edgar# rm /edgar Ateno: No pode conter / no final, por exemplo, /edgar/ StickBit

    # ls -l /usr/bin/passwd [-r-sr-xr-x]

    -setuid: 4 # chmod 4755 /usr/file.sh (Com isso, ser executado com privilgio de root).-setgid:2-stick bit: 1

    ls -l /

    [drwxrwxrwxt] /tmp t representa o StickBit, somente o dono do diretrio ou arquivo criado possa remov-lo.

    # chmod 7551 Configura StickBit

    # cp -v Copia com verbose.

  • Monitorando TTY, observando conexes SSH, escrevendo na sesso, e destruindo

    # w Nesse momento, observa-se o tty que o mesmo est utilizando e utiliza-se o watch.# watch Enter device: pts/1

    # watch -WDevice name: pts/1# Estou vendo Ok!!Para sair: ^gPara limpar a tela: ^w

    Para destruir a sesso do indivduo, basta utilizar o comando kill.# w# kill -PID_do_individuo

    # head -10 /var/log/messages Primeiras 10 linhas de mensagens do arquivo. # tail -F /var/log/messages Mesmo em caso de rotacionamento continuar sendo exibido as mensages.

    Monitorando Processos

    Process Status - PS

    # ps ax Exibe todos processos em execuo.# ps aux Exibe todos os processos em execuo e qual o usurio e informaes de CPU, Memria, etc.

    Colunas:VSZ Quanto est alocado de memria para o processo.RSS Quanto o processo est utilizando do que lhe foi alocado em VSZ.

    TOP

    Colunas:

    load averages Carga de CPU [0.00 (5 minutos), 0.00 (10 minutos), 0.00 (15 minutos)]. Uma carga alta caracterizada quando um dos valores chegarem a 1 (100%) quando houver somente 1 processador, 2 quando houver dois processadores. Somente no FreeBSD 8.0.

    Quanto ao Swap, o algoritmo de gerenciamento de Swap, baseado em Schedule, faz sempre uso de Swap, pois o mesmo identifica os processos que esto parados e joga-os no Swap, privilegiando os processos que requerem prioridades.

    A coluna C do comando TOP, indica qual CPU o processo est utilizando.

    # top -m io# top -o res Quanto est ocupando memria# top -o s

  • # 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 FreeBSDhttp://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.

    Arquivos de inicializao do Shell

    O arquivo .cshrc do home do usurio que contm as configuraes da shell.

    # fetch http://201.48.151.193/cshrc2# source .cshrc Utilizado em vez de logout.

    http://201.48.151.193/cshrc2http://free.bsd.com.br/http://www.fug.com.br/http://www.freebsd.org/docs

  • 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 * * * root /root/backup.sh* Executa todos os dias a 00:01

    # killall -HUP cron

    # crontab -u root -e

    O DEVFS

    o sistema de arquivos de dispositivos. Todo dispositivo encontrado criado no /dev. Na sada do comando df -h, o devfs sempre aparece como 100% de espao ocupado.

    O INETD

    # ee /etc/inetd.conf Habilita servios (daemons) padro. Cada linha descomentada ativa um daemon. Configurar o inted no /etc/rc.conf (inted_enable=YES)

    # /etc/rc.d/inted start

    PORTS

    # /etc/Mk Scripts de makefile, onde cada arquivo representa bibliotecas que avaliam os comandos necessrios para instalao, onde o principal arquivo o bsd.port.mk, que contm todos os detalhes da programao dos ports.

    # /usr/ports/UPDATING Este arquivo descreve as principais mudanas de qualquer software que possui algum impacto que afete o usurio. Por exemplo, abra este arquivo e procure por racoon.

    # /usr/ports/MOVED Arquivos que foram movidos ou descontinuados em funo de alguma alterao. # /usr/ports/CHANGES Alteraes, principalmente para commiters.

    Estrutura do Ports

    /usr/ports/www/admuser

    pkg-descr Pequena descrio do port.pkg_distinfo Verifica se o arquivo est instalado, hash md5 do arquivo, tamanho e um SHA256. Isto permite maior segurana. A base de repositrios do Debian foi toda contaminada em funo de no verificar com prerrogativas de segurana coerentes.Makefile o script principal para instalar o admuser. Onde:

  • PORTNAME - Nome do port.PORTVERSION - Verso da aplicao.CATEGORIES - Categoria que est inserida.MASTER_SITES - Onde est localizado para baixar e instalar o port. Em caso de

    falha instala do FreeBSD.org.MAINTAINER - Mantenedor do port. O mantenedor nem sempre o criador do

    port, mas o responsvel por inseri-lo na rvore de ports e customiza-lo para uma instalao mais fcil para o usurio. Quando o mantainer estiver como [email protected], significa que no h nenhum manteiner ainda responsvel. Caso algum se interesse, poder adotar o port e tornar-se um mantenedor. Marcelo Tossati, mantenedor do Kernel do Linux, que comitava patchs de Kernel para o Debian, baseava-se em uma perspectiva de confiana na estirpe dos criadores de patchs e no revisava de fato o cdigo-fonte, principalmente quanto a segurana.

    HAS_CONFIGURES Habilita recursivamente as dependncias.

    pkg-plist Programas instalados junto com o Ports. Em caso de remoo, o sistema consulta este arquivo para remover os pacotes dependentes.

    Instalao de Ports

    Modelo de compilao em partes:

    # cd /usr/ports/www/admuser# make fetch# ls /usr/ports/distfiles# make checksum# make extract# make patch# make configure# make build# make install

    criado um registro da instalao do port em /var/db/pkg.

    Targets Make

    # make config Opes de configurao para compilao.# make showconfig Configuraes setadas para o port.# make rmconfig Remove as configuraes feitas pelo usurio e volta para o default.# make depends Instala somente as dependncias.# make readmes Cria um arquivo readme.html com a descrio do pacote.# make clean Apaga o diretrio work, que contm o source-code do pacote.# make distclean Apaga o arquivo tarbal em /usr/ports/distfiles.# make search name=stress Encontra na rvore do Ports o pacote em questo. Este comando deve ser aplicado somente dentro do diretrio /usr/ports.# make search name-stress display=name,path Busca customizada (Recomendvel).

    Opes: [email protected] display=name, path | more Procura pelo mantenedor.# make search key=apache display=name,path Procura qualquer port com a palavra apache.

    mailto:[email protected]

  • # 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

  • Caso queira instalar algum pacote vulnervel, apesar de no ser recomendvel, desabilitar atravs da varivel:

    setenv DISABLE_VULNERABILITIES=yes

    No arquivo Makefile de cada pacote exitem as diretivas FORBIDEN, DEPRECATED, ou BROKEN, que so lidas pelo Portaudit. Caso o pacote contenha a diretiva FORBIDEN, o Portaudit no permitir a instalao. Aplicaes DEPRECATED sero descontinuadas do Ports.

    Sites:http://freshports.orghttp://pointyhat.freebsd.orghttp://portsmon.freebsd.org

    XORG

    Deve-se conhecer o hardware de placa de vdeo. Conhecer as configuraes de resoluo do monitor. O FreeBSD tambm esfora-se para criar um ambiente X com hardware genrico.

    O XORG atua como uma camada entre o Window Manager e o hardware. Para instal-lo:Ports

    # /usr/ports/x11/xorg# make install

    Tambm, pelo DVD do FreeBSD 8.1 atravs do Sysinstall, nas guias Configure/Packages/, e deve-se escolher a media CD-ROM, no menu Media.

    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=YEShald_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

    http://portsmon.freebsd.org/http://pointyhat.freebsd.org/http://freshports.org/

  • Para sair ctrl+alt+F1, depois Ctrl+c

    Em caso de uma tela preta, o processo de deteco do hardware e o ambiente necessrio para o Xorg ocorreu com sucesso.

    Editar o arquivo /root/xorg.conf.new

    Na seo Section Device, encontra-se as configuraes do driver da placa de vdeo. Na guia Driver, caso o driver esteja identificado como 'Vesa, significa que foi instalado um driver genrico. Verifique o driver da placa de vdeo e instale-o em:

    /usr/ports/x11-drivers/xf86-driver*, onde driver, representa o fabricante da placa de vdeo, como por exemplo, xf86-video-sis

    Execute:

    # Xorg -configure

    Para gerar outro arquivo /root/xorg.conf.new. Conferir se detectou o driver correto. Na seo driver deve aparecer o driver correto, neste caso:

    Driver sis

    # cp /root/xorg.conf.new /etc/X11/xorg.conf

    Instalando o Window Manager

    Em /usr/ports/x11-wm, encontram-se os diversos window manager disponveis. Os mais populares so GNOME e KDE. No FreeBSD h projetos com equipes separadas para GNOME e KDE. Tambm h o Compiz, que um extraordinrio Window Manager baseado nas novas geraes de window manager, porm, requer que a placa de vdeo seja excelente, possui diversos recursos 3D. encontrado em /usr/ports/x11-wm/compiz.

    Instalando o GNOME

    # cd /usr/ports/x11/gnome2# make install

    Ou pelo DVD, pelo sysinstall. Escolher Configure/Packages/Media (CD/DVD)/Gnome/gnome2-2.26.3. Sero selecionadas todas as dependncias automaticamente. IMPORTANTE: possvel executar o X somente como usurio desprivilegiado.

    # cd /usr/home/usuario# touch .xinitrc# ee .xinitrcInserir a linha:exec gnome-session# startx

  • # 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 *

  • * RATE Monitoramento, parecido com iptrafic ***************************************************************# cd /boot# cp -rp kernel.old kernel.generic

    Resolvendo problemas de Kernel:

    Reiniciar, e escolher a opo 6 (Loader Prompt). # unload kernel # load /boot/kernel.generic/kernel # boot

    Foi carregado o Kernel antigo, basta rever as configuraes.

    Outra opo de compilao do Kernel

    # cd /usr/src/# make buildkernel KERNCONF=SSA# make installkernel KERNCONF=SSA

    Mdulos de Kernel

    Este mecanismos no recomendvel em funo de ter perda de performance em at 40%. Os mdulos devem ser sempre compilados estaticamente no kernel. Em caso emegerncial, carregar o mdulo de Kernel e recompilar o kernel com o mdulo necessrio.

    # kldstat -v Visualiza os mdulos estticos compilados no Kernel.# kldload Utilizado para carregar mdulos do Kernel em /boot/kernel/. Todos os arquivos terminados com .ko* so mdulos de Kernel. As interfaces de rede so majoritariamente identificadas como if_, por exemplo, if_sis.ko, atravs das pginas de manual (# man sis), percebe-se que se trata de uma interface da SiS 900 Fast Ethernet. Caso o mdulo possua dependncia de outros mdulos, estes so carregados automaticamente.# kldload if_sis.ko Carrega o mdulo de Kernel da interface SiS 900.# kldunload if_sis.ko Descarrega o mdulo de Kernel da interface SiS 900.# config -x /boot/kernel/kernel Extrai as configuraes do Kernel customizado.

    Salvando as Configuraes de Mdulos de Kernel

    # ee /boot/defaults/loader.conf Referncia de opes (mdulos) para ser configuradas no loader.conf# ee /etc/boot/loader.conf

    if_sis_load=YES

  • 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 FreeBSD-RELEASE, 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.orgCVSUP: 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)

    http://main.bh.freebsdbrasil.com.br/~jmelo/sup2http://main.bh.freebsdbrasil.com.br/~jmelo/suphttp://cvsweb.freebsd.org/

  • 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-stableAlterar: *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.

  • 4) # mergemaster -i (LEIA ABAIXO) *** ATENO *** - ANTES de executar o comando acima:

    # cd /# cp -rp etc etc.bkp Fazendo backup do /etc.# cd /etc/# pwd Verifique que est dentro de /etc.# rm -rf * CUIDADO: DIGITE DENTRO DE /etc# cd /etc.bkp# cp *.db /etc/# cp group /etc/# rm -rf /var/named/ Caso seja um servidor de DNS, faa backup deste diretrio.# cp passwd /etc/# cp master.passwd /etc/

    # margemaster -i

    O mergemaster ir apresentar telas descrevendo as alteraes. Leia atentamente pressione [q] e escolha a opo desejada quanto as opes que o mergemaster lhe oferece (i instalar / d deletar).

    Arquivos re-copiados do /etc.bkp para /etc durante o treinamento:# cd /etc.bkp/# cp crontab /etc# cp fstab /etc# cp hosts /etc# cp inetd.conf /etc# cp periodic.conf /etc# cp resolv.conf# cp -rp ssh /etc# cp ttys /etc# reboot BOA SORTE!!!# uname -a Tem que aparecer: 8.1-STABLE FreeBSD 8.1-STABLE #0

    :/usr/obj/usr/src/sys/SSA i386

    Esses passos abaixo so utilizados principalmente em atualizao de Sries, sendo que na atualizao de Releases, no necessrio.# cd /usr/src# make delete-old# make delte-old-libs# reboot

    Problemas procsize mismatch A userland no est em sincronia com o novo kernel, geralmente ocasionados por somente compilar, mas no instalar o novo kernel ou userland. A recomendao do projeto que o processo de reconstruo do mundo seja em single user aps o processo de compilao. Atente-se e leia tambm as recomendaes em /usr/src/UPDATING.

  • 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 /mnt ufs rw,async 0 0(no ser utilizado fsck (0))

    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

    NFS Network File System

    Aplicaes mnimas: rpcbind (mapeamento de portas), mountd (montagem de diretrios exportados) e nfsd (daemon). Atente-se que o primeiro servio a ser iniciado ser rpcbind, seguido de nfsd e mountd. Tambm, necessrio criar o arquivo /etc/exports manualmente.

    # showmount -e# nfsstat -w1 Exibe gargalo do servidor NFS.

  • RAID Mirror (RAID 1)

    # gmirror# gmirror load# sysctl kern.geom.debugflags=16# gmirror label -vnb round-robin gm0 ad0 Cria um label de um array de disco[gm0], com verbose e round-robin, de forma que feito um balanceamento de acesso aos discos.

    # cd /etc/fstab# cp fstab fstab.bkp# ee /etc/fstab

    /dev/mirror/gm0s1a / ufs rw 1/dev/mirror/gm0s1b /tmp ufs rw 1/dev/mirror/gm0s1c /usr ufs rw

    # ee /boot/loader.confgeom_mirror_load=YES

    # reboot# gmirror configure -a gm0# gmirror insert gm0 ad2 inserindo o segundo disco.# gmirror status Exibe o processo de sincronizao.

    Em caso de um disco ficar danificado, basta seguir os passos.# gmirror forget gm0# gmirror remove gm0 adx adx, disco com defeito.# gmirror insert gm0 ady ady, disco substitudo.

    Pode-se tambm configurar no /etc/periodic.conf para auditar o gmirror.

  • DNS Domain Name System

    A documentacao (RFC) foi gerada em funcao do Sotware, que foi o BIND, desenvolvido em Maio de 1984, por quatro alunos, que submeteram ao CSRG.http://www.eecs.berkeley.edu/Pubs/TechRpts/1984/5937.html

    Nao existe cliente BIND, o lado cliente 'e uma bilioteca, a Resolv Library (libresolv), compilado junto com a libc. Na pesquisa do nome, sao feitas duas chamadas de sistema, no cliente gethostbyaddress()(Reverso) e a gethostbyname() (Mais utilizada).

    No lado cliente:/etc/host.conf --> Ordem de busca de nome: hosts (/etc/hosts) e DNS, tambm NIS (broadcast), WINS, NWDS (Network Domain System), NSSwitch(Active Directory)/etc/resolv.conf --> A diretiva nameserver no obrigatria: sendo, que pela RFC deve haver somente at 03 Name Servers, sendo que no FreeBSD pode haver 256, no Linux somente 03 (que um Struct, contendo 03 entradas para memria) e no Windows Server tambm. Ha uma diretiva chamada search, que busca pelo short name, por exemplo, no FQDN = hostname.domainname, o shortname somente o host, sem o domnio. O search ssa.com.br bh.ssa.com.br --> # ping www, existe www.ssa.com.br?, caso positivo, responde, buscando somente o shortname www em ssa.com.br e bh.ssa.com.br.

    options timeout:5(segundos) attempts:1 (falhou uma vez, vai pro prximo)

    search ssa.com.br bh.ssa.com.brnameserver 208.48.151.193

    Durante uma pesquisa DNS, 'e feita uma pesquisa em uma DataBase Local, e o Servidor tambm tem uma libresolv, que faz uma consulta em outros servidores, e assim por diante.

    Respostas tipicamente retornadas quando no consegue resolver:NXDomain Quando o domnio tem um dono, e pergunta-se ao servidor

    Autoritativo, e este diz no existe o domnio.Failure Falhapermission|allowd|restriceted Baseado na RFC

    A zona utilizada ainda da ARPA para reverso, no caso, IN-ADDR.ARPA, herdado das origens do sistema de nomes baseados em arquivos hosts.txt em FTP.

    TLD - Top Level Domain - com, net, org, gov, edu, mil, int(nao vingou, dominios internacionais) --> Conhecidos como The Orginal SevensCada pas, possui o ISO Country Code (BR, US, etc), que passou a ser utilizado depois de uk, fr, br. O Brasil foi o terceiro a entrar nos TLDs, atravs de um professor de Qumica, chamado Pedro Henrique de Alcntara Albuquerque Vaz, que conquistou PhD na UCLA.

    Root Level (Root Name Servers) .TLD - Top Level Domain .us, .com, .milSLD - Sub Level Domain .com . govLLD - Lower Level Domain - www, ns

    A FAPESP foi a responsvel pelo processo de implantao do DNS no Brasil. As funes

  • 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 RecursosXfer 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

    O BIND9 j roda no FreeBSD em ambiente CHROOT, como observado em /etc/defaults/rc.conf

    Habilitando o named:# ee /etc/rc.conf# named_enable="YES"# /etc/rc.d/named start

    # /var/named/etc/namedb# ln -s /var/named/etc/namedb/ /etc/namedb Criando um link simblico para /var/named/etc/namedb/, pois durante o mergemaster -i, foi apagado.

    Pode-se utilizar o RNDC - Remote Named Domain Controller# rndc status# rndc-configen --> Gerado automaticamente pelo BIND.

    edgar# sockstat -4l | grep namedbind named 1822 20 tcp4 127.0.0.1:53 *:*bind named 1822 21 tcp4 127.0.0.1:953 *:* --> rndcbind named 1822 512 udp4 127.0.0.1:53 *:*

    # ee /etc/resolv.conf# cat /etc/resolv.conf nameserver 127.0.0.1nameserver 201.48.151.193

    Neste momento o servidor assume a funo de Recursivo.

  • # nslookup www.ig.com.brServer: 127.0.0.1Address: 127.0.0.1#53

    Non-authoritative answer:Name: www.ig.com.brAddress: 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 1035Estruturais:Garantem a existncia da Zona:SOA 6(cdigo) RFC1035 Start of AuthorityNS 2 RFC1035 Lista de Name Servers com Autoridade Diz que auto suficiente autoritrio e os nameservers tambm que respondem pelo domnio.

    MAPEAMENTO:A 1 RFC Nome IPPTR RFC1035 IP Nome

    COMPLEMENTARES:HINFO 13 RFC1035TXT 16 1035WKS 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.

  • ##################### named.conf ###########################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 {ip;rede/bitmask;!ip;outra-acl;

    };

    ACLs Padreslocalhost loopback e iplocalnets Rede que o servidor faz parte (IP pblico).any; todosnone; 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.brgw.upper.telecom.com.br

    };

    Existem dois tipos de CachePositivo: Baseado em informao que existeNegativo: 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 min-cache-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.

  • ***************** LOGS *********************

    Categorias Mais importantes:query, xfer-in e xfer-out (sada para o Slave)

    # rndc statusversion: 9.6.2-P2 (Microsoft Windows Server 2008)CPUs found: 1worker threads: 1number of zones: 12debug level: 0xfers running: 0xfers deferred: 0soa queries in progress: 0query logging is ON --> O log foi ativado.recursive clients: 0/0/1000tcp clients: 0/100server is up and running

    No bloco options:querylog no;

    Dica: Se necessrio, utilize o rndc para ativar log e desativar log, de forma que faa-se um estudo do abuso, e depois desligue-o novamente. O Log habilitado geralmente para verificar problemas, no necessrio deix-lo ativado o tempo todo.

    # rndc querylog Habilita# rndc status

    **** A Diretiva backholes Bloquea abusos. ******

    acl bloqueados {201.48.151.206;

    };

    Na sesso options:

    blackhole { bloqueados; }

    **********************************************************

    # cd /usr/ports/dns/dnstracer# make install

    # dnstracer -s . freebsdbrasil.com.br

    # nslookup -type=SOA www.freebsdbrasil.com.br# dig www.freebsdbrasil.com.br SOA

  • ************************** ZONAS DNS *************************zone "" {

    type master | slave | hint | dynamic | forward;file "";

    Pode ser adicionado qualquer diretiva dentro do campo options, de forma que escopo seja local para essa zona, e no global.

    };

    zone "ssa.com.br" {type master;file "/etc/namedb/master/ssa.com.br.zone";

    };

    ############### ssa.com.br.zone ############Na RFC, estipula-se que o nome de e-mail de DNS no pode conter ., por exemplo, edgar.paes.bsd.com.br.[errado];

    # named-checkzone ssa.com.br ssa.com.br.zone # rndc relad Para mudanas na zona

    @ sempre aponta para IN ou ACNAME Nvel mximo de recursividade so 3. MX Sempre Aponta para um A, nunca para um CNAME. MX com prioridade idntico, por exemplo,5 mx1.com.br5 mx2.com.brNo sendmail, no entrega a nenhum servidor, caso o primeiro servidor no responder. O Exchange, faz round-robin por sesso, e o QMAIL faz por servidor. A RFC no comenta sobre essa questo.

    O grande concorrente do SMTP, 'e o QMTP,

    # telnet mail.hotmail.com 25ehlo edgarmail from: rcpt to

    MXSW MX 0-20000 = SMTPMX 2001-3000 = QMTPMX 3001-4000 = SMTP

  • ########### /etc/named.conf - NAO-DEFINITIVO ###############options {

    directory "/etc/namedb"; //WorkDirectory No /var/log/messages tem que aparecer: The work directory is not writable, pois quem escreve no workdir o sysadmin, e nao a aplicacao BIND.

    pid-file "/var/run/named/pid";dump-file "/var/dump/named_dump.db"; dump de cache em memoria, se

    exitir 'e carregado para memoria.//cache-file "/var/dump/outro-cache-db"; //compartilhar cache via NFSstatistics-file "/var/stats/named.stats"; utilizado com o comando

    #rndc statusallow-recursion { clientes; }; Permite somente recursao para a ACL em

    questao.allow-query { clientes; }; A quem pode fazer consultaroot-delegation-only exclude { "de"; "lv"; }; //evita

    www23335544.otempo.com.brlisten-on { 127.0.0.1; 201.48.151.207; };version "Microsoft Windows Server 2008";cleaning-interval 80; //minutos// max-cache-size 12M; // NAO ACONSELHAVEL, quando chega ao mximo, exclui

    os antigos e utiliza novos.querylog no;blackhole { bloqueados; };

    };

    zone "." { type hint; file "/etc/namedb/named.root";

    };

    zone "ssa.com.br" {type master;file "/etc/namedb/master/ssa.com.br.zone";

    };

    acl clientes {localnets;localhost;

    };

    acl bloqueados {201.48.151.206;

    };

    logging {channel log_de_consultas {file "/var/log/named_consultas.log" versions 3 size 10M;print-time yes;print-severity yes;print-category no; //se estiver escolhendo categoria

    especifica};category queries {

    log_de_consultas;};};

  • ############### FIM DE ARQUIVO: named.conf #########################

    ############## ARQUIVO: /etc/named/masetr/ssa.com.br.zone ##########;;comentario;; IN ;@ IN SOA ns1 ; a mesma coisa$TTL 14400 ;ttl default para todos registros, exceto SOA@ IN SOA ns1.ssa.com.br. hostmaster.ssa.com.br. (

    2010092302 ;serial86400 ;refresh3600 ;retry604800 ;expire86400 ;default ttl ou negative ttl

    )@ IN NS ns1.ssa.com.br.@ IN NS ns2.ssa.com.br.@ IN NS ns1.locaweb.com.br.@ IN A 201.48.151.207@ IN MX 10 mx1.ssa.com.br.@ IN MX 20 mx2.ssa.com.br. @ IN MX 20001 mx3.ssa.com.br. ;QMTP > 20000

    ns1 IN A 201.48.151.207ns2 IN A 201.48.151.206www IN CNAME ns1.ssa.com.br.ftp IN CNAME ns1.ssa.com.br.mx1 IN A 201.48.151.207mx2 IN A 201.48.151.207mx3 IN A 201.48.151.207

    ;ROUND-ROBIN E DISPONIBILIDAE, O CLIENTE QUE BALANCEIA, NAO O SERVIDOR, POIS A RESPOSTA CONSISTE;EM VARIOS IPS QUE SAO ENTREGADOS COMO CONSULTA PELO SERVIDOR AO CLIENTE, COMO PODE SER OBSERVADA EM UMA CONSULTA COM NSLOOKUP.

    ;www2 IN A 201.48.151.207;www2 IN A 201.48.151.206;$TTL 8400 --> PODE-SE DEFINIR OUTRO VALOR DE TTL SOMENTE DAQUI PARA BAIXO (TTL DIFERENCIADO);www2 IN A 201.48.151.205;www2 IN A 201.48.151.204

    ################ FIM DO ARQUIVO ssa.com.br.zone ################

  • 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.brServer: 201.48.151.207Address: 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 be found from:uol.com.br nameserver = charles.uol.com.br.uol.com.br nameserver = borges.uol.com.br.uol.com.br nameserver = eliot.uol.com.br.

    Caso esteja com o final "~all", o MTA decide se vai aceitar ou no.@ IN MX 10 mx1.ssa.com.br.@ IN MX 20 mx2.ssa.com.br. @ IN MX 20001 mx3.ssa.com.br. ;QMTP > 20000;@ IN TXT "v=spf1 mx ip4:200.214.160.20 ip4:189.112.64.82 -all";@ IN SPF "v=spf1 mx ip4:200.214.160.20 ip4:189.112.64.82 -all" ;RECOMENDADO;@ IN SPF "v=spf1 mx -all" ; SOMENTE OS MX Registrados serao considerados validos.

    Pode-se utilizar tambm os caracteres:? ou *, porm somente uma das opes podem ser usadas.exemplos:

    www IN A 201.200.200.200www? IN A 201.200.200.200* IN A 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. (

    201009230086400360060480086400

    )@ 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.

  • @ IN MX 20 mx2.nanaca.com.br.@ IN SPF "v=spf1 mx -all"ns1 IN A 201.48.151.207ns2 IN A 201.18.151.206www IN CNAME ns1.nanaca.com.br.mx1 IN A 201.48.151.207mx2 IN A 201.48.151.207

    IN A 201.48.151.207

    ######################## FIM DO EXERCICIO ##########################

    ############################ SLAVE ###########################Deve-se observar que o BIND quando Slave, no copia os arquivos do Master, somente transferido o que esta em memoria, como pode ser observado, que o arquivo que vem do Master contem configuraes que no foram feitas no Slave, como $ORIGIN ., comentrios das diretivas de serial, etc.

    zone "eliandersonbichamagra.com.br" {type slave;file "/etc/namedb/slave/elianderson.com.br.zone";masters { 201.48.151.206; };allow-notify { 201.48.151.206; };

    };

    ############ CONFIGURANDO O REVERSO ###############A Zona reversa trata das redes delegadas que respondem ao nome de domnio da empresa. Nos exemplos abaixo, o que verifica-se que se trata de um processo de delegaes, onde 'e verificar a raiz da Internet at a rede delegada.

    Exemplo, # nslookup 201.48.151.3Server: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:3.151.48.201.in-addr.arpa name = capeta.freebsdbrasil.com.br.

    Authoritative answers can be found from:151.48.201.in-addr.arpa nameserver = galheta.mdbrasil.com.br.151.48.201.in-addr.arpa nameserver = capeta.freebsdbrasil.com.br.capeta.freebsdbrasil.com.br internet address = 201.48.151.3

    # nslookup -type=SOA in-addr.arpaServer: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:in-addr.arpa

    origin = a.root-servers.netmail addr = dns-ops.arin.netserial = 2010092304refresh = 1800retry = 900

  • expire = 691200minimum = 10800

    Authoritative answers can be found from:in-addr.arpa nameserver = l.root-servers.net.in-addr.arpa nameserver = m.root-servers.net.in-addr.arpa nameserver = h.root-servers.net.in-addr.arpa nameserver = f.root-servers.net.in-addr.arpa nameserver = k.root-servers.net.in-addr.arpa nameserver = e.root-servers.net.in-addr.arpa nameserver = g.root-servers.net.in-addr.arpa nameserver = b.root-servers.net.in-addr.arpa nameserver = c.root-servers.net.in-addr.arpa nameserver = a.root-servers.net.in-addr.arpa nameserver = d.root-servers.net.in-addr.arpa nameserver = i.root-servers.net.

    # nslookup -type=SOA 201.in-addr.arpaServer: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:201.in-addr.arpa

    origin = NS.LACNIC.NETmail addr = hostmaster.LACNIC.NETserial = 2010092315refresh = 1800retry = 900expire = 691200minimum = 10800

    Authoritative answers can be found from:201.in-addr.arpa nameserver = ns2.LACNIC.NET.201.in-addr.arpa nameserver = SEC1.AUTHDNS.RIPE.NET.201.in-addr.arpa nameserver = NS.LACNIC.NET.201.in-addr.arpa nameserver = sec3.apnic.NET.201.in-addr.arpa nameserver = ns2.dns.br.201.in-addr.arpa nameserver = tinnie.arin.NET.201.in-addr.arpa nameserver = NS-LACNIC.NIC.MX.201.in-addr.arpa nameserver = ns3.afrinic.NET.NS.LACNIC.NET internet address = 200.3.13.10NS.LACNIC.NET has AAAA address 2001:13c7:7002:3000::10ns2.dns.br internet address = 200.192.232.53ns2.LACNIC.NET internet address = 200.3.13.11ns2.LACNIC.NET has AAAA address 2001:13c7:7002:3000::11ns3.afrinic.NET internet address = 204.61.215.62sec3.apnic.NET internet address = 202.12.28.140sec3.apnic.NET has AAAA address 2001:dc0:1:0:4777::140tinnie.arin.NET internet address = 199.212.0.53tinnie.arin.NET has AAAA address 2001:500:13::c7d4:35

  • # nslookup -type=SOA .48.201.in-addr.arpanslookup: '.48.201.in-addr.arpa' is not a legal name (empty label)# nslookup -type=SOA 48.201.in-addr.arpaServer: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:48.201.in-addr.arpa

    origin = a.dns.brmail addr = hostmaster.registro.brserial = 2010092313refresh = 1800retry = 900expire = 604800minimum = 900

    Authoritative answers can be found from:48.201.in-addr.arpa nameserver = f.dns.br.48.201.in-addr.arpa nameserver = d.dns.br.48.201.in-addr.arpa nameserver = c.dns.br.48.201.in-addr.arpa nameserver = a.dns.br.48.201.in-addr.arpa nameserver = b.dns.br.

    # nslookup -type=SOA 151.48.201.in-addr.arpaServer: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:151.48.201.in-addr.arpa

    origin = capeta.freebsdbrasil.com.brmail addr = root.capeta.freebsdbrasil.com.brserial = 2010043001refresh = 3600retry = 900expire = 3600000minimum = 3600

    Authoritative answers can be found from:151.48.201.in-addr.arpa nameserver = galheta.mdbrasil.com.br.151.48.201.in-addr.arpa nameserver = capeta.freebsdbrasil.com.br.capeta.freebsdbrasil.com.br internet address = 201.48.151.3

    # nslookup -type=SOA 3.151.48.201.in-addr.arpaServer: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:*** Can't find 3.151.48.201.in-addr.arpa: No answer OBSERVE ESSA LINHA

    Authoritative answers can be found from:151.48.201.in-addr.arpa

  • origin = capeta.freebsdbrasil.com.brmail addr = root.capeta.freebsdbrasil.com.brserial = 2010043001refresh = 3600retry = 900expire = 3600000minimum = 3600

    VERIFICANDO O REVERSO DA REDE NAO DELEGADA

    # nslookup 189.112.64.82Server: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:82.64.112.189.in-addr.arpa name = 189-112-064 082.static.ctbctelecom.com.br.

    Authoritative answers can be found from:64.112.189.in-addr.arpa nameserver = nspar.ctbc.com.br.64.112.189.in-addr.arpa nameserver = nssar.ctbc.com.br.nspar.ctbc.com.br internet address = 201.48.254.49nssar.ctbc.com.br internet address = 201.48.254.57

    # nslookup 189-112-064-082.static.ctbctelecom.com.br.Server: 201.48.151.207Address: 201.48.151.207#53

    Non-authoritative answer:Name: 189-112-064-082.static.ctbctelecom.com.brAddress: 189.112.64.82

    ############################## REVERSO ########################

    // zone "0-127.151.48.201.in-addr.arpa" { }; Para uma rede delegadazone "151.48.201.in-addr.arpa" {

    type master;file "/etc/namedb/master/151.48.201.in-addr.arpa.rev";

    };

    ############## ARQUIVO DE ZONA REVERSO DO NANACA.COM.BR ###########

    $TTL 14400@ IN SOA ns1.nanaca.com.br. webmaster.nanaca.com.br. (

    201009230086400360060480086400

    )

  • @ IN NS ns1.nanaca.com.br.@ IN NS ns2.nanaca.com.br.207 IN PTR ns1.nanaca.com.br.206 IN PTR ns1.elianderson.com.br.

    ################### FIM DO ARQUIVO #########################

    OBS.: SO PODE HAVER UMA ENTRADA POR IP DISTINDO, GERALMENTE, O IP DO NS1, COMO NO ARQUIVO ACIMA.

    ############################ DNS DINAMICO #######################

    # mv master/ssa.com.br dynamic/# ee named.conf

    zone "ssa.com.br" { type master; file "/etc/namedb/dynamic/ssa.com.br.zone"; --> atualizado para dynamic}; GERANDO A CRIPTOGRAFIA (O AD nao suporta blowfish)

    # md5 -s dnsdinamicoMD5 ("dnsdinamico") = 4e5bebbe5153ea311b36b843bb658fd3

    key dinamica { algorithm hmac-md5; secret "4e5bebbe5153ea311b36b843bb658fd3";};

    zone "ssa.com.br" {type master;file "/etc/namedb/dynamic/ssa.com.br.zone";

    update-policy{//grant domain ANY;//grant 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 mysqlmysql mysqld 1623 10 tcp4 *:3306 *:*

    Escolhendo a verso do MySQL

    As verses de final par, so verses de produo, de final de impar, de mudana.No final par, s tem update de segurana. No final mpar, de update security, features, performance e configurao. O MySQL considera pronto a mais importante de verso par mais alta da serie e a impar mais alta da serie. Para produo, somente as que no www.mysql.com estiverem classificadas como GA, GENERAL AVAIALBLE, ou seja disponvel para o publico em geral. A verso 5.0 a versa mais par mais alta e GA. A verso 6 e chamada de NG, Next Generation.

  • 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)

    mysql> show columns from user;

    Removendo o usuario anonimo:

    mysql> select user,password,host from user;+------+----------+------------------+| user | password | host |+------+----------+------------------+| root | | localhost | | root | | edgar.ssa.com.br | | root | | 127.0.0.1 | | | | localhost | | | | edgar.ssa.com.br | +------+----------+------------------+5 rows in set (0.01 sec)

    mysql> delete from user where user='';Query OK, 2 rows affected (0.02 sec)

  • mysql> select user,password,host from user;+------+----------+------------------+| user | password | host |+------+----------+------------------+| root | | localhost | | root | | edgar.ssa.com.br | | root | | 127.0.0.1 | +------+----------+------------------+3 rows in set (0.00 sec)

    # mysqladmin -u root password senhasecreta No recomendvel.# history -c Limpa o histrico

    Atualizando senha de Root.

    mysql> update user set password=PASSWORD('novasenha') where user='root';Query OK, 3 rows affected (0.00 sec)Rows matched: 3 Changed: 3 Warnings: 0

    mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)

    mysql>use mysql\g O ";" significa GO, e deve ser utilizado com \g.

    mysql> status --------------mysql Ver 14.12 Distrib 5.0.90, for portbld-freebsd8.1 (i386) using 5.2

    Connection id: 6Current database: mysqlCurrent user: root@localhostSSL: Not in useCurrent pager: moreUsing outfile: ''Using delimiter: ;Server version: 5.0.90 FreeBSD port: mysql-server-5.0.90Protocol version: 10Connection: Localhost via UNIX socketServer characterset: latin1Db characterset: latin1Client characterset: latin1Conn. characterset: latin1UNIX socket: /tmp/mysql.sockUptime: 30 min 10 sec

    Threads: 1 Questions: 72 Slow queries: 0 Opens: 22 Flush tables: 1 Open tables: 17 Queries per second avg: 0.040--------------

  • Sempre que logar, utilizarmysql> \W Habilita Warnings.mysql> \w ou nowaring; Desabilita o Warnings.

    CRIANDO DATABASESmysql> create database cliente1;Query OK, 1 row affected (0.00 sec)

    mysql> show databases;+--------------------+| Database |+--------------------+| information_schema | | cliente1 | | mysql | +--------------------+3 rows in set (0.00 sec)

    CRIANDO UM USUARIO:

    PERMISSOES ESPECIFICAS PARA ACESSO EXTERNOmysql> GRANT SELECT,INSERT ON cliente1.* to [email protected] IDENTIFIED by 'senhadocliente';Query OK, 0 rows affected (0.01 sec)

    PERMISSOES ESPECIFICAS PARA ACESSO INTERNOmysql> GRANT ALL ON cliente1.* to cliente1@'192.168.20.0/24' IDENTIFIED by 'outrasenha';Query OK, 0 rows affected (0.00 sec)

    mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

    INFORMACOES DO USUARIO:mysql> show full processlist\g id - ID do usurio user - usurios logados host - origem db - banco utilizado command - Query que esta sendo utilizada time - quanto tempo levou para executar a query state - estado da query info - comando que esta sendo executado

    +----+------+-----------+-------+---------+------+-------+-----------------------+| Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+-------+---------+------+-------+-----------------------+| 6 | root | localhost | mysql | Query | 0 | NULL | show full processlist | +----+------+-----------+-------+---------+------+-------+-----------------------+

  • 1 row in set (0.00 sec)

    BACKUP DO MYSQL

    NUNCA GERE BACKUP QUE NAO SEJA DE QUERY INTEIRA

    # mysqldump -u root -p mysql > /usr/home/edgarx/Desktop/backup.sqlEnter password:

    # cd /usr/home/edgarx/Desktop/# lsDNS backup.sql edgar-arquivos# mysql -u root -p mysql < backup.sql Enter password:

    FORMA CORRETA:# mysqldump -c -u root -p mysql > /usr/home/edgarx/Desktop/backupcompleto.sql

    # mysql -uroot -pnovasenha mysql --exec="show tables;"+---------------------------+| Tables_in_mysql |+---------------------------+| columns_priv | | db | | 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 | +---------------------------+

    global:/etc/my.cnf/usr/local/etc/my.cnf/var/db/mysql/my.cnf Preferencial (principalmente para NFS)

    por db: /var/db/mysql//my.cnf

    /usr/local/share/mysql Exemplos de configurao de arquivos do MySQL# ls *.cnf

  • Recuperando a senha de root:Adicionar no arquivo de configurao a diretiva skip-grant-tables, reiniciar o MySQL e digitar: #mysql -u root, e trocar a senha.# No houve na rede, continua funcionando local via Unix Socketskip-network

    # Utilizado para recuperar a senha de rootskip-grant-tables

    DIRETIVAS DO ARQUIVO E CONFIGURACAO

    [mysqld]port = 3306socket = /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 defaultskip-federated

    # Replication Master Server (default)# binary logging is required for replicationlog-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 simultaneasmax_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.

  • Apache Web Server

    Verses do Apache

    As verses pares mais altas e imediatamente anterior. As verses impares so versos de desenvolvimento../simple_httpd -d /tmp/ -l /var/log/simplet.log

    telnet 0 80GET / HTTP/1.0

    POST /envia.cgi HTTP/1.0

    # cd /usr/src/release/picobsd/tinyware/simple_httpd/# make# lsMakefile README simple_httpd.c

    Makefile README simple_httpd simple_httpd.c simple_httpd.o

    # ./simple_httpd -d /tmp/ -l /var/log/simple_http.log# sockstat -4l | grep 80root simple_htt 21641 3 tcp4 *:80 *:*root syslogd 803 9 udp4 *:514 *:*

    # 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

    # lsIncludes httpd.conf mime.typesenvvars.d magic ssl.conf

    magic file /bin/ls; um magic number para identificar os arquivos. No utilizado em sistemas Unix.

    envvars.d Utilizado para variveis de ambiente. Nesse diretrio, No http.conf, a diretiva Timeout:Timeout ${P_TIMEOUT}# echo "300" > envvars.d/P_TIMOUT# echo "100" > envvars.d/P_TIMOUT

    Com isso, uma modificao na varivel faz com que se tenha uma configurao dinmica,

  • sem ser necessrio restartar o apache.

    # apachectl start# sockstat -4l | grep httpwww httpd 21702 3 tcp4 6 *:80 *:*www httpd 21701 3 tcp4 6 *:80 *:*www httpd 21700 3 tcp4 6 *:80 *:*www httpd 21699 3 tcp4 6 *:80 *:*www httpd 21698 3 tcp4 6 *:80 *:*root httpd 21697 3 tcp4 6 *: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, start-servers * 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