Slack Zine 15

Embed Size (px)

Citation preview

  • 8/6/2019 Slack Zine 15

    1/12

    slackwarezineSlackware is a registered trademarkof Slackware Linux, Inc.

    O slackware a distribuio linuxmais antiga ainda em atividade.Tendo sido criada por Patrick

    Volkerding em 1993, a partir da SLS.

    Em todos esses anos, a distroconquistou ardorosos utilizadores,principalmente graas sua filosofiade simplicidade e estabilidade.

    Um produto de extrema qualidadepara usurios com esta mesmacaracterstica. E este zine deslacker para slacker.

    Reproduo do material contido nesta revista permitida desde quese incluam os crditos aos autores e a frase:

    Reproduzida da Slackware Zine #15 www.slackwarezine.com.br

    com fonte igual ou maior do corpo do texto e em local visvel

    slack

    users

    ndice

    Implementando lista

    negra CBL no sendmail

    sem alterar o arquivo

    sendmail.cf........................ 02

    Autor: Ricardo Leite Gonalves

    Implementando VPN's

    com o OpenVPN...................... 06

    Autor: Julio Cezar EstrellaAutor: Julio Cezar Estrella

    Instalando um servidor

    DNS primrio no

    slackware......................... 08Autor: Fabiano Silva de Carvalho

    Testando um kernel

    novo remotamente no

    slackware......................... 10Autor: Ricardo Leite Gonalves

    Editorial

    Eeeeee! No estamos atrasados! Pelaprimeira vez em muito tempo lanamos umzine dois meses depois do anterior.Conseguimos voltar nossa periodicidadecorreta. Agradecimentos especiais aos

    nossos colaboradores!

    O Ricardo Leite mandou dois artigosinteressantes, um sobre como adicionarCBL no sendmail e outro para oscorajosos que desejam testar um kernelnovo em servidores a 500km de distncia-;).

    Duas matrias sobre assuntos bempedidos completam a edio. Uma bsicasobre como configurar um servidor de DNSprimrio, do Fabiano Silva e outra do

    Jlio mostrando a facilidade de semontar uma VPN com o OpenVPN (prestemateno no arquivo de configurao muitobem comentado).

    Alm disso, gostaramos de agradecer atodo o pessoal que passou no nossoestande durante o CONISLI (e pegou aedio #14.5). E, claro, lembrar atodos que tem SlackShow dia 18 deNovembro!

    Se voc estiver em SP/SP ouproximidades, venha assistir palestrastcnicas, feitas por tcnicos e paratcnicos. quem faz mostrando o quesabe -;)

    At mais e Boa Leitura!

    Piter PUNK

    PS> Ah! Aproveitando o finalzinho dapgina, j que voltamos periodicidadenormal, estamos precisando dos seusartigos! -;)

    Estabilidade, Simplicidade.Performance, ...

    slackware11.0

    http://store.slackware.com

    17 de Novembro de 2006 Edio #15

  • 8/6/2019 Slack Zine 15

    2/12

    Implementando lista negraCBL no sendmail sem

    alterar o arquivo sendmail.cfRecentemente, com o aumento de adwaresque infectam mquinas de usurios windows(que so geralmente alienados a questescomo segurana em desktops). Ocorreu umaumento absurdo de mquinas usadas como"spam zombies", ou seja: mquinas queacabam sendo usadas para enviar centenas de

    e-mails por segundo sem que seus usuriossaibam disso.Uma das piores consequncias do spam queele gasta o link do MTA, memria eprocessamento, podendo at se comportarcomo um verdadeiro DDoS (Distributed DenyOf Service) em alguns casos.

    Geralmente quando se utiliza apenas filtros deconteudo como o spamassasin e similares,cada e-mail que chega tem que serdescarregado pelo servidor e analizado para

    somente depois bloquear a entrega ou no.Com isso os recursos do MTA sero onerados,pois mesmo quando se trata de um e-mailvindo de um IP comprovadamente "spammer"este ser baixado pelo MTA.

    Para resolver este problema, existem vriaslistas negras pblicas de IPs que soatualizadas diariamente.

    Uma das listas mais usadas a CBL(Composite Bloking List, disponvel na URL:http://cbl.abuseat.org/), esta lista pode ser

    obtida em forma de arquivo texto atravs dersync. Mas para isso necessrio cadastrar oip que ir fazer o download no site (http://cbl.abuseat.org/rsync-signup.html).Eles no cobram pelo servio, mas pedem queo arquivo seja baixado no mximo 02 vezespor dia

    Poderamos fazer um script para bloqueartodos os IP's da lista negra criando regrascom o iptables, mas se acontecer um falsopositivo (ou seja se o ip for bloqueado, mas oe-mail for um e-mail desejado, um e-mailHAM) o originador da mensagem no iriareceber uma mensagem de erro informando omotivo do bloqueio. E alm disso, o SysAdmindo MTA de origem pode nem saber que seuservidor est provavelmente sendo usado para

    enviar lixo, ele deveria ser avisado paraacertar este problema! Um outro motivo parano se utlizar o iptables seria a quantidadegigantesca de regras que iriam onerarconsideravelmente o desempenho do MTA. Spara se ter uma idia o tamanho do arquivo(no momento em que eu escrevo este artigo)tem cerca de 42,2MB contendo 3.165.734 IPs

    cadastrados (caramba !).

    Vamos criar um script para pegar a lista ecoloca-la em um formato gil para atravs deum simples e eficiente grep consultar semperda de tempo:

    #!/bin/bash# Arquivo /usr/local/pegalista.sh

    rsync -Cravzp rsync:// \rsync.cbl.abuseat.org/cbl/ \list.txt /var/cache

    cat /var/cache/list.txt | grep -v "#"\| grep -v ":"| tr '.' 'x' > \/var/cache/cbl.txt

    Este script pode ser executado uma vez pordia pelo crontab (basta digitar crontab -e paraeditar o crontab). Adicione no final o seguinte:

    1 4 * * * /usr/local/pegalista.sh

    Agora todo dia s 4:01 da manh este scriptser executado. Note que eu substitui ospontos dos nmeros de ip por caracteres 'x'

    porque o grep usa o ponto '.' como umaespcie de curinga e isto causaria erros nahora de comparar alguns IPs. (Pode crer emmim, me deu o maior problema isso !)

    possvel implementar o CBL atravs domilter no sendmail, mas teriamos querecompilar o sendmail (o que seria muitochato na hora de atualizar usando os pacotesoficiais de www.slackware.org) e paradificultar um pouco mais, o sendmail possuium arquivo de configurao "frgil", osendmail.cf. Ele to sensivel que trocar umsimples por um espao pode detonaro funcionamento do sendmail. Claro que opessoal do sendmail inclusive no recomendaque o sendmail.cf seja editado diretamente.

    http://cbl.abuseat.org/rsync-signup.htmlhttp://cbl.abuseat.org/rsync-signup.html
  • 8/6/2019 Slack Zine 15

    3/12

    Eles inventaram uma forma (bastanteinusitada) para se editar o arquivo deconfigurao do sendmail que criar umarquivo de texto em outro formato(sendmail.m4) e depois converter nosendmail.cf com o utilitrio m4. Como noqueremos complicao (e sim umaimplementao no melhor estilo KISS) vamos ver uma forma de intermediar uma conexoao nosso servidor sendmail sem ter que"mexer no time que est ganhando".

    Existe uma maneira de se intermediar umaconexo a um daemon de rede que aceitaconexes TCP/UDP: usando o super serverinetd que vem no slackware. O inetd podeser usado para "levantar" um servidor pop,um samba, ou at um apache e um servidorde smtp.

    Para executar um script no lugar do sendmail,poderiamos colocar no /etc/inetd.conf aseguinte linha:

    smtp stream tcp nowait root \/usr/sbin/tcpd

    /usr/local/sbin/sendmail_cbq.sh

    Mas para este mesmo fim eu preferi utilizarno lugar do inetd tradicional o xinetd que uma reimplementao do inetd com umas"features" que ajudam a combater situaesde DoS pois ele pode ter limitao de

    conexes simultneas por IP e limitao dequantidade de conexes por servio porexemplo.

    importante lembrar que quando o xinetdno permitir a um determinado MTAconectar-se no chega a ser um graveproblema porque os MTAs devem re-enviar ose-mails caso eles no consigam conectar aoMTA receptor segundo a RFC 821 (SimpleMail Transfer Protocol) e RFC 2505 (Anti-Spam Recommendations for SMTP MTAs).Vamos instalar o xinetd:

    #> wget http://www.xinetd.org/ \xinetd- 2.3.14.tar.gz

    #> tar xzvf xinetd-2.3.14.tar.gz#> cd xinetd-2.3.14#> ./configure#> make#> su# make install

    Neste ponto caso fosse utilizadoanteriormente o inetd para outros serviosalm do smtp, pode-se converter o arquivo de

    configurao dele (/etc/inetd.conf) no novoarquivo de configurao (/etc/xinetd.conf)com o utilitrio xconv.pl. Se este for o casotecle ainda como root:

    #> cat /etc/inetd.conf | xconv.pl > \/etc/xined.conf

    Abaixo transcrevo meu arquivo/etc/xinetd.conf devidamente editado ecomentado:

    defaults

    {# Nmero mximo de conexes por um# servio controlado:# instances = 25# O tipo de registro de log. Este# log ser feito a um arquivo sem# utilizar o daemon syslogd.# Outra opo seria: SYSLOGsyslog_facility [Nvel_do_syslog]log_type = FILE /var/log/servicelog

    # Aqui vc pode determinar o que # logado quando ocorre a conexo.

    # PID vai logar o pid do processo de# requisio.# HOST vai logar o enredeo remoto do# host que conectou# USERID vai logar o usurio remoto# (segundo a RFC 1413)# EXIT vai logar o status de trmino# do runlevel do processo servidor.# (0 sem errors)# DURATION vai logar a durao da# conexo.log_on_success = HOST PID

    # Aqui vc pode determinar o que # logado quando ocorre falha na# conexo.#(Utiliza-se os mesmo parmetros da# verivel anterior)log_on_failure = HOST

    # O nmero maximo de conexes a um# especfivo endereo de IP conectado# a um especfico servio.per_source = 15}

    service smtp{disable = nosocket_type = streamprotocol = tcpwait = nouser = root

    # Pode-se desativar a lista CBL mas# permanecer com restries anti DoS# do xinetd ativando-se as proximas# 2 linhas e comentando a linha que# chama nosso script.

    # server_args = -C \/etc/mail/sendmail.cf -bs

    # server = /usr/sbin/sendmail

    http://www.xinetd.org/http://www.xinetd.org/
  • 8/6/2019 Slack Zine 15

    4/12

    # Este o nosso script que ser# chamado como se ele fosse# um servidor de SMTP:server = /usr/local/sbin/ \

    sendmail_cbl.sh

    # Em casos de DDoS causado por uma# corrente de e-mails pode-se querer

    # restringir um pouco mais as coisas:# Pode-se restringir o numero de# conexoes e instancias por ip# instances = 300# nice = 10

    # Pode-se expecificar que este smtp# somente pode ser conectado por# determinado IP/rede only_from# += 0.0.0.0 pode-se bloquear# Ips e redes:# no_access += 129.22.122.84 \

    204.0.224.254

    # Veja mais opes em \http://www.xinetd.org

    }

    Agora que j temos um xinetd configuradoprecisaremos de um script que ser chamadopelo xinetd para intermediar a conexo com osendmail:

    #!/bin/bash# Arquivo: \

    /usr/local/sbin/sendmail_cbl.sh

    # A varivel REMOTE_HOST retorna o# IP do HOST que conectou no servio# chamado pelo xinetd vamos# converter o IP do host que conectou# para o formato da nossa lista# (colocando 'x' no lugart dos '.')ip=$(echo $REMOTE_HOST | tr "." "x")

    # Estou considerando que os usurios# de nossa rede no devem ser# bloqueados pelo nosso MTA

    if ["X$(grep ^$ip$ /etc/iplocal.txt)"\

    = "X" ] ; thenif [ "X$(grep ^$ip$ \/var/cache/cbl.txt)" != "X" ] ;\then

    echo "550 TOO MUCH SPAM (BLOQUEADO \POR MANDAR SPAM)- \http://cbl.abuseat.org/ \lookup.cgi?ip=$REMOTE_HOST \&.submit=Lookup"

    exitfi

    fi

    # este o pulo do gato que ir chamar# o sendmail dentro do script caso# esteja tudo OK/usr/sbin/sendmail -C /etc/mail/ \

    sendmail.cf -bs

    No devemos esquecer de criar uma lista (em/etc/iplical.txt) com nossos IPs da rede local,afinal no queremos que nossos propriosclientes no consigam enviar e-mail. (Naverdade seria interesante ver se os ips denossa rede esto na lista CBL e retira-los delacorrigindo o problema.) Esta lista de ips podeser gerado com um comando semelhante aeste:

    #> for i in $(seq 1 255); do echo \192x168x0x$i >> /etc/iplocal.txt;

    done

    Este comando ir gerar uma lista com os ipsde 192.168.0.1 at 192.168.0.255 (note queno lugar de '.' eu novamente coloquei 'x' parafacilitar a procura sem erros do grep) Pode-seadicionar qualquer faixa de IPs reais com essemtodo. Finalmente convm alterar o antigo/etc/rc.sendmail para que ele chame o xinetdem vez do sendmail em modo daemon:

    #!/bin/sh

    sendmail_start() {if [ -x /usr/sbin/sendmail ]; thenecho "Starting sendmail MTA daemon:# /usr/sbin/sendmail -L sm-mta -bd \

    -q25m"# /usr/sbin/sendmail -L sm-mta -bd \

    -q25m# echo "Starting sendmail MSP queue \

    runner: /usr/sbin/sendmail -L \

    sm-msp-queue -Ac -q25m"# /usr/sbin/sendmail -L sm-msp-queue \

    -Ac -q25m/usr/local/sbin/xinetdecho "Ok"

    fi}

    sendmail_stop() {killall sendmailkillall xinetd

    }

    sendmail_restart() {sendmail_stopsleep 1sendmail_start

    }

    case "$1" in'start') sendmail_start;;'stop') sendmail_stop;;'restart') sendmail_restart;;

    *)echo "usage $0 start|stop|restart"

    ;;esac

    http://cbl.abuseat.org/http://cbl.abuseat.org/
  • 8/6/2019 Slack Zine 15

    5/12

    Um toque final seria colocar no crontab maisuma linha para re-enviar e-mals que tenhamficado pendentes na queue, j que o sendmailno est mais cuidando disso como umdaemon (digite crontab -e):

    */5 * * * * /usr/sbin/sendmail -q

    Pronto, agora esta implementao iradiminuir bastante o processamento demensagens no MTA, pricipalmente se vc tivero spamassasin instalado ou o amavis porexemplo.

    Com este mesmo mtodo pode-se tambmfazer outras verificaes como por exemplo seo host que conectou o MTA possui DNSreverso e bloquea-lo caso no esteja emconformidade com esta especificao e dequebra enviar uma outra mensagem de erro

    indicando este problema. As mensagens deerro devem possuir no mximo 256 caracteresem uma nica linha e devem ter no incio ocdigo 550 segundo a RFC 821.

    Referncias:

    RFC'shttp://www.faqs.org/rfcs/rfc821.htmlhttp://www.faqs.org/rfcs/rfc2505.html

    CBL - Composit Bloking Listhttp://cbl.abuseat.org/

    Pgina anti-spam do Comit Gestor daInternet no Brasilhttp://antispam.br

    Ferramentas de verificao de DNS eblack lists (veja o Spam database lookup)http://www.dnsstuff.com

    Xinetd (um substituto para o inetd comnfase na segurana)http://www.xinetd.org

    Ricardo Leite Gonalves

    Autores

    Fabiano Silva de Carvalho,Fabiano Silva de Carvalho, Analista Analistade Sistemas pela Universidade Salgadode Sistemas pela Universidade Salgadode Oliveira e Mestre em Engenhariade Oliveira e Mestre em EngenhariaEltrica e de Computao pela UFG.Eltrica e de Computao pela UFG.

    Atualmente Professor Assistente daAtualmente Professor Assistente daUniversidade Salgado de Oliveira,Universidade Salgado de Oliveira,Analista de Sistemas da CompanhiaAnalista de Sistemas da CompanhiaEnergtica de Gois e ProfessorEnergtica de Gois e ProfessorUniversitrio da Faculdade de TecnologiaUniversitrio da Faculdade de TecnologiaSenai de Desenvolvimento Gerencial. TemSenai de Desenvolvimento Gerencial. Temexperincia na rea de Cinciaexperincia na rea de Cinciada Computao, atuando principalmenteda Computao, atuando principalmentenos seguintes temas: Sistemasnos seguintes temas: SistemasMultiagentes, Aprendizado por Reforo,Multiagentes, Aprendizado por Reforo,Data Warehouse, Implementao eData Warehouse, Implementao eIntegrao. Publicou 3 trabalhos em anaisIntegrao. Publicou 3 trabalhos em anaisde eventos. Trabalha com Linux desdede eventos. Trabalha com Linux desde

    1996.1996.

    Julio Cezar EstrellaJulio Cezar Estrella, doutorando em, doutorando emCincia da Computao e MatemticaCincia da Computao e MatemticaComputacional no ICMC-USP em SoComputacional no ICMC-USP em SoCarlos. usurio slackware desde 1999.Carlos. usurio slackware desde 1999.

    Ricardo Leite Gonalves a.k.a.Ricardo Leite Gonalves a.k.a.Ricleite,Ricleite, metido a administrador de metido a administrador deredes, intrometido em programao asmredes, intrometido em programao asmde microcontroladores PIC ede microcontroladores PIC eprocessadores Z80 e i386. Convencido emprocessadores Z80 e i386. Convencido emprogramao Basic dos principaisprogramao Basic dos principaiscomputadores da old (80's) school,computadores da old (80's) school,COBOL, Pascal, Xbase (Clipper), C, Bash,COBOL, Pascal, Xbase (Clipper), C, Bash,louco colecionador de hardware (VG elouco colecionador de hardware (VG eComputadores) dos anos 80, fuo emComputadores) dos anos 80, fuo emeletrnica digital e doente em slackware.eletrnica digital e doente em slackware.

    Resultados da pesquisabr-linux.org

    Distro Servidor: Slackware (2o. Lugar)Desktop: Slackware (2o. Lugar)

    Grupo de usurios:GUS-Br (3o. Lugar)

    Personalidade Internacional:Patrick Volkerding (5o. Lugar)

    Personalidades Nacionais:Piter Punk (5o. Lugar)Sulamita Garcia (7o. Lugar)

    timos resultados!!! Mas vamos tentarmelhor-los para 2007!

    Keep Slacking!

    http://www.xinetd.org/http://www.xinetd.org/
  • 8/6/2019 Slack Zine 15

    6/12

    Implementando VPN's

    com o OpenVPNIntroduo:

    VPN's, ou Virtual Private Networks, sotneis virtuais que podem ser estabelecidossob uma rede pblica, geralmente a internet,onde dois pontos so interligados comsegurana, formando dessa forma, uma redenica.

    As VPN's so amplamente utilizadas porempresas que necessitam comunicar matrizescom a filial. A idia que os dados trafegadospela Internet sejam transparentes para asentidades comunicantes, ainda que estaspertenam a redes com faixa de IP distintas.

    Os dados so encriptados antes de entrar notnel e apenas uma extremidade conhece achave para decriptar o mesmo, criando umcanal de comunicao relativamente seguro.

    A utilizao do OpenVPN tem se destacado nosltimos anos pela sua simplicidade e pelafacilidade de manuteno. Alm disso, possuiuma outra caracterstica relevante em relaoa abordagens baseadas em IPSec que osuporte a redes com NAT.

    Este tutorial:

    Este tutorial se destina aos iniciantes nainstalao e configurao de OPENVPN. Osarquivos de configurao foram elaborados de

    acordo com o padro descrito no manualoficial do OPENVPN. Detalhes adicionais, comosuporte a TLS/SSL, sero abordados em umprximo tutorial. Vale ressaltar o tutorial dividido em duas etapas. A primeira, aborda ainstalao do OPENVPN em servidores distintose a segunda permite que compartilhamentosSAMBA presentes em uma rede remota possamser acessados atravs da VPN.

    Para a elaborao desse artigo, foi utilizado oseguinte cenrio e a seguinte configurao:

    Sistema Operacional: slackware 11.0, mas otutorial tambm funciona na verso 10.2.

    Rede da Matriz: Faixa de IP - 192.68.0.0/27ip da interface eth0 do servidor: 192.168.0.12ip da interface tun0 do servidor: 10.0.0.1

    Rede da Filial: Faixa de IP: 192.68.2.0/27ip da interface eth0 do servidor: 192.168.2.1ip da interface tun0 do servidor: 10.0.0.2

    Instalao:

    Baixando os arquivos necessrios:wget http://openvpn.net/release/\

    openvpn-2.0.9.tar.gz

    wget http://www.oberhumer.com/\opensource/lzo/download/\lzo-2.02.tar.gz

    Instalando a biblioteca LZO (necessria paracompactao):tar -xzvf lzo-2.02.tar.gzcd lzo-2.02./configuremakemake install

    Instalando o OPENVPN:tar -xzvf openvpn-1.5.0.tar.gzcd openvpn-1.5.0./configuremakemake install

    Configurando o servidor da matriz:

    Inicialmente, vamos criar um usurio e umgrupo chamados openvpn:groupadd openvpnuseradd -g openvpn -s /dev/null \

    openvpn >/dev/null 2>&1passwd -l

    Em seguida, vamos criar o diretrio ondeiremos armazenar os arquivos deconfigurao da VPN na matriz:mkdir /etc/openvpn-matriz

    O prximo passo gerar a chave criptogrficaesttica:openvpn --genkey -secret /etc/\

    openvpn-matriz/chave

    Agora, vamos criar o script matriz.conf como seguinte contedo:

    pico /etc/openvpn/matriz.conf

    http://openvpn.net/release/http://www.oberhumer.com/http://www.oberhumer.com/http://openvpn.net/release/
  • 8/6/2019 Slack Zine 15

    7/12

    # Usar como interface o driver TUNdev tun# 10.0.0.1 ip da matriz# 10.0.0.2 ip remoto, da filialifconfig 10.0.0.1 10.0.0.2# Entra no diretrio onde se encontram# os arquivos de configuraocd /etc/openvpn-matriz

    # Indica que esse tnel possui uma# chave criptogrficasecret chave

    # OpenVPN usa a porta 5000/UDP por# padro. Cada tnel do OpenVPN deve# usar uma porta diferente.port 5000

    # Usurio e grupo que iro executar o# daemon do OpenVPNuser openvpn

    group openvpn

    # Especifica uma MTU comum entre as# partes - MATRIZ e FILIALtun-mtu 1500tun-mtu-extra 32

    # Usa a biblioteca lzo para# compactao dos dados que iro# trafegar no tnelcomp-lzo

    # Envia um ping via UDP para a parte

    # remota a cada 15 segundos para# manter a conexo de p em firewall# statefull.ping 15

    # Nvel de logverb 3

    Iniciar a conexo no servidor da matriz,executando o comando abaixo:openvpn --config /etc/openvpn/\

    matriz.conf -daemon

    Para verificar se a interface tun0 foiinicializada com sucesso:ifconfig tun0

    Para configurando o servidor da filial, repita oprocesso de download e instalao econfigurao exatamente da mesma formacomo foi feito na matriz. Em seguida, copie achave criptogrfica da matriz para a filial como seguinte comando:scp /etc/openvpn-matriz/chave \

    ip_filial:/etc/openvpn-filial

    Por fim, crie o script filial.conf com ocontedo idntico ao do arquivomatriz.conf, alterando somente asseguintes linhas:

    ifconfig 10.0.0.2 10.0.0.1

    # NOTA: ESCOLHA UMA DAS POSSIBILIDADES# ABAIXO. NUNCA AS DUAS!!!!remote 201.43.56.5 (se for IP fixo)remote domain.com.br (IP dinmico)

    # Entra no diretrio onde se encontram# os arquivos de configuraocd /etc/openvpn-filial

    Iniciar a conexo no servidor da filial,executando o comando abaixo:openvpn --config /etc/openvpn-filial/\

    filial.conf -daemon

    Para verificar se a interface tun0 foicarregada com sucesso:ifconfig tun0

    Na filial, faa o teste com um ping:ping 10.0.0.1

    2a Etapa:

    Se a matriz possui um servio samba rodando,alguns passos so necessrios para que asmquinas da filial possam acessar os seuscompartilhamentos. Vamos a eles:

    Adicione as seguintes linhas ao arquivo/etc/samba/smb.conf:# rede do servidor da matriz e rede do# servidor da filialhosts allow = 192.168.1. 192.168.2.interfaces = 192.168.0.0/27 \

    192.168.2.0/27

    Reinicie o servio samba, com os comandos:/etc/rc.d/rc.samba stop/etc/rc.d/rc.samba start

    Faa alguns testes, acessando ocompartilhamento atravs do WindowsExplorer ou usando o comando abaixo noprompt de cliente da rede interna:net use z: \\10.0.0.1\usuario_samba\

    /USER:usuario_do_samba ou ainda,

    net use z: \\192.168.0.12\usuario\_samba /USER:usuario_do_samba

    O processo de automatizao trivial,bastando inserir as seguintes entradas noarquivo /etc/rc.d/rc.local:# Na matriz.nohup /usr/local/sbin/openvpn config \

    /etc/openvpn-matriz/matriz.conf \--daemon >/dev/null 2>&1

    route add -net 192.168.2.0/27 gw 10.0.0.2

    # Na filial.

    nohup /usr/local/sbin/openvpn config \/etc/openvpn-filial/filial.conf \--daemon >/dev/null 2>&1

    route add -net 192.168.0.0/27 gw 10.0.0.1

    Julio Cezar EstrellaJulio Cezar Estrella

    http://10.0.0.1/usuario_samba/http://192.168.0.12/usuario/http://192.168.0.12/usuario/http://10.0.0.1/usuario_samba/
  • 8/6/2019 Slack Zine 15

    8/12

    Instalando um servidor DNS

    primrio no slackwareUm servidor DNS um servio defundamental importncia que tambm podeser implementado em sua rede local, vejamoso processo de implementao de um servidorDNS primrio utilizando o bom e velhoslackware.

    Primeiramente, verifique se o pacote bindest instalado:

    # ls /var/log/packages/bind*

    Se o pacote estiver instalado existe umarquivo com o nome do pacote dentro dodiretrio /var/log/packages .

    Caso o pacote no esteja instalado, baixe opacote no site http://www.slackware.comou na mdia de instalao do slackware e

    instale o pacotecom o comando:# installpkg bind-versao.tar.gz

    Modifique o arquivo /etc/named.confadicionando as entradas zones (direta ereversa) para o domnio que se desejaconfigurar.

    zone "seudominio.com.br" IN {type master;file "seudominio.com.br.zone";allow-update { none; };

    };

    zone "0.168.192.in-addr.arpa" IN {type master;

    file"seudominio.com.br.reverse";

    allow-update { none; };};

    Veja como ficou o arquivo aps as alteraes:

    options {directory "/var/named";forwarders{192.168.0.1;};

    // query-source address * port 53;};

    zone "." IN {type hint;

    file "caching-example/named.ca";};

    zone "localhost" IN {type master;file "caching- \example/localhost.zone";allow-update { none; };

    };

    zone "0.0.127.in-addr.arpa" IN {type master;file "caching- \

    example/named.local";allow-update { none; };

    };

    zone "seudominio.com.br" IN {type master;file "seudominio.com.br.zone";allow-update { none; };

    };

    zone "0.168.192.in-addr.arpa" IN {type master;file \

    "seudominio.com.br.reverse";allow-update { none; };

    };

    Verifique a sintaxe do arquivo/etc/named.conf com o utilitrio:

    # named-checkconf

    II

  • 8/6/2019 Slack Zine 15

    9/12

    Se o comando no retornar nada o arquivoest correto. Se houver algum erro a linha e oerro sero mostrados.

    Crie o arquivo .zone, cujo formato :seudominio.com.br.zone,com asinformaes do domnio que est sendoconfigurado. Pode-se utilizar como modelo o

    arquivo /var/named/caching-example/localhost.zone , dessa forma:

    # cp /var/named/\caching-example/localhost.zone \/var/named/\seudominio.com.br.zone

    Em seguida, modifique-o com o editor detexto de sua preferncia. Veja como ficou oarquivo aps as alteraes:

    $TTL 86400

    $ORIGIN seudominio.com.br.@ 1D IN SOA root.seudominio.com.br. (

    271006001 ; serial (d. adams)3H ; refresh15M ; retry1W ; expiry1D ) ; minimumIN NS ns1.seudominio.com.br.IN NS ns2.seudominio.com.br.IN MX mail.seudominio.com.br.

    ns1 IN A 192.168.0.201ns2 IN A 192.168.0.202

    mail IN A 192.168.0.203www IN A 192.168.0.204ftp IN A 192.168.0.205pop IN CNAME mail.seudominio.com.br.smtp IN CNAME mail.seudominio.com.br.

    Verifique a sintaxe do arquivo/var/named/seudominio.com.br.zone como utilitrio named-checkzone

    # named-checkzone seudominio.com.br \/var/named/\seudominio.com.br.zone

    Se o comando retornar OK o arquivo estcorreto. Se houver algum erro a linha e o errosero mostrados.

    Crie o arquivo .reverse, cujo formato :seudominio.com.br.reverse, com asinformaes de resoluo reversa do domnioque est sendo configurado.

    Pode-se utilizar como modelo o arquivo/var/named/caching-example/named.local

    Para copiar o modelo:

    # cp /var/named/caching-\example/named.local \/var/named/\seudominio.com.br.reverse

    Em seguida, edite o arquivo utilizando oeditor de texto de sua preferncia:

    # vi /var/named/seudominio.com.br.reverse

    $TTL 86400@ IN SOA seudominio.com.br.\

    root.seudominio.com.br. (271006001 ; Serial28800 ; Refresh14400 ; Retry3600000 ; Expire86400 ) ; Minimum

    IN NS ns1.seudominio.com.br.IN NS ns1.seudominio.com.br.

    201 IN PTR ns1.seudominio.com.br.202 IN PTR ns2.seudominio.com.br.203 IN PTR mail.seudominio.com.br.204 IN PTR www.seudominio.com.br.205 IN PTR ftp.seudominio.com.br.

    Verifique a sintaxe do arquivo recm-criado/var/named/seudominio.com.br.reverse com o utilitrio named-checkzone:

    # named-checkzone \0.168.192.in-addr.arpa \/var/named/\seudominio.com.br.reverse

    Se o comando retornar OK o arquivo estcorreto. Se houver algum erro a linha e o errosero mostrados. Inicie o bind:

    # sh /etc/rc.d/rc.bind start

    Se preferir tornar automtica a inicializao

    bind a cada novo boot d permisso deexecuo para o script:

    # chmod +x /etc/rc.d/rc.bind

    Para testar o funcionamento do servidor DNSutilize o utilitrio nslookup.

    Fabiano Silva de Carvalho

    Dia 18 de Novembro de 2006 na FIAP

    maiores informaes: piterpunk.info02.com.br/evento

  • 8/6/2019 Slack Zine 15

    10/12

    Testando um kernel novo

    remotamente no slackware muito perigoso alterar um kernel em umamquina remota. J que isso envolve algumasoperaes que no poderemos ver e se estasderem errado podem travar o sistema remotoobrigando-nos a se mover ao local fsico doservidor.

    Mas podem acontecer situaes onde inevitvel alterar imediatamente o kernel eimpossvel estar de "corpo presente". Ousimplesmente voc pode no querer ir na salade servidores e ficar l espremido(a) s paratestar um kernel novo. De qualquer formaalguns mtodos e cuidados podem permitirque seja possvel realizar remotamente atmesmo essa operao perigosa.

    Portanto arregasse as mangas e seja voc um"cabra macho" ou uma destemida Linux chixou mesmo um doido varrido como eu e parta

    para o desafio de fazer uma "cirurgia portelepresena no crebro do pinguim".

    Testar um kernel novo envolve "rebootar" amquina e torcer que nada trave ou no saiado controle (como um "kernel panic" ou coisapior). Pois se der um "kernel panic" o sistematrava e fica congelado at algum aparecer ereiniciar a mquina, certo ? No exatamente!Existe um parmetro que pode ser colocadono lilo.conf (ou mesmo passado no prompt dolilo) que diz ao kernel do Linux que caso ele"trave" a maquina deve ser rebootada em 'n'

    segundos. Isso pode parecer intil pois oLinux iria rebootar e carregar de novo okernel que travou e assim ficarindefinidamente obrigando-nos a ir ao "localdo crime". Bem, existe um outro parmetro dolilo que diz a ele que SOMENTE no prximoboot ele deve carregar determinado kernele/ou determinadas opes de kernel:

    #> lilo -R kernel_teste \append="panic=3"

    O comando acima diz ao lilo para que na

    prxima vez (e somente na prxima vez) quehouver um reboot seja carregado o kernelidentificado como kernel_teste e alm dissocaso acontea um "kernel panic" a maquinano ficar congelada mas ser rebootada

    depois de 3 segundos. Se a mquina rebootarpor causa do "kernel panic" ela ira carregar okernel padro do sistema e no mais okernel_teste novamente. Em outras palavras,se nosso kernel de teste der problema osistema deve rebootar com o kernel padro.

    Transcrevo a seguir um exemplo de lilo.conf

    usado para testar um kernel novo:

    # Arquivo: /etc/lilo.confboot=/dev/hdaprompttimeout=50lba32vga=normalroot=/dev/hda1read-onlymenu-title=" Slackware "## Aqui coloca-se o label do kernel

    # padro que funciona comprovadamente.default=Linux

    # Aqui ficam as configuraes do# kernel padro de instalaoimage=/boot/vmlinuzlabel=Linuxroot=/dev/hda1read-only

    # Aqui est definido o novo kernel de# testeimage=/usr/src/linux-

    2.6.16/arch/i386/boot/bzImagelabel=kernel_testeroot=/dev/hda1

    # Esta opo permite ao linux rebootar# em 3 segundos caso ocorra um "kernel# panic"append="panic=3"read-only

    Infelizmente algumas coisas inesperadasainda podem dar errado sem que issoprovoque um "kernel panic". Por exemplo: as

    placas de rede podem "mudar de ordem", aplaca que era para ser eth0 se torna eth1 evice versa. Este problema aconteceu comigoao atualizar um kernel de 2.4.x para o 2.6.x.

  • 8/6/2019 Slack Zine 15

    11/12

    Para resolver estes e outros imprevistos o quens devemos ter em mente que deve serpossvel voltar a se conectar ao servidordepois do boot com o novo kernel.Umapossvel soluo um script de verificaops boot colocado no final de/etc/rc.d/rc.local que ir verificar se tudoo que precisa funcionar realmente estfuncionando.

    So basicamente 3 coisas que TEM defuncionar sem erros:

    1) O Driver de leitura do HD e do filesystemusado tem que funcionar e estar compiladobuilt-in e no como mdulo (Apesar de serpossvel compilar como mdulo e utilizar ainitrd, built-in mais simples e quanto maissimples melhor).

    2) O driver da placa de rede tem quefuncionar e estar carregado (Fique esperto nocaso rarssimo de drivers mudaremligeiramente de nome entre verses de sriesde kernel, ou serem unificados vrios driversde placas semelhantes em um nico mdulo).Teoricamente o santo /etc/rc.d/rc.hotplug descobre os drivers corretos. Todo cuidado pouco, e colocar o driver de placa de redebuilt-in pode ser uma medida aceitavel emuma situao dessas.

    (Aproveite pra compilar como mdulo tambm

    alguns outras marcas mais populares deplacas de rede. Melhor prevenir, do que terque no futuro recompilar o kernel todoporque compilamos drivers somente pra umaplaca de rede que no se acha mais nomercado.)

    3) O processo sshd precisa estar ativo apermitindo conexes remotas. Cuidado comas regras de firewall que tem como alvo o ip ea porta do ssh, pode acontecer que depois doreboot e justo nessa hora a sua conexo ADSLcai e ao autenticar de novo voc descubra quepossui um novo ip e fique sem poder conectarpor conta de uma regra de iptables maisnervosa.

    Uma abordagem que deve funcionar namaioria dos casos tambm colocar no nosso"script de checagem ps boot" uma contagemregressiva de tempo que reboota o servidorde qualquer maneira caso no consigamosconectar nele.

    Convm desativar essa contagem regressiva

    assim que consigamos conectar ou caso o"timeout" ocorra. Se o servidor rebootar poresse "timeout" ir voltar ao kernel antigo (setiver sido aplicada a dica anterior do lilo).

    O motivo de se programar o "timeout" paraele se desative sozinho caso dispare queisso evita que nosso servidor fique rebootandoeternamente (j pensou se nossa rede localcair ou se ficarmos impossibilitados deconectar de novo no servidor pra terminar oservio ?).

    Vejamos um script ideal:

    #!/bin/bash# Arquivo: /root/timeout.sh# tem gente que prefere mudar a# porta do ssh, ento fica mais fcil# mudar aqui:

    sshport=22log=/root/timeout.logreboot=0

    # se o script j tenha sido

    # executado sai

    if [ -f /root/delete.me ]; thenexit

    elsetouch /root/delete.me

    # obtm o gateway para testar# a rede:GATEWAY=$(route -n | grep \

    ^0\.0\.0\.0 | cut -c17- \| cut -d" " -f1)

    # outra forma de pegar o gateway

    # descomentando a linha a seguir:#. /etc/rc.d/rc.inetd1.conf

    # importante que o gateway# responda ao ping. Conforme o caso# abra na regra de firewall do# gateway para responder aos pings.internet=$(ping $GATEWAY -c 5 -W 1 \

    | grep "100% packet loss" )

    if [ "X$internet" != "X" ] ; then \echo "GATEWAY $GATEWAY no \responde ao ping" >> $log

    reboot=1fi

    # testa se o sshd est conectando# no localhostif ["X$(nmap localhost -p $sshport \

    | grep open) = "X"]; thenecho "sshd est morto" >> $logreboot=1

    fi

    if [ "$reboot" -eq "1" ]; then/sbin/reboot

    fi

    # Agenda o shutdown para daqui a 5# min e no checa o filesystem no# prximo boot

  • 8/6/2019 Slack Zine 15

    12/12

    shutdown -r -f 5while [ 1 ]; do

    # checa se algum se conectou# via sshif ["X$(who|grep pts/ )" != "X"] \

    ; thenshutdown -c # cancela shutdown# determina qual o terminal ssh

    # deve enviar os avisosn=$(who | grep "pts/" | \cut -f2 -d"/" | \cut -f1 -d" ")

    # Envia mensagem ao terminal# quando se conecta via sshecho "Benvindo, \

    Time-bomb desativada" \>/dev/pts/$n

    echo "CUIDADO" >/dev/pts/$necho "Se for fazer novo teste \

    de kernel," >/dev/pts/$necho "no esquea de apagar: \

    /root/delete.me" \>/dev/pts/$n

    echo "CUIDADO" >/dev/pts/$nexit

    fidone

    fi

    Este script deve ser chamado no final de/etc/rc.d/rc.local e bom que ele tenhaum & no final (para que ele seja executado embackground). Vejamos como ficaria dentro deum /etc/rc.d/rc.local padro:

    #!/bin/sh## /etc/rc.d/rc.local: Local system# initialization script.# Put any local setup commands in# here:

    # Para no esquecer, coloquei aqui o# chmod para tornar executvel o# script de timeoutchmod +x /root/timeout.sh/root/timeout.sh &

    Voc tambm pode dar o direito de execuoao script via linha de comando, semproblemas, ok?

    Voc pode compilar localmente o kernel esomente fazer upload dele ao servidor paratestar. Essa prtica perfeitamente possvel erecomendada mesmo se o processador ehardware da mquina alvo seja diferente damquina local.

    Somente um cuidado de suma importncia:

    se voc estiver compilando a mesma versodo kernel que j est rodando no servidor perigoso sobre-escrever o kernel padro como novo por ele ter o mesmo nome.

    Para resolver isso essencial que seja editadoo Makefile do diretrio /usr/src/linux-x.x.x e adicionado um valor varivelchamada EXTRAVERSION.

    Dessa forma o novo kernel de teste no irsobrescrever o anterior.

    Logo no inicio do arquivo Makefileencontramos a varivel EXTRAVERSION, scolocar depois do '=' o valor que voc quiser,procure no colocar espaos nem caracteresacentuados.

    Agora para se produzir um pacote .tgz dokernel muito simples.

    Se for kernel srie 2.4.x aps compilar (e emvez de digitar "make install" e "makemodules_install"), digite::

    #> make rpm#> rpm2tgz \/usr/src/rpm/RPMS/i386/\

    kernel-*.rpm

    Ou se for um kernel da srie 2.6.x, apscompilar, digite:

    #> make targz-pkg#> mv linux-2.6.x.tar.gz \

    linux-2.6.x.tgz

    Mesmo tomando esses pequenos cuidados

    ainda pode acontecer algum desastre duranteo boot.

    O kernel testado poderia por exemplodanificar o filesystem por algum motivo ques Murphy conseguiria entender, ento a dicafinal que voc tenha um pouco de f e sepossvel algum l no local pra via telefoneseguir suas instrues se tudo der errado.

    Essas dicas funcionam muito bem, mas nadasubstitui a experincia pessoal e o bom senso.

    Ah sim, e antes que eu me esquea:

    "Apesar dessas dicas e do script terem sidotestadas e funcionarem no meu caso, no meresponsabilizo por qualquer dano ocorridodurante a operao. No irei indenizarningum por qualquer erro contido nestetexto, nem por erros contidos nos scripts ouprocedimentos. Qualquer um que for corajoso(ou louco) de tentar estes procedimentos deveser tambm corajoso (ou louco) para seresponsabilizar pelas conseqncias."

    Be a man! (or a brave chix) !

    Ricardo Leite Gonalves