terça-feira, 17 de julho de 2007

Mandriva nega rumores de negociação com a Microsoft e diz que não vai fazer

Por Manoel Pinho
19 de junho de 2007

Conforme noticiado em vários sites sobre linux e agora confirmado através de anúncio oficial do CEO da Mandriva, François Bancilhon, a Mandriva está desmetindo os boatos de que a empresa estaria negociando com um acordo com a Micro$oft nos mesmos moldes dos acordos que a Novell, Linspire e a Xandros fizeram recentemente.

As primeiras declarações não oficiais feitas por alguns funcionários da Mandriva podem ser vistas através dos links desta notícia do br-linux.org e hoje foi publicada no mesmo site outra notícia sobre as declarações oficiais do CEO da Mandriva.

A íntegra das declarações dele podem ser lidas (em inglês) aqui . A seguir, uma tradução livre minha:

"Novell, Xandros e Linspire assinaram acordos com a Microsoft bem divulgados.

Rumores na Web insinuaram que poderíamos ser os próximos na lista. Portanto gostaria de esclarecer nossa posição.

Na Mandriva, acreditamos que trabalhar em ambientes heterogêneos é essencial para nossos clientes. Assim, interoperabilidade entre os mundos do Windows e do Linux é importante e deve ser trabalhada, e qualquer coisa que ajude essa interoperabilidade é boa.

Também acreditamos que o melhor meio para lidar com interoperabilidade é através de padrões abertos, tais como o ODF que nós suportamos fortemente e estamos prontos para cooperar com qualquer um nesses tópicos.

No que se refere a IP (Propriedade Intelectual), não somos, para dizer o mínimo, grandes fãs de patentes de software e do sistema de patentes atual, que consideramos como improdutivo para a indústria em geral.

Também acreditamos no que vemos, e até agora, não há absolutamente nenhuma evidência concreta apontada por nenhum dos disseminadores de FUD de que o Linux e softwares livres estão violando quaisquer patentes. Então pensamos que, como em qualquer democracia, pessoas são inocentes até que sejam provadas culpadas e continuaremos trabalhando de boa fé.

Assim, não acreditamos ser necessário para nós obter proteção da Microsoft para fazer nosso trabalho ou pagar proteção a ninguém.

Planejamos continuar desenvolvendo e distribuindo produtos inovadores e excitantes e tornando-os disponíveis para o maior número de pesoas no verdadeiro espírito do software livre.

SERVIDORES WINDOWS / LINUX

MANDRIVA LINUX
Novo mirror brasileiro para o Mandriva Linux !

Os usuários brasileiros do Mandriva Linux sempre tiveram o problema da escassez de mirrors rápidos e confiáveis no Brasil para a distribuição. Há pouco mais de um mês nós do MandrivaBrasil.org perguntamos então ao Centro de Computação Científica e Software Livre (C3SL) da Universidade Federal do Paraná (UFPR) sobre a possibilidade de hospedagem de um mirror do Mandriva Linux, já que o C3SL já hospedava mirrors de outras distribuições de linux e outros softwares livres importantes (ele é o mirror brasileiro do sourceforce).

Gostaríamos de agradecer imensamente ao Prof. Dr. Carlos Carvalho da UFPR, que prontamente atendeu as nossas solicitações e ofereceu a hospedagem do mirror, e ao Adam Williamson da Mandriva, que tirou as dúvidas sobre os procedimentos para tornar oficial o mirror recém-criado, constando a partir de agora na relação de mirrors listados no site da Mandriva e no MCC (no utilitário de configuração de mídias/repositórios), e ainda anunciando oficialmente o novo mirror no MandrivaClub e na lista de emails do Mandriva Cooker (versão em desenvolvimento).

O mirror Mandriva do C3SL já está disponível via ftp , http ou rsync e contém tanto a árvore das versões estáveis quanto das versões em desenvolvimento, além das imagens iso do Mandriva Linux.

Agora há ainda menos motivos para os usuários brasileiros do Mandriva Linux não usarem os repositórios oficiais e utilitários de instalação automática de pacotes disponível na distribuição. Recomendamos fortemente a leitura dos artigos http://www.mandrivabrasil.org/site/forum/index.php?topic=2020.0 e http://www.mandrivabrasil.org/site/content/view/13/29/ para habilitar e aprender a usar os repositórios e utilitários de gerenciamento de pacotes. E utilizem o novo mirror brasileiro do Mandriva Linux !


Detecção de intrusos (IDS), conceitos e implantação do SNORT

Autor: Everton Godoi
Data: 09/05/2007

Detecção de intrusos e anomalias

Sistema de Detecção de intrusos, IDS (intrusion detection system), são sistemas que detectam vários tipos de trafego da rede (NIDS) e também de computadores maliciosos (HIDS) que não são detectados por um firewall da rede. Os IDS são compostos por diversos componentes: sensores que geram todos os eventos de segurança, um console que monitora os eventos e alertas. Para controlar os sensores existe uma central que grava os eventos registrados pelos sensores em uma base de dados e usam regras que geram alertas dos eventos de segurança.

Sistemas de detecção de intrusos é dividido em HOST (HIDS - Host Intrusion Detection System), que seria monitoramento em um computador e REDE (NIDS - Network Intrusion Detection System), monitoramento de uma rede de computadores.

Sistemas de detecção de anomalias consistem em um monitoramento nas variações nas atividades da rede relacionando com um padrão de utilização normal da rede.

Sistema de detecção de intrusos da rede (NIDS) é um sistema que trabalha detectando atividades maliciosas na rede, como ataques baseados em serviço, port scans ou até monitoramento do tráfego da rede. O NIDS faz isto lendo todos os pacotes que entram na rede e tenta encontrar alguns testes padrões, suporte que houvesse um grande número de requisição TCP a várias portas diferentes, pode haver um port scan em algum computador da rede.

Sistema de detecção de intrusos por host (HIDS) é um sistema que monitora o comportamento de um sistema, pois o NIS verifica somente os pacotes de uma rede e o HIDS pode detectar que um software esta tentando fazer alguma atividade que não faz parte de seu funcionamento, ele consegue verificar o estado do sistema operacional, informações armazenadas, memória RAM, e certifica que os índices estão normais, podemos considerar o HIDS como um agente que monitora tudo que seja interno e externo.

Sistema de detecção anomalia é um sistema que para detectar intrusos e mal utilização do computador ele utiliza classificação no monitoramento que seria entre normal e anômalo, a classificação é baseada em regras, ele acaba sendo o contrário dos sistemas baseados em assinatura, que podem somente detectar os ataques para que uma assinatura tenha sido criada previamente.


Software de IDS Snort

O Snort é um sistema de detecção de intruso que é capaz de executar registros dos pacotes e a análise do tráfego de uma rede em tempo real, ele consegue executar análise do protocolo, ele faz combinações que pode detectar uma variedade de ataques e probabilidades, como port scan, ataques CGI, ataques pelo Samba (smb) e vários outros.

O sistema também pode ser utilizado para finalidades de uma análise de tentativa de ataque no momento em que elas estão ocorrendo, ele pode ser trabalhado com outro software para ter uma interface visual de simples visualização, um exemplo é trabalho o Snort com o (BASE) Basic Analysis and Security Engine. O Snort suporta ainda um scaneamento da rede com um antivírus como o Amavis e ele trabalha na camada de rede 3 e 4, e com isto é possível ele ter uma observação histórica dos possíveis ataques a rede.

Abaixo imagem de um IDS em funcionamento, basicamente ele tem três placas de rede que serão o scanner das redes externa e interna (setas vermelhas), ele é ligado em um HUB que filtra todas as entradas e saídas da rede para verificar a existência de algum protocolo ou requisição maliciosas.


Funcionamento do Snort

Instalação do Snort

Antes de iniciar a instalação do Snort temos que instalar todas as dependências dele para que funcione junto com o BASE, vamos então iniciar a instalação baseado na lista abaixo:

* APACHE: apache apache-ssl
* MYSQL: mysql-server libmysqlclient12-dev zlib1g-dev
* PHP 4: php4 php4-mysql libphp-adodb libnet1 libnet1-dev php4-gd php4-gd php4-pear php4-cli
* TCPDUMP: tcpdump libpcap0.8 libpcap0.8-dev libpcre3-dev


Vamos então iniciar a instalação:

Instalação do servidor Web:

# apt-get install apache apache-ssl

Instalação do servidor de Banco de Dados:

# apt-get install mysql-server libmysqlclient12-dev zlib1g-dev

Instalação da linguagem Web PHP:

# apt-get install php4 php4-mysql libphp-adodb libnet1 libnet1-dev php4-gd php4-gd php4-pear php4-cli

Instalação do TCPDump:

# apt-get install tcpdump libpcap0.8 libpcap0.8-dev libpcre3-dev

Agora vamos fazer a instalação do Snort, é recomendável sempre verificar no site oficial do Snort qual a última versão do software para fazer a instalação, hoje vamos fazer a instalação da versão 2.6.1.4.

Vamos acessar a pastar /usr/local/src/ que eu utilizo como a pasta padrão para os source que eu faço download:

# cd /usr/local/src/

Baixando o snort-2.6.1.4.tar.gz:

# wget http://www.snort.org/dl/current/snort-2.6.1.4.tar.gz

Descompactando o arquivo baixado:

# tar -xvzf snort-2.6.1.4.tar.gz

Agora vamos compilar e instalar o Snort já com suporte a MySQL:

# cd /usr/local/src/snort-2.6.1.4
# ./configure --with-mysql
# make
# make install
# ./configure --with-mysql

Criar as pastas padrões para o Snort funcionar:

# mkdir /etc/snort /var/log/snort

Agora vamos criar a conta e o grupo de trabalho do Snort:

# addgroup --gid 70 snort
# adduser --no-create-home --shell /bin/false --gid 70 --uid 70 --disabled-password snort

Vamos adicionar algumas regras oficiais no Snort, acesse o site:

* http://www.snort.org/pub-bin/downloads.cgi


e verifique qual a última versão que está disponível no site, aqui iremos instalar a 2.4:

# cd /etc/snort
# wget http://www.snort.org/pub-bin/downloads.cgi/\
Download/sub_rules/snortrules-snapshot-2.4_s.tar.gz

Descompactando o pacote com as regras e fazendo uma copia dos arquivos .conf e .map do snort:

# tar -xvzf snortrules-snapshot-2.4_s.tar.gz

Após descompactar ele irá criará automaticamente as pastas rules e doc, isso dentro da pasta que você descompactar, que deve ser a /etc/snort.

Agora vamos fazer cópia dos arquivos .conf e .map:

# cp /usr/local/src/snort-2.6.1.4/etc/*.conf* /etc/snort/
# cp /usr/local/src/snort-2.6.1.4/etc/*.map /etc/snort/

Agora vamos configurar o snort:

# vi /etc/snort/snort.conf

## Edite o arquivo como monstra abaixo
#
# Arquivo com regras do snort
var RULE_PATH /etc/snort/rules
# Rede onde o snort irá trabalhar
var HOME_NET 192.168.1.0/24
#
var EXTERNAL_NET !$HOME_NET

Adicionando o Snort no MySQL para ele armazenar os logs de captura no banco de dados:

# mysql -u root -p
mysql> create database snort;
mysql> exit;
# cd /usr/local/src/snort-2.6.1.4/schemas/
# mysql -u root -p < create_mysql snort

Configuração para o Snort utilizar o MYSQL:

# vi /etc/snort/snort.conf

# Arquivo de configuração do Snort, para ele funcionar normalmente
# deve-se descomentar a linha output

# database: log to a variety of databases
# ---------------------------------------
#
output database: log, mysql, user=root password=senhaMysql dbname=snort host=localhost
#----------------------------------------

Finalizamos aqui a instalação do Snort com suporte a MySQL, agora vamos para a instalação do BASE.


Instalação do BASE

Agora vamos fazer a instalação do BASE, mas para ele funcionar precisamos ter um servidor Apache-SSL funcionando, então vamos fazer algumas configurações que são necessárias para ele rodar com suporte a PHP:

# vi /etc/apache-ssl/httpd.conf

#--------------------------------------------
# Se não tiver estas linhas você deve adicioná-las
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#
#-------------------------------------------

# vi/etc/php4/apache/php.ini

#--------------------------------------------
# Se não tiver estas linhas você deve adicioná-las
#
extension=mysql.so
#
#--------------------------------------------

Reiniciando o servidor Apache-SSL:

# . /etc/init.d/apache-ssl restart

Instalação do base (Basic Analysis and Security Engine)
Acessando a pasta www do apache:

# cd /var/www

Fazendo download do base:

# wget http://ufpr.dl.sourceforge.net/sourceforge/secureideas/base-1.2.7.tar.gz

Removendo a página index.html do diretório www e descompactando o base-1.2.7 aqui baixado, renomeando pasta e alterando permissões de usuários da pastas para o usuários web (www-data):

# rm index.html
# tar xvzf base-1.2.7.tar.gz
# mv base-1.2.7 base
# chown -R www-data:www-data base

Agora vamos configurar o base via web, primeiro abra o browser e acesse o endereço:

https://www.seuserver.com.br/base

E adicione as configurações básicas do BASE:

Linguagem: Português
Path para o Adobd: /usr/share/adodb/

Database Name: snort
Database Host: localhost
Database Port: deixe em branco!
Database User Name: root
Database Password: senhaMysql

Clique em "create baseag"

Agora vá para o passo 5: login

Configurando o PEAR no Debian:

# pear config-set preferred_state alpha

Instalando alguns pacotes necessários do Pear para que o BASE funcione normalmente:

# pear install Image_Color
# pear install Image_Canvas
# pear install Image_Graph

Configurando o php4 para suportar a biblioteca gráfica do php-gd:

# vim /etc/php4/cli/php.ini

#-------------------------------------------------------
# Descomente a linha abaixo
#
extension=gd.so
#
#-------------------------------------------------------

Espero ter ajudado a comunidade com este artigo, pois demorei algum tempo para fazê-lo. Está bem tranqüilo para entender o que é, como funciona e implantação de um IDS na rede.

Estou a disposição para esclarecer dúvidas dos usuários da comunidade, obrigado a todos, T+.

Elog - Documentação eletrônica

Autor: Rafael Andrade
Data: 16/07/2007

Introdução

Atualmente trabalho em um cpd de uma grande empresa de auto-peças, duas pessoas mais eu somos responsáveis pelos quase 200 computadores que a empresa possui, como todos sabem, e também trabalham com isso, não são só de 200 computadores que estamos falando e sim de 200 computadores + 10 servidores + 20 printservers + 10 access points + uma infinidade de equipamentos eletrônicos usados atualmente em uma rede de computadores.

Pois bem, quando cheguei para trabalhar aqui minha rotina de trabalho foi alterada em praticamente 100%, antes trabalhava em uma empresa de manutenção de computadores, com alguns contratos de manutenção de empresas, clientes... e hoje, trabalhando em um cpd, com diversos softwares utilizados pela empresa, é difícil a memorização de tudo que aqui se passa, e mesmo sendo "memorizado", a única pessoa que irá saber do que acontece aqui dentro em relação a configuração de impressoras (IPs, MACs), APs, print servers e servidores é a pessoa que os configurou.

Certo, mas aonde quero chegar?

Quando entrei para trabalhar aqui me deparei com um monte de informações, nomes de usuários, localização de banco de dados, recebi treinamento em alguns softwares e o chefe do setor me passou uma infinidade de ferramentas, configurações, nomes de usuários, senhas (que se não fossem anotadas com certeza eu não lembraria nem sequer no outro dia).

Mas como o bom chefe de setor que é, me mostrou o software que ele usava aqui para documentar certas informações, para que quando acontecesse algo do tipo, como um novo funcionário, ele não precisasse dar aulas ou perder tempo (já contrataram mais alguém de certo porque faltava tempo para tudo), mostrando configuração por configuração de base de dados ou programas.

Com isso ele me mostrou o ELOG, que será falado a seguir.

Pagina oficial: http://midas.psi.ch/elog/
Screenshots: http://midas.psi.ch/elog/#screenshots
Download: http://midas.psi.ch/elog/download.html
Demonstração do Programa: http://midas.psi.ch/elogs/Linux%20Demo/


Instalação e configuração

O artigo é para ser usado por qualquer pessoa utilizando qualquer distribuição Linux, desde que seja adaptado para sua distribuição, utilizei na instalação o Debian Etch 4.0.

O ELOG é parte de uma família de aplicações conhecidas como WebLogs.

* Fácil acesso e manuseio de qualquer pessoa para adicionar informações das mais diversificadas finalidades, criando uma uma lista de informações que podem ser acessadas em uma interface web.
* Dividido por grupos e tópicos, facilitando a busca por informações, possibilitando o upload de arquivos de configuração ou screenshots para o manuseio de outras pessoas.
* Adicionar, remover ou atualizar entradas ou comentários podem ser controlados com a possibilidade de utilização de grupos de usuários e também com a notificação por smtp, informando aos participantes do grupo que alguma informação foi alterada/adicionada no sistema.
* Não necessita de base de dados (mysql, oracle, firebird).


Pessoalmente eu utilizo o elog para documentação e howtos de programas (senhas, usuários), atualizações de programas, arquivos de seriais, informações sobre backups.

Instalação:

Pasta aonde você irá baixar o arquivo.

# cd /usr/local/src

Baixar a última versão do ELOG do site:

# wget http://midas.psi.ch/elog/download/tar/elog-latest.tar.gz

Descompacte o arquivo:

# tar -zxvf elog-latest.tar.gz

Renomeie o arquivo, que no meu caso está na versão 2.6.5 como abaixo:

# mv elog-2.6.5/ elog

Entre na pasta descompactada:

# cd elog

Compile:

# make ; make install

Irão aparecer algumas informações de onde foram postos os arquivos de configuração. Caso não saiba aonde está o elogd (serviço), use o comando abaixo:

# whereis elogd

No meu caso está em /usr/local/sbin/elogd.

Com o comando abaixo você inicializará o elog com seu arquivo de configuração:

# /usr/local/sbin/elogd -c /usr/local/elog/elogd.cfg

Tente acessar:

http://localhost:8080

"Congratulations for installing ELOG sucessfully!"

Edite o arquivo elogd.cfg (/usr/local/elog/elogd.cfg) para ter acesso as configurações do programa.


Conclusão

A configuração padrão que acompanha o software é bem básica, sem o uso de senhas e com linguagem padrão inglês.

Adicionando algumas configurações de segurança o programa pode ser usado para armazenadas informações confidenciais, como configurações utilizadas no sistema, arquivo de senhas de printservers, access points, servidores, etc.

Utilizo aqui para documentação de atualizações de sistemas, manuais de sobrevivência com uso de backups em fitas manuais, etc.

Caso algum funcionário novo seja contratado para trabalhar em um setor, toda a documentação está em dia e ninguém terá problemas de esquecimento.

A instalação que foi posta aqui é bem simples e fácil uso.

Caso alguém se interesse mais pelo software, pode me mandar um email que uso ele aqui com algumas funções a mais.

PortSentry: Melhorando a segurança do seu Linux

Autor: Anderson Luiz Tamborim
Data: 29/04/2004

PortSentry: Uma alternativa eficiente

Introdução

PortSentry é uma aplicação muito simples de ser utilizada, escrita para sistemas GNU/Linux com o objetivo de ajudar usuários a manter crackers longe de seu precioso sistema, barrando portscanners e outras tentativas de burlar sua segurança.

PortSentry foi desenvolvido pelo pessoal da Psionic.com, que hoje faz parte da CISCO como vocês podem ver aqui:

* http://newsroom.cisco.com/dlls/corp_102202.html


Projeto Sentry Tools

O PortSentry foi concebido como parte do projeto Sentry Tools, que tem além dele o LogCheck, uma ferramenta de checagem de logs de maneira eficiente e bem simples também.

Como podemos ver, o Projeto Sentry Tools veio para ajudar usuários e admins que não tem muita experiência em segurança de informática a conseguir um padrão um pouco mais elevado de segurança em seus sistemas de maneira simples e bem intuitiva.

Recomendo uma visita ao site do projeto:

* http://sourceforge.net/projects/sentrytools/


Vamos ver agora como instalar e configurar o PortSentry e assim tornar nosso Linux ainda mais seguro.


Instalando e configurando

Primeiro passo é baixar a versão mais recente do PortSentry. Vamos baixar a versão direto do site do projeto, já tive umas experiências com RPMs no Conectiva e meu amigo, não foram muito interessantes.

Pegue o .tar.gz que ele compila sem muitos traumas e a instalação é bem rápida.

Vamos lá! Vamos baixar o PortSentry de um dos mirrors que temos na página, o arquivo tem apenas 47 Kb:

http://easynews.dl.sourceforge.net/.../portsentry-1.2.tar.gz
/* esse link e bem rápido */

Muito bem, vamos criar uma pastinha para nosso amigo:

$ mkdir /security
$ mv portsentry-1.2.tar.gz /security
$ cd /security
$ tar -xzvf portsentry-1.2.tar.gz
$ ./configure ; make ; make install

e voilá, teremos o PortSentry instalado em nosso sistema ;)

Configurando

Essa é a parte mais divertida porque garanto que cada um após observar o arquivo de configuração do PS vai ver configurações que lhe chamarão mais a atenção devido às suas opções totalmente inusitadas.

Vou dar um exemplo de configuração de bloqueio para atacantes que tentam portscanning e um pequeno honey pot.

Vamos dar uma olhada na pasta /usr/local/psionic/portsentry. Teremos alguns arquivos dentro dela, vamos utilizar o portsentry.conf.

Vamos ver as primeiras configurações interessantes que devemos fazer:

# Un-comment these if you are really anal:
# TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,,[..]
# UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,[..]
#
# Use these if you just want to be aware:
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,[..]"
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,[..]"
#
# Use these for just bare-bones
# TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,[..]"
# UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,[..]"

Aqui estão as portas TCP/UDP que o PortSentry vai "guardar". Analise as portas que tem em cada lista, as portas verdadeiras de seu sistema não devem constar nesta lista, OK? Caso contrário, o PS vai bloquear as tentativas de conexão nelas.

Como vocês viram, o segundo conjunto de portas está habilitado, vamos utilizar ele como teste, depois podemos refinar essas portas e tudo mais que vocês queiram.

Vamos continuar nossa análise no arquivo de conf:

IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"
HISTORY_FILE="/usr/local/psionic/portsentry/portsentry.history"
BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked"

Bom, o primeiro arquivo são os hosts que o PortSentry deve ignorar, ou seja, os hosts que estiverem nesta list não serão analisados por ele.

O segundo é o history, ou seja, tudo que o PS já fez, desde analisar conexões até bloquear, tudo estará listado neste arquivo. Equivale a um ~/.bash_history.

O terceiro é a lista negra do PortSentry, os atacantes bloqueados por ele e os hosts que ele considera como perigosos. Nessa lista você deve ficar esperto porque às vezes alguém pode cair aí por engano de um falso positivo, então fique sempre analisando esta lista para não ficar sem determinados serviços de comunicação.

Vamos ver agora uma opção muito maneira do Port Sentry que é a KILL_ROUTE. Esta função como já diz o nome, killa a rota do atacante, passando a ignorar todo e qualquer pacote e requisição feita por ele pelo tempo que você determinar (logo mostraremos como).

Como usamos Linux, a opção que vamos habilitar será a:

KILL_ROUTE="/usr/local/sbin/iptables -I INPUT -s $TARGET$ -j DROP"

Como você pode ver, é uma regra simples, você pode melhorar a regra do jeito que achar melhor e tudo mais, iptables meu amigo, tem 10001 possibilidades.

OBS: $TARGET$ = ip do atacante que ele detectou.

Além de bloquear pelo iptables você também pode utilizar TCP Wrappers para isso:

KILL_HOSTS_DENY="ALL: $TARGET$ # PortSentry blocked"

Não recomendo a seção de Droping Route porque dá mais trabalho de liberar IPs bloqueados. KILL_ROUTE já é mais que suficiente.

External Command

Essa parte permite você realizar um comando externo ao PortSentry para reagir ao ataque ou para escrever algum log especial.

# KILL_RUN_CMD="/some/path/here/script $TARGET$ $PORT$"

Como podem ver, a sintaxe padrão é como se fosse executar um "contra ataque", mas isso não é muito interessante não é mesmo?

Creio que para nós seria mais interessante escrever um log com os IPs atacantes e tal. Bom, fica a seu critério, onde $PORT$ é a mesma porta onde você foi atacado.

Port Banner Section

Essa é a parte mais legal do PortSentry. Como você viu lá em cima, ele fica analisando várias portas, se alguém passar um scan de portas e não for barrado por algum motivo, ele vai tentar conectar em alguma porta chamativa como 79 5555 e terá uma surpresa:

PORT_BANNER="** Unauthorized Access Prohibited ** Your Connection attempt has been logged . . . GO AWAY!!"

Ele irá ver essa mensagem em seu cliente telnet por exemplo e sua rota será killada.

Coloque algo ao seu gosto:

"Cai fora seu inxirido!!! aqui está o seu ip $TARGET$"

Fica ao seu gosto :)


Considerações finais

Como viram, é muito simples configurar o PortSentry. Fica para uma próxima vez uma pequena análise do logcheck OK?

Testem ele aí em suas máquinas e tentem refinar a qualidade das proteções a seu gosto. Verão que pode ser feita muita coisa legal com ele, como por exemplo integrá-lo com snort e psad, fica muito bom.

Cordial abraço à todos.

Spawn Locoust

PS: Seguem alguns links:

* http://linux.cudeso.be/linuxdoc/portsentry.php
* http://www.linuxsecurity.com.br/article.php?sid=8365
* http://www.linux.ie/articles/portsentryandsnortcompared.php
* http://www.securityfocus.com/infocus/1580


Até o próximo.

Linux - Permissões de acesso especiais

Autor: Roberto Rodrigues da Silva
Data: 17/11/2006

Lembrando como as permissões básicas funcionam

No Linux há três modelos de controle de acesso básicos: Read, Write e Execution.

Veja um exemplo de permissão básica na figura abaixo:


O Tipo do Objeto significa:

* d => diretório;
* b => arquivo de bloco;
* c => arquivo especial de caractere;
* p => canal;
* s => socket;
* - => arquivo normal.


Já os outros caracteres significam:

* r => permissão de leitura (read);
* w => permissão de gravação (write);
* x => permissão de execução (execution);
* - => permissão desabilitada.


Explicando um pouco mais:

Leitura (r):
Em arquivos, permite examinar o conteúdo do arquivo.
Em diretórios permite listar conteúdo do diretório.

Escrita (w):
Em arquivos, permite escrever, remover e alterar o arquivo.
Em diretórios, permite criar e remover arquivos dentro do diretório.

Execução (x):
Em arquivos, permite executar um arquivo como um programa.
Em diretório, permite ler e escrever em arquivos dentro do diretório.

Sendo que os três primeiros rwx pertencem ao Dono do arquivo, os outros três rwx pertencem ao Grupo e por fim os últimos três rwx pertencem há outros usuários que não fazem parte do grupo.


Permissões de acesso especiais

Mas somente as três permissões básicas (rwx) não dão toda flexibilidade para controlar acesso aos arquivos e diretórios.

Por isso o Linux tem mais três modelos especiais para controle de acesso, chamados suid (set user id), sgid (set group id) e Sticky (Sticky bit).

Veja um exemplo de permissão especial na figura abaixo:


SUID (Set User ID)

A propriedade SUID é somente para arquivos executáveis e não tem efeito em diretórios.

Nas permissões básicas, o usuário que executou o programa é dono do processo. Mas em arquivo executável com a propriedade SUID aplicada, o programa rodará com o ID do dono do arquivo, não com o ID do usuário que executou o programa.

Normalmente o usuário dono do programa executável é também dono do processo sendo executado. Ou seja, quando um arquivo/programa executável tem o controle de acesso SUID, ele é executado como se ele estivesse iniciado pelo dono do arquivo/programa.

A permissão de acesso especial SUID pode aparecer somente no campo Dono.

Exemplo:
Um exemplo para arquivo executável com a propriedade SUID é o arquivo /usr/bin/passwd. Ou seja, quando executamos o comando passwd com qualquer usuário normal, o processo é executado com ID do usuário root (como se o usuário root tivesse executado o comando passwd), pois somente o usuário root tem permissão para alterar o arquivo /etc/passwd.

# ls -lah /usr/bin/passwd
-rwsr-xr-x 1 root root 27K 2006-04-03 10:37 /usr/bin/passwd

Comandos:

Aplicando SUID:

Aplicando a propriedade SUID em um arquivo executável utilizando formato simbólico (s):

# chmod u+s programa.sh
# ls -lah programa.sh
-rwsr-xr-x 1 root roberto 0 2006-09-26 22:57 programa.sh

Aplicando a propriedade SUID em um arquivo executável utilizando formato octal (4):

# chmod 4750 programa.sh
# ls -lah programa.sh
-rwsr-x--- 1 root roberto 0 2006-09-26 22:57 programa.sh

Retirando SUID:

# chmod u-s programa.sh
# ls -lah programa.sh
-rwxr-x--- 1 root roberto 0 2006-09-26 22:57 programa.sh

Procurando SUID:

Procurando a propriedade SUID em um arquivo executável utilizando formato simbólico (s):

# find /home/roberto -perm u=s
/home/roberto/programa.sh

Procurando a propriedade SUID em um arquivo executável utilizando formato octal (4):

# find /home/roberto -perm -4000
/home/roberto/programa.sh


SGID (Set Group ID)

A propriedade SGID tem a mesma função que o SUID para arquivos executáveis. Mas a propriedade SGID tem um efeito especial para os diretórios.

Quando SGID é aplicado em um diretório, os novos arquivos que são criados dentro do diretório assumem o mesmo ID de Grupo do diretório com a propriedade SGID aplicado.

A permissão de acesso especial SGID pode aparecer somente no campo Grupo.

Exemplo:
Se no diretório /home/roberto tem o grupo casa e tem o SGID habilitado, então todos os arquivos dentro do diretório /home/roberto serão criados com o grupo casa.

Este é um importante atributo para uma equipe, assumindo que todos os arquivos compartilhados devem ter o mesmo grupo.

Comandos:

Aplicando SGID:

Aplicando a propriedade SGID em um diretório executável utilizando formato simbólico (s):

# chmod g+s /home/equipe
# ls -lah /home/equipe
drwxr-sr-x 2 roberto equipe 48 2006-09-26 23:21 .

Aplicando a propriedade SGID em um diretório executável utilizando formato octal (2):

# chmod 2750 /home/equipe
# ls -lah /home/equipe
drwxr-s--- 2 roberto equipe 48 2006-09-26 23:21 .

Retirando SGID:

# chmod g-s /home/equipe
# ls -lah /home/equipe
drwxr-xr-x 2 roberto equipe 48 2006-09-26 23:21 .

Procurando SGID:

Procurando a propriedade SGID em um diretório executável utilizando formato simbólico (s):

# find /home -perm /g=s
/home/equipe

Procurando a propriedade SUID em um diretório executável utilizando formato octal (2):

# find /home -perm -2000
/home/equipe


Sticky (Sticky bit)

Em arquivos executáveis, a propriedade Sticky faz com que o sistema mantenha uma imagem do programa em memória depois que o programa finalizar. Esta capacidade aumenta o desempenho, pois será feito um cache do programa para a memória e da próxima vez que ele for executado, será carregado mais rápido.

Em diretórios, a propriedade Sticky impede que outros usuários deletem ou renomeam arquivos dos quais não são donos. Isso normalmente é utilizado para aumentar a segurança, pois o diretório estará em modo append-only (somente incremente). Sendo assim, somente o usuário que é Dono do arquivo, poderá deletar ou renomear os arquivos dentro de um diretório com a propriedade Sticky aplicada.

A permissão especial Sticky pode ser especificada somente no campo outros usuários das permissões de acesso.

Exemplo:

No diretório /tmp, todos os usuários devem ter acesso para que seus programas possam criar os arquivos temporários, mas nenhum pode apagar arquivos dos outros.

Então é interessante aplicar a propriedade Sticky no diretório /tmp.

Comandos:

Aplicando Sticky:

Aplicando a propriedade Sticky em um arquivo executável utilizando formato octal (1):

# chmod 1750 programa_pesado.sh
# ls -lah programa_pesado.sh
-rwxr-x--T 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh

Aplicando a propriedade Sticky em um arquivo executável utilizando formato simbólico (t):

# chmod o+t programa_pesado.sh
# ls -lah programa_pesado.sh
-rwxr-x--T 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh

Aplicando a propriedade Sticky em um diretório utilizando formato simbólico (t):

# chmod o+t /tmp
# ls -lah /tmp
drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):

# chmod 1777 /tmp
# ls -lah /tmp
drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Retirando Sticky:

# chmod o-t /tmp
# ls -lah /tmp
drwxrwxrwx 8 root root 264 2006-09-26 23:22 .

Procurando Sticky:

Aplicando a propriedade Sticky em um diretório utilizando simbólico (t):

# find /home/roberto/ -perm /o=t
/home/roberto/programa_pesado.sh

Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):

# find /home/roberto/ -perm -1000
/home/roberto/programa_pesado.sh

Referência:

* Guia Foca Linux - Permissões especiais
* LPI Linux Certification in a Nutshell
* IBM DeveloperWorks - Linux LPI - Tópico 104.


Recursos:

* Manual do comando chmod
* http://robertors.bs2.com.br

Grave seus boots remotos com uma placa mãe

Grave seus boots remotos com uma placa mãe
Autor: Gilson Paulo Schuck
Data: 17/07/2007

Introdução

Todos (ou quase todos) sabem que placas mães dos pentiums S até hoje usam flashroms. Bom, tendo aqui em meu laboratório umas 30 placas mãe defeituosas, mas com as bois intactas, comecei a pesquisar alguma maneira de reaproveitar estas bios, e achei.

Vamos à lista de itens necessários:

1. Uma placa mãe que dê tela e funcione a controladora do floppy;
2. Um disquete com boot do ms-dos;
3. Download do software uniflash - www.uniflash.org
4. Uma flash rom de 32 pinos que você pode retirar de uma placa mãe com defeito;
5. Um drive de disquete (claro né);
6. Download do software da placa de rede do site www.rom-o-matic.net


Com tudo isto em mãos vamos precisar de um PC com Linux ou o cygwin.

Verifique o tamanho da sua flash rom. Ex: AT29C010 = 128k - SST29E010 = 128k, no site do uniflash você encontrará todas as flash roms compatíveis e seus respectivos tamanhos.

Com o software da placa baixado do site rom-o-matic, que geralmente tem em torno de 32k, teremos que ajustá-lo para 128k, caso contrário não será possível gravá-lo na rom.

No computador com Linux faça o seguinte:

Aqui estou ajustando uma imagem para realtek 8139.

R=eb-5.4.3-rtl8139.zrom

Para uma rom de 64k:

$ cat $R $R > 8139.rom

Para uma rom de 128k:

$ cat $R $R $R $R > 8139.rom

Para uma rom de 256k:

$ cat $R $R $R $R $R $R $R $R > 8139.rom

Para uma rom com 512k:

$ cat $R $R $R $R $R $R $R $R $R $R $R $R $R $R $R $R > 8139.rom

Feito isto salve ela no disquete que você criou com o boot do DOS e que também está com o uniflash, iniciei o computador com este disquete, após terminado o boot retire a bios da placa mãe e coloque a rom que deseja gravar e execute o seguinte comando.

$ uniflash -e 8139.rom

Após ter gravado, desligue a placa mãe, retire a rom e coloque na sua placa de rede e habilite nela o suporte a boot rom. Ajuste a bios do computador que receberá a placa de rede a inicializar pela placa de rede.

Pronto, agora você não precisa pagar mais para alguém gravar seus boot remotos para sua rede LTSP.

PS.: Desculpe a escrita e falta de pontuação, é que faz dias que estou querendo postar e não me sobra tempo. Não coloquei imagens porque perdi minha máquina digital (lá se foram 800 pilas).

No mais qualquer dúvida é só perguntar.

Monitorando as conversas do MSN com SCANHILL

Monitorando as conversas do MSN com SCANHILL
Autor: Uglaybe F Farias
Data: 26/06/2007

Introdução

O scanhill é um projeto do EnderUNIX e ainda continua em desenvolvimento, para maiores informações acesse:

* http://www.enderunix.org/scanhill/


A instalação baseia-se no distribuição Debian ETCH (assumimos que o sistema esteja instalado e funcionando).

Iniciaremos a instalação dos pacotes necessários:

Apache + PHP + MYSQL:

# apt-get -y install apache2 php5 libapache2-mod-php5 mysql-server-5.0 php5-mysql (mesma linha)

Adicionando senha ao usuário root do mysql:

# mysqladmin -u root password sua_senha
# /etc/init.d/mysql restart

Pacotes para compilação e bibliotecas:

# apt-get install libmysqlclient15-dev libpcap-dev g++ make automake1.9

Instalação do libiconv (resolve problema de codificação envolvendo caracteres ausentes):

# mkdir /pasta_de_trabalho
# cd /pasta_de_trabalho
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz
# tar -zxvf libiconv-1.11.tar.gz
# cd libiconv-1.11/
# ./configure --prefix=/usr/local
# make
# make install

Copiando a lib para o lugar certo:

# cp /pasta_de_trabalho/libiconv-1.11/lib/.libs/libiconv.so.2.4.0 /usr/lib/
# cd /usr/lib/
# ln -s libiconv.so.2.4.0 libiconv.so.2


Instalação do SCANHILL

Agora vamos ao sniffer SCANHILL:

# cd /pasta_de_trabalho
# wget http://www.enderunix.org/scanhill/scanhill-0.5-p1.tar.gz
# tar -zxvf scanhill-0.5-p1.tar.gz
# cd scanhill/
# ./configure --enable-mysql
# make
# make install

O arquivo /etc/scanhill.conf contém as configurações para acesso ao banco mysql, vamos configurá-lo.

# vim /etc/scanhill.conf

[GENERAL]
server=localhost
dbname=scanhill
user=scanhill
password=sua_senha_do_scanhill

Criando o banco de dados no mysql:

# mysqladmin -u root -p create scanhill

Criando as tabelas no banco:

# mysql -u root -p

USE mysql;
GRANT SELECT, INSERT, UPDATE, DELETE ON scanhill.* TO 'scanhill'@'localhost' IDENTIFIED BY 'sua_senha_do_scanhill';
GRANT SELECT, INSERT, UPDATE, DELETE ON scanhill.* TO 'scanhill'@'localhost.localdomain' IDENTIFIED BY 'sua_senha_do_scanhill';
FLUSH PRIVILEGES;

USE scanhill;

CREATE TABLE tmessage (
local VARCHAR(128),
remote VARCHAR(128),
message BLOB,direct VARCHAR(5),
lip VARCHAR(25),
times DATETIME);


Iniciando serviço

Iniciando o serviço:

# scanhill -i eth0 -c /etc/scanhill.conf

(eth0 é minha placa de rede externa)

Vamos adicionar o serviço WEB:

# cp -ar /pasta_de_trabalho/scanhill/php-interface /var/www/scanhill

Ajustando o apache2 para Default Charset ISO-8859-1. Descomentar a linha "AddDefaultCharset ISO-8859-1" de /etc/apache2/apache2.conf.

Agora é só acessar o http://seu_servidor/scanhill e ajustar as configurações de acesso ao banco scanhill.

Está pronto para o monitoramento. A ferramenta WEB em php é muito intuitiva.

Espero ter ajudado um pouquinho.

Monitorando as conversas do MSN com SCANHILL

Monitorando as conversas do MSN com SCANHILL
Autor: Uglaybe F Farias
Data: 26/06/2007

Introdução

O scanhill é um projeto do EnderUNIX e ainda continua em desenvolvimento, para maiores informações acesse:

* http://www.enderunix.org/scanhill/


A instalação baseia-se no distribuição Debian ETCH (assumimos que o sistema esteja instalado e funcionando).

Iniciaremos a instalação dos pacotes necessários:

Apache + PHP + MYSQL:

# apt-get -y install apache2 php5 libapache2-mod-php5 mysql-server-5.0 php5-mysql (mesma linha)

Adicionando senha ao usuário root do mysql:

# mysqladmin -u root password sua_senha
# /etc/init.d/mysql restart

Pacotes para compilação e bibliotecas:

# apt-get install libmysqlclient15-dev libpcap-dev g++ make automake1.9

Instalação do libiconv (resolve problema de codificação envolvendo caracteres ausentes):

# mkdir /pasta_de_trabalho
# cd /pasta_de_trabalho
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz
# tar -zxvf libiconv-1.11.tar.gz
# cd libiconv-1.11/
# ./configure --prefix=/usr/local
# make
# make install

Copiando a lib para o lugar certo:

# cp /pasta_de_trabalho/libiconv-1.11/lib/.libs/libiconv.so.2.4.0 /usr/lib/
# cd /usr/lib/
# ln -s libiconv.so.2.4.0 libiconv.so.2


Instalação do SCANHILL

Agora vamos ao sniffer SCANHILL:

# cd /pasta_de_trabalho
# wget http://www.enderunix.org/scanhill/scanhill-0.5-p1.tar.gz
# tar -zxvf scanhill-0.5-p1.tar.gz
# cd scanhill/
# ./configure --enable-mysql
# make
# make install

O arquivo /etc/scanhill.conf contém as configurações para acesso ao banco mysql, vamos configurá-lo.

# vim /etc/scanhill.conf

[GENERAL]
server=localhost
dbname=scanhill
user=scanhill
password=sua_senha_do_scanhill

Criando o banco de dados no mysql:

# mysqladmin -u root -p create scanhill

Criando as tabelas no banco:

# mysql -u root -p

USE mysql;
GRANT SELECT, INSERT, UPDATE, DELETE ON scanhill.* TO 'scanhill'@'localhost' IDENTIFIED BY 'sua_senha_do_scanhill';
GRANT SELECT, INSERT, UPDATE, DELETE ON scanhill.* TO 'scanhill'@'localhost.localdomain' IDENTIFIED BY 'sua_senha_do_scanhill';
FLUSH PRIVILEGES;

USE scanhill;

CREATE TABLE tmessage (
local VARCHAR(128),
remote VARCHAR(128),
message BLOB,direct VARCHAR(5),
lip VARCHAR(25),
times DATETIME);


Iniciando serviço

Iniciando o serviço:

# scanhill -i eth0 -c /etc/scanhill.conf

(eth0 é minha placa de rede externa)

Vamos adicionar o serviço WEB:

# cp -ar /pasta_de_trabalho/scanhill/php-interface /var/www/scanhill

Ajustando o apache2 para Default Charset ISO-8859-1. Descomentar a linha "AddDefaultCharset ISO-8859-1" de /etc/apache2/apache2.conf.

Agora é só acessar o http://seu_servidor/scanhill e ajustar as configurações de acesso ao banco scanhill.

Está pronto para o monitoramento. A ferramenta WEB em php é muito intuitiva.

Espero ter ajudado um pouquinho.

Montando um completo servidor de backup usando Bacula

Introdução

Bacula: completa plataforma cliente/servidor de Backup

Sandro R. Mendes
sandro@jaboticabal.sp.gov.br

Muito se questiona sobre a preocupação com a segurança da informação nas empresas, normas, padrões e soluções disponíveis para (tentar) garantir uma infra-estrutura que suporte todos os negócios de uma empresa.

Mas desde os primórdios da informática, quando o assunto é segurança, logo vem em mente o conceito de backup. Antes de qualquer adoção de políticas de segurança e normas que regem boas práticas em segurança da informação, o bom administrador de sistemas que se preze deve ter um trabalho de backup assegurando o mínimo de segurança.

Seguindo essa linha e buscando sempre soluções que atendam as necessidades das empresas, o Bacula apresenta-se como uma plataforma cliente/servidor completa de Backup, suportando múltiplas plataformas (inclusive clientes Windows), uso de discos e/ou fitas para o armazenamento dos dados, diferentes agendamentos para um mesmo trabalho de backup, uso de uma mesma fita para vários backups, e muitas outras opções. E o melhor de tudo é que o Bacula é open source! Em resumo, Bacula é uma completa solução para criação de trabalhos de backup em rede, com poderosos recursos, múltiplas funções e de fácil configuração.

A seguir apresentarei minha experiência com o Bacula, desde a instalação num sistema FreeBSD até sua configuração e agendamento de trabalhos, lógico de acordo com cada necessidade.

Instalação


Apesar de a instalação ter sido realizada no FreeBSD via ports, acredito que não haverá problemas na instalação em distribuições Linux; a única mudança será no momento da instalação e nos caminhos onde foram instalados os arquivos do Bacula.

O Bacula armazena toda sua informação em base de dados MySQL, SQLite e até PostgreSQL, ou seja, antes de qualquer coisa você deverá ter instalado em seu servidor um desses programas.

Chega de papo e mãos à obra:
Como dito acima, instalei o Bacula no sistema via ports no FreeBSD. A versão utilizada do Bacula foi a 1.34.6.

# cd /usr/ports/sysutils/bacula
# make -DWITH_POSTGRESQL7
# make install


Minha instalação foi simples, quase que padrão. Somente especifiquei o suporte ao banco PostgreSQL versão 7. Dependendo de seu caso, deverá configurar seu Bacula com suporte ao banco que escolher. Para maiores informações sobre as opções de instalação do Bacula, consulte o manual on-line ou baixe no formato PDF no site; até sua documentação é excelente, completa até com exemplos.

Agora é hora de criar o banco de dados Bacula em seu SGBD. Nesse exemplo utilizei o PostgreSQL:

# cd /usr/ports/sysutils/bacula/work/bacula-1.34.6/src/cats
# ./create_postgresql_database
# ./make_postgresql_tables
# ./grant_postgresql_privileges


Segurança


Os daemons utilizados pelo Bacula deverão rodar com usuário "bacula". Na instalação via ports o usuário/grupo foram criados automaticamente. No arquivo /etc/passwd podemos encontrar a seguinte linha:

bacula:*:1002:1002::0:0:Bacul Daemon:/var/db/bacula:/sbin/nologin

Em seguida, devemos definir as permissões para o diretório onde se encontra o BD Bacula:

# chown -R bacula:bacula /var/db/bacula/


Configuração do Bacula

Como deu pra perceber, a instalação do Bacula é simples e sem complicações. Por padrão os arquivos de configurações ficam em /usr/local/etc. Agora é a hora da configuração do servidor e, para isso, deve-se entender sua estrutura organizacional. Divide-se em 3 partes:
  • o Director (bacula-dir.conf) é a parte mais complexa do sistema, afinal é a principal onde figura-se toda a configuração dos trabalhos de backup (job), agendamentos, pools, seleção do que fazer backup (FileSet), definição do tipo de armazenamento, etc. Enfim, é onde se configura os clientes e arquivos que irão fazer parte do backup, além de se comunicarem com os clientes e dispositivos de armazenamento.
  • File Daemon (bacula-fd.conf) representa uma espécie de agente, rodando em cada máquina que for participar de um trabalho de backup. Em resumo, todo cliente deverá ter rodando esse daemon, estabelecendo uma comunicação com o Director, que por sua vez gerencia todas essas comunicações.
  • Storage Daemon (bacula-sd.conf) é o arquivo de configuração do Bacula onde se insere os dispositivos de armazenamento, como fitas e discos. Esse daemon é responsável por estabelecer a comunicação com esses dispositivos.

Em resumo, a boa divisão das funções que compõem um serviço de backup do Bacula permite sua fácil configuração e administração. Para a configuração geral de um dado backup, edite o arquivo bacula-dir.conf; para configurar um cliente, é só editar o file daemon (bacula-fd.conf) na máquina que irá se comunicar com o servidor (onde se encontra a unidade de armazenamento); e para configurar o tipo de dispositivo que irá armazenar os trabalhos, é só editar o bacula-sd.conf.

Antes de iniciar a configuração desses 3 arquivos, deve-se ter em mente o sistema de backup que você irá adotar para sua empresa. Ele irá variar de acordo com a necessidade de negócio. Nesse artigo o exemplo de configuração será baseado no seguinte sistema:
  • Backup do próprio servidor, realizando a cópia completa de todos os sites hospedados, no período de Segunda à Sexta. Como deu pra perceber, configurei o Bacula no mesmo servidor Web, onde se encontra a unidade de dispositivo (fita DAT Sony SDT-9000).
  • Backup do servidor de e-mail, realizando a cópia de todas as pastas das contas existentes, também no mesmo período que o servidor Web. Esse é o cliente, rodando FreeBSD.

De acordo com os trabalhos definidos, agora é chegada a hora de configurar o Bacula para atender esses backups. Abaixo seguem os exemplos dos arquivos de configurações do servidor (onde se encontra a fita DAT). Não irei explicar todos os parâmetros de configuração, até porque são muitos. Como sempre, é só consultar o manual do Bacula para obter todas as informações sobre os recursos disponíveis.

Primeiro irei configurar o arquivo bacula-sd.conf, inserindo as principais diretivas sobre o dispositivo de armazenamento:

# vi /usr/local/etc/bacula-sd.conf

Storage {
Name = "server-dir"
# por padrão o bacula já utiliza o nome do servidor em que foi instalado,
# nesse caso o director será identificado como server-dir

SDPort = 9103
# porta de conexão com o daemon

WorkingDirectory = "/var/db/bacula"
PidDirectory = "/var/run"
SubSysDirectory = "/var/db/bacula"
# diretórios utilizados pelo Bacula, também padrão
}

#
# List Directors who are permitted to contact Storage daemon
#

Director {
Name = server-dir
Password = "senha"
}


#
# Devices supported by this Storage daemon
# To connect, the Director must have the same Name and MediaType,
# which are sent to the File daemon
#

Device {
Name = "DDS-3"
Media Type = DDS-3
Archive Device = /dev/sa0
# nesse caso, o dispositivo configurado é uma fita DAT Sony SDT-9000,
# DDS-3. O caminho para acesso no FreeBSD é o /dev/sa0, portanto muita
# atenção para a configuração de acordo com seu sistema


AutomaticMount = yes; # when device opened, read it
Offline On Unmount = yes
AlwaysOpen = yes;
RemovableMedia = yes;
Hardware End of Medium = No
BSF at EOM = yes
}

Messages {
Name = Standard
director = server-dir = all
operator = root = mount
}
# mensagens também padrão

Agora é hora de configurar o bacula-fd.conf de nosso servidor, afinal ele também será backupeado. Em resumo, o único parâmetro alterado foi a conexão com o Director, onde você deve inserir a mesma senha cadastrada no

bacula-dir.conf

. Obviamente elas devem coincidir para que sejam estabelecidas as conexões entre o Director, seu cliente, e o dispositivo.

#
# Default Bacula File Daemon Configuration file
#
# There is not much to change here except perhaps the
# File daemon Name to
#

#
# List Directors who are permitted to contact this File daemon
#

Director {
Name = server-dir
Password = "senha"
}

#
# "Global" File daemon configuration specifications
#

FileDaemon {
Name = ns2-fd
FDport = 9102
WorkingDirectory = /var/db/bacula
Pid Directory = /var/run
# arquivos de conexão com o daemon, também padrão
}

# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = server-dir = all, !skipped
}

Como teremos 2 clientes, o próprio servidor e outra máquina, tendo seus dados backupeados é preciso configurar somente o file daemon (bacula-fd.conf) da máquina conectada em rede. Antes disso, é preciso instalar o Bacula com a opção -enable-only-client. Após essa etapa, é só editar o arquivo com as mesmas configurações acima. Depois é só startar seu daemon. Para ter certeza de que tudo está em ordem com esse cliente, certifique-se de que o daemon esteja rodando:

# ps awux | grep bacula
bacula 25934 0.0 0.7 3104 1892 ?? Ss Mon03PM 0:23.72 /sbin/bacula-fd -v -c /usr/local/etc/bacula-fd.conf

Beleza, está funcionando. A porta 9102 está aberta, pronta pra estabelecer conexão com o servidor quando esse efetuar o backup.

Agora é chegada a hora de configurar o arquivo principal do Bacula, o Director. Nele iremos inserir os jobs, agendamentos, clientes e os arquivos a serem backupeados:

#
# Kerns Production Bacula Director Daemon Configuration file
#


Director {
Name = server-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/usr/local/etc/query.sql"
WorkingDirectory = "/var/db/bacula"
PidDirectory = "/var/run"
SubSysDirectory = "/var/db/bacula"
Maximum Concurrent Jobs = 2
# como teremos 2 jobs sendo executados num mesmo agendamento, a #parâmetro foi alterado. O padrão é 1.
Password = senha
}


Schedule {
Name = "Diario"
Run = Level=Full Pool=SegundaPool Monday at 10:00pm
Run = Level=Full Pool=TercaPool Tuesday at 10:00pm
Run = Level=Full Pool=QuartaPool Wednesday at 10:00pm
Run = Level=Full Pool=QuintaPool Thursday at 10:00pm
Run = Level=Full Pool=SextaPool Friday at 10:00pm
# no agendamento, o backup será realizado
# de segunda à sexta, sempre às 22 horas. Criei um pool dos
# volumes para cada dia, afinal cada fita terá sua label
# para cada dia.

}

Job {
# essa é a configuração do trabalho do cliente, a maquina remota.
Name = "Servidor NS1"
Type = Backup
Level = Full #backup do tipo full
Client=ns1-fd #esse parâmetro será configurado logo abaixo
FileSet="Server-NS1" #seleção do que será backupeado, também logo #abaixo
Messages = Standard
Storage = DDS-3 #dispositivo onde será armazenado o job
Pool = Default
Schedule = "Diario"
Write Bootstrap = "/var/db/bacula/Client1.bsr"
Priority = 10
}

Job {
Name = "Servidor NS2-local"
Type = Backup
Level = Full
Client=ns2-local
FileSet="Server-NS2"
Messages = Standard
Storage = DDS-3
Pool = Default
Schedule = "Diario"
RunAfterJob = "/usr/local/etc/ejeta_tape.sh" # esse parâmetro especifica a
# execução de um comando após o término do job. Esse script faz com que a
# mídia seja desmontada e ejetada. O script está disponível no término desse
# arquivo.
Write Bootstrap = "/var/db/bacula/Client1.bsr"
Priority = 10
}

# Standard Restore template, to be changed by Console program
Job {
Name = "RestoreFiles"
Type = Restore
Client= ns2-local
FileSet="Full Set"
Storage = DDS-3
Messages = Standard
Pool = Default
Where = /tmp/bacula-restores
}

FileSet {
# insira os arquivos/diretórios que deverão ser copiados
Name = "Server-NS2"
Include = signature=MD5 {
/www
}
Exclude = {
# caso queira excluir algum diretório
/www/data
/tmp/* }
}

FileSet {
Name = "Server-NS1"
Include = signature=MD5 {
/var/mail
}
Exclude = {
/tmp/* }
}


FileSet {
Name = "Full Set"
Include = signature=MD5 {
# @/etc/backup.list
}
Exclude = { }
}


# Definição do dispositivo de armazenamento
Storage {
Name = DDS-3
Address = 172.16.0.3 #atenção, coloque sempre o IP e não localhost
SDPort = 9103
Password = senha
Device = "DDS-3" # deve ser o mesmo do que o especificado no
# bacula-sd.conf
Media Type = DDS-3
}

# máquina local
Client {
Name = ns2-local
Address = localhost
FDPort = 9102
Catalog = BackupDB
Password = senha
File Retention = 30d # 80 days
Job Retention = 1y # one year
AutoPrune = yes # Prune expired Jobs/Files
}

# máquina remota
Client {
Name = ns1-fd
Address = 172.16.0.2
FDPort = 9102
Catalog = BackupDB
Password = senha
File Retention = 30d # 80 days
Job Retention = 1y # one year
AutoPrune = yes # Prune expired Jobs/Files
}

Catalog {
Name = BackupDB
dbname = bacula; user = bacula; password = ""
}

# o Bacula oferece o recurso de enviar os relatórios (logs)
# por e-mail. Para isso insira o seu servidor smtp e
# seu e-mail
Messages {
Name = Standard
mailcommand = "/home/bacula/bin/smtp -h servidor.smtp -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/home/bacula/bin/smtp -h servidor.smtp -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
MailOnError = usuario@mail.com = all
append = "/home/bacula/bin/log" = all
operator = YOUR-EMAIL@YOU.com = mount
console = all
}


Pool {
Name = Default
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 1d # one year
}

Pool {
Name = SegundaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderá ser utilizado novamente
# para backup após 6 dias
Accept Any Volume = yes
}
Pool {
Name = TercaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
Accept Any Volume = yes
}

Pool {
Name = QuartaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
Accept Any Volume = yes
}

Pool {
Name = QuintaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
Accept Any Volume = yes
}

Pool {
Name = SextaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
Accept Any Volume = yes
}

Agora crie um script ejeta_tape.sh e salve em /usr/local/etc/. Não esqueça de definir permissão sobre esse arquivo para que o Bacula possa executá-lo.

#!/bin/sh

/usr/local/sbin/bconsole -c /usr/local/etc/bconsole.conf END_OF_DATA
unmount
quit
END_OF_DATA

Após a configuração desses 3 arquivos no servidor, o serviço Bacula deverá ser iniciado. No meu caso, a instalação criou o daemon que controla os serviços em /usr/local/etc/rc.d.

# bacula.sh start

Caso não haja erro de configuração, o Bacula será iniciado e pronto pra executar os trabalhos de backup. Para confirmar sua execução:

# ps awux | grep bacula
bacula 50839 0.0 0.4 3068 1864 ?? Ss 4:20PM 0:09.66 /usr/local/sbin/bacula-sd -u bacula -g operator -v -c /usr/local/etc/
root 50841 0.0 0.4 3024 1844 ?? Ss 4:20PM 0:20.00 /usr/local/sbin/bacula-fd -u root -g wheel -v -c /usr/local/etc/bacul
bacula 50845 0.0 0.5 5800 2564 ?? Ss 4:20PM 0:10.23 /usr/local/sbin/bacula-dir -u bacula -g bacula -v -c /usr/local/etc/b
root 53861 0.0 0.2 1448 848 p0 S+ 11:40AM 0:00.00 grep bacula


Administrando o Bacula

Para administrar o Bacula o padrão é seu console, mas existe também o modo gráfico que roda no Gnome. Para acessar o console precisamos editar o arquivo bconsole.conf, especificando somente como se conectar ao Director:

# vi bconsole.conf

#
# Bacula User Agent (or Console) Configuration File
#


Director {
Name = server-dir
DIRport = 9101
address = localhost
Password = "senha"
}

Agora sim, para acessar o console:

# /usr/local/sbin/bconsole -c /usr/local/etc/bconsole.conf
Connecting to Director server-dir:9101
1000 OK: HeadMan Version: 1.30 (28 April 2004)
*

Estamos no prompt do console. Para obter informações sobre todos os comandos disponíveis é só digitar "help". Agora é escolher a opção desejada e trabalhar. Por exemplo, se quiser obter informações sobre o status de ser servidor, digite "stat" e selecione a opção desejada. O Bacula é muito fácil e intuitivo de ser gerenciado.

Para realizar os trabalhos de backup nas unidades de fita, é preciso criar uma label para cada volume. Após isso é necessário montar o dispositivo pra ficar online, mas para agilizar a tarefa, digite apenas "label", siga os passos e pronto. Seu dispositivo está montado e pronto pra armazenar seu trabalho.

Caso queira realizar um trabalho de backup, execute "run" e escolha a opção de acordo com o menu.

Para realizar a restauração de um arquivo/diretório, digitar "restore":

* restore
Using default Catalog name=MyCatalog DB=bacula
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
1: List last 20 Jobs run.
2: List Jobs where a given File is saved.
3: Enter list of JobIds to select.
4: Enter SQL list command.
5: Select the most recent backup for a client.
6: Select backup for a client before a specified time.
7: Enter a list of files to restore.
8: Enter a list of files to restore before a specified time.
9: Cancel.
Select item: (1-9): 3
Enter JobId(s), comma separated, to restore: 2
You have selected the following JobId: 2
Building directory tree for JobId 2 ...
1 Job inserted into the tree and marked for extraction.
Automatically selected Storage: File

You are now entering file selection mode where you add and
remove files to be restored. All files are initially added.
Enter "done" to leave this mode.

cwd is: /www

A maneira de se escolher os arquivos/diretórios a serem restaurados no Bacula demonstrado acima é simples; selecione a opção 3 e em seguida o JobID (cada trabalho executado recebe um número identificador). Após a seleção do trabalho, você irá navegar pela árvore de diretórios que foram backupeados. A navegação é padrão do shell Unix. Após encontrar o arquivo desejado, para selecioná-lo execute o comando "mark". Um * aparecerá ao lado do arquivo. Para finalizar, execute done e siga os passos finais.


Considerações finais

Minha idéia principal nesse artigo é divulgar essa excelente e poderosa ferramenta de Backup, transmitindo um conteúdo introdutório do Bacula e todas as opções que ele nos oferece. Existem hoje muitas opções de backup, mas essa ferramenta foi a mais completa e de fácil configuração encontrada, qualquer administrador com conhecimentos básicos não irá encontrar problemas.

Para obter maiores informações sobre os parâmetros de configuração, consulte o manual, rico em informações. Ah, e também os fóruns de discussão sobre o Bacula, e o canal IRC (#bacula). O pessoal ajuda mesmo.

Espero ter ajudado a quem procura uma ótima solução em segurança dos dados e agora é com vocês :-)

Usando o John theRipper para manter sua rede segura

Senhas fracas são um terror para qualquer administrador de redes, pois se uma senha é quebrada, todo o sistema é comprometido, afinal é mais fácil obter o aumento do privilégio quando já se está logado no sistema. O John te Ripper é um software que pode manter sua rede mais segura simplesmente tentando quebrá-la, ou seja, ele vai tentar quebrar suas senhas e te alarmar sobre usuários com senhas inseguras.

Pegando e instalando o software

Vamos pegar o programa no site oficial do projeto:
Para instalar é simples, descompacte-o e entre no diretório criado:

$ tar xzvf john.tar.gz
$ cd john


Para compilar o programa:

$ cd src
$ make
$ make SYSTEM


Onde SYSTEM é uma das opções da lista que o comando make irá listar. Exemplo:

$ make linux-x86-any-elf

Uma vez compilado, copie o conteúdo da pasta run, que está um nível acima, para o seu path:

$ cp -r ../run /usr/local/bin

Agora, para que ele possa rodar, copie os arquivos de extensão .ini de run/ para sua pasta home. Estes são os arquivos de configuração de John:

$ cp run/*.ini ~

Agora, vamos ao uso...


Utilizando o John the Ripper

Para um melhor aproveitamento, aconselhamos que sejam utilizadas wordlists, quanto maior, melhor, para que o John tenha mais opções de senhas fracas antes de entrar no modo Força Bruta, para isso recomendo o PacketStorm, onde você terá um bom repositório de listas.

Assim que fizer sua wordlist, coloque ela no path do John editando o arquivo john.ini que está em sua pasta home:

$ vim john.ini
(Use o editor de sua preferência, é óbvio)

Na linha seguinte, faça a devida alteração:

Wordfile = ~/wordlist

Substituindo o '~/wordlist' pelo path até sua wordlist.

Para utilizar o John, na pasta descompactada onde estavam os sources há uma pasta chamada doc, nela você terá bastante informação sobre o software, aqui vai o método básico de utilização:

1 - Pegue um arquivo passwd, pode ser até o seu mesmo, para teste, junto com o arquivo de shadow e copie-os para uma pasta qualquer, onde você irá utilizar o John:

# cp /etc/shadow /etc/passwd /home/user/passlists/

2 - Utilize o script unshadow, que vem com o John, para mixar os dois arquivos:

# unshadow passwd shadow > passlist.1

3 - A maneira mais simples:

# john passlist.1

Isso irá rodar o John no modo Single Crack, depois passará para o modo Wordlist e finalmente para o modo Incremetal. Para mais informações sobre os modos de John, consulte o MODES, na pasta doc de John the Ripper.


O que eu faço para não ser um alvo fácil?

O John the Ripper, como você deve supor, utiliza todo o processamento disponível para tentar todas as possibilidades, na verdade não existe senha inquebrável, a diferença é o tempo que será consumido, então vai aí algo que você deve fazer:

1 - utilize boas senhas. exemplo:

Use = alpsodedi)spamV%*5s6631__!
Não use = deusépai

Não use por nada no mundo:
login: simon
senha: simon

2 - Sempre troque de senha periodicamente.

Quando se está tentando quebrar uma boa senha, o processo em uma única máquina* pode demorar semanas, meses, anos... Se você troca as senhas regularmente, no momento em que a anterior for quebrada, não será mais válida!

* O John the Ripper pode ser usando de maneira distribuída, ou seja, utilizar-se de uma rede de computadores para processar as senhas, assim, será menor o tempo gasto.


Conclusão

Com o John the Ripper você pode deixar sua rede mais segura, aconselho a, se ele quebrar as senhas da sua rede, congelar temporariamente o usuário até que ele entre em contato, para que você o alerte de sua senha, assim ele a corrigirá, ou assim esperamos.

Para congelar o usuário é só comentar a entrada daquele usuário em /etc/passwd, assim ele não poderá logar, ou mudar sua shell para /bin/null, assim, ele não terá como executar comandos, porém o primeiro é mais recomendado.

O John vem com o script mailer, que envia um e-mail para o usuário que tiver sua senha quebrada, mas não aconselho, pois e-mails podem ser lidos por terceiros e isso pode comprometer seu sistema.

Espero com isso ter ajudado um pouco a manter sua rede mais segura.

quinta-feira, 5 de julho de 2007

MANDRIVA 2007

Por Mandriva Conectiva
24 de abril de 2007
O novo produto dispõe das mais recentes atualizações com 32 bits e inclui drivers de placas de vídeo, adaptadores wireless e modems para melhor compatibilidade de hardware

A Mandriva, uma das principais desenvolvedoras Linux do mundo, anuncia que já está disponível a nova versão do pen drive Mandriva Flash, com capacidade expandida para 4 GB.

"A versão de 2GB do Mandriva Flash foi lançada em dezembro de 2006 e atingiu sucesso de vendas em todo o mundo. Por esse motivo, resolvemos lançar, neste curto período, uma versão atualizada do produto", afirma François Bancilhon, Ceo da Mandriva.

omo já vem com as mais recentes atualizações do sistema operacional Mandriva Linux 2007 KDE (versão 32 bits), o Mandriva Flash não requer instalação na máquina a ser utilizada. Com o dispositivo conectado à porta USB, o sistema operacional é automaticamente reconhecido e aberto. Dessa forma, todos os arquivos que forem salvos no computador, independente de seu formato (textos, planilhas, fotos, vídeos etc.), ficam armazenados dentro do pen drive e podem ser abertos posteriormente em outra máquina.

Mandriva Flash de 4 GB contém drivers de placas de vídeo, adaptadores wireless e modems para melhor compatibilidade de hardware. Além disso, oferece os principais plug-ins, aplicações e ambientes de desktop, tais como:

  • KDE 3.5.4
  • Mozilla Firefox 1.5.0.10
  • OpenOffice.org 2.0.4
  • The Gimp 2.3.10
  • RealPlayer 10.0.8.805
  • FlashPlayer 9.0.31.0

"Nesta versão do Mandriva Flash, o espaço reservado para os arquivos do sistema pode ser escolhido na primeira inicialização. Isso torna possível instalar mais atualizações e pacotes adicionais no dispositivo", conclui Bancilhon.

O Mandriva Flash já pode ser adquirido através da loja virtual Mandriva Store (http://store.mandriva.com/).

Mais informações podem ser obtidas em http://www.mandriva.com/linux/2007/flash.

Especialização em Gestão de Redes com Software Livre

28 de June de 2007

Informamos que está aberta a inscrição para o processo seletivo do curso de Pós-Graduação "Lato Sensu" Especialização em Gestão de Redes com Software Livre.

Os candidatos deverão encaminhar a manifestação de interesse e currículo para o e-mail: marciagrossi@terra.com.br , para outras informações, favor ligar: (31)9219-7221.

As aulas serão ministradas no CEFET- MG Campus II às 3a e 5a-feiras de 19 horas ás 22h40 e terão início no dia 07 de agosto de 2007.

O valor do curso é dividido em 22 parcelas de R$ 329,54 (1 matrícula + 21 mensalidades).

Coordenação: Profa. Márcia Goretti Ribeiro Grossi.

Desde já agradecemos a atenção dispensada.

Atenciosamente,

Fundação Cefetminas

MANDRIVA CORPORATE 4.0

21 de junho de 2007

A Mandriva lançou hoje a versão 4.0 do Mandriva Corporate Desktop, uma versão para desktops corporativos que necessitem um suporte maior e certas necessidades típicas de ambientes corporativos. Complementa o outro produto dessa linha corporativa, o Mandriva Corporate Server.