<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7620206746892663415</atom:id><lastBuildDate>Fri, 24 Feb 2012 22:34:20 +0000</lastBuildDate><category>diversos</category><category>scripts_administrativos</category><category>Sistemas_Operacionais</category><category>servicos_de_rede</category><category>seguranca_de_rede</category><title>Conteúdo Open  Source e segurança da informação.</title><description>Este blog vêm com o intuito de compartilhar informações com os demais usuários de tecnologias open source, ou em bom protuguês: tecnologias computacionais de código aberto. Aqui será colocado assuntos do cotidiano de quem trabalha com essas tecnologias. Será postado dicas, resoluções de problemas, implementações de serviços de rede, novidades,  solicitações de ajuda e etc. Com foco principal em sistemas operacionais Unix-Like e softwares livre que forneçam serviços de rede.</description><link>http://conteudoopensource.blogspot.com/</link><managingEditor>noreply@blogger.com (Leonardo Couto Conrado)</managingEditor><generator>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ContedoOpenSourceESeguranaDaInformao" /><feedburner:info uri="contedoopensourceeseguranadainformao" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-3746135911098952970</guid><pubDate>Tue, 31 Jan 2012 01:33:00 +0000</pubDate><atom:updated>2012-01-30T17:37:59.181-08:00</atom:updated><title>Parque tecnológico da Bahia</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QvGcrvyUUBiMw39LoH8_mPRRDVg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QvGcrvyUUBiMw39LoH8_mPRRDVg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QvGcrvyUUBiMw39LoH8_mPRRDVg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QvGcrvyUUBiMw39LoH8_mPRRDVg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;A Bahia está muito perto de ter seu primeiro Parque Tecnológico.&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;Este empreendimento surge para abrigar empresas de base tecnológica, centros de pesquisas, universidades e incubadoras de empresas.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;Com alto padrão urbanístico, o empreendimento tem um cuidadoso  tratamento paisagístico, preservando parte da cobertura da Mata Atlântica e do seu relevo. Localizado na Avenida Paralela, principal eixo de expansão urbana de Salvador, o Parque Tecnológico da Bahia está próximo ao aeroporto de Salvador, centros de tecnologia, instituições de ensino e conta com conexão de fibra ótica.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;O Estado da Bahia dispõe de recursos para apoiar empresas inovadoras que se instalem no parque. São 581.000 m² de área, destinados à geração de conhecimento e de negócios de alto valor agregado.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;b&gt;Entenda como vai funcionar:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://saudeweb.com.br/video/entenda-como-vai-funcionar-o-parque-tecnologico-da-bahia/"&gt;http://saudeweb.com.br/video/entenda-como-vai-funcionar-o-parque-tecnologico-da-bahia/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;Fonte:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.secti.ba.gov.br/parquetecnologico/"&gt;http://www.secti.ba.gov.br/parquetecnologico/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-3746135911098952970?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/gkFQpFdDjQw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/gkFQpFdDjQw/parque-tecnologico-da-bahia.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2012/01/parque-tecnologico-da-bahia.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-1139465730511559895</guid><pubDate>Fri, 20 Jan 2012 17:13:00 +0000</pubDate><atom:updated>2012-01-21T10:15:36.651-08:00</atom:updated><title>Plugin do Nagios para verificar a fila de e-mails do servidor Qmail</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zbJZjSo2YDE1GIVYhF4SCJ-1e24/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zbJZjSo2YDE1GIVYhF4SCJ-1e24/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zbJZjSo2YDE1GIVYhF4SCJ-1e24/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zbJZjSo2YDE1GIVYhF4SCJ-1e24/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;OBS.: O plugin é executado através do NRPE na máquina remota, logo, o script deve ser colocado junto aos outros plugins do nagios na máquina cliente, ou seja, no servidor Qmail e não no servidor Nagios.&lt;br /&gt;
&lt;br /&gt;
Este script ajudará a identificar um possível ataque ao seu servidor de e-mails. Onde uma conta de e-mail do seu dominio provavelmente com uma senha frágil esteja sendo utilizada para enviar uma grande massa de e-mails (SPAM) com destino a endereços e-mails da internet, logo, isso acarretará em uma grande quantidade em excesso de mensagens na fila de envio do seu servidor Qmail atrasando o envio de e-mails verdadeiros. O script checará sempre essa quantidade de mensagens na fila e retornará a saída para o Nagios.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Copie o script abaixo, que irá checar a fila de e-mails, para o diretório de plugins do Nagios no seu servidor Qmail:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /usr/local/nagios/libexec/check_qmail_queue
&lt;/pre&gt;
&lt;pre class="brush: bash"&gt;############################################################### 
# Script checar fila de e-mails do Qmail 
# Por Leonardo Couto Conrado 
# Em 20.01.2012
############################################################### 
#!/bin/sh

OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3

criticalMsgsInQueue=90
warningMsgsInQueue=80

mailQueue=$(/usr/local/bin/qmailctl queue | grep "messages in queue:" | awk -F ":" '{print $2}')

if [ $mailQueue -gt $criticalMsgsInQueue ]; then
        echo "NÚMERO DE MENSAGENS NA FILA ULTRAPASSOU O LIMITE DE CRITICAL, $mailQueue MSGS NA FILA!"
        exit $CRITICAL
fi


if [ $mailQueue -gt $warningMsgsInQueue ]; then
        echo "NÚMERO DE MENSAGENS NA FILA ULTRAPASSOU O LIMITE DE WARNING, $mailQueue MSGS NA FILA!!"
        exit $WARNING

        else
                echo "NÚMERO DE MENSAGENS NA FILA ESTÁ OK, IGUAL A $mailQueue MSGS NA FILA."
                exit $OK
fi

exit $UNKNOWN

&lt;/pre&gt;
&lt;pre class="brush: bash"&gt;# chmod +x /usr/local/nagios/libexec/check_qmail_queue
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Para ativar o check, devemos inserir o comando e o serviço no servidor do Nagios. Segue procedimento para ser executado no Nagios:&lt;br /&gt;
&lt;br /&gt;
1 - Crie o comando no arquivo commands.cfg (No ambiente usado para esse "how to" o arquivo encontra-se em /usr/local/nagios/etc/objects/commands/commands.cfg no servidor Nagios:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;vi /usr/local/nagios/etc/objects/commands/commands.cfg
#'check_nrpe_qmail_queue' command definition
define command{
        command_name    check_nrpe_qmail_queue
        command_line    $USER2$/check_nrpe -H $HOSTADDRESS$ -c check_msgs_qmail_queue
        }

&lt;/pre&gt;
2 - Crie o serviço para o servidor Qmail:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;vi /usr/local/nagios/etc/objects/services/linux-services.cfg
define service{
        use                             non-critical-services         ; Name of service template to use
        host_name                       SRVLMSSAMAIL01
        service_description             EMAILS IN QUEUE
        check_command                   check_nrpe_qmail_queue
      }
&lt;/pre&gt;
&lt;br /&gt;
3 - Configure o check no NRPE no servidor Qmail:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;vi /usr/local/nagios/etc/nrpe.cfg

command[check_msgs_qmail_queue]=/usr/local/nagios/libexec/check_qmail_queue
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
4 - Reinicie o serviço do Nagios no servidor Nagios e o serviço do NRPE no servidor de e-mail Qmail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-1139465730511559895?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/d98c4U2b9Mk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/d98c4U2b9Mk/plugin-do-nagios-para-verificar-fila-de.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2012/01/plugin-do-nagios-para-verificar-fila-de.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-8163892246415827820</guid><pubDate>Thu, 12 Jan 2012 01:17:00 +0000</pubDate><atom:updated>2012-01-11T17:35:00.821-08:00</atom:updated><title>Script para atualizar periodicamente blacklists selecionadas do squidGuard</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yvloaR8xuyhE_aAAWqxQ9Ybywu8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yvloaR8xuyhE_aAAWqxQ9Ybywu8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yvloaR8xuyhE_aAAWqxQ9Ybywu8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yvloaR8xuyhE_aAAWqxQ9Ybywu8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
O script abaixo irá baixar os arquivos tar.gz de blacklist dos sites&amp;nbsp;squidguard.mesd.k12.or.us e&amp;nbsp;www.shallalist.de, após isso ele irá descompactar os arquivos e copiar as pastas de blacklists, que estejam listados por você nos arquivos&amp;nbsp;bls_mesd.txt e&amp;nbsp;bls_shalla.txt, para o diretório de blacklists do squidGuard, após isso mudará o dono dos diretórios de blacklists do squidGuard para o usuário squid e por ultimo ele irá recompilar as blacklists transformando-as em arquivo de banco de dados para o squidGuard. O conteúdo da pasta utlizada para baixar e descompactar os tar.gz será limpa no final do processo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;-&amp;gt; PARA AGENDAR A EXECUÇÃO DO SCRIPT UTILIZE O crontab.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="height: auto; overflow: scroll; width: 440px;"&gt;
&lt;pre class="brush: bash"&gt;#!/bin/bash
############################################################### 
# Atualizando blacklists selecionadas para o squidGuard
# Por Leonardo Couto Conrado 
# Em 11/01/2012 
############################################################### 
# README:
# Crie o diretorio da variavel dirWork
# Crie o arquivo de log da variavel logUpBlackLists
# Crie o arquivo /usr/local/upblacklists/bls_mesd.txt ele deverá conter as blacklists desejadas da mesd squidguard.mesd.k12.or.us para serem copiadas para as blacklists do squidGuard
# Crie o arquivo /usr/local/upblacklists/bls_shalla.txt ele deverá conter as blacklists desejadas da shalla www.shallalist.de para serem copiadas para as blacklists do squidGuard

clockNow=$(date +%d.%m.%Y-%H:%M)
dirBlackListSquidGuard=/usr/local/squidGuard/db/blacklists/
dirWork=/usr/local/upblacklists/work/
dirUpBlackLists=/usr/local/upblacklists/
squidGuardCreateDBs="/usr/local/squidGuard/bin/squidGuard -C all"
 
urlListMesd=http://squidguard.mesd.k12.or.us/blacklists.tgz
urlListShalla=http://www.shallalist.de/Downloads/shallalist.tar.gz
fileTgzMesd=blacklists.tgz
fileTgzShalla=shallalist.tar.gz
fileBlacklistsMesd=blacklists/
fileBlacklistsShalla=BL/
 
logUpBlackLists=/var/log/updatebacklists.log
 
numBlsMesd=$(cat $dirUpBlackLists"bls_mesd.txt" | wc -l)
numBlsShalla=$(cat $dirUpBlackLists"bls_shalla.txt" | wc -l)
 
counter=1
 
# INICIO
 
cd $dirWork
 
wget -c $urlListMesd
wget -c $urlListShalla
 
if [ $? = 0 ]; then
        tar -xzf $dirWork$fileTgzMesd
        tar -xzf $dirWork$fileTgzShalla
 
        cd $dirWork$fileBlacklistsMesd
              echo $clockNow  " - ANDAMENTO COPIA DAS BLS DA MESD: " &amp;gt;&amp;gt; $logUpBlackLists
                while [ $counter -le $numBlsMesd ]; do
                        blMesd=$(cat $dirUpBlackLists"bls_mesd.txt" | awk -v VAR=$counter 'NR == VAR {print $0}')
                        /bin/cp -fv $dirWork$fileBlacklistsMesd$blMesd/domains $dirBlackListSquidGuard$blMesd &amp;gt;&amp;gt; $logUpBlackLists
                        /bin/cp -fv $dirWork$fileBlacklistsMesd$blMesd/urls $dirBlackListSquidGuard$blMesd &amp;gt;&amp;gt; $logUpBlackLists
                        let counter=counter+1
                done
       counter=1
 
        cd $dirWork$fileBlacklistsShalla
                echo $clockNow  " - ANDAMENTO COPIA DAS BLS DA SHALA: " &amp;gt;&amp;gt; $logUpBlackLists
                while [ $counter -le $numBlsShalla ]; do
                        blShalla=$(cat $dirUpBlackLists"bls_shalla.txt" | awk -v VAR=$counter 'NR == VAR {print $0}')
                        /bin/cp -fv $dirWork$fileBlacklistsShalla$blShalla/domains $dirBlackListSquidGuard$blShalla &amp;gt;&amp;gt; $logUpBlackLists
                        /bin/cp -fv $dirWork$fileBlacklistsShalla$blShalla/urls $dirBlackListSquidGuard$blShalla &amp;gt;&amp;gt; $logUpBlackLists
                        let counter=counter+1
                done
      
       echo $clockNow  " - ANDAMENTO DAS PERMISSOES PARA SQUID NAS BLS DO SQUIDGUARD: " &amp;gt;&amp;gt; $logUpBlackLists
        chown squid -R -v $dirBlackListSquidGuard &amp;gt;&amp;gt; $logUpBlackLists
      
       echo $clockNow  " - RECOMPILANDO AS DBS DO SQUIDGUARD: " &amp;gt;&amp;gt; $logUpBlackLists
       echo `$squidGuardCreateDBs` &amp;gt;&amp;gt; $logUpBlackLists
 
       echo $clockNow  " - LIMPANDO DIRETORIO WORKS: " &amp;gt;&amp;gt; $logUpBlackLists
        cd $dirWork &amp;amp;&amp;amp; rm -rf ./
else
   echo $clockNow ' - FALHOU DOWNLOAD DE UMA DAS BLS: ' &amp;gt;&amp;gt; $logUpBlackLists
 
fi
 
exit 0
 


&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-8163892246415827820?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/yUEbm2nrZUw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/yUEbm2nrZUw/script-para-atualizar-periodicamente.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2012/01/script-para-atualizar-periodicamente.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-8604755399981477241</guid><pubDate>Tue, 10 Jan 2012 12:28:00 +0000</pubDate><atom:updated>2012-01-10T08:10:38.552-08:00</atom:updated><title>Sessão Fix BUG</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vFbQWOcjwP7titditkVJ7B-bgh0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vFbQWOcjwP7titditkVJ7B-bgh0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vFbQWOcjwP7titditkVJ7B-bgh0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vFbQWOcjwP7titditkVJ7B-bgh0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;BUG&lt;/b&gt;: NFS &lt;i&gt;mount: failed, reason given by server: Permission denied&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Versão NFS utilizada&lt;/b&gt;: nfs-utils-1.0.9-50.el5 e&amp;nbsp;nfs-utils-lib-1.0.8-7.6.el5&lt;br /&gt;
&lt;b&gt;Sistema utilizado&lt;/b&gt;: Red Hat Enterprise Linux Server release 5.3 Beta (Tikanga)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SINTOMA:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ao tentar mapear um&amp;nbsp;diretório remoto via NFS&amp;nbsp;no cliente aonde o mesmo possui as devidas permissões para acesso ao diretório no server é apresentada uma mensagem de erro informando:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;mount: failed, reason given by server: Permission denied.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;PROBLEMA:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Durante a inicialização do cliente o filesystem &amp;nbsp;que controla o NFSD &amp;nbsp;não é montado.&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;SOLUÇÃO:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
É necessário montar&amp;nbsp;manualmente o filesystem especial nfsd.&lt;br /&gt;
&lt;br /&gt;
Adicione no arquivo /etc/fstab:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /etc/fstab


#########################################

# FIX - BUG 692968 PERMISSION DENIED NFS

#########################################

none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/proc/fs/nfsd &amp;nbsp; nfsd &amp;nbsp; &amp;nbsp; defaults 0 0


&lt;/pre&gt;
Reler o arquivo /etc/fstab&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# mount -a

&lt;/pre&gt;
Agora tente mapear novamente o diretório remoto.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;REFERÊNCIA:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=264661"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=264661&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://juljas.net/lpt/post/nfs-permission-denied#comment-118"&gt;http://juljas.net/lpt/post/nfs-permission-denied#comment-118&lt;/a&gt;&lt;br /&gt;
&lt;pre class="bz_comment_text" style="background-color: white; font-size: small; white-space: pre-wrap; width: 50em;"&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-8604755399981477241?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/XB3YUro2Dj4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/XB3YUro2Dj4/secao-fix-bug.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2012/01/secao-fix-bug.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-6789613812237470153</guid><pubDate>Sat, 07 Jan 2012 13:48:00 +0000</pubDate><atom:updated>2012-01-28T05:11:33.528-08:00</atom:updated><title>Instalando NRPE no SlackWare</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e5tCFBti80q5_tsXR75rsHlWeS4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e5tCFBti80q5_tsXR75rsHlWeS4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e5tCFBti80q5_tsXR75rsHlWeS4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e5tCFBti80q5_tsXR75rsHlWeS4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Utilizado os seguintes pacotes do NRPE e Nagios Plugins para serem instalados no Slackware 13.37.0 Kernel&amp;nbsp;2.6.37.6-smp:&lt;br /&gt;
&lt;br /&gt;
nagios-plugins-1.4.15
&lt;a href="http://www.nagios.org/download/plugins"&gt;http://www.nagios.org/download/plugins&lt;/a&gt;
&lt;br /&gt;
nrpe-2.13
&lt;a href="http://sourceforge.net/projects/nagios/files/"&gt;http://sourceforge.net/projects/nagios/files/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Vamos para a instalação:&lt;br /&gt;
&lt;br /&gt;
Descompactando, ajustando, compilando e instalando o nagios plugins:
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# tar -xzf&amp;nbsp;nagios-plugins-1.4.15.tar.gz

# cd nagios-plugins-1.4.15&amp;gt;

# ./configure --prefix=/usr/local/nagios

# make

# make install

&lt;/pre&gt;
&lt;br /&gt;
Descompactando, ajustando, compilando e instalando o NRPE:
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# tar -xzf&amp;nbsp;nrpe-2.13.tar.gz

# cd nrpe-2.13/

# ./configure

# make all

# make install

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Adicione manualmente o user e group nagios, caso a instalação não tenha criados:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# adduser nagios

# groupadd nagios

# usermod -G nagios nagios



&lt;/pre&gt;
Permissão de proprietário e grupo proprietário nagios no diretório abaixo:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#chown nagios.nagios /usr/local/nagios&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalizando a instalação do pacote NRPE:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# make install-plugin

# make install-daemon

# make install-daemon-config



&lt;/pre&gt;
Permissão de proprietário e grupo proprietário nagios no diretório abaixo:
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# chown -R nagios.nagios /usr/local/nagios/libexec

&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /etc/services

nrpe 5666/tcp # NRPE

&lt;/pre&gt;
&lt;br /&gt;
Adicionando o daemon NRPE para ser controlado pelo inetd (tcp wrapper) do Linux:
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /etc/inetd.conf

nrpe &amp;nbsp; &amp;nbsp;stream &amp;nbsp;tcp &amp;nbsp; &amp;nbsp; nowait &amp;nbsp;nagios /usr/sbin/tcpd /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -i

&lt;/pre&gt;
&lt;br /&gt;
Editar /usr/local/nagios/etc/nrpe.cfg e dar as permissões de quem pode se conectar a esse host:&lt;br /&gt;
EXEMPLO:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi&amp;nbsp;/usr/local/nagios/etc/nrpe.cfg

allowed_hosts=127.0.0.1,192.168.9.144,192.168.1.69

&lt;/pre&gt;
&lt;br /&gt;
Especificar também os serviços serão checados na máquina local:&lt;br /&gt;
EXEMPLO:
&lt;br /&gt;
&lt;div style="height: auto; overflow: scroll; width: 440px;"&gt;
&lt;pre class="brush: bash"&gt;# vi&amp;nbsp;/usr/local/nagios/etc/nrpe.cfg




command[check_proc_qmail_supervise_pop3d]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-pop3d"

command[check_proc_qmail_supervise_smtpd]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-smtpd"

command[check_proc_qmail_supervise_imapd]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-imapd"

command[check_proc_qmail_supervise_qmqpd]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-qmqpd"

command[check_proc_qmail_supervise_send]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-send"

&lt;div&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
A maioria dos checks feitos na máquina local exigem privilégios de root, como o daemon NRPE é inicializado com o usuário nagios muitos checks terão saídas negadas pelo SO então utilizar o sudo como &amp;nbsp;solução de contorno liberando o usuários nagios a executar comandos especificados como root. Para isso:&lt;br /&gt;
&lt;br /&gt;
1 - Editar /usr/local/nagios/etc/nrpe.cfg e tirar o comentário da seguinte linha no arquivo, habilitando o uso do sudo pelo NRPE:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /usr/local/nagios/etc/nrpe.cfg

command_prefix=/usr/bin/sudo



&lt;/pre&gt;
2 - Editar /etc/sudores e colocar os comandos que serão executados pelo usuário nagios como se fossem o root executando-os :&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi&amp;nbsp;&amp;nbsp;/etc/sudores

# Nagios

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_qmail_queue

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_procs

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_users

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_load

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_disk

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_swap

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_mem.pl



&lt;/pre&gt;
Reiniciei o NRPE, para isso execute um restart no daemon inetd que controla o daemon do NRPE:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# /etc/rc.d/rc.inetd restart&lt;/pre&gt;
&lt;br /&gt;
NO SERVDIDOR DO NAGIOS TESTE A COMUNICAÇÂO COM O HOST REMOTO:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.65.100&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
PARA HABILITAR E&amp;nbsp;VISUALIZAR&amp;nbsp;O&amp;nbsp;DEBUG DO NRPE&amp;nbsp;&amp;nbsp;UTILIZE O HOW TO ABAIXO:&lt;br /&gt;
&lt;br /&gt;
Editar /usr/local/nagios/etc/nrpe.cfg&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi&amp;nbsp;&amp;nbsp;/usr/local/nagios/etc/nrpe.cfg

debug=1

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Editar /etc/syslog.conf&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi&amp;nbsp;/etc/syslog.conf

####################

# LOG PARA O NRPE

####################

daemon.debug &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/var/log/nrpe



&lt;/pre&gt;
Reiniciei o NRPE:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# /etc/rc.d/rc.inetd restart&lt;/pre&gt;
&lt;br /&gt;
Reload do syslog:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# killall -HUP syslogd&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-6789613812237470153?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/Q0uChWu2RK4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/Q0uChWu2RK4/instalando-nrpe-no-slackware.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2012/01/instalando-nrpe-no-slackware.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-5464469403699831931</guid><pubDate>Tue, 11 Oct 2011 15:04:00 +0000</pubDate><atom:updated>2011-10-11T10:23:24.890-07:00</atom:updated><title>Bela homenagem a Jobs e a importância e consistência do O.S *BSD</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eEB0y3dPoFZi8lKwGpMNgLLIxdo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eEB0y3dPoFZi8lKwGpMNgLLIxdo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eEB0y3dPoFZi8lKwGpMNgLLIxdo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eEB0y3dPoFZi8lKwGpMNgLLIxdo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img alt="20" height="88" src="http://www.freebsdbrasil.com.br/imagens/areas/titulo_20.png" width="555" /&gt;                                      &lt;br /&gt;
&lt;div id="tit_conteudo"&gt;&lt;span style="font-size: large;"&gt;Steve Jobs&lt;/span&gt;&lt;/div&gt;&lt;div id="cont_conteudo"&gt;&lt;div id="lipsum"&gt;&lt;blockquote&gt;&lt;div align="right"&gt;&lt;i&gt;"Nosso marketshare é maior que o da BMW ou da Mercedes ou ainda da   Porsche no mercado automobilístico. O que há de errado em ser a BMW ou a  Mercedes?"&lt;/i&gt; -- Steve Jobs   &lt;/div&gt;&lt;/blockquote&gt;&lt;span class="tit_area2"&gt;Obrigado, Steve, obrigado.&lt;/span&gt;&lt;span class="tit_area2"&gt;&lt;/span&gt; &lt;span class="tit_area2"&gt;&lt;/span&gt; &lt;br /&gt;
&lt;a href="http://www.freebsdbrasil.com.br/fbsdbr_files/Image/corporate/equipe/IMG_0948.jpeg" target="_blank"&gt;&lt;img align="middle" alt="Obrigado, Steve Jobs, obrigado." border="0" height="366" src="http://www.freebsdbrasil.com.br/fbsdbr_files/Image/corporate/equipe/image.jpg" title="Obrigado, Steve Jobs, obrigado." width="490" /&gt;&lt;/a&gt;  &lt;br /&gt;
&amp;nbsp;&lt;span class="tit_area2"&gt;A tecnologia de Steve, FreeBSD &amp;amp; 4.2 BSD&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span class="tit_area2"&gt;&lt;/span&gt; &lt;br /&gt;
&lt;blockquote&gt;Este homem colocou um sistema baseado em FreeBSD no coração de seu tablet, e revolucionou a indústria da tecnologia móvel. &lt;span class="txt_light"&gt;(iPad, iOS = Darwin Embedded = Mach + FreeBSD)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Antes disso, ele revolucionou a indústria da telefonia celular, com um sistema baseado em FreeBSD no coração de seu telefone. &lt;span class="txt_light"&gt;(iPad, iOS = Darwin Embedded = Mach + FreeBSD)&lt;/span&gt;  &lt;br /&gt;
Antes, criou um novo conceito de televisão on-line, que vem  revolucionando este segmento de mercado em regiões do mundo com acesso  persistente a banda larga. Em seu coração, um sistema baseado em  FreeBSD. &lt;span class="txt_light"&gt;(iTV/Apple TV, iOS = Darwin Embedded = Mach + FreeBSD + TinyBSD)&lt;/span&gt;  &lt;br /&gt;
Bem antes, revolucionou a indústria da música, a forma de se consumir e  comercializar música, e no coração de seu tocador de música e loja,  colocou um sistema baseado em FreeBSD. &lt;span class="txt_light"&gt;(iPod, iOS = Darwin Embedded = Mach + FreeBSD)&lt;/span&gt;  &lt;br /&gt;
Antes disso, criou a série de computadores pessoais mais desejado do  mundo, e em seu coração, colocou um sistema baseado em FreeBSD. &lt;span class="txt_light"&gt;(Mac Book Pro, iMacs, Mac OS X = Darwin + Aqua + Quartz + Mach + FreeBSD)&lt;/span&gt;  &lt;br /&gt;
Ainda antes, revolucionou a indústria do cinema de animações gráficas, e  no coração dessa tecnologia colocou um sistema derivado do Mach 2.5 e  do 4.2-BSD. &lt;span class="txt_light"&gt;(NEXTSTEP = Mach 2.5 + 4.2-BSD + 4.4BSD)&lt;/span&gt;  &lt;br /&gt;
Antes disso, teve seu primeiro contato com 4BSD ao criar uma plataforma  computacional superior à que ele mesmo havia criado no passado. &lt;span class="txt_light"&gt;(NEXTSTEP = Mach 2.5 + 4.2-BSD + 4.4BSD)&lt;/span&gt;&lt;span class="txt_light"&gt;&lt;/span&gt;  &lt;/blockquote&gt;Este homem mudou consideravelmente a forma como o mundo cria e consome  música, cinema, comunicação, cultura, livros. Criou a tecnologia e os  produtos mais desejados no mercado contemporâneo. Criou a maior empresa  de capital aberto do mundo. &lt;br /&gt;
E no coração disso tudo... vocês já sabem. &lt;br /&gt;
Por isso, nós, das equipes FreeBSD Brasil LTDA &amp;amp; IDS Tecnologia  prestamos nossa pequena e sincera homenagem, em reconhecimento a vida e  os feitos deste homem. Obrigado, Steve.  &lt;br /&gt;
&lt;div class="tit_area2"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;E mais uma coisa... &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;Foi num NeXT Cube, rodando NEXTSTEP, sistema criado a partir de um  kernel híbrido do Mach 2.5 e 4.2-BSD + 4.4BSD (incluindo, claro, TCP/IP  do 4-BSD) que Tim Berners-Lee criou o primeiro navegador web  (WorldWideWeb era o nome), primeiro servidor web (CERN httpd) e criou a  web (WWW e o W3C) como conhecemos hoje. Até onde Steve não estava  presente, sua obra (e o BSD, claro) fizeram e fazem toda a diferença. &lt;br /&gt;
Mac OS X 10.6 (Snow Leopard) é o primeiro sistema a ter instruções de  kernel massivamente processada por GPU em complemento a CPU. O OpenCL e  processamento GPU, além do Grand Central Dispatch voltam como  contribuição da Apple ao FreeBSD em 2011, no FreeBSD 9 (sistema base),  quase 4 anos depois de incorporado no Mac. Tardio? Pense da seguinte  forma: FreeBSD é o segundo SO a se apoiar em processamento GPU, quase 4  anos depois. O restante do mercado continua correndo atrás,  engatinhando. Em mais 2, 3 anos talvez absorvam mais essa influência da  tecnologia de Steve.  &lt;br /&gt;
Steve se foi, mas seu legado continua. E temos orgulho de enxergar que continua fundado em BSD. &lt;br /&gt;
Passado, presente, e por muitos anos ainda, o futuro. Obrigado Steve, por subir o nível.&lt;br /&gt;
&lt;br /&gt;
Fonte: &lt;a href="http://www.freebsdbrasil.com.br/home.php?area=20&amp;amp;conteudo=53"&gt;http://www.freebsdbrasil.com.br/home.php?area=20&amp;amp;conteudo=53 &lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-5464469403699831931?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/egjaLJ8folk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/egjaLJ8folk/bela-homenagem-jobs-e-importancia-e.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/10/bela-homenagem-jobs-e-importancia-e.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-3923465262922598054</guid><pubDate>Tue, 28 Jun 2011 23:02:00 +0000</pubDate><atom:updated>2011-06-28T16:11:28.992-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">diversos</category><title>Google Social Networking</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T8ZakypNmjq2KRl8V4OoexPCZiw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T8ZakypNmjq2KRl8V4OoexPCZiw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T8ZakypNmjq2KRl8V4OoexPCZiw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T8ZakypNmjq2KRl8V4OoexPCZiw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-size: small;"&gt;Google já iniciou o desenvolvimento do aplicativo de rede social que irá competir com o Facebook; Ele se chama: Google+. Muito desafiador... Tarefa árdua essa eim? Será possivel colocar um aplicativo para disputar com o maior serviço de rede social do mundo, o Facebook? De qualquer forma estou curioso para conhecer o Google+.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://ssl.gstatic.com/s2/oz/intl/pt-BR/images/google+109x34-fa9a11c753b2c23cc507d15d7c2089ab.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://ssl.gstatic.com/s2/oz/intl/pt-BR/images/google+109x34-fa9a11c753b2c23cc507d15d7c2089ab.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;a href="https://plus.google.com/up/start/?sw=1&amp;amp;type=st"&gt;The Google+ project: real life sharing, rethought for the web.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;plus.google.com&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-3923465262922598054?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/D5coiVhvycc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/D5coiVhvycc/google-ja-iniciou-o-desenvolvimento-do.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/06/google-ja-iniciou-o-desenvolvimento-do.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-6584931927773762016</guid><pubDate>Fri, 10 Jun 2011 16:54:00 +0000</pubDate><atom:updated>2011-06-28T10:41:38.558-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">scripts_administrativos</category><title>Trocar UID proprietário de arquivos e pastas em determinados diretórios por um outro UID para ser o novo proprietário desses arquivos encontrados</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2aOBOQWnUdcwHZRUr-G-Ry1-U3A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2aOBOQWnUdcwHZRUr-G-Ry1-U3A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2aOBOQWnUdcwHZRUr-G-Ry1-U3A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2aOBOQWnUdcwHZRUr-G-Ry1-U3A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Pessoal o script abaixo foi feito para alterar o dono de arquivos e pastas em determinados diretórios, o mesmo sairá recursivamente trocando o UID dos arquivos e pastas encontrados, a partir do UID antigo, por um outro UID, definido por você, para que esse seja o novo dono do arquivos e pastas no diretório.&lt;br /&gt;
&lt;br /&gt;
OBS.: UID é uma identificação exclusiva de qualquer usuário no linux, para verificar o id de algum usuário digite:&lt;br /&gt;
&lt;br /&gt;
# id nomeDoUsuário&lt;br /&gt;
&lt;pre class="brush: bash"&gt;root@feigt:/# id leonardoconrado
uid=1018(leonardoconrado) gid=100(users) groups=100(users)
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Exemplo 01: Mudará o dono de todos arquivos e pastas do diretório / que tenham como UID 502 e irá "setar" ou configurar um novo UID dono desses arquivos que será UID 512 e irá também gerar um arquivo de log em /root/debug.txt, para que possamos ver se aconteceu alguma falha na tentativa de troca desses UIDs nos arquivos encontrados, ele também contará quantos arquivos foram encontrados com o velho UID, abaixo script:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#!/bin/bash

# Mudar UID proprietário de arquivos e pastas
# para um novo UID ser o proprietário em determinados
# diretórios
# Por Leonardo Couto Conrado
# Em 06.10.2011 

counter=0

# Encontre em / os arquivos que tenha UID igual à 502
for i in $( find / -uid 502 2&amp;gt;&amp;gt; /dev/null ); do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $i

# Mude o dono desses arquivos para UID 512
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chown -v 512 $i &amp;gt;&amp;gt; /root/debug.txt

# Conte cada arquivo encontrado
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter=`echo "$counter+1"|bc`
done
echo $counter
&lt;/pre&gt;&lt;br /&gt;
Exemplo 02: Mudará o dono de todos arquivos e pastas do diretório /oracle que tenham como UID 501 e irá "setar" ou configurar um novo UID dono desses arquivos que será UID 511 e irá também gerar um arquivo de log em /root/debug.txt, para que possamos ver se aconteceu alguma falha na tentativa de troca desses UIDs nos arquivos encontrados, ele também contará quantos arquivos foram encontrados com o velho UID, abaixo script:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#!/bin/bash

# Mudar UID proprietário de arquivos e pastas
# para um novo UID ser o proprietário em determinados
# diretórios
# Por Leonardo Couto Conrado
# Em 06.10.2011 

counter=0

# Encontre em / os arquivos que tenha UID igual à 501
for i in $( find /oracle -uid 501 2&amp;gt;&amp;gt; /dev/null ); do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $i

# Mude o dono desses arquivos para UID 511
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chown -v 511 $i &amp;gt;&amp;gt; /root/debug.txt

# Conte cada arquivo encontrado
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter=`echo "$counter+1"|bc`
done
echo $counter
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-6584931927773762016?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/WF1xFtMQP6A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/WF1xFtMQP6A/trocar-uid-proprietario-de-arquivos-e.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/06/trocar-uid-proprietario-de-arquivos-e.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-6556476595275014470</guid><pubDate>Wed, 04 May 2011 14:19:00 +0000</pubDate><atom:updated>2011-05-04T11:51:08.664-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">diversos</category><title>Já se foram os últimos blocos do velho e bom IPv4, que até hoje nos foi muito útil...</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VhSOVdLaZ9VLk7OkT1STvxCCcEg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VhSOVdLaZ9VLk7OkT1STvxCCcEg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VhSOVdLaZ9VLk7OkT1STvxCCcEg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VhSOVdLaZ9VLk7OkT1STvxCCcEg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;O competente ancião, protocolo IPv4, atualmente responsável por carregar todas as nossas informações na rede mundial, a internet, está se aposentando e delegando a tarefa para o jovem e aprimorado protocolo IPv6...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-TsiuCUUNKl4/TcGf9EQjGNI/AAAAAAAAACQ/U7i31Hde_sw/s1600/ipv6-ipv4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-TsiuCUUNKl4/TcGf9EQjGNI/AAAAAAAAACQ/U7i31Hde_sw/s1600/ipv6-ipv4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Saiba mais: &lt;a href="http://www.tiespecialistas.com.br/2011/02/o-fim-do-ipv4/"&gt;&lt;b&gt;O fim do IPv4&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-6556476595275014470?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/SxB8SBmV4Ck" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/SxB8SBmV4Ck/ja-se-foram-os-ultimos-blocos-do-velho.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-TsiuCUUNKl4/TcGf9EQjGNI/AAAAAAAAACQ/U7i31Hde_sw/s72-c/ipv6-ipv4.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/05/ja-se-foram-os-ultimos-blocos-do-velho.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-2864761044089142506</guid><pubDate>Fri, 11 Mar 2011 11:37:00 +0000</pubDate><atom:updated>2011-03-11T03:41:48.695-08:00</atom:updated><title>Linux Magazine Community Edition 76 baixe já a sua</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7XjutJu_VzTwVOZ5WEwl5GdW7WU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7XjutJu_VzTwVOZ5WEwl5GdW7WU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7XjutJu_VzTwVOZ5WEwl5GdW7WU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7XjutJu_VzTwVOZ5WEwl5GdW7WU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Já está no ar a Linux Magazine 76 Community Edition.&lt;br /&gt;
&lt;br /&gt;
Confira nesta edição os principais assuntos da Linux Magazine de março (Monitoramento e segurança) e leia artigos completos sobre ferramentas de backup para auxiliar na prevenção de falhas e perdas de dados e proteção de servidores web Apache com o módulo mod_security.&lt;br /&gt;
&lt;br /&gt;
A Linux Magazine Community Edition surgiu em agosto de 2009. Trata-se de um arquivo em PDF com 30 páginas do conteúdo original da Linux Magazine do mês, disponível para download uma semana antes do lançamento da revista nas bancas – exclusivo para assinantes e cadastrados na newsletter.&lt;br /&gt;
&lt;br /&gt;
O sumário da Community Edition contém a relação de todas as matérias da revista. Algumas são de livre acesso e outras são artigos que podem ser adquiridos pelo site. O material de livre acesso representa 30% do conteúdo da edição do mês, uma prática já adotada pela Linux Magazine. Pode-se navegar pelo documento, acessando o material gratuito ou adquirindo o material exclusivo em nosso site. Basta clicar para ser levado à página do artigo correspondente. Tudo isso antes mesmo de a revista chegar às bancas ou ser publicada no site.&lt;br /&gt;
&lt;br /&gt;
A melhor parte é que você pode baixar o arquivo e enviar para quem você quiser. Por meio da licença Creative Commons, a Community Edition pode ser livremente copiada e distribuída. Assim, baixe, copie, envie para os seus amigos e faça parte de uma comunidade que não para de crescer. Participe de forma ativa na divulgação da tecnologia que mais traz benefícios para as pessoas e para o mercado em geral.&lt;br /&gt;
&lt;br /&gt;
Quando a revista chegar às bancas, a Community Edition será disponibilizada gratuitamente para download para qualquer visitante do site. Mas você, assinante da newsletter, tem a exclusividade de acesso em primeira mão.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM76_capaCE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&amp;nbsp;&lt;img border="0" height="240px" src="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM76_capaCE.png" width="185px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://www.linuxmagazine.com.br/images/uploads/pdf_aberto/LM76_CE.pdf"&gt;Baixe já a sua!&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-2864761044089142506?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/TKgsGreS6jQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/TKgsGreS6jQ/linux-magazine-community-edition-76.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/03/linux-magazine-community-edition-76.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-8448686417589647641</guid><pubDate>Thu, 24 Feb 2011 11:56:00 +0000</pubDate><atom:updated>2011-02-24T09:50:17.662-08:00</atom:updated><title>Editando arquivo CGI(status.cgi ) do Nagios realizando custom</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MA6ogQccsrasJDnEuEF9PrCBEq0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MA6ogQccsrasJDnEuEF9PrCBEq0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MA6ogQccsrasJDnEuEF9PrCBEq0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MA6ogQccsrasJDnEuEF9PrCBEq0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Pessoal recentemente surgiu a necessidade de editar um CGI do Nagios, especificamente o arquivo status.cgi, a carência era adicionar mais uma coluna na tabela da página Problems &gt;&gt; Services(http://servidorNagios/nagios/cgi-bin/status.cgi?host=all&amp;servicestatustypes=28) tal coluna deveria conter a descrição/alias dos hosts. A intenção é para torna compreensivel, para o pessoal não técnico, o host que está apresentando problemas já que teremos uma clouna que informa a descrição do host e não somente a sua abreviatura(Hostname). Pois bem, o bom é que vivemos no mundo open source e sabendo-se disso temos acesso aos fontes dos programas, utilizando-se dessa flexibilidade podemos deixar o programa do nosso jeito, que beleza eim?! Nota 1000 para o GNU e viva ao Linux!! Pois bem, vamos meter a mão na massa: &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;OBS.: &lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
- Utilizado para esse artigo o CentOS 5.5 e o Nagios Core 3.2.3; &lt;br /&gt;
- Você deve compilar o código status.c na máquina que realmente roda o Nagios, tentei editar e compilar o status.c em outra máquina com o mesmo S.O e a mesma versão do Nagios e depois copiei o status.cgi já compilado para outra máquina de produção, porém, não rolou dava erro então compile o nagios na máquina que realmente utilizará os CGI; &lt;br /&gt;
&lt;br /&gt;
1 - Primeiramente vá ao site da Nagios e baixe o source do mesmo; &lt;br /&gt;
&lt;br /&gt;
2 - Descompacte-o; &lt;br /&gt;
&lt;br /&gt;
3 - Vá a pasta /nagios-3.2.3/cgi e edite o status.c; &lt;br /&gt;
&lt;br /&gt;
4 - Foi necessário adicionar somente duas linhas no arquivo, abaixo segue trechos do arquivo numerado e com comentários sobre as linhas adicionadas: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /nagios-3.2.3/cgi/status.c
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Primeira parte:&lt;/b&gt;&lt;br /&gt;
&lt;div style="height: auto; width: 440px; overflow: scroll;"&gt;&lt;pre class="brush: bash"&gt;&lt;!--
1372         /* the main list of services */
1373         printf("&lt;table BORDER=0 width=100%% CLASS='status'&gt;\n"); 
1374         printf("
&lt;tr&gt;\n"); 
1375 
1376         printf("&lt;th CLASS='status'&gt;Host&amp;nbsp;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='Sor        t by host name (ascending)' TITLE='Sort by host name (ascending)'&gt;&lt;/A&gt;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC        ='%s%s' BORDER=0 ALT='Sort by host name (descending)' TITLE='Sort by host name (descending)'&gt;&lt;/A&gt;&lt;/TH&gt;",temp_url,SORT        _ASCENDING,SORT_HOSTNAME,url_images_path,UP_ARROW_ICON,temp_url,SORT_DESCENDING,SORT_HOSTNAME,url_images_path,DOWN_AR        ROW_ICON); 
1377 
1378 
1379 
1380 
1381         printf("&lt;th CLASS='status'&gt;Service&amp;nbsp;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='        Sort by service name (ascending)' TITLE='Sort by service name (ascending)'&gt;&lt;/A&gt;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'        &gt;&lt;img SRC='%s%s' BORDER=0 ALT='Sort by service name (descending)' TITLE='Sort by service name (descending)'&gt;&lt;/A&gt;&lt;/TH&gt;        ",temp_url,SORT_ASCENDING,SORT_SERVICENAME,url_images_path,UP_ARROW_ICON,temp_url,SORT_DESCENDING,SORT_SERVICENAME,ur        l_images_path,DOWN_ARROW_ICON); 
1382 
1383         printf("&lt;th CLASS='status'&gt;Status&amp;nbsp;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='S        ort by service status (ascending)' TITLE='Sort by service status (ascending)'&gt;&lt;/A&gt;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=        %d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='Sort by service status (descending)' TITLE='Sort by service status (descending)'&gt;&lt;/        A&gt;&lt;/TH&gt;",temp_url,SORT_ASCENDING,SORT_SERVICESTATUS,url_images_path,UP_ARROW_ICON,temp_url,SORT_DESCENDING,SORT_SERVI        CESTATUS,url_images_path,DOWN_ARROW_ICON); 
1384 
1385         printf("&lt;th CLASS='status'&gt;Last Check&amp;nbsp;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 AL        T='Sort by last check time (ascending)' TITLE='Sort by last check time (ascending)'&gt;&lt;/A&gt;&lt;a HREF='%s&amp;sorttype=%d&amp;sorto        ption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='Sort by last check time (descending)' TITLE='Sort by last check time (descend        ing)'&gt;&lt;/A&gt;&lt;/TH&gt;",temp_url,SORT_ASCENDING,SORT_LASTCHECKTIME,url_images_path,UP_ARROW_ICON,temp_url,SORT_DESCENDING,SO        RT_LASTCHECKTIME,url_images_path,DOWN_ARROW_ICON); 
1386 
1387         printf("&lt;th CLASS='status'&gt;Duration&amp;nbsp;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT=        'Sort by state duration (ascending)' TITLE='Sort by state duration (ascending)'&gt;&lt;/A&gt;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoptio        n=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='Sort by state duration time (descending)' TITLE='Sort by state duration time (des        cending)'&gt;&lt;/A&gt;&lt;/TH&gt;",temp_url,SORT_ASCENDING,SORT_STATEDURATION,url_images_path,UP_ARROW_ICON,temp_url,SORT_DESCENDIN        G,SORT_STATEDURATION,url_images_path,DOWN_ARROW_ICON); 
1388 
1389         printf("&lt;th CLASS='status'&gt;Attempt&amp;nbsp;&lt;a HREF='%s&amp;sorttype=%d&amp;sortoption=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='        Sort by current attempt (ascending)' TITLE='Sort by current attempt (ascending)'&gt;&lt;/A&gt;&lt;a HREF='%s&amp;sorttype=%d&amp;sortopti        on=%d'&gt;&lt;img SRC='%s%s' BORDER=0 ALT='Sort by current attempt (descending)' TITLE='Sort by current attempt (descending        )'&gt;&lt;/A&gt;&lt;/TH&gt;",temp_url,SORT_ASCENDING,SORT_CURRENTATTEMPT,url_images_path,UP_ARROW_ICON,temp_url,SORT_DESCENDING,SORT        _CURRENTATTEMPT,url_images_path,DOWN_ARROW_ICON); 
1390 
1391         printf("&lt;th CLASS='status'&gt;Status Information&lt;/TH&gt;\n"); 
1392 //############################################################### 
1393 //# Add colunm Alias/Description inside tables of the status.cgi 
1394 //# By Leonardo Couto Conrado 
1395 //# On February 24, 2011 
1396 //############################################################### 
1397 //#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
1398         printf("&lt;th CLASS='status'&gt;DESCRIPTION&lt;/TH&gt;\n"); 
1399 //#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
1400         printf("&lt;/TR&gt;
\n"); 
--&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;b&gt;Segunda parte:&lt;/b&gt; &lt;br /&gt;
&lt;div style="height: auto; width: 540px; overflow: scroll;"&gt;&lt;pre class="brush: bash"&gt;&lt;!--
1796                         /* the rest of the columns... */
1797                         printf("&lt;td CLASS='status%s'&gt;%s&lt;/TD&gt;\n",status_class,status);
1798                         printf("&lt;td CLASS='status%s' nowrap&gt;%s&lt;/TD&gt;\n",status_bg_class,date_time);
1799                         printf("&lt;td CLASS='status%s' nowrap&gt;%s&lt;/TD&gt;\n",status_bg_class,state_duration);
1800                         printf("&lt;td CLASS='status%s'&gt;%d/%d&lt;/TD&gt;\n",status_bg_class,temp_status-&gt;current_attempt,temp_        status-&gt;max_attempts);
1801
1802 printf("&lt;td CLASS='status%s' valign='center'&gt;",status_bg_class); &lt;br /&gt;
1803                         printf("%s&amp;nbsp;",(temp_status-&gt;plugin_output==NULL)?"":html_encode(temp_status-&gt;plugin_outpu        t,TRUE)); &lt;br /&gt;
1804 //############################################################################ &lt;br /&gt;
1805 //# Add data in colunm Alias/Description inside tables of the status.cgi &lt;br /&gt;
1806 //# By Leonardo Couto Conrado &lt;br /&gt;
1807 //# On February 24, 2011 &lt;br /&gt;
1808 //############################################################################ &lt;br /&gt;
1809 //#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
1810                         printf("&lt;td CLASS='status%s'&gt;%s&lt;/TD&gt;\n",status_bg_class,temp_host-&gt;alias);&lt;br /&gt;
1811 //#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
1812                         /* &lt;br /&gt;
1813                         if(enable_splunk_integration==TRUE) &lt;br /&gt;
1814                                 display_splunk_service_url(temp_service); &lt;br /&gt;
1815                         */ &lt;br /&gt;
1816                         printf("&lt;/TD&gt;\n");
1817
1818                         printf("&lt;/TR&gt;
\n");
1819
1820                         last_host=temp_status-&gt;host_name;
1821                         }
1822
1823                 }
1824
1825         printf("&lt;/TABLE&gt;\n");
--&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Após isso será necessário configurar, compilar e instalar o nagios para ele recompilar os .CGIs, para fazer esta tarefa tomei como referência o How to de instalação do Nagios.org, faremos conforme abaixo:&lt;br /&gt;
&lt;br /&gt;
1 - Em /nagios-3.2.3(A pasta que tem os fontes) você executará 3 comandos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./configure --with-command-group=nagcmd
&lt;/pre&gt;&lt;pre class="brush: bash"&gt;make all
&lt;/pre&gt;&lt;pre class="brush: bash"&gt;make install
&lt;/pre&gt;&lt;br /&gt;
Pronto!&lt;br /&gt;
E agora vamos ver se a nossa coluna apareceu no services.cgi do Nagios, acesse o seu nagios através do browser:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LQ-5FKIRrNo/TWaZ724OTZI/AAAAAAAAACI/WXeyb8ID5fo/s1600/nova_coluna_nagios.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="288" width="400" src="http://2.bp.blogspot.com/-LQ-5FKIRrNo/TWaZ724OTZI/AAAAAAAAACI/WXeyb8ID5fo/s400/nova_coluna_nagios.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voilà!! Customizamos o Nagios!! E Viva o mundo open source!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-8448686417589647641?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/2ygH8c8gxKc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/2ygH8c8gxKc/editando-arquivos-cgi-do-nagios.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-LQ-5FKIRrNo/TWaZ724OTZI/AAAAAAAAACI/WXeyb8ID5fo/s72-c/nova_coluna_nagios.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/02/editando-arquivos-cgi-do-nagios.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-3874399656358477433</guid><pubDate>Thu, 10 Feb 2011 11:29:00 +0000</pubDate><atom:updated>2011-02-24T06:51:16.891-08:00</atom:updated><title>Extendendo partição raiz / (VolGroup00) com LVM</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_UB4mxjvybc3h3ffsGVx18J9VmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UB4mxjvybc3h3ffsGVx18J9VmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_UB4mxjvybc3h3ffsGVx18J9VmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UB4mxjvybc3h3ffsGVx18J9VmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;É normal que o seu sistema Linux com o passar do tempo consuma o filesystem, com aplicativos instalados e logs dos aplicativos que são gerados continuamente e vão logicamente consumido o seu disco, e como consequência disso ficamos sem espaço disponivel na partição root ou /. Existe uma maneira rápida, simples e transparente de incrementarmos mais espaço nessa partição, utilizando para isso a ferramenta LVM, onde podemos realizar esse ajuste de espaço se e somente o seu S.O foi instalado com LVM e foi configurado para a partição / utilizar o esquema de VG(Volume Group) da LVM, que geralmente é o VolGroup00,  então isso significa que você porderá extender a sua partição.&lt;br /&gt;
&lt;br /&gt;
Para descobrir essas informações no seu S.O utilize o seguinte comando:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
25G  5.6G   18G  25% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                 502M     0  502M   0% /dev/shm
/dev/mapper/VolGroupOracle-LogVolOracle
108G   29G   74G  28% /oracle
/dev/hdc              3.3G  3.3G     0 100% /mnt/dvd
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Perceba que o filesystem da sua partição / é: &lt;span style="font-weight:bold;"&gt;/dev/mapper/VolGroup00-LogVol00&lt;/span&gt; onde VolGroup00 é o Grupo de volumes, é ele quem extenderemos primeiramente, pois, o nosso volume lógico LogVol00, que é a partição /, é membro deste grupo. Logo em seguida após extendermos o Grupo lógico VolGroup00 extenderemos nosso Volume lógico LogVol00 que como já foi dito é a nossa partição root.&lt;br /&gt;
&lt;br /&gt;
Então vamos lá:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;Resumo da tarefa a ser realizada:&lt;/span&gt; Para poder extender um grupo lógico você deverá arranjar espaço de algum lugar, com LVM geralmente colocamos um novo disco rígido no servidor e após isso mudamos a tabela de partição deste novo disco para o tipo 8e(Linux LVM). Em seguida criamos um Phisical Volume a partir deste disco recém adicionado, PV ou phisical volume é um disco lógico utlizado pelo LVM. Criado o PV, extenderemos o nosso VG(Volume Group) que no nosso caso será o VolGroup00. Logo em seguida após extender o VG iremos extender o LV(Logical Volume) desejado ou em outras palavras a partição / e para finalizar iremos passar para o S.O a informação que extendemos um filesystem dele com o comando resize2fs.&lt;br /&gt;
&lt;br /&gt;
Verifique o nome do dispositivo que foi colocado para seu HD recém adicionado:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#fdsik -l
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdd doesn't contain a valid partition table
&lt;/pre&gt;&lt;br /&gt;
O dispositivo /dev/sdd está sem tabela de partição criada. Então iremos criar e coloca-la como tipo 8e(Linux LVM):&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
&lt;/pre&gt;&lt;br /&gt;
Partição criada:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#fdisk -l /dev/sdd
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         130     1044193+  8e  Linux LVM
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Iremos agora para a parte do LVM, primeiramente criaremos um Phisical Volume(PV) com a partição que foi criada:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Agora que já temos o PV iremos extender um Volume Group, que no nosso caso é grupo de volumes que contém a partição raiz / normalmente é chamado de VolGroup00, se não saber qual o nome do grupo der o comando abaixo:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
25G  3.7G   20G  17% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/mapper/VolGroupOracle-LogVolOracle
206G  188M  196G   1% /oracle
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Identificado o Volume Group que contém a sua partição /, então, iremos extender esse VG passando para ele o dispositivo que contém o espaço livre, ou seja, o disco rigido recém adicionado na máquina:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#vgextend VolGroup00 /dev/sdd1
Volume group "VolGroup00" successfully extended
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Pronto com o grupo já extendido vamos ver quanto de espaço livre este VG possui agora:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#vgdisplay VolGroup00
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 8.69 GB
PE Size 32.00 MB
Total PE 278
Alloc PE / Size 248 / 7.75 GB
Free PE / Size 30 / 960.00 MB
VG UUID Ll4Bg4-jIFV-lfut-z4Ae-JTfH-0Hzp-Zf9RjM
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Agora sim iremos extender a nossa partição ou volume raiz / utilize o parâmetro Free PE do comando dado acima ele é o indice de espaço livre:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#lvextend -l+30 /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 8.19 GB
Logical volume LogVol00 successfully resized
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Pronto! Agoramos que extendemos o nosso VG do LVM iremos passar esta informação para o S.O, pois, ainda não foi extendido o disco fisico propriamente dito, para extende-lo utilize o comando resize2fs:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.40.2 (12-Jul-2007)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing
required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2146304 (4k)
blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 2146304 blocks long.
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Pronto!!!! Se tudo correu bem você está agora com espaço livre em seu disco e na sua partição raiz /.&lt;br /&gt;
Simples!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-3874399656358477433?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/UypuzfN8GwQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/UypuzfN8GwQ/extendendo-particao-volgroup00-com-lvm.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/02/extendendo-particao-volgroup00-com-lvm.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-2248218534607601022</guid><pubDate>Thu, 10 Feb 2011 11:28:00 +0000</pubDate><atom:updated>2011-02-10T03:28:27.114-08:00</atom:updated><title>Linux Magazine Community Edition 75 baixe já a sua Linux Magazine 75 Community Edition!</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E4I2VAMi4QydUvHl0uORsEnbCKc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E4I2VAMi4QydUvHl0uORsEnbCKc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E4I2VAMi4QydUvHl0uORsEnbCKc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E4I2VAMi4QydUvHl0uORsEnbCKc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/capa_75_CE.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 185px; height: 240px;" src="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/capa_75_CE.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;Já está no ar a Linux Magazine 75 Community Edition.&lt;div&gt; &lt;p&gt;Confira nesta edição os principais assuntos da Linux Magazine de  fevereiro (Android) e leia um artigo completíssimo sobre programação  Palm para webOS, poderoso sistema móvel que pretende conquistar posições  no mercado. Leia ainda um completo tutorial sobre SystemTap.&lt;/p&gt; &lt;/div&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://www.linuxmagazine.com.br/lm/noticia/linux_magazine_community_edition_73_baixe_ja_a_sua"&gt;&lt;/a&gt;&lt;a href="http://www.linuxmagazine.com.br/images/uploads/pdf_aberto/LM_CE_75.pdf"&gt;Baixe já a sua!&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-2248218534607601022?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/TNdsNa5mrSA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/TNdsNa5mrSA/linux-magazine-community-edition-75.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/02/linux-magazine-community-edition-75.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-5943756736663949577</guid><pubDate>Thu, 13 Jan 2011 11:14:00 +0000</pubDate><atom:updated>2011-02-10T03:27:43.382-08:00</atom:updated><title>Linux Magazine Community Edition 73 baixe já a sua Linux Magazine 73 Community Edition!</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EfDhix_XK9KrN7Io6FP7tuMl9oM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EfDhix_XK9KrN7Io6FP7tuMl9oM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EfDhix_XK9KrN7Io6FP7tuMl9oM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EfDhix_XK9KrN7Io6FP7tuMl9oM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM73_capinhaCE.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 185px; height: 240px;" src="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM73_capinhaCE.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/capa_75_CE.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;Já está no ar a Linux Magazine 73 Community Edition.&lt;div&gt; &lt;p&gt;Confira nesta edição os principais assuntos da Linux Magazine de  fevereiro (Android) e leia um artigo completíssimo sobre programação  Palm para webOS, poderoso sistema móvel que pretende conquistar posições  no mercado. Leia ainda um completo tutorial sobre SystemTap.&lt;/p&gt; &lt;/div&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://www.linuxmagazine.com.br/images/uploads/pdf_aberto/LM_CE_75.pdf"&gt;&lt;/a&gt;&lt;a href="http://www.linuxmagazine.com.br/images/uploads/pdf_aberto/LM_73_CE.pdf"&gt;Baixe já a sua!&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-5943756736663949577?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/4BQ6eNpYUOY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/4BQ6eNpYUOY/linux-magazine-community-edition-73.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/01/linux-magazine-community-edition-73.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-2512262581111752061</guid><pubDate>Thu, 13 Jan 2011 11:02:00 +0000</pubDate><atom:updated>2011-01-13T03:14:19.893-08:00</atom:updated><title>Baixe já a sua Linux Magazine Community Edition 74</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/puqmAHHey0Mf9fuD35NlqNft5cU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/puqmAHHey0Mf9fuD35NlqNft5cU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/puqmAHHey0Mf9fuD35NlqNft5cU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/puqmAHHey0Mf9fuD35NlqNft5cU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM_74_capinha_CE.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 185px; height: 249px;" src="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM_74_capinha_CE.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;PT-BR&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Tabela normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin:0cm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt; &lt;p&gt;Já está no ar a Linux Magazine 74 Community Edition.&lt;/p&gt; &lt;p&gt;Confira nesta edição os principais assuntos da Linux Magazine de  janeiro (Interoperabilidade) e leia a terceira parte do tutorial de  Asterisk, um artigo de programação completo sobre trabalhar com pipes em  shell scrip e um artigo sobre como monitorar os daemons do seu sistema.&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://www.linuxmagazine.com.br/lm/noticia/linux_magazine_community_edition_74_baixe_ja_a_sua"&gt;Baixe já a sua!&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-2512262581111752061?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/akOZfHScgjI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/akOZfHScgjI/baixe-ja-sua-linux-magazine-community.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2011/01/baixe-ja-sua-linux-magazine-community.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-38765007560635877</guid><pubDate>Thu, 11 Nov 2010 14:30:00 +0000</pubDate><atom:updated>2011-01-13T04:50:28.338-08:00</atom:updated><title>Baixe já a sua Linux Magazine Community Edition 72</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/06wqIoQg5WrUnv_oWI7Y4_0pwK4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/06wqIoQg5WrUnv_oWI7Y4_0pwK4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/06wqIoQg5WrUnv_oWI7Y4_0pwK4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/06wqIoQg5WrUnv_oWI7Y4_0pwK4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM72_CE_capinha.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 185px; height: 249px;" src="http://www.linuxmagazine.com.br/images/uploads/mags/lm/covers/LM72_CE_capinha.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aí Galera irei começar a disponibilizar aqui no blog link para download da revista Linux Magazine as edições oferecidas para a comunidade Linux quando a mesma for liberada.&lt;br /&gt;&lt;br /&gt;Já está no ar a Linux Magazine 72 Community Edition. Confira nesta edição os principais assuntos da Linux Magazine de novembro (Descomplicamos o VoIP) e leia um artigo completo sobre autenticação de usuários com PAM, e uma análise sobre TeamViewer, ferramenta para controle remoto gráfico.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Abaixo segue link da edição 72 oferecida para a community:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.linuxmagazine.com.br/lm/noticia/linux_magazine_community_edition_72_baixe_ja_a_sua"&gt;&lt;b&gt;Baixe já a sua! &lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-38765007560635877?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/_73xI8abwog" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/_73xI8abwog/baixe-ja-sua-linux-magazine-community.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/11/baixe-ja-sua-linux-magazine-community.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-3282506809566869986</guid><pubDate>Wed, 10 Nov 2010 16:52:00 +0000</pubDate><atom:updated>2010-11-10T16:56:10.455-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">scripts_administrativos</category><title>Shell scripting</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fxbMNwLzZHj-BoVeY37aqd6JbRQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fxbMNwLzZHj-BoVeY37aqd6JbRQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fxbMNwLzZHj-BoVeY37aqd6JbRQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fxbMNwLzZHj-BoVeY37aqd6JbRQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-weight:bold;"&gt;Shell script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Shell script é uma linguagem de script usada em vários sistemas operacionais derivados do UNIX. O shell script é batizado com este nome devido a ele ser um arquivo em texto plano, ou seja, legível para uma pessoa interpretar as sua linhas de comandos que segue a forma de um &lt;span style="font-weight:bold;"&gt;script&lt;/span&gt;, ou seja, intruções são executadas passo à passo além disso este arquivo é colocado como um tipo de arquivo executável, e o &lt;span style="font-weight:bold;"&gt;Shell &lt;/span&gt;é o interpretador de comandos dos sistemas Unix-Like. O shell é aquele que aparece logo após digitar-se a senha do usuário e entrar na famosa tela preta que espera ansiosamente por algum comando para ele poder executar. Essa é a sua função: esperar e executar. Cada comando digitado é lido, verificado, interpretado e enviado ao sistema operacional para ser de fato executado. Um exemplo de interpretador de comandos é o bash, usado na grande maioria das distribuições GNU/Linux. O shell é a ligação entre o usuário e o kernel. O kernel é quem acessa os equipamentos(hardware) da máquina, como disco rígido, placa de vídeo e modem.&lt;br /&gt;&lt;br /&gt;A maior parte dos usuários classificam shell script como uma linguagem de fácil aprendizado. O primeiro passo é saber o que se deseja fazer, então, ver qual o código que executa este comando em shell e aí criar, basta escrever o código em algum editor de texto e salvar. Depois de salvo você deve coloca-lo como arquivo executável fazendo desta forma:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;chmod +x "Nome do arquivo, sem aspas"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Depois de coloca-lo como executável, executamos o arquivo, dessa forma:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;./"Nome do arquivo, sem aspas"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para exibir um manual do bash ou mesmo do comando 'chmod', digite na linha de comando &lt;pre class="brush: bash"&gt;man bash&lt;/pre&gt; ou &lt;pre class="brush: bash"&gt;man chmod&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;É possível executar o arquivo mesmo sem modificar a permissão de execução, por exemplo, se for um arquivo escrito para ser executado pelo bash, usar:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;sh ./"Nome do arquivo, sem aspas"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;FONTE: &lt;a href="http://pt.wikipedia.org/wiki/Shell_script"&gt;http://pt.wikipedia.org/wiki/Shell_script&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Abaixo temos alguns links para o download de livros sobre shell scripting que serão bastante úteis para aqueles que querem aprender ou aprimorar o seu conhecimento sobre shell script:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://tips-linux.net/en/content/pro-bash-programming"&gt;http://tips-linux.net/en/content/pro-bash-programming&lt;/a&gt; &lt;br /&gt;- &lt;a href="http://tips-linux.net/en/content/expert-shell-scripting"&gt;http://tips-linux.net/en/content/expert-shell-scripting&lt;/a&gt; &lt;br /&gt;- &lt;a href="http://tips-linux.net/en/content/beginning-linux-command-line"&gt;http://tips-linux.net/en/content/beginning-linux-command-line&lt;/a&gt; &lt;br /&gt;- &lt;a href="http://tips-linux.net/en/content/bash-pocket-reference"&gt;http://tips-linux.net/en/content/bash-pocket-reference&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://tips-linux.net/en/content/linux-command-line-and-shell-scripting-bible"&gt;http://tips-linux.net/en/content/linux-command-line-and-shell-scripting-bible&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agradecimento ao &lt;a href="http://tips-linux.net"&gt;tips-linux.net&lt;/a&gt; : Compartilhando conhecimento; Neste site você encontrará dicas, e-books, tutoriais, Linux Commands, Softwares, Drivers e muito mais spbre o mundo Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-3282506809566869986?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/qQ61ZEqBJUk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/qQ61ZEqBJUk/shell-script-shell-script-e-uma.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/11/shell-script-shell-script-e-uma.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-8100367821147217979</guid><pubDate>Fri, 22 Oct 2010 13:32:00 +0000</pubDate><atom:updated>2010-10-24T07:14:15.035-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">servicos_de_rede</category><title>Switch Dell 6024F - TRAPS e SNMP Query funcionar mutuamente</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0MAig4WLLSTVkMzzB6Y6WiXCPv4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0MAig4WLLSTVkMzzB6Y6WiXCPv4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0MAig4WLLSTVkMzzB6Y6WiXCPv4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0MAig4WLLSTVkMzzB6Y6WiXCPv4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Perdi um bom tempo com o switch Dell 6024F, pois, o mesmo não aceitava as configurações de traps e snmp query para trabalharem mutuamente no switch, pesquisei muito na internet e não achei nada e por esse motivo posto aqui para quem estiver passando pela mesma situação. O problema foi que quando eu tentava configurar o switch, a partir da console WEB, para habilitar os serviços de TRAPS e SNMP o equipamento ficava bugado não funcionava de hipotese alguma essas funções mencionadas acima. O problema foi resolvido quando tentei configura-lo a partir da console CLI(Linha de Comando) do equipamento:&lt;br /&gt;Habilite a SNMP Query através da CLI:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;snmp-server community public ro 172.16.0.203 view default type router&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Onde:&lt;br /&gt;172.16.0.203 - é o computador que tem permissão para executar query na MIB do switch;&lt;br /&gt;&lt;br /&gt;Depois é só habilitar pela console WEB o envio de TRAPS e agora o switch trabalhrá normalmente com ambos os serviços habilitados.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-8100367821147217979?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/vlvQAT9DzWU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/vlvQAT9DzWU/switch-dell-6024f.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/10/switch-dell-6024f.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-4561622545765762270</guid><pubDate>Thu, 21 Oct 2010 20:40:00 +0000</pubDate><atom:updated>2012-01-09T14:10:58.173-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">servicos_de_rede</category><title>IPFW - Balanceamento de tráfego com dois links WAN usando o IPFW - FreeBSD</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WNrc_YnUS-u2a5Yrap8Di5oIpK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WNrc_YnUS-u2a5Yrap8Di5oIpK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WNrc_YnUS-u2a5Yrap8Di5oIpK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WNrc_YnUS-u2a5Yrap8Di5oIpK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="height: auto; width: 440px; overflow: scroll;"&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;###########################################################################&lt;br /&gt;# Delete todas as regras do IPFW, zera toda tabela de regras.&lt;br /&gt;###########################################################################&lt;br /&gt;/sbin/ipfw -f flush                     &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###########################################################################&lt;br /&gt;# Carregar duas instâncias do NATD, uma para cada interface WAN.&lt;br /&gt;###########################################################################&lt;br /&gt;/sbin/natd -u -dynamic -interface re0 -p 8668 &lt;br /&gt;/sbin/natd -u -dynamic -interface re1 -p 8669&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###########################################################################&lt;br /&gt;# Regra number 0001: De acordo com o pacote que estiver passando no momento pelo&lt;br /&gt;# gateway, o IPFW primeiramente checará a tabela de sessão(que é criada&lt;br /&gt;# dinamicamente se você adicionar o parâmetro keep-state na regra que queira &lt;br /&gt;# torna-la dinâmica, veremos abaixo) dessa forma ele verifica se já não existe uma&lt;br /&gt;# regra dinâmica que se aplique ao pacote passante, ou seja, aqui estamos utlizando &lt;br /&gt;# o firewall no modo stateful.&lt;br /&gt;###########################################################################&lt;br /&gt;ipfw add 0001 check-state&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###########################################################################&lt;br /&gt;# Regra number 2000 e 2050: Definem as rotas para as intâncias do NATD &lt;br /&gt;# criadas acima. Ou seja, aqui setamos para que ocorra NAT nos pacotes &lt;br /&gt;# que passarem tanto pela interface re0 quanto pela interface re1.&lt;br /&gt;###########################################################################&lt;br /&gt;ipfw add 2000 divert 8668 ip from any to any in via re0&lt;br /&gt;ipfw add 2050 divert 8669 ip from any to any in via re1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###########################################################################&lt;br /&gt;# Regra number 2100: A palavra-chave desta regra é o cara que tem maior &lt;br /&gt;# responsabilidade sobre todo o balanceamento de tráfego, este cara é o parâmetro&lt;br /&gt;# prob, o seu valor varia de 0 a 1 e diz qual a probabilidade de executar tal regra.&lt;br /&gt;# No caso da regra number 2100, informamos que 50%(0.5) do tráfego utilizando &lt;br /&gt;# qualquer protocolo que seja IP(ip) de origem(from) 192.168.33.0/24 com destino(to) &lt;br /&gt;# a qualquer lugar saindo (out) por alguma interface do gateway será pulada (skipto)&lt;br /&gt;# para ser executada a partir da regra number 2200 em diante e além disso &lt;br /&gt;# colocaremos esta regra na tabela de sessão com o parametro keep-state. Resumindo, &lt;br /&gt;# estaremos colocando 50% do tráfego para ser roteado pelo NAT na interface re0 que &lt;br /&gt;# corresponde a instância de porta 8668.&lt;br /&gt;############################################################################&lt;br /&gt;ipfw add 2100 prob 0.5 skipto 2200 ip from 192.168.33.0/24 to any out keep-state&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###########################################################################&lt;br /&gt;# Regra number 2150: Como 50% do tráfego será jogado para o NAT da interface re0, os &lt;br /&gt;# outros 50% do tráfego será ignorado pela regra prob, e adivinha aonde o tráfego &lt;br /&gt;# ignorado irá parar? Ele será executado pela regra number 2150, que diz que:&lt;br /&gt;# Qualquer protocolo que seja IP(ip) de origem(from) 192.168.33.0/24 com destino(to) &lt;br /&gt;# a qualquer lugar saindo (out) por alguma interface do gateway será pulada (skipto)&lt;br /&gt;# para ser executada a partir da regra number 2300 em diante e além disso &lt;br /&gt;# colocaremos esta regra na tabela de sessão com o parametro keep-state. Resumindo, &lt;br /&gt;# estaremos colocando esse tráfego que não foi executado pela regra prob será &lt;br /&gt;# roteado pelo NAT na interface re1 que corresponde a instância de porta&lt;br /&gt;# 8669.&lt;br /&gt;###########################################################################&lt;br /&gt;ipfw add 2150 skipto 2300 ip from 192.168.33.0/24 to any out keep-state&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;############################################################################&lt;br /&gt;# Regras utilizadas pelos skipto acima.&lt;br /&gt;############################################################################&lt;br /&gt;ipfw add 2200 divert 8668 ip from 192.168.33.0/24 to any in&lt;br /&gt;ipfw add 2250 divert 8668 ip from 192.168.33.0/24 to any out&lt;br /&gt;ipfw add 2300 divert 8669 ip from 192.168.33.0/24 to any out&lt;br /&gt;ipfw add 2350 divert 8669 ip from 192.168.33.0/24 to any in&lt;br /&gt;&lt;br /&gt;############################################################################&lt;br /&gt;# Aqui eu encaminho(fwd) o tráfego que o gateway estar fazendo(192.168.1.222 e&lt;br /&gt;# 192.168.4.222) para os gateways de rede 192.168.1.1 e 192.168.4.1.&lt;br /&gt;############################################################################&lt;br /&gt;ipfw add 2400 fwd 192.168.1.1 ip from 192.168.1.222 to any&lt;br /&gt;ipfw add 2500 fwd 192.168.4.1 ip from 192.168.4.222 to any&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;############################################################################&lt;br /&gt;# Aqui defina as regras allow e deny de seu firewall. Como este firewall é de&lt;br /&gt;# teste estou permitindo todo tráfego de qualquer canto para qualquer canto&lt;br /&gt;############################################################################&lt;br /&gt;ipfw add 65000 allow ip from any to any&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-4561622545765762270?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/QaqypqpWmFs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/QaqypqpWmFs/ipfw-balanceamento-de-carga-com-dois.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/10/ipfw-balanceamento-de-carga-com-dois.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-5058267476492771166</guid><pubDate>Mon, 06 Sep 2010 18:09:00 +0000</pubDate><atom:updated>2011-04-15T06:16:07.864-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">servicos_de_rede</category><title>VNC - Configurando o VNC no Linux como módulo do X11 no display 0</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/78cOYd878EMpmVB4kP8fmIl3x7U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/78cOYd878EMpmVB4kP8fmIl3x7U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/78cOYd878EMpmVB4kP8fmIl3x7U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/78cOYd878EMpmVB4kP8fmIl3x7U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Foi utilizado para este artigo o S.O Red Hat Enterprise Linux ES release 4 (Nahant) e o vnc-server-4.0-8.1.&lt;br /&gt;
&lt;br /&gt;
Se você precisar configurar o VNC para ser carregado na inicialização como módulo do X11 no display 0, ou seja, enxergar e acessar a sessão do usuário local para dar um suporte remotamente ao mesmo, ou seja, da mesma forma que acontece no winVNC da plataforma Windows que enxergamos a tela do usuário e os aplicativos que os estão sendo executados pelo mesmo.&lt;br /&gt;
&lt;br /&gt;
Primordialmente instale o vnc-server no Linux, após isso iremos iniciar a configuração.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Procedimento para a configuração:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;1 - Editar /etc/X11/xorg.conf:&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vi /etc/X11/xorg.conf
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;2 - Adicionar na seção "Module" a linha abaixo:&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: bash"&gt;Load  "vnc"
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;3- Criar senha do acesso ao VNC&lt;/span&gt; A senha será gerada em um arquivo no home do usuário current(/home/usuario_current/.vnc/passwd) que estar a executar o comando abaixo, este arquivo deve ser apontado no arquivo xorg.conf como será explicado no passo 4:&lt;br /&gt;
Comando para criação do arquivo da senha: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;# vncpasswd
&lt;/pre&gt;&lt;br /&gt;
Password:&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;4 -Adicionar na seção  "Screen" do aquivo xorg.conf&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: bash"&gt;Section "Screen"
...

Option "SecurityTypes" "VncAuth" #Inserir esta linha no arquivo
Option "UserPasswdVerifier" "VncAuth" #Inserir esta linha no arquivo
Option "PasswordFile" "/root/.vnc/passwd" #Inserir esta linha no arquivo

...
EndSection
&lt;/pre&gt;&lt;br /&gt;
OBS.: Encontre no arquivo a sessão "Module", se não existir você deve inserir no final do arquivo fora de qualquer outra sessão, insira as seguintes informações:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;Section "Module"
        Load  "dbe"
        Load  "extmod"
        Load  "fbdevhw"
        Load  "glx"
        Load  "record"
        Load  "freetype"
        Load  "type1"
        Load  "vnc"
        Load  "dri"
EndSection
&lt;/pre&gt;&lt;br /&gt;
Caso não deseje utilizar autenticação, adicionamos a linha abaixo dentro do arquivo xorg.conf ao invés de utilizar as linhas citadas acima: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;Section "Screen"
...
Option "SecurityTypes" "None" #Inserir esta linha no arquivo
...
EndSection
&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;5 - Restart o ambiente x11:&lt;/span&gt;&lt;br /&gt;
Para fazer isto sem a necessidade de restartar todo o servidor, podemos reiniciar somente o serviço x11, conforme abaixo:&lt;br /&gt;
&lt;br /&gt;
Saia do modo gráfico colocando-o em modo CLI(Comand Line Interface, sem ambiente gráfico):&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# init 3
&lt;/pre&gt;&lt;br /&gt;
Agora volte para o modo gráfico(KDE, Gnome etc):&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# init 5
&lt;/pre&gt;&lt;br /&gt;
Pronto agora é só esperar o modo gráfico carrega assim como o serviço do VNC e depois testar a conexão com o server VNC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-5058267476492771166?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/watODcfyUfk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/watODcfyUfk/vnc-configurando-o-vnc-como-modulo-do.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/09/vnc-configurando-o-vnc-como-modulo-do.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-1886262788551767407</guid><pubDate>Thu, 26 Aug 2010 20:05:00 +0000</pubDate><atom:updated>2010-10-22T08:41:13.187-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">servicos_de_rede</category><title>Nagios - Traps para o Nagios no FreeBSD</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nujpXXHS7KH48jVRLN4p_QkyfZE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nujpXXHS7KH48jVRLN4p_QkyfZE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nujpXXHS7KH48jVRLN4p_QkyfZE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nujpXXHS7KH48jVRLN4p_QkyfZE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Para este artigo foi utilizado o S.O FreeBSD 8.0-RELEASE-p3 e os seguintes softwares:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Nagios Core Version 3.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- net-snmp-5.5_3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- snmptt_1.3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Mibs dos switches Dell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Definições dos aplicativos utilizados:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nagios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Originalmente escrito sob o nome Netsaint, o Nagios1 foi criado e ainda&lt;br /&gt;e mantido por Ethan Galstad e sua equipe de mais de 150 desenvolvedores&lt;br /&gt;espalhados por todo o mundo, dedicados a desenvolver plugins, corrigir bugs,&lt;br /&gt;desenvolver uma interface web, produzir e traduzir a vasta documentacao, entre&lt;br /&gt;outras atividades. Este software de monitoramento de redes e distribuido&lt;br /&gt;livremente, atraves da lei de copyleft GPL. A habilidade em administrar&lt;br /&gt;ambientes com infra-estrutura de WAN, LAN e MAN, e a interface grafica – GUI&lt;br /&gt;utilizada lhe garantem desempenho comparavel a sistemas comerciais existentes,&lt;br /&gt;como WhatsUp e BigBrother, assim como o Angel Network Monitor, o PIKT, o&lt;br /&gt;Autostatus e outros2.&lt;br /&gt;&lt;br /&gt;FONTE: NAGIOS -mono-HettyAndrade.pdf - www.ginux.ufla.br/files/mono-HettyAndrade.pdf&lt;br /&gt;&lt;br /&gt;http://www.nagios.org/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Net-SNMP :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uma extensão da implementação SNMP, ele quem irá escutar os TRAPS enviados pelos dispositivos de rede para o servidor Nagios. Utiliza a porta padrão de TRAP UDP 162 para escutar as notificações TRAPS.&lt;br /&gt;&lt;br /&gt;http://net-snmp.sourceforge.net/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SNMPTT :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SNMP Trap Translator é um manipulador de traps escrito em Perl para ser usado com o Net-SNMP / UCD-SNMP. Ele irá se integrar com o Net-Snmp para pegar os Traps que o este software capturou.&lt;br /&gt;&lt;br /&gt;http://snmptt.sourceforge.net/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mibs:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Será necessário baixar a MIB SNMP dos equipamentos de rede que você queira que o Nagios exiba no sistema. Pode ser inserido qualquer equipamento para enviar TRAPS para o Nagios bastando o mesmo possuir em sua MIB informações de suas TRAPS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Vamos para a configuração:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 – Com a MIB do seu equipamento em mãos iremos então converter para o formato exigido pelo SNMPTT. Podemos fazer isto manualmente, no README têm explicando como fazer, porém já deixo informado que é um pouco complexo construir este arquivo nas unhas, podemos fazer então com um script Shell que vêm no .tar do SNMPTT. O nome do script shell que vêm com o aplicativo SNMPTT é snmpttconvertmib, e para converter uma MIB para o formato do SNMPTT utilizamos a seguinte linha de comando:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;/home/leonardo.conrado/snmptt/snmptt_1.3/snmpttconvertmib --in=/home/leonardo.conrado/switch-6024f.mib --out=/etc/snmptt.dell-6024f.conf --exec='/usr/local/libexec/nagios/eventhandlers/submit_check_result $r TRAP 1'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Onde, os parâmetros:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;--in :&lt;/span&gt; a mib a qual deseje converter para a formato do SNMPTT.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;--out :&lt;/span&gt; arquivo gerado pelo script SNMPTT, ele contém os TRAPS extraidos do arquivo .mib original e formatado para a compreensão do SNMPTT.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;--exec :&lt;/span&gt; comando a ser executado quando chegar um Trap no net-snmp e capturado pelo SNMPTT se existir este Trap no aquivo do SNMPTT será executado este comando. Neste caso o comando colocará um status para o Nagios exibir nos problemas do serviços de rede, ou seja, este arquivo citado no --exec o "submit_check_result", este script irá escrever um comando para o arquivo de comando/status do Nagios, o nagios.cmd. Nota: Este script destina-se a ser executado no mesmo host que está executando o Nagios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$r : &lt;/span&gt;Variavel contendo informações sobre o problema informado pelo TRAP enviado, isto será exibido no Nagios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TRAP :&lt;/span&gt; Serviço configurado no Nagios(Iremos configurar este serviço para o Nagios, mais adiante).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1 :&lt;/span&gt; Uma das variáveis reservada do Nagios. Isso irá setar como será exibido no Nagios o problema do Trap.&lt;br /&gt;STATE_OK=0&lt;br /&gt;STATE_WARNING=1&lt;br /&gt;STATE_CRITICAL=2&lt;br /&gt;STATE_UNKNOWN=3&lt;br /&gt;Se tiver muitos arquivos .mib para serem convertidos utilize este script .sh que cirei para converter os meus arquivos .mib de um equipamento:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;!/bin/sh&lt;br /&gt;&lt;br /&gt;for i in $( ls /home/leonardo.conrado/*.mib ); do&lt;br /&gt;echo $i&lt;br /&gt;/home/leonardo.conrado/snmptt/snmptt_1.3/snmpttconvertmib --in=$i --out=/etc/snmptt.mikrotik.conf --exec='/usr/local/libexec/nagios/eventhandlers/submit_check_result $r TRAP 1'&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2 - Após converter os seus arquivos .mib vamos descompactar o .tar do aplicativo snmptt, e partirmos agora para a instalação do aplicativo snmptt para se integrar ao Nagios.&lt;br /&gt;&lt;br /&gt;3 - Copie o arquivo snmptt para a pasta &lt;span style="font-weight:bold;"&gt;/usr/local/sbin&lt;/span&gt; (Lembrando que estamos configurando o snmptt no sistema FreeBSD), der permissão de execução para este arquivo(chmod +x snmptt);&lt;br /&gt;&lt;br /&gt;4 - Copie o snmptt snmptthandler para a pasta &lt;span style="font-weight:bold;"&gt;/usr/local/sbin&lt;/span&gt; (Lembrando que estamos  configurando o snmptt no sistema FreeBSD), der permissão de execução  para este arquivo(chmod +x snmptthandler);&lt;br /&gt;&lt;br /&gt;5 - Copie o arquivo &lt;span style="font-weight:bold;"&gt;snmptt.ini&lt;/span&gt; para &lt;span style="font-weight:bold;"&gt;/etc/&lt;/span&gt;, é neste arquivo que iremos indicar aonde estar o nosso arquivo .mib já convertido, para que a aplicação snmptt saiba as TRAPS&lt;br /&gt;que deve registrar e enviar para o Nagios. No nosso caso devemos inserir no final deste arquivo snmptt.ini a linha: &lt;span style="font-weight:bold;"&gt;/etc/snmptt.dell-6024f.conf&lt;/span&gt;, conforme abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;[TrapFiles]&lt;br /&gt;# A list of snmptt.conf files (this is NOT the snmptrapd.conf file).  The COMPLETE path&lt;br /&gt;# and filename.  Ex: '/etc/snmp/snmptt.conf'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;6 -  Crie a pasta &lt;span style="font-weight: bold;"&gt;/var/log/snmptt/&lt;/span&gt; ;&lt;br /&gt;&lt;br /&gt;7 - Edite&lt;span style="font-weight: bold;"&gt; /usr/local/etc/snmptrapd.conf&lt;/span&gt; e adicione  a linha: &lt;span style="font-weight: bold;"&gt;traphandle default /usr/local/sbin/snmptthandler&lt;/span&gt; no topo do arquivo;&lt;br /&gt;&lt;br /&gt;8 - Crie a pasta &lt;span style="font-weight:bold;"&gt;/var/spool/snmptt/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;9 - Vamos colocar a aplicação para iniciar automaticamente no startup do servidor, para os sistemas Linux como: Mandrake, Red Hat e outros distros Linux o tar do snmptt já traz um script para ser colocado na pasta init.d, porém, como estamos instalando no FreeBSD teremos que criar o nosso próprio script ou consegui-lo através dos ports, bem eu decidi faze-lo mesmo:&lt;br /&gt;&lt;br /&gt;10 - Então crie um arquivo chamado snmptt dentro da pasta &lt;span style="font-weight:bold;"&gt;/usr/local/etc/rc.d/&lt;/span&gt; e der permissão executavel para o mesmo(chmod +x /usr/local/etc/rc.d/snmptt), vamos editá-lo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;[root@noc /usr/sbin]# vi /usr/local/etc/rc.d/snmptt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# PROVIDE: snmptt&lt;br /&gt;# REQUIRE: DAEMON&lt;br /&gt;# BY LEONARDO COUTO CONRADO&lt;br /&gt;. /etc/rc.subr&lt;br /&gt;&lt;br /&gt;name="snmptt"&lt;br /&gt;&lt;br /&gt;rcvar="`set_rcvar`"&lt;br /&gt;&lt;br /&gt;load_rc_config $name&lt;br /&gt;&lt;br /&gt;: ${snmptt_enable="YES"}&lt;br /&gt;&lt;br /&gt;command="/usr/local/sbin/${name}"&lt;br /&gt;command_args="--daemon"&lt;br /&gt;procname=/usr/bin/perl&lt;br /&gt;pidfile="/var/run/${name}.pid"&lt;br /&gt;&lt;br /&gt;run_rc_command "$1"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;11 - Edite também o arquivo /etc/rc.conf e adicione a seguinte linha: snmptt_enable="YES"&lt;br /&gt;&lt;br /&gt;12 - Aproveitando a edição do arquivo /etc/rc.conf coloque ou modifique as linhas referentes aos serviços que trabalham junto com o snmptt, são eles o snmptrapd(Responsável por escutar as TRAPS enviadas pelos seus equipamentos de rede) e o serviço snmp. O arquivo que estar em produção aqui estar dessa forma:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;# Enable of SNMP - Simple Network Management Protocol&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;snmpd_enable="YES"&lt;br /&gt;snmpd_flags="-a"&lt;br /&gt;snmpd_conffile="/usr/local/share/snmp/snmpd.conf"&lt;br /&gt;&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;# Enable of snmptrapd_enable for traps&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;snmptrapd_enable="YES"&lt;br /&gt;snmptrapd_flags="-a -On -Lsd -p /var/run/snmptrapd.pid -c /usr/local/etc/snmptrapd.conf"&lt;br /&gt;&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;# Enable of snmptt_enable for NAGIOS to receiver traps of equipaments of the network&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;snmptt_enable="YES"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;13 - Você pode também iniciar a aplicação para testa-la, para debug, com o comando:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;snmptt --daemon&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para debugar possiveis erros visualize o seu &lt;span style="font-weight:bold;"&gt;/var/log/messages&lt;/span&gt; e também utilize o comando &lt;span style="font-weight:bold;"&gt;ps auxww | grep snmptt&lt;/span&gt;, abaixo mostro que os processos estão rodando de forma correta:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;[root@noc /etc]# ps auxww | grep snmptt&lt;br /&gt;root               886  0.0  0.4 23124  2244  ??  Ss   14Sep10   1:27.46 /usr/bin/perl /usr/local/sbin/snmptt --daemon (perl5.8.9)&lt;br /&gt;root               887  0.0  0.7 23124  3448  ??  Ss   14Sep10   5:01.94 /usr/bin/perl /usr/local/sbin/snmptt --daemon (perl5.8.9)&lt;br /&gt;root             25856  0.0  0.2  8060  1108   0  S+    4:34PM   0:00.01 grep snmptt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Vejam que ele inicia duas instâncias do snmptt.&lt;br /&gt;&lt;br /&gt;14 - Um possível erro que pode ocorrer durante o startup do daemon snmptt estar relacionado a alguns módulos do perl estarem faltando ou alguns INIFiles. Comigo o erro que aconteceu foi o seguinte abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;9.4. I see following error: Can't locate Config/IniFiles.pm in @INC ...What should I do?&lt;br /&gt;&lt;br /&gt;It's likely that you don't have required Perl modules installed. In this case it's Config::IniFiles that is missing. The easiest way to install Perl modules is to use CPAN extension, eg. perl -MCPAN -e 'install Config::IniFiles'.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para resolver este caso execute a instalação dos INIFiles conforme mostro abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;perl -MCPAN -e 'install Config::IniFiles'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bem agora iremos para a parte de integração com o Nagios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Baixe o .tar do Nagios, aqui utilizei o nagios-3.2.0.tar.gz&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;tar -xzf nagios-3.2.0.tar.gz&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2 - Iremos copíar o script submit_check_result da pasta descompactada do Nagios para a pasta /usr/local/libexec/nagios/eventhandlers/, este script é o responsável por pegar a TRAP e colocar no arquivo nagios.cmd que é o arquivo que coloca todos os eventos/status dos equipamentos em fila para que seja exibido no Nagios. Na verdade quem captura a TRAP é daemon snmptrapd ele fica escutando as TRAPS na porta UDP 161 do seu servidor Nagios e então captura qualquer TRAP que for enviada para o seu servidor, quando a trap é capturada o daemon do snmptt pega essas informações registradas pelo snmptrapd e então verifica no arquivo de mib convertido para ver se encontra algum OID com o mesmo valor do OID do TRAP recebido, se encontrar então ele executa o parametro EXEC referente ao OID encontrado, &lt;span style="font-weight:bold;"&gt;exemplo na prática:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Um cooler do Switch dell 6024F, que estar configurado para enviar TRAPS para o servidor Nagios, parou, nesse momento o switch envia um pacote TRAP com OID .1.3.6.1.4.1.674.10895.3000.2.1.0.1 para o servidor Nagios.&lt;br /&gt;&lt;br /&gt;2 - O daemon snmptrapd que estar escutando na porta UDP 161 captura este pacote e registra em seu log;&lt;br /&gt;&lt;br /&gt;3 - O daemon snmptt sabendo desse recebimento de TRAP irá verificar para ver se o OID do TRAP recebido é igual algum OID que estar naquele arquivo convertido a partir de algum arquivo .mib, lembra? Nesse caso que estamos descrevendo, houve a conversão de diversos arquivos .mib baixados no site da Dell referentes a seus switches de série 6020F e convertidos para o padrão exigido do snmptt.&lt;br /&gt;&lt;br /&gt;4 - Se houver o OID no arquivo .mib convertido ,então, o daemon do snmptt irá para o próximo passo que é executar o EXEC referente a esse OID, no caso como foi um cooler do switch que parou ele dispara o EXEC do OID .1.3.6.1.4.1.674.10895.3000.2.1.0.1,  este OID é o que mostro abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;EXEC /usr/local/libexec/nagios/eventhandlers/submit_check_result $r TRAP 2 "Product Global Status Change.: The product global status has changed from $2 to $1 at time $3."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Este EXEC executa o script do Nagios o submit_check_result passando parametros que são as informações necessárias para exibir o status do equipamento no Nagios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DETALHE! ATENÇÂO!&lt;/span&gt; &lt;br /&gt;Devemos fazer uma modificação no script submit_check_result, já que estamos configurando para o FreeBSD, o detalhe estar na variável CommandFile do script esta variável aponta o arquivo nagios.cmd do Nagios, que por sinal fica em um local diferente das instalações realizadas em distros Linux. Você deve trocar:&lt;br /&gt;&lt;br /&gt;De:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;CommandFile="/usr/local/nagios/var/rw/nagios.cmd"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;CommandFile="/var/spool/nagios/rw/nagios.cmd"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bom o que devemos fazer agora é a configuração nos arquivos .cfg do Nagios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Configurar um template para o serviço TRAP, então:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt; vi /usr/local/etc/nagios/objects/templates.cfg&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Adicione as linhas abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;############################################################################################&lt;br /&gt;# CREATED FOR THE TRAP SERVICE&lt;br /&gt;############################################################################################&lt;br /&gt;# MODELO 01:&lt;br /&gt;#######################################################################&lt;br /&gt;define service{&lt;br /&gt;        name                         generic-trap-service&lt;br /&gt;        register                     0&lt;br /&gt;        is_volatile                  1&lt;br /&gt;        check_period                 24x7&lt;br /&gt;        max_check_attempts           1&lt;br /&gt;        normal_check_interval        1&lt;br /&gt;        retry_check_interval         1&lt;br /&gt;        active_checks_enabled        0&lt;br /&gt;        passive_checks_enabled       1&lt;br /&gt;        retain_status_information    1&lt;br /&gt;        retain_nonstatus_information 1&lt;br /&gt;        notification_interval        31536000&lt;br /&gt;        notification_period          24x7&lt;br /&gt;        notification_options         w,u,c&lt;br /&gt;        notifications_enabled        1&lt;br /&gt;        check_freshness              1          Enable freshness checking&lt;br /&gt;        freshness_threshold          360        Reset trap alert every 6 min&lt;br /&gt;        contact_groups               admins&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2 - Como estamos monitorando TRAPS vindos de switches irei adicionar mais um serviço para os switches&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;vi /usr/local/etc/nagios/objects/servicesswitch.cfg&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Adiciona para cada switch da minha rede mais um serviço a ser monitorado, o do TRAP:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# Define a service TRAP for switch/equipament&lt;br /&gt;define service{&lt;br /&gt;        use                     generic-trap-service&lt;br /&gt;        host_name               SWHCDB13448P&lt;br /&gt;        service_description     TRAP&lt;br /&gt;        check_command           check-host-alive&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;OK, após estas configurações iremos dar um reload no Nagios para ele recarregar as configurações:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;[root@noc /usr/local/etc/nagios/objects]# /usr/local/etc/rc.d/nagios reload&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pronto, é isso, com este procedimento deveremos ter o Nagios recebendo os TRAPS dos equipamentos habilitados para enviar TRAP para o servidor Nagios.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-1886262788551767407?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/r5yFYFs3rSU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/r5yFYFs3rSU/nagios-traps-para-o-nagios-no-freebsd.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/08/nagios-traps-para-o-nagios-no-freebsd.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-5446960781311512644</guid><pubDate>Wed, 07 Jul 2010 19:55:00 +0000</pubDate><atom:updated>2012-01-30T08:00:20.455-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">seguranca_de_rede</category><title>IPFW - Criação de regras no IPFIREWALL</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pdHchHzDBTTi64Z6xpTYqAUoTcA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pdHchHzDBTTi64Z6xpTYqAUoTcA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pdHchHzDBTTi64Z6xpTYqAUoTcA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pdHchHzDBTTi64Z6xpTYqAUoTcA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Para este artigo foi utilizado o FreeBSD 7.2 e o IPFW2.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Se o seu servidor FreeBSD ainda não tem o IPFW compilado no kernel, então acesse o link abaixo e veja como configura-lo e instala-lo em seu kernel:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://conteudoopensource.blogspot.com/2010/05/ipfw-instalacao-do-ipfw-com-suporte-ao.html"&gt;http://conteudoopensource.blogspot.com/2010/05/ipfw-instalacao-do-ipfw-com-suporte-ao.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Inicialmente é bom informar as duas formas de funcionamento do firewall IPFW, no que diz respeito ao tratamento que é dado aos pacotes que trafegam por ele.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Os modos em que o IPFIREWALL pode funcionar são:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Modo Filtro de pacotes:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- Restringir o tráfego baseado no endereço IP de origem ou destino,&amp;nbsp;através das portas de comunicação TCP ou UDP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Modo Firewall stateful:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- Herda as&amp;nbsp;característica&amp;nbsp;do firewall em modo filtro de pacotes e implementa o filtro por estado da sessão; Nesse caso o firewall armazena os estados das conexões e aplica o filtro de bloqueio ou permissão para o pacote passante com base nesses estados. O&amp;nbsp;&lt;i&gt;firewall&lt;/i&gt; armazena em uma tabela os detalhes&amp;nbsp;das conexões existentes&amp;nbsp;(IP de origem, IP de destino, porta de origem, porta de destino, tempo restante para essa conexão na tabela stateful) &amp;nbsp;que estão sendo efetuadas no momento e inspeciona o tráfego evitando que pacotes ilegítimos tenham acesso a serviços de rede ganhando mais velocidade e segurança, evitando, por exemplo,&amp;nbsp;técnicas hacker como: ip spoofing.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Construção do conjunto de regras(Ruleset):&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Primeiramente será apresentado o conjunto de regras que são pré-definidas para o  IPFW, essas são regras que já vem prontas para serem utlizadas no Firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ruleset pré-definidas:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A&amp;nbsp;variável&amp;nbsp;do&amp;nbsp;/etc/rc.conf&amp;nbsp;que gerencia qual o conjunto&amp;nbsp;de regras&amp;nbsp;pré-definidas será carregada pelo firewall&amp;nbsp;é a firewall_type=" " . Exitem 5 tipos de regras pré-definidas disponíveis:&lt;br /&gt;
&lt;br /&gt;
"&lt;b&gt;OPEN&lt;/b&gt;" - &amp;nbsp;O firewall permiti todo tráfego em suas interfaces, ou seja, não bloqueia nenhuma tráfego.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"CLIENT" &lt;/span&gt;- Essa definição de tipo de firewall (firewall_type) permite todo o tráfego proveniente da rede local (por exemplo, uma rede interna atrás de NAT) pra ela mesma. Bloqueia pacotes fragmentados, permite que mensagens de email, resoluções de nomes (DNS) e NTP sejam enviadas pra dentro e fora da rede, e não permite nenhuma máquina que esteja fora da rede interna iniciar conexões TCP com máquinas dentro da rede. Se a rede estiver por trás de uma implementação básica de NAT sem nenhuma opção de proxie carregada isso já seria impossível. Esse tipo de firewall funciona com política aberta ou fechada, definida no kernel, ou seja, não faz diferença se você colocou IPFIREWALL_DEFAULT_TO_ACCEPT ou IPFIREWALL_DEFAULT_TO_DENY como padrão.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"SIMPLE"&lt;/span&gt; - Esse tipo de firewall é uma contradição. Apesar do nome SIMPLE, ele é muito mais complexo que a definição CLIENT, e requer que o usuário tenha algum conhecimento nos padrões RFC de Internet pra poder entender suas definições de regras de firewall. Essa regra vai evitar spoofing (técnica onde uma máquina se faz passar por outra, alterando seu endereçamento IP) não permitindo a entrada de nenhum pacote que tenha um endereço de retorno igual ao endereço de qualquer host dentro da rede interna. Vai bloquear todos os pacotes endereçados como de redes privadas, conforme definido na RFC 1928, evitando o tráfego pra dentro ou fora da rede, e vai bloquear ainda todas as redes não-roteaveis, conforme definido no Internet-Drafts da IETF (disponível em http://www.ietf.org/internet-drafts/draft-manning-dsua-03.txt). Esse tipo de firewall vai permitir tráfego de e-mail, de WWW, de DNS, e NTP, e vai permitir também pacotes fragmentados, e em relação às conexões TCP iniciadas por hosts fora da rede, o firewall não vai apenas bloquear, como na definição CLIENT, vai também logar todas essas tentativas.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"CLOSED"&lt;/span&gt; - Tecnicamente essa definição não é um conjunto de regras de firewall, porque não adiciona nenhuma regra. Na verdade, aqui acontece tudo que nós insistimos que você deve evitar, ou seja, estabelece uma política fechada, negando todo e qualquer tráfego da rede (exceto o tráfego via lo0 que nós vimos anteriormente que é controlado por padrão). Essa definição simplesmente desabilita todos os serviços IP na rede, a não ser que no seu kernel você tenha adicionado a regra de política aberta. Então, ajustar o firewall pra CLOSED vai ser necessário em casos *extremos* onde você prefere (ainda que temporariamente) tirar toda a sua rede de funcionamento. Ou seja, não defina como padrão no rc.conf.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"UNKNOWN"&lt;/span&gt; - Desabilita o carregamento de regras do ipfirewall.&lt;br /&gt;
&lt;br /&gt;
Agora iremos abordar a construção do conjuto de regras personalizaveis para o IPFW utilizaremos neste momento o modo &lt;span style="font-weight: bold;"&gt;filtro de pacotes&lt;/span&gt;. Para isso é necessário criar um arquivo onde será colocado as nossas regras, que será onde o IPFW irá ler as mesmas. Para isso iremos criar o arquivo de regras, como mostra abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;
# mkdir -p /tools/firewall&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;
# touch /tools/firewall/rules.fw&lt;/pre&gt;
&lt;br /&gt;
Iremos editar o arquivo rules.fw:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;
# vi /tools/firewall/rules.fw&lt;/pre&gt;
&lt;br /&gt;
Agora iremos começar a escrever as nossas regras, mas como é a sintaxe para se escrever as regras no IPFIREWALL?&lt;br /&gt;
Abaixo uma breve explicação sobre a sintaxe das regras do IPFW:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;
CMD [número_regra] [prob probalilidade] ação [log [logamount número] ] corpo_regra&lt;/pre&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: #3333ff;"&gt;CMD&lt;/span&gt; &lt;/span&gt;=&lt;span style="font-style: italic;"&gt;&lt;br /&gt;add, delete(Os mais utilizados)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;add: adicionar uma nova regra ao firewall;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;delete: deletar uma regra do firewall;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;[número_regra]&lt;/span&gt;&lt;/span&gt; =&lt;br /&gt;
Quando um pacote entra no firewall ele é comparado com a primeira regra  no conjunto de regras e avança uma regra de cada vez, que se deslocam  de cima para baixo do conjunto em ordem crescente do número de seqüência  das regras. Quando o pacote se adequa a seleção de parâmetros de uma  regra, o campo de ação é executada e a busca do conjunto de regras  termina para o pacote. Isto é referido como "o primeiro que se adequa  ganha" do metodo de procura. Se o pacote não corresponde a nenhuma das  regras, ele é pego pela regra padrão obrigatório IPFW, número 65.535,  que nega todos os pacotes e descarta-los sem qualquer resposta de volta  para o remetente, a não ser que se coloque na regra para que o IPFW  envie uma mensagem de resposta.&lt;br /&gt;
O número de regras varia de 1 a 65535 e indica a sequência em que as regras serão processadas, sendo que a regra de número 65535 é a padrão utilizada pelo firewall, ou seja exclusiva do firewall, essa regra padrão pode ser aceitar tudo(tcp, udp e ip) de qualquer lugar para qualquer lugar ou negar tudo(todos os protocolos tcp, udp e ip) de qualquer lugar para qualquer lugar. Essa regra é especificada antes da compilação do firewall é uma linha que você especifica no kernel IPFIREWALL_DEFAULT_TO_ACCEPT ou IPFIREWALL_DEFAULT_TO_DENY.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;[prob probabilidade]&lt;/span&gt;&lt;/span&gt; =&lt;br /&gt;
Uso opcional, Define uma probabilidade para aplicar a regra. Varia de 0 a 1.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: #3333ff;"&gt;ação&lt;/span&gt; &lt;/span&gt;=&lt;br /&gt;
&lt;span style="font-style: italic; font-weight: bold;"&gt;"allow, accept, pass e permit&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;
Tem a mesma função, aceitar pacote que chegam ao firewall e que se adequem a regra. E a leitura das regras termina.&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"deny, drop&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;
Tem a mesmo função, descartar pacotes silenciosamente(sem enviar resposta ao remetente) que correspondem a regra. E a leitura das regras termina.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"check-state"&lt;/b&gt;- Checa o pacote contra um conjunto de regras  dinâmicas, isto é para modo statefull do firewall que ainda iremos ver.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"count"&lt;/span&gt; - Todos os pacotes que   combinarem com uma regra cuja ação seja "count", determinará que o   ipfirewall incremente o contagem de pacotes, ou seja, a saída de  "ipfw  show" indicará mais uma ocorrência de pacotes nessa regra. Motivos   estatísticos óbvios. O processamento das regras do firewall continuam a   buscar por outras regras que combinem com os pacotes.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"divert&lt;/b&gt;  &lt;span style="font-weight: bold;"&gt;porta"&lt;/span&gt; - Redireciona o pacote  para a porta especificada, utilizando um socket  "divert".    Pode ser  especificado número ou nome, veja /etc/services.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"fwd&lt;/b&gt; &lt;span style="font-weight: bold;"&gt;ip[,porta]"&lt;/span&gt; - Sinônimo de forward,  encaminha o pacote para o ip especificado. Se o  ip    for local será  encaminhado para a porta especificada, se o ip não    for local a porta  será ignorada. O pacote não é alterado,    e isto inclui o ip de  destino, então se o pacote for encaminhado para    outro host  provavelmente será rejeitado. Caso seja encaminhado para um     ip  local, desta máquina, o socket que irá receber o pacote terá    o seu  endereço alterado para coincidir com o endereço de destino    do pacote,  aceitando desta forma o mesmo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"pipe&lt;/b&gt; &lt;span style="font-weight: bold;"&gt;número"&lt;/span&gt; - Passa o pacote através de um  "pipe" dummynet, para controle    de tráfego.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"queue&lt;/b&gt; &lt;span style="font-weight: bold;"&gt;número"&lt;/span&gt; - Passa o pacote para uma  "queue" dummynet, para controle de tráfego    utilizando WF2Q+.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"reset"&lt;/span&gt; - Quando um pacote encontra  uma regra com essa ação, o pacote é bloqueado, e o ipfirewall tenta  enviar um sinal (flag) de TCP Reset (RST) pro endereço de origem do  pacote. O processamento das regras pra esse pacote termina. Como esse  tipo de regra apenas se aplica pra pacotes TCP, o protocolo especificado  na regra deve ser "tcp", para que apenas tais pacotes sejam processados  por essa regra, e não todos (proto "all") os protocolos de pacotes IP.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"skipto &lt;número&gt;"&lt;/número&gt;&lt;/span&gt; - Todos os  pacotes que combinem com uma regra cuja ação seja "skipto " vão  fazer com que o ipfirewall(4) continue processando esse pacote e  buscando ocorrência nas regras que sejam de ordem maior ou igual ao   indicado pela ação.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;"reject"&lt;/span&gt;  - Essa ação é pouco utilizada atualmente. Quando um pacote combina com  uma regra cuja ação seja "reject", então o ipfirewall(4) bloqueia esse  pacote e responde com uma mensagem ICMP do tipo "host unreachable",  dando a impressão que a máquina se encontra fora da rede. Essa é uma  forma não silenciosa de negar o tráfego pelo firewall, contudo, assim  como a ação "reset", essa ação também aumenta o uso da sua banda de  rede.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"tee&lt;/b&gt; &lt;span style="font-weight: bold;"&gt;porta"&lt;/span&gt; -  Aceita o pacote e envia uma cópia do mesmo para a porta especificada,     via socket "divert".&lt;br /&gt;
&lt;br /&gt;
&lt;b style="font-weight: bold;"&gt;"unreach&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; código"&lt;/span&gt; - Descarta o pacote, e tenta  enviar uma resposta "ICMP unreachable"    com o código especificado. O  código deve ser entre 0 e 255, ou    alguma destas palavras chave: net,  host, protocol, port, needfrag,  srcfail,    net-unknown, host-unknown,  isolated, net-prohib, host-prohib, tosnet,  toshost,    filter-prohib,  host-precedence ou precedence-cutoff.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3333ff; font-weight: bold;"&gt;[log [logamount número]]&lt;/span&gt; =&lt;br /&gt;
Uso  opcional, caso mencionada a palavra log, cada vez que um pacote  coincidir com esta regra será feito um log através do syslog.&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;número&gt;&lt;número&gt;&lt;span style="color: #3333ff; font-weight: bold;"&gt;corpo_regra&lt;/span&gt;&lt;span style="color: #cccccc;"&gt; &lt;/span&gt;=  &lt;/número&gt;&lt;/número&gt;&lt;br /&gt;
Contém uma ou mais exigências que o pacote precisa coincidir  para    a regra ser atendida. Essa especificação pode incluir endereço    ip de origem, endereço ip de destino, porta de origem, porta de  destino,    protocolo, interface de rede de entrada, interface de rede de saída  etc.    O corpo da regra pode possuir uma ou mais opções. Essas opções    podem ser precedidas de "not", como negação, ou serem    agrupadas em blocos OR, entre chaves, por exemplo: { dst-port 50 or  dst-port    51 or not src-port 52 }. Descreveremos cada uma dela abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;número&gt;&lt;número&gt;&lt;/número&gt;&lt;/número&gt;&lt;b style="font-weight: bold;"&gt;"dst-ip&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; endereço"&lt;/span&gt; - Endereço IP de destino do pacote.&lt;número&gt;&lt;número&gt; &lt;/número&gt;&lt;/número&gt;&lt;br /&gt;
&lt;b style="font-weight: bold;"&gt;"dst-port &lt;/b&gt;&lt;span style="font-weight: bold;"&gt;porta" &lt;/span&gt;- Porta(s) de destino do pacote. Se for especificada mais de uma porta,  separar    por vírgula (50, 51, 52), ou em faixa de portas (50-60).&lt;br /&gt;
 &lt;b&gt;"established&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;Se o pacote tiver os bits RST ou ACK.&lt;br /&gt;
 &lt;b&gt;"frag&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;fragmentos de pacotes, não sendo o primeiro fragmento.&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"gid&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; grupo"&lt;/span&gt;&lt;br /&gt;Pacotes TCP ou UDP enviados ou recebidos pelo grupo. O grupo pode ser  especificado    pelo nome ou pelo GID.&lt;br /&gt;
 &lt;b&gt;"icmptypes&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; tipo"&lt;/span&gt;&lt;br /&gt;Tipo(s) de pacotes ICMP. Se for mais de um, separar por vírgula. Os  tipos    podem ser: echo reply (0), destination unreachable (3), source quench  (4), redirect    (5), echo request (8), router advertisement (9), router solicitation  (10), time-to-live    exceeded (11), IP header bad (12), timestamp request (13), timestamp  reply (14),    information request (15), information reply (16), address mask request  (17)    e address mask reply (18).&lt;br /&gt;
 &lt;b&gt;"in&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; | &lt;/span&gt;&lt;b style="font-weight: bold;"&gt;out&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;Pacotes de entrada ou de saída. Note que isto significa que os pacotes     estão entrando ou saindo da máquina, então mesmo que um    pacote venha da rede interna, estará entrando na máquina antes    de sair.&lt;br /&gt;
 &lt;b&gt;"keep-state&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;Quando um pacote coincidir com uma regra que tiver esta opção,    será criada uma regra dinâmica, cujo comportamento será    coincidir o tráfego bidirecional entre este ip/porta de origem e  ip/porta    de destino, no mesmo protocolo. A regra dinâmica expira após um    certo tempo. Dessa forma, pode-se definir uma regra "check-state"    anterior a esta, liberando este fluxo de pacotes, e teremos um  firewall "stateful".&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"limit&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; {ip-origem | porta-origem | ip-destino | porta-destino}  número&lt;/span&gt;"&lt;br /&gt;Serão permitidas apenas o número especificado de conexões    com os parâmetros especificados.&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"mac&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; mac-destino mac-origem"&lt;/span&gt;&lt;br /&gt;Pacotes com o endereço MAC de destino e/ou de origem especificados. Se     não for especificado algum deverá ser usada a palavra "any",    para coincidir com todos os endereços.&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"proto&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; protocolo"&lt;/span&gt;&lt;br /&gt;Pacotes com o protocolo (IP) especificado. Veja /etc/protocols.&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"recv&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; interface | &lt;/span&gt;&lt;b style="font-weight: bold;"&gt;xmit&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; interface | &lt;/span&gt;&lt;b style="font-weight: bold;"&gt;via&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; interface"&lt;/span&gt;&lt;br /&gt;Pacotes recebidos pela interface de rede especificada (recv xl0),  pacotes transmitidos    pela interface especificada (xmit fxp0), ou pacotes passando pela  interface,    independentemente de entrar ou sair (via xl0). Quando xmit for  utilizado é    requerida a opção "out", já que o pacote estará    saindo.&lt;br /&gt;
 &lt;b&gt;"setup&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;Pacotes com o bit SYN mas sem o bit ACK.&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"src-ip&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; endereço"&lt;/span&gt;&lt;br /&gt;Endereço IP de origem do pacote.&lt;br /&gt;
 &lt;b style="font-weight: bold;"&gt;"src-port &lt;/b&gt;&lt;span style="font-weight: bold;"&gt;porta"&lt;/span&gt;&lt;br /&gt;Porta(s) de origem do pacote.&lt;br /&gt;
 &lt;b&gt;"tcpflags&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; flags&lt;/span&gt;"&lt;br /&gt;Flags dos pacotes TCP, separadas por vírgula. As possíveis são:    fin, syn, rst, psh, ack e urg. A negação pode ser feita por um    "!".&lt;br /&gt;
 &lt;b&gt;"uid&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; usuário&lt;/span&gt;"&lt;br /&gt;Pacotes TCP ou UDP enviados ou recebidos pelo usuário. O usuário    pode ser especificado pelo username ou pelo UID.&lt;br /&gt;
 &lt;b&gt;"vrrevpath&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;Pra pacotes de entrada, é feita uma consulta ao endereço de origem    na tabela de roteamento. Se a interface na qual o pacote entrou é a  mesma    de saída especificada pela rota, então a regra coincide. Isto    pode ser utilizado para criar regras anti-spoofing. Os pacotes de  saída    não são submetidos à verificação.&lt;br /&gt;
&lt;strong&gt;PARA UMA LEITURA MAIS AVANÇADA ACESSE OS FONTES DO TEXTO ACIMA:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.freebsd-howto.com/HOWTO/Ipfw-HOWTO"&gt;http://www.freebsd-howto.com/HOWTO/Ipfw-HOWTO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.unijui.tche.br/~heini/freebsd/ipfw2.html"&gt;http://www2.unijui.tche.br/~heini/freebsd/ipfw2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exemplos práticos:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;
### Liebrar udp da rede 192.168.0.0/24  para a rede 192.168.1.0/24
add 00100 allow udp from 192.168.0.0/24 to 192.168.1.0/24 in
### Regra para o INPUT do trafego SSH
add 00200 allow tcp from any to 192.168.1.1/32 22 in
### Regras para o INPUT do VNC da rede 192.168.1.0/24 para VNCs na rede 192.168.1.0/24
add 00300 allow tcp from 192.168.1.0/24 to 192.168.0.0/24 5900 in setup
### Bloquear todos os pacotes vindo de qualquer lugar para qualquer lugar e logar os mesmo
add 64534 deny log all from any to any&lt;/pre&gt;
&lt;strong&gt;Resumindo a sintaxe das regras no IPFW:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;# O comando entre colchetes é opcional
command   [rule number]   action   proto   from   source[port]   to   destination[port] [Complemento: in,out,via... etc]&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-5446960781311512644?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/zyVmzSpSf7Q" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/zyVmzSpSf7Q/ipfw-criacao-de-regras.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/07/ipfw-criacao-de-regras.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-7790473530203686764</guid><pubDate>Mon, 28 Jun 2010 12:30:00 +0000</pubDate><atom:updated>2010-07-01T05:52:34.299-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">seguranca_de_rede</category><title>Snorby - Instalação do frontend para snort</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2XcWBPp8fJ0mKoiArBNdFzBTAqU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2XcWBPp8fJ0mKoiArBNdFzBTAqU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2XcWBPp8fJ0mKoiArBNdFzBTAqU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2XcWBPp8fJ0mKoiArBNdFzBTAqU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Utilizei para esta implementação o snorby 1.1.3 , ambos sobre o FreeBSD  7.2, mais detalhes sobre essa aplicação:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Snorby 1.1.3:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;O snorby é  um dos frontends utilizados para visualizar os alertas gerados pelo  snort, ele também contém gráficos e estatisticas dos alertas coletados pelo snort. Possui uma interface  bastante intuitiva e moderna. Conheça-o &lt;a href="http://snorby.org/"&gt;http://snorby.org/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Particulamente  gostei muito deste frontend, ele ainda esta em fase de desenvolvimento,  mas já dar para utiliza-lo em produção. Veja o report bug do mesmo com  a identificação de erros e suas devidas correções e ferramentas a serem  implementadas: &lt;a href="http://github.com/mephux/Snorby/issues"&gt;http://github.com/mephux/Snorby/issues&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O  Snorby é desenvolvido utilizando a linguagem de programação ruby on  rails para plataforma web. Outro ótimo frontend é o BASE(&lt;a href="http://base.secureideas.net/"&gt;http://base.secureideas.net/&lt;/a&gt;)  fork do antigo ACID ambos são desenvolvidos utilizando a ligaugem de programação php.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Vamos para a instalação:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Programas/dependênias para instalação do Snorby(Instalaremos através do ports):&lt;br /&gt;&lt;br /&gt;git-1.7.1             Distributed source code management tool&lt;br /&gt;mysql-client-5.5.4    Multithreaded SQL database (client)&lt;br /&gt;mysql-server-5.5.4  Multithreaded SQL database (server)&lt;br /&gt;ruby18-gems-1.3.7     Package management framework for the Ruby language&lt;br /&gt;ruby18-iconv-1.8.7.248,1  An iconv wrapper class for Ruby&lt;br /&gt;&lt;br /&gt;- E através do gem(Gerenciador de pacote do ruby) instalaremos outros pacotes:&lt;br /&gt;&lt;br /&gt;- prawn&lt;br /&gt;- rake&lt;br /&gt;- rails&lt;br /&gt;- dbd-mysql&lt;br /&gt;- mysql&lt;br /&gt;&lt;br /&gt;- E finalmente através do git:&lt;br /&gt;&lt;br /&gt;- Snorby&lt;br /&gt;&lt;br /&gt;- Vamos a instalação dos programas e dependencias(No configure do make não marque as opções que aparecerão desmarcadas e deixe as que já estão marcadas):&lt;br /&gt;&lt;br /&gt;Instalação do mysql:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/ports/databases/mysql55-server/ &amp;&amp; make install clean&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instalação do git:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/ports/devel/git/ &amp;&amp; make install clean&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instalação do ruby-gems:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/ports/devel/ruby-gems/ &amp;&amp; make install clean&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instalação do ruby-iconv:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/ports/converters/ruby-iconv/ &amp;&amp; make install clean&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;- Instalação dos pacotes através do gem:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# gem install prawn&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# gem install rake&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# gem install rails&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# gem install dbd-mysql&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# gem install mysql&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vamos instalar o aplicativo Snorby, instale o mesmo na pasta /usr/local/www então siga o passo a passo:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OBS.:&lt;/span&gt; O git utiliza uma porta especifica para realizar o download verifique o seu firewall.&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/local/www/ &amp;&amp; git clone git://github.com/mephux/Snorby.git&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pronto se tudo ocorreu sem problemas o servidor já se encontra com o snorby instalado, iremos para os pré-requisitos de seu funcionamento:&lt;br /&gt;&lt;br /&gt;- Primeiro: Configure o seu snort com banco mysql.&lt;br /&gt;&lt;br /&gt;- Segundo: O snorby terá um banco, criado automaticamente pelo rake setup(comando que veremos mais adiante);&lt;br /&gt;&lt;br /&gt;- Terceiro : O mysql deve estar iniciado e com permissões de acesso para usuário e seu banco de dados snorby, pois, agora será utilizado somente um único banco que armazenará informações tanto do snort quanto do snorby.&lt;br /&gt;&lt;br /&gt;- Quarto: O banco snorby/snort é criado automaticamente pelo rake setup(comando que veremos mais adiante) no localhost ou seja na máquina em que foi instalado o snorby. Não consegui descobri onde alterar essa config.&lt;br /&gt;&lt;br /&gt;OBS.: Der permissão para o usuário do banco snorny, para o host localhost, exemplo:&lt;br /&gt;&lt;br /&gt;na console do mysql:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;GRANT ALL PRIVILEGES ON snorby.* TO snorby@'localhost' IDENTIFIED BY 'senhaDoBDSnorby' WITH GRANT OPTION;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;- Após estes passos iremos configurar dois arquivos do Snorby que se encontram em /usr/local/www/Snorby/config, são eles o database.yml e email.yml;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cp /usr/local/www/Snorby/config/database.yml.example /usr/local/www/Snorby/config/database.yml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cp /usr/local/www/Snorby/config/email.yml.example /usr/local/www/Snorby/config/email.yml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;- Configure os mesmos, o database.yml configura aonde será instalado o banco de dados do snorby e o email.yml confgs para enviar alertas para o email.&lt;br /&gt; &lt;br /&gt;Vamos ao processo de confguração automatica do Snorby(Instale os requerimentos adicionais do gem, ele irá informa na console quais são os requerimentos, para carregar o Snorby)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ATENÇÂO: Nessa versão do snoby(1.1.3) a instalação automática só é executada com sucesso se for configurado no arquivo database.yml o BD como localhost e dada as devidas permissões para o usuário que você passa neste mesmo arquivo citado. Aqui onde trabalho configurei como localhost depois instalei o snprby e após instalação executei o script mysql do snorby em outro servidor mysql da minha rede e depois fiz os devidos apontamentos database.yml para o servidor mysql remoto da minha rede.&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/local/www/Snorby &amp;&amp; rake gems:install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/local/www/Snorby &amp;&amp; rake snorby:setup RAILS_ENV=production&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se for a primeira instalação execute também:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/local/www/Snorby &amp;&amp; rake snorby:update RAILS_ENV=production&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cd /usr/local/www/Snorby &amp;&amp; rake snorby:reset RAILS_ENV=production   # ALL DATA WILL BE LOST&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Start Snorby:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# ruby18 script/server -e production -b 127.0.0.1 -p 80 -d&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; -b = bind address [Default: loopback]&lt;br /&gt; -p = port number [Default: 3000]&lt;br /&gt; -e = environment&lt;br /&gt; -d = Run server as daemon&lt;br /&gt;&lt;br /&gt;The default User Name and Password for Snorby:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;User:&lt;/span&gt; snorby&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;Password:&lt;/span&gt; admin&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;FONTE:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://github.com/mephux/Snorby"&gt;http://github.com/mephux/Snorby&lt;/a&gt;&lt;br /&gt;&lt;a href=" http://wiki.github.com/mephux/Snorby/snorby-recipe-with-barnyard2-unified2-and-apache-jjc"&gt;&lt;br /&gt;http://wiki.github.com/mephux/Snorby/snorby-recipe-with-barnyard2-unified2-and-apache-jjc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fiz um script para colocar na inicialização do sistema operacional o snorby, como é FreeBSD este script deve ser colocado em /usr/local/etc/rc.d/:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# $FreeBSD: snorby&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# PROVIDE: snorby&lt;br /&gt;# BY: Leonardo Couto Conrado&lt;br /&gt;# IN: 11.06.2010&lt;br /&gt;&lt;br /&gt;. /etc/rc.subr&lt;br /&gt;&lt;br /&gt;name="snorby"&lt;br /&gt;&lt;br /&gt;rcvar="`set_rcvar`"&lt;br /&gt;&lt;br /&gt;load_rc_config $name&lt;br /&gt;&lt;br /&gt;: ${snorby_enable="NO"}&lt;br /&gt;: ${snorby_port_listen="80"}&lt;br /&gt;: ${snorby_bind_addr="127.0.0.1"}&lt;br /&gt;: ${snorby_environment="production"}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;command="cd /usr/local/www/Snorby &amp;&amp; /usr/local/bin/ruby18"&lt;br /&gt;command_args="script/server -e ${snorby_environment} -b ${snorby_bind_addr} -p ${snorby_port_listen} -d"&lt;br /&gt;procname="/usr/local/bin/ruby18"&lt;br /&gt;pidfile="/var/run/${name}.pid"&lt;br /&gt;&lt;br /&gt;run_rc_command "$1"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;E no /etc/rc.conf colocamos as seguintes linhas:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;# SNORBY&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;snorby_enable="YES"&lt;br /&gt;snorby_port_listen="80"&lt;br /&gt;snorby_bind_addr="127.0.0.1"&lt;br /&gt;snorby_environment="production"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pronto agora já temos o snorby instalado e na inicialização do SO.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-7790473530203686764?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/fEEYWJvRMx4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/fEEYWJvRMx4/snorby-instalacao-do-frontend-para.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/06/snorby-instalacao-do-frontend-para.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-2457109698596892278</guid><pubDate>Mon, 21 Jun 2010 12:13:00 +0000</pubDate><atom:updated>2010-06-28T05:35:21.797-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">seguranca_de_rede</category><title>Snort - Instalação</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cqzDN-p4pWiXkV_nLCosSaXcebA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cqzDN-p4pWiXkV_nLCosSaXcebA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cqzDN-p4pWiXkV_nLCosSaXcebA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cqzDN-p4pWiXkV_nLCosSaXcebA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Utilizei para esta implementação o snort 2.8.6 , ambos sobre o FreeBSD 7.2, mais detalhes sobre essa aplicação:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Snort 2.8.6:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://conteudoopensource.blogspot.com/2010/06/snort-snort-286-em-modo-promiuscuo.html"&gt;http://conteudoopensource.blogspot.com/2010/06/snort-snort-286-em-modo-promiuscuo.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O snort pode ser utilizado tanto para detectar ataques(IDS colocando-o em modo promiscuo utilizando por exemplo o port mirror no switch) quanto também para detectar e bloquear os ataques(IPS colocando-o no modo in-line no gateway, firewall de sua rede.), neste tutorial estou utilizando o snort em modo promiscuo realizei um port mirror da porta dos gateways da rede e os alertas estão sendo registrados em um banco mysql.&lt;br /&gt;&lt;br /&gt;Bem, vamos dar o start-up em nosso assunto principal que é a instalação do snort:&lt;br /&gt;&lt;br /&gt;OBS.: Para utilizar o output(alertas e logs) direcionado para banco de dados mysql, vc antes deverá instalar o mysql e suas bibliotecas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1)&lt;/span&gt; Baixe o snort &lt;a href="http://www.snort.org/downloads"&gt;http://www.snort.org/downloads&lt;/a&gt;. Descompacte o tallbar(arquivo tar.gz) do snort;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) &lt;/span&gt;Dentro da pasta descompactada, iremos iniciar a configuração, compilção e instalação:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-&gt; Configure com output para DB mysql:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#./configure --with-mysql --with-mysql-includes=/usr/local/include/mysql --with-mysql-libraries=/usr/local/lib/mysql --prefix=/usr/local/snort&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# make&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3)&lt;/span&gt; Criar estruturas de diretórios do snort&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# mkdir /usr/local/etc/snort&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Na pasta descompactada do snort, copie os arquivos do diretório conforme abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cp /home/leonardo.conrado/snort-2.8.6/etc/* /usr/local/etc/snort/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4)&lt;/span&gt; Copiar as rules que deve ser baixados do site snort.org(Vc deve se cadastrar antes) e coloque-as em /usr/local/snort/rules(crie a pasta rules se não existir)&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# cp /home/leonardo.conrado/snortrules-snapshot-2860/* /usr/local/snort/rules&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5) &lt;/span&gt;Configurar o snort, conforme abaixo:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# vi /usr/local/etc/snort/snort.conf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Configure as principais variáveis, veja os exemplos já configurado:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;###################################################&lt;br /&gt;# Step #1: Set the network variables.  For more information, see README.variables&lt;br /&gt;###################################################&lt;br /&gt;# Setup the network addresses you are protecting&lt;br /&gt;var HOME_NET [192.168.1.0/24]&lt;br /&gt;&lt;br /&gt;# List of DNS servers on your network&lt;br /&gt;var DNS_SERVERS [192.168.0.60/32,187.84.92.1,187.84.92.2/32]&lt;br /&gt;&lt;br /&gt;# List of web servers on your network&lt;br /&gt;var HTTP_SERVERS [192.168.0.64/32]&lt;br /&gt;&lt;br /&gt;# List of sql servers on your network&lt;br /&gt;var SQL_SERVERS [192.168.0.65/32]&lt;br /&gt;&lt;br /&gt;# List of SMTP servers on your network&lt;br /&gt;var SMTP_SERVERS 187.84.92.99&lt;br /&gt;&lt;br /&gt;# Path to your rules files (this can be a relative path)&lt;br /&gt;# Note for Windows users:  You are advised to make this an absolute path,&lt;br /&gt;# such as:  c:\snort\rules&lt;br /&gt;var RULE_PATH /usr/local/snort/rules/rules&lt;br /&gt;var SO_RULE_PATH /usr/local/snort/rules/so_rules&lt;br /&gt;var PREPROC_RULE_PATH /usr/local/snort/rules/preproc_rules&lt;br /&gt;&lt;br /&gt;###################################################&lt;br /&gt;# Step #6: Configure output plugins&lt;br /&gt;# For more information, see Snort Manual, Configuring Snort - Output Modules&lt;br /&gt;###################################################&lt;br /&gt;&lt;br /&gt;# syslog&lt;br /&gt;output alert_syslog: LOG_AUTH LOG_ALERT&lt;br /&gt;&lt;br /&gt;# pcap&lt;br /&gt;# output log_tcpdump: tcpdump.log&lt;br /&gt;&lt;br /&gt;# database&lt;br /&gt;output database: alert, mysql,user=snort password=senhaBancoSnortmysql dbname=snort host=192.168.0.65&lt;br /&gt;&lt;br /&gt;output database: log, mysql,dbname=snort username=snort password=senhaBancoSnortmysql host=192.168.0.65&lt;br /&gt;&lt;br /&gt;###################################################&lt;br /&gt;# Step #7: Customize your rule set&lt;br /&gt;# For more information, see Snort Manual, Writing Snort Rules&lt;br /&gt;###################################################&lt;br /&gt;…&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para debugar habilitei também o output dos alertas e logs do snort para o syslog e sua saida esta sendo escrita no /var/log/messages.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6) &lt;/span&gt;Para testar inicie o snort, acompanhe a saída e se ocorrer algum erro a inicialização será interrompida e vc poderá verificar qual o motivo para o erro:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;# /usr/local/snort/bin/snort -c /usr/local/etc/snort/snort.conf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para coloca-lo na inicialização do S.O e setar alguns parametros como interface que o snort irá escutar, coloca o seu processo em back ground etc, então criei um script para o rc.d(lembrando que neste caso estou utilizando o FreeBSD). Abaixo o script snort dentro da pasta /usr/local/etc/rc.d:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;Exp $&lt;br /&gt;&lt;br /&gt;# PROVIDE: snort&lt;br /&gt;# REQUIRE: DAEMON&lt;br /&gt;# BEFORE: LOGIN&lt;br /&gt;# KEYWORD: shutdown&lt;br /&gt;&lt;br /&gt;. /etc/rc.subr&lt;br /&gt;&lt;br /&gt;name="snort"&lt;br /&gt;&lt;br /&gt;rcvar="`set_rcvar`"&lt;br /&gt;&lt;br /&gt;load_rc_config $name&lt;br /&gt;&lt;br /&gt;: ${snort_enable="YES"}&lt;br /&gt;: ${snort_if_listen="re0"}&lt;br /&gt;: ${snort_config_file="/usr/local/etc/snort/snort.conf"}&lt;br /&gt;&lt;br /&gt;command="/usr/local/sbin/snort/${name}"&lt;br /&gt;command_args="-q -D -i ${snort_if_listen} -c ${snort_config_file}"&lt;br /&gt;procname="/usr/local/sbin/snort/snort"&lt;br /&gt;pidfile="/var/run/${name}_${snort_if_listen}.pid"&lt;br /&gt;&lt;br /&gt;run_rc_command "$1"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Já no arquivo /etc/rc.conf, ahbilito o mesmo para carregar na inicialização e seto alguns parametros:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;# SNORT&lt;br /&gt;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;snort_enable="YES"&lt;br /&gt;snort_if_listen="re1"&lt;br /&gt;snort_config_file="/usr/local/etc/snort/snort.conf"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pronto! Agora você já possui o snort na inicialização...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Observações:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- No arquivo snort.conf habilite rules/regras que sejam relevantes a sua rede, por exemplo, você não precisa deixar habilitada a regra para serviços mysql se você não possui nenhum servidor mysql em sua rede... Outra coisa importante também, é definir bem as váriaveis do seu arquivo snort.conf, para que se tenha um bom filtro e que se colete alertas que realmente sejam importantes para a segurança de sua rede e também para se evitar logs que sejam falsos positivo.&lt;br /&gt;&lt;br /&gt;- Sempre mantenha suas regras atualizadas, para autmatizar essa atualização de regras utilizo o aplicativo oinkmaster pesquise como instala-lo e configura-lo é bastante simples.&lt;br /&gt;&lt;br /&gt;- Utilize as regras do Emerging Threats que é uma comunidade de projetos open sources que desenvolve assinaturas/regras para o snort e que também possui outros projetos open sources ligados a segurança da informação. Conheça http://www.emergingthreats.net/index.php/about-et-mainmenu-43.html&lt;br /&gt;&lt;br /&gt;- Existe um arquivo na pasta etc do snort chamado threshold.conf lá você poderá colocar limites para alertas que são gerados com muita frequência ocasionando em alto output se preferir você poderá suprimi-los também utilizando este arquivo threshold.conf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-2457109698596892278?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/dmzfpT0zEVI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/dmzfpT0zEVI/snort-instalacao.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/06/snort-instalacao.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7620206746892663415.post-2857157380462683952</guid><pubDate>Wed, 16 Jun 2010 17:24:00 +0000</pubDate><atom:updated>2010-06-23T06:29:30.339-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">seguranca_de_rede</category><title>Snort - Introdução ao IDS/IPS Snort</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NkBi1G4HRVNBgFmHVNYhSlzWWU0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NkBi1G4HRVNBgFmHVNYhSlzWWU0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NkBi1G4HRVNBgFmHVNYhSlzWWU0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NkBi1G4HRVNBgFmHVNYhSlzWWU0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;O Snort é um sistema de detecção de invasão baseado em rede (SDIR)  de código fonte aberto, possuindo muitos recursos. Ele é sniffer que tem como diferencial a capacidade de inspecionar o payload do pacote, área que contém os dados do mesmo, fazendo o registros dos pacotes, além de detectar as invasões.&lt;br /&gt;&lt;br /&gt;O Snort é um sistema avançado capaz de detectar quando um ataque&lt;br /&gt;está sendo realizado e, baseado nas características do ataque, alterar ou remodelar sua configuração de acordo com as necessidades, e até avisar ao administrador do ambiente sobre o ataque.&lt;br /&gt;&lt;br /&gt;Considera-se o Snort um SDI ligthweight, ou seja, ele pode ser colocado em funcionamento com muito pouco esforço tanto no sentido computacional quanto no sentido configuração e suporte.&lt;br /&gt;Um característica marcante do Snort é a facilidade de criação de assinaturas de ataques. Profissionais da área de segurança da informação sabem da velocidade que os eventos ocorrem no mundo virtual. A prontidão, exatidão e rapidez são assuntos essenciais em se tratando de segurança. Como o Snort é um sistema de código aberto e apresenta linguagem fácil de criação de assinaturas, permite a pronta criação e adição de uma nova assinatura de ataque por parte do&lt;br /&gt;administrador.&lt;br /&gt;&lt;br /&gt;O Snort é uma ótima ferramenta, mas como todo aplicativo deve ser bem implementada. Devem ser aplicadas somente as assinaturas de ataques relevantes a realidade da rede. Por exemplo, não é necessário monitorar ataque a banco de dados MySQL se ele não se encontra em uso, o que ocasionaria apenas alertas irrelevantes. Além disso o banco de assinaturas deve estar constantemente atualizado evitando assim que ataques passem desapercebidos. O administrador tendo esses cuidados evita ou minimiza os falsos positivos e falsos negativos.&lt;br /&gt;&lt;br /&gt;O profissional responsável pela rede deve certificar-se que o sistema onde o Snort esta operando é o mais seguro possível, ou seja, deve-se esta atendo a segurança do sistema operacional onde o Snort esta rodando. Uma invasão à máquina SDI invalida qualquer alerta do mesmo.&lt;br /&gt;O Snort é um sistema que não requer grandes recursos de hardware. Os recursos de hardware necessário para o sistema operacional em uso atende ao Snort.&lt;br /&gt;&lt;br /&gt;O Snort foi projetado para ser executado em uma grande gama de sistemas entre eles Linux, FreeBSD, NetBSD, OpenBSD, Solaris, MacOS, Windows, entre outros.&lt;br /&gt;&lt;br /&gt;Existem alguns programas opcionais que podem ser instalados para melhorar/facilitar a administração do sistema. Cita-se os aplicativos para o mundo Linux. Os softwares são:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.snort.org/downloads/additional-downloads/"&gt;http://www.snort.org/downloads/additional-downloads/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FONTE:&lt;/span&gt; &lt;a href="http://www.ginux.ufla.br/files/mono-BrunoSantos.pdf"&gt;http://www.ginux.ufla.br/files/mono-BrunoSantos.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7620206746892663415-2857157380462683952?l=conteudoopensource.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ContedoOpenSourceESeguranaDaInformao/~4/5ihWH_9pPK8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/ContedoOpenSourceESeguranaDaInformao/~3/5ihWH_9pPK8/snort-snort-286-em-modo-promiuscuo.html</link><author>noreply@blogger.com (Leonardo Couto Conrado)</author><thr:total>0</thr:total><feedburner:origLink>http://conteudoopensource.blogspot.com/2010/06/snort-snort-286-em-modo-promiuscuo.html</feedburner:origLink></item></channel></rss>

