Deixando seu OpenBSD com cara de Linux

maio 21, 2007

Este artigo tem como objetivo deixar o terminal do OpenBSD mais amigável, principalmente para aqueles que estão acostumados com as facilidades do bash no linux. O OpenBSD utiliza por padrão o shell csh, com ele você não tem o recurso de “auto-completar”, por exemplo, se você digitar cd /usr/lo[TAB] no csh nada irá acontecer, para que ele complete com /usr/local devemos utilizar o bash. Além deste recurso vamos implementar as cores do ls, que também ajudam muito na visualização rápida de algum arquivo e que não é padrão do OpenBSD. O primeiro passo é instalar o pacote do bash, para isso temos duas opções, a primeira, e recomendada pela equipe do OpenBSD é a seguinte:

Instalação do bash
pkg_add -v ftp://ftp.kd85.com/pub/OpenBSD/3.7/packages/i386/bash-3.0.16p0.tgz

A outra maneira é compilar o pacote pelos ports, caso você não tenha a árvore de ports, baixe em algum mirror e descompacte no diretório /usr:
cd /usr/ports/shells/bash/
make && make install
Com isso teremos o bash no sistema, mas seu usuário ainda está utilizando o shell csh, para que você possa utilizar o bash devemos editar o arquivo /etc/shells e colocar o bash ali para que o sistema aceite sua utilização:
echo “/usr/local/bin/bash” >> /etc/shells

Habilitando bash para o uso
Nosso próximo passo será alterar o shell do usuário no sistema, para isso vamos utilizar o comando chpass, este comando irá abrir um arquivo com os dados de seu usuário, os comandos para edição são os mesmos do vi. Você deve ter algo parecido com isto:
# Changing user database information for root.
Login: root
Encrypted password: $1b$58$W0GO8s5BDdXxRu349xsauVfJSa3TuYrNVKlasdj9lLM2uvIFe
Uid [#]: 0
Gid [# or name]: 0
Change [month day year]:
Expire [month day year]:
Class: daemon
Home directory: /root
Shell: /usr/local/bin/bash
Full Name: Charlie &
Office Location:
Office Phone:
Home Phone:

Neste ponto basta efetuar o login novamente para começar a utilizar o bash, porém, vamos fazer mais alguns ajustes para que ele fique o mais parecido possível com o terminal que você utiliza no Linux.
touch /etc/bashrc
chmod 755 /etc/bashrc
echo “export PS1=’u@h:w$ ‘” >> /etc/bashrc
Esta variável PS1 é a responsável por exibir no console o path em que você se encontra atualmente. (Vide comando para instalar o bash)

Cor do ls
Agora vamos fazer o ls ficar colorido, o ls do OpenBSD não é igual ao do Linux, por isso temos que instalar outro pacote para habilitarmos esta feature. Mais uma vez podemos instalar o pacote pre-compilado ou compilar pelo ports, neste caso vou instalar o pacote, caso você queria instalar pelo ports, ele fica em: /usr/ports/sysutils/colorls.
pkg_add -v ftp://ftp.kd85.com/pub/OpenBSD/3.7/packages/i386/colorls-3.7.tgz

Se você digitar ls agora ele ainda não estará colorido, assim como no Linux existe o alias ls=`ls –color`, no OpenBSD também devemos criar um alias, mas um pouquinho diferente:
echo “alias ls=’colorls -FG'” >> /etc/bashrc
Prontinho, basta efetuar o login novamente e todas as alterações entrarão em vigor.


Cluster de Firewall com carp + pfsync

maio 21, 2007

Introdução
Para quem não conhece o assunto, com carp + pfsync é possível criar um cluster de firewalls de uma forma que elimine um único ponto de falha, e ainda por cima é totalmente transparente, uma máquina pode explodir que a outra irá assumir instantaneamente e você não vai perder se quer um misero pacote de seu download. CARP = Common Address Resolution Protocol, o carp é o principal responsável pelo compartilhamento de IP entre o cluster. É com ele que faremos a redundância das máquinas, se uma cair a outra irá assumir o ip setado no carp. Além do carp iremos utilizar o PFSYNC para fazer a sincronia de estados das conexões entre as máquinas, é por causa dele que se uma máquina cair e o tráfego for redirecionado para a outra a conexão não será cortada.

Requerimentos
Neste exemplo vou criar um cluster apenas entre duas máquinas, então vamos precisar de duas máquinas duh :P, cada uma delas com 3 placas de rede. Porque 3 placas? Simples, uma para a rede válida, outra para a rede privada, e a última como meio de sincronia dos estados das conexões entre as duas máquinas. Além disso iremos precisar de 8 IPs diferentes, 4 para cada máquina, 1 ip válido para cada máquina, 1 ip privado para cada máquina, mais 1 ip privado para cada máquina para sincronia (pfsync) e mais 2 ips virtuais que serão setados em cada carp, um público e outro privado. Não se assustem com a quantidade de ips utilizados, logo tudo isso irá ficar mais claro.

Configurações

CARP
Primeiro vamos criar as interfaces do carp, sim, elas funcionam como uma interface virtual :).
Um pequeno resumo dos ips:
fw01:
xl0 – 200.x.x.2
xl1 – 192.168.0.2
rl0 – 10.10.10.1
carp0 – 200.x.x.1
carp1 – 192.168.0.1
fw02:
xl0 – 200.x.x.3
xl1 – 192.168.0.3
rl0 – 10.10.10.2
carp0 – 200.x.x.1
carp1 – 192.168.0.1
Execute isso nas duas máquinas, não se preocupe com os parâmetros, irei explica-los:
# ifconfig carp0 create
# ifconfig carp1 create
Máquina 1:
# ifconfig carp0 vhid 1 pass senha carpdev xl0 advskew 0 200.x.x.1 netmask 255.255.255.0
# ifconfig carp0 vhid 2 pass senha carpdev xl1 advskew 0 192.168.0.1
netmask 255.255.255.0
Máquina 2:
# ifconfig carp0 vhid 1 pass senha carpdev xl0 advskew 128 200.x.x.1 netmask 255.255.255.0
# ifconfig carp0 vhid 2 pass senha carpdev xl1 advskew 128
192.168.0.1 netmask 255.255.255.0

Parâmetros
vhid: O Virtual Host ID. Este é um número único que é usado para identificar o grupo de redundância de outros nós na rede. Valores aceitos são 1 à 255.
pass:É a senha de comunicação entre os nós, evitando que algum engraçadinho entre na rede afim de snifar o tráfego.
carpdev: Aqui é especificado a qual interface o carp está conectado.
advskew: Ele define a prioridade da máquina, quanto menor o valor maior a prioridade, em nosso caso, se as duas máquinas estiverem no ar, a primerira irá funcionar como master.

PFSYNC
Agora vamos configurar o meio de sincronia entre os nós:
Máquina 1:
# ifconfig rl0 10.10.10.1 netmask 255.255.255.252
Máquina 2:
# ifconfig rl0 10.10.10.2 netmask 255.255.255.252
Nas duas máquinas:
# ifconfig pfsync0 syncdev rl0
Como estou utilizando apenas 2 máquinas eu interliguei as 2 através de um cabo cross, com isso eu evito que alguém tente conectar um cabo na rede (caso houvesse).

SYSCTL
Outra coisa importante é ativar o carp com o sysctl, estas são as possíveis entradas:
net.inet.carp.allow: Aceita entrada de pacotes CARP ou não. Padrão é 1 (sim).
net.inet.carp.preempt: Permite hosts dentro de um grupo de redundância ter um melhor advbase e advskew para tomar o lugar (preempt) do master. Adicionalmente, esta opção habilita failing over em todas as interfaces caso uma interface caia (down). Se uma interface física CARP cair, o CARP trocará o advskew para 240 em todas as outras interfaces CARP, em essência o failing termina por si mesmo. Esta opção é 0 (desabilitada) por padrão.
net.inet.carp.log: Loga pacotes CARP. O padrão é 0 (desabilitado).
net.inet.carp.arpbalance: Carrega balanceamento de tráfego entre múltiplos hosts no grupo de redundância. O padrão é 0 (desabilitado). Veja carp(4) para mais informações.
Precisamos ativar o preempt, para isso execute nas duas máquinas:
# sysctl -w net.inet.carp.preempt=1

Salvando as Configurações
Como o carp e o pfsync são tratados como interfaces, o arquivo de configuração a ser criado para eles é quase igual ao de uma placa de rede.
Crie os respectivos arquivos em cada uma das máquinas com os respectivos IPs:
/etc/hostname.carp0:
# inet 200.x.x.2 255.255.255.0 200.x.x.255 vhid 1 advskew 0 carpdev xl0 pass senha
/etc/hostname.carp1:
# inet 192.168.0.2 255.255.255.0 192.168.0.255 vhid 2 advskew 0 carpdev xl0 pass senha
/etc/hostname.rl0:
# inet 10.10.10.1 255.255.255.252 NONE
/etc/hostname.pfsync0:
# up syncdev rl0
E para finalizar habilite o preempt do carp no /etc/sysctl.conf

Testando
Depois de tudo configurado você verá algo do tipo em sua máquina:
[root@firewall01 admin]$ ifconfig
lo0: flags=8049 mtu 33224
groups: lo
inet 127.0.0.1 netmask 0xff000000
xl0: flags=8943 mtu 1500
lladdr 00:50:04:42:f1:c1
groups: egress
media: Ethernet 100baseTX full-duplex
status: active
inet 200.x.x.2 netmask 0xfffffff0 broadcast 200.x.x.255
xl1: flags=8943 mtu 1500
lladdr 00:50:04:42:aa:bb
media: Ethernet 100baseTX full-duplex
status: active
inet 192.168.0.2 netmask 0xffffff80 broadcast 192.168.0.255
rl0: flags=8843 mtu 1500
lladdr 00:15:f2:b0:80:3d
media: Ethernet 100baseTX full-duplex
status: active
inet 10.10.10.1 netmask 0xfffffffc broadcast 10.10.10.3
pflog0: flags=141 mtu 33224
pfsync0: flags=41 mtu 1460
pfsync: syncdev: rl0 syncpeer: 224.0.0.240 maxupd: 128
enc0: flags=0 mtu 1536
carp0: flags=8843 mtu 1500
carp: MASTER carpdev xl0 vhid 1 advbase 1 advskew 0
groups: carp
inet 200.x.x.1 netmask 0xfffffff0 broadcast 200.x.x.255
carp1: flags=8843 mtu 1500
carp: MASTER carpdev xl1 vhid 2 advbase 1 advskew 0
groups: carp
inet 192.168.0.1 netmask 0xffffff80 broadcast 192.168.0.255

Caso você execute ifconfig carp0 down, ou tirar um cabo de rede o carp0 da segunda máquina irá mudar de BACKUP para MASTER.
Existem três estados para uma interface do carp:
MASTER: Acho que dispensa comentários 🙂
BACKUP: Esse também 😀
INIT: INIT é quando a interface ainda não está no ar, é o que irá acontecer se você executar o ifconfig carpX down.

Firewall
Outra coisa importante a se fazer é liberar o tráfego do carp e pfsync no firewall 😀 Sem isso tudo o que foi feito anteriormente é inútil.
Não irei entrar em detalhes sobre o firewall agora, apenas insira isto no inicio de suas regras para garantir que tudo vai funcionar como esperado:
#libera carp entre as maquinas fw
pass quick on { $pfsync_if } proto pfsync
pass quick on { $ext_if $int_if } proto carp keep state
Não se esqueça de criar as variáveis definindo as interfaces para pfsync_if,etc.


OpenBSD – Apache – pf –

maio 21, 2007

Apache
O Apache já vem pré-instalado no OpenBSD, bastando apenas algumas modificações para o seu funcionamento desejado. No nosso exemplo, queremos rodar ele com suporte a PHP, então devemos instalar o PHP:
cd /usr/ports/www/php4
make
make install
/usr/local/sbin/php4-enable
E depois adicionar as seguintes linhas no /var/www/conf/httpd.conf, para ele aceitar seus scripts PHP:
LoadModule php4_module /usr/lib/apache/modules/libphp4.so
DirectoryIndex index.php index.html index.wml index.php3
AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps

E então reiniciar o apache:
apachectl restart

pf
O OpenBSD ( a partir do 3.0) vem com o packetfilter (pf), que é um excelente filtro de pacotes, mas com uma configuração bem simples, toda dentro do arquivo “/etc/pf.conf” (nat.conf para nat). No nosso exemplo, usaremos a política de bloquear todo o acesso a nossa máquina, liberando apenas as portas usadas por nós (22,25,53,80 e 110). O acesso de saída será totalmente liberado. Nosso arquivo de configuração ficaria então desse modo:
#echo >> /etc/pf.conf


Compartilhar conexão com FreeBSD

maio 21, 2007

Introdução
Certamente, se você está começando a ir mais à fundo no mundo do nosso querido FreeBSD, e tem uma pequena rede local , com certeza tem interesse em compartilhar sua conexão de Internet para toda a rede, otimizando assim todo o tráfego.
Você vai aprender agora, uma forma prática e objetiva de compartilhar a Internet com o natd, e instalar um squid para cachear as páginas acessadas pela rede. Primeiramente, você deve compilar o kernel com estas configurações abaixo, para otimizar o diskd do Squid e habilitar o ipdivert e ipfirewall:

Parametros de compilação

options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_ETHER
options NETGRAPH_PPP
options NETGRAPH_ASYNC
options NMBCLUSTERS=65536
options MSGBUF_SIZE=1048576
options SYSVMSG
options MSGMNB=16384

options MSGMNI=41
options MSGSEG=2049
options MSGSSZ=64
options MSGTQL=512
options SHMSEG=16
options SHMMNI=32
options SHMMAX=2097152
options SHMALL=4096
options IPDIVERT
options IPSTEALTH

options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options DUMMYNET
options TCPDEBUG
Se você não sabe onde localiza-se o arquivo de configuração do kernel, é no diretório “/usr/src/sys/i386/conf”. Aqui no site há um artigo ensinando a compilar o kernel, siga-o para acertar esta etapa.
Reinicie o seu computador.

Configuração

Logo após seguir esta etapa, você precisa habilitar o natd , o repasse de pacotes e o seu firewall . Vá ao arquivo “/etc/rc.conf” e insira as seguintes linhas:
natd_enable=”YES”
natd_interface=”xy0″ #onde xy0 é a sua interface onde há a conexão com a internet.
gateway_enable=”YES”
firewall_enable=”YES”
firewall_type=”OPEN” #tipo do firewall

Feito isto, salve o seu “rc.conf” e reboote novamente. Se você inicialmente estiver com algum problema para navegar, digite como root o seguinte comando do ipfw:
ipfw add 65000 allow ip from any to any
Este comando irá repassar todos os pacotes, ignorando as regras de bloqueio, pode ser útil em algumas situações :).
Ok, teoricamente você já estará compartilhando o seu acesso à Internet.

Instalação do Proxy

Vamos à etapa posterior igualmente importante, que é a instalação do cache (proxy) Squid. A função do squid é a de fazer cache das páginas acessadas pela rede, bem como filtrar o acesso a determinada páginas, entre outras funções importantes mas que não serão vistas neste artigo.
Vá como root, ao diretório “/usr/ports/www/squid” e digite o comando “make install clean”. Deixe as opções padrões marcadas e espere a instalação se completar.
Agora, vamos dar uma pequena olhada no arquivo onde contém os parâmetros de configuração do mesmo, denominado “squid.conf” que está em “/usr/local/etc/squid/”.
Alguns parâmetros básicos devem ser vistos, conforme abaixo:
http_port 3128 #porta onde roda o seu squid
cache_mem 16 MB # quantidade de memória alocada pelo seu squid, quanto mais melhor 🙂
dns_nameservers 200.215.1.35
200.202.30.1 200.202.17.1 #servidores dns
acl rede src 192.168.1.0/24

#esta ACL ou seja, regra, é para controlar o acesso ao seu squid. No caso, eu digo que a acl rede #possui a origem a rede
192.168.1.0/24.

http_access allow rede # este parâmetro libera a ACL rede para navegar.

httpd_accel_port 80 #aceleramento da porta
httpd_accel_host virtual
httpd_accel_with_proxy on

httpd_accel_uses_host_header on
Basicamente estes parâmetros já deixam o seu squid seguro e funcional.
Agora tem mais outro passo importante, que é fazer o proxy trabalhar de forma transparente, sem precisar configurar nada nas máquinas clientes. No meu firewall eu inseri a seguinte linha:
${fwcmd} add 60 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 via rl0
Lembrando que a interface rl0 deve ser substituída pela interface da sua rede local. Insira esta linha, abaixo das regras que lêem o tipo do firewall , no nosso caso é open. Se você se perder, procure esta linha e insira a regra do firewall abaixo.
case ${firewall_type} in
[Oo][Pp][Ee][Nn])
Ok, está quase tudo pronto, faltando somente o parametro dentro do “rc.conf” no “/etc” para startar o squid automaticamente. Insira o seguinte parâmetro:
squid_enable=”YES”
Salve o arquivo, e reinicie o seu gateway. E teste, para ver se não houve algum problema.


DNS (Named) facilmente no FreeBSD

maio 21, 2007

Introdução

Muitos usuários que pretendem colocar um domínio no ar, ficam praticamente perdidos, na hora de configurar os seus servidores DNS. Configurar o DNS, requer pelo menos o conhecimento de seu “modus operandi”. Explicarei, passo a passo, a forma mais prática e rápida de configurar o DNS, para funcionar tranquilamente na suarede. –

Como funciona o DNS?
O DNS, funciona da seguinte maneira:
Todo site ou host, possui um IP na internet. O DNS traduz, o seu ip para um endereço em formato de string.
Exemplo: Usando o nslookup – nslookup bsdpe.teste.com.br
Name: bsdpe.teste.com.br
Address: 66.200.200.97
Como você pode perceber, o nosso site possui um IP. Então, o nosso servidor de DNS, publicou para toda a Internet, que possuimos dentro deste host , este ip.
Certo, agora você já sabe como funciona basicamente o DNS.

Configurando o DNS no FreeBSD
Os arquivos de configuração do named, ficam normalmente, dentro da pasta “/etc/namedb”. Para configurar os arquivos, você deve estar logandos-se como root.
Normalmente, você precisa mexer para cada domínio novo, em dois arquivos, o named.conf e o arquivo da sua zona.
Lá dentro do seu arquivo do named, você vai ter essas linhas:
options {
directory “/etc/namedb”;
version “Named 6.6.6”;
statistics-file “/var/log/named.stats”;
dump-file “/var/log/named.dump”;
};
O que significa isto? São os parametros de opções que você pode setar para o seu named, acima nós temos o diretório onde estão os arquivos, a versão, que por um acaso eu alterei, para evitar que pessoas mal intencionadas saibam a versão do named, podendo se setado para qualquer valor.
Temos também o arquivo de estatística, e o de dump.
Normalmente, você pode usar o padrão que estou colocando.
logging{
category lame-servers{
null;
};
};
Estas opções são as opções de log, estou dizendo que os servidores mal-configurados não devem ter suas mensagens de erros logadas no meu servidor.
key “rndc-key”{
algorithm hmac-md5;
secret “jRt3wd1fmqu+GRcfPq4DAQ==”;
};
A chave secreta do meu “named”, a grosso modo pode-se usar esta.
zone “.” {
type hint;
file “named.root”;
};
Aqui está a zona “.”, ou seja, a zona raiz da internet, apontando para o arquivo que deve ser lido, no caso o named.root.

Agora, vem a parte “boa” da história, a configuração de seu domínio.
zone “bsdpe.teste.com.br ” {
type master;
file “bsdpe.teste.com.br “;
allow-transfer{
66.246.212.96;

};
allow-query{
any;
};
};
Zone, como nome diz, é a zona a ser configurada, normalmente você coloca o nome de seu domínio.
Type, é o modo de operação de seu named, se ele é o master (principal) ou slave (secundário).
Quando você configura o seu servidor slave, que é o secundário, nao é necessário fazer o procedimento abaixo e basta liberar ele dentro do allow-transfer dentro de seu servidor master. Não esqueça de apontar o seu servidor master dentro da linha masters.
zone “bsdpe.teste.com.br ” {
type slave;
file “bsdpe.teste.com.br “;
masters{
66.246.212.96;
};

allow-query{
any;
};
};
File é o arquivo dentro da pasta “/etc/namedb” onde estarão as configurações do meu domínio, no caso gnx.com.br
Allow-transfer seria o(s) servidor(es) slave que podem acessar meus arquivos.
Allow-query é o parametro utilizado para liberar o uso do meu DNS por qualquer computador, para resolver os nomes.
Agora, vamos para a segunda etapa, que seria o arquivo onde há a configuração de seu domínio.
==teste.com.br == (arquivo de zona)
Este arquivo é só um exemplo, se você quiser pegar os arquivos para testar, no fim do artigo estarão os links para download.
$TTL 86400 – Time to Live, é o tempo de atualização do named (em segundos)
@ IN
SOA ns.teste.com.br . hostmaster.ns.teste.com.br . (

2003262236
1H
15
14D
12H )
Aqui acima, eu estou dizendo que o meu servidor é o dono do domínio SOA, com a informação do nome da máquina (teste.com.br ), e o responsável hostmaster.teste.com.br .
Dentro dos parenteses, eu estou dizendo o Serial 2003262236 e os parâmetros de atualização, normalmente você pode deixar estes parametros.
teste.com.br .
IN NS
ns.teste.com.br .

Aqui eu digo que o meu servidor teste.com.br possui como seu servidor de dns, a máquina
ns.teste.com.br , que no caso é ela mesma. A flag NS, serve para setar o Name Server.


Recuperando sua senha no FreeBSD

maio 21, 2007

Introdução

Olá pessoal! Peço desculpas pela demora em escrever deste artigo, mas como sempre, work work and work… 😉

Bom, vamos direto ao assunto: Já aconteceu de você esquecer sua senha de root? Ou então precisar descobrir a senha de root de uma máquina cujo você tem acesso físico? Ok, no FreeBSD também dá pra você “recuperar” a sua (ou não!?!?) senha de root.

Para isso, aí vai uma receitinha de bolo. Se você nao entender e tiver que me enviar um e-mail perguntando “como é que se faz isso?”, “como é que se faz aquilo?”, back to Window$ Dolly.

Aí vai:

Tenha em mente que você vai ter que dar um boot na máquina (pra tudo se tem um preço).

Reinicie a máquina e quando entrar na tela de contagem regressiva para iniciar o FreeBSD, pressione qualquer tecla para entrar o prompt de comando para as opções de boot.

Digite “boot -s” para entrar no modo monousuário.

Quando o FreeBSD lhe pedir para você colocar o caminho de uma shell, aperte enter, pois não vai fazer diferença mesmo…

Pronto, você já fez login no sistema operacional e nem precisou digitar a sua senha. Mas pensa que é só mudar a senha agora com passwd?

Tente… passwd… 😉

Se você conseguiu, parabéns, já pode reiniciar a máquina e parar de ler isso aqui.

Caso você não tenha conseguido, você não tem permissão de escrita na partição que está o “/etc/passwd” e “/etc/master.passwd”. Para obter permissão de escrita, então digite “mount -a”.

Feito, tente agora… passwd… 😉

And now… reboot the machine Dolly.


Solução de backup para servidores Windows, Linux & BSD’s.

maio 21, 2007

Um administrador de sistema muitas vezes se depara em unificar um método para fazer os backups de seus servidores, principalmente se eles forem de ambientes mistos (por exemplo, Windows & Linux – o mais comum).

Este tutorial não é específico para servidores. Pode ser utilizado para fazer backup de estações Windows (9x/NT/2000/XP), Linux e BSD’s (FreeBSD, OpenBSD, NetBSD).

Neste pequeno tutorial, pretendo mostrar como é fácil criar uma rotina de backup homogênea e simples para facilitar a vida de muitos administradores de sistema.

O que você vai precisar:

  • Servidor(es) Windows NT4/2000/2003;
  • Servidor(es) Linux (qualquer distribuição);
  • Servidor(es) BSD’s (FreeBSD, OpenBSD, NetBSD);
  • cwRsyncServer (para servidores Windows);
  • rSync (para servidores Linux);
  • Script para o backup;
  • Dispositivo de armazenamento (neste tutorial utilizaremos o hd de nosso servidor encarregado dos backups).

[ editar]

Download e Instalação do cwRSyncServer:

O primeiro passo é baixar o cwRsyncServer ( http://www.itefix.no/phpws/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=6&MMN_position=23:23). Sua instalação segue o padrão de instalação de qualquer aplicação Windows (Next-Next-Finish 🙂 ).

Apenas um detalhe: Durante a instalação, será exibida um quadro informando a senha utilizada para o serviço criado do cwRsyncServer. Anote-a e guarde-a em local seguro caso precise dela em algum momento.

Obs: Esta senha é aleatória e difere em cada instalação do cwRSyncServer.

A Configuração do cwRSyncServer:

No diretório onde foi instalado o cwRSyncServer, você encontrará o arquivo rsyncd.conf. Basta modificar o arquivo para atender as suas necessidades e iniciar/reiniciar o serviço do cwRSyncServer.

Para maiores detalhes sobre os parâmetros a serem utilizados no arquivo de configurações do rsync, consulte a página man do rsync, disponível em http://rsync.samba.org/documentation.html.

Exemplo do rsyncd.conf:

Abaixo, temos um exemplo de configuração do cwRSyncServer.

use chroot = false
strict modes = false
hosts allow = 172.30.31.253/255.255.255.255 127.0.0.1/255.255.255.0
log file =
rsyncd.log
pid file = rsyncd.pid
[Compartilhamentos]
path = /cygdrive/c/Compartilhamentos
comment = Documentos
read only = true
transfer logging = no

Obs.: Note que no path temos “/cygdrive/” antes de c/Compartilhamentos. Esta é a convenção utilizada pela cygwin (http://www.cygwin.com ).

RSync:

Geralmente, nas distribuições Linux você já pode encontrar pré-instalado o rsync. Assim como fizemos no cwRSyncServer, você deverá editar o arquivo rsyncd.conf. Este arquivo tem sua localização variada, dependendo da distribuição Linux/BSD utilizada. Na maioria dos casos está localizada no /etc. Caso esteja em outra localização, consulte a documentação do rsync (man rsynd.conf ou man rsync).

Juntando tudo

Agora que você já tem o rsync / cwRSyncServer instalado e configurado nos equipamentos que sofrerão backup, basta criar um script para fazer o backup e agendar no cron.

Eis um exemplo de script para backup de várias máquinas:

#!/bin/bash
#
# backup.sh
#
# Faz o backup dos servidores da rede, criando um subdiretório para cada
# um dos diretórios exportados via rSync.
#
# Autor: Luis Fernando Kieça
# Criado em: 14/10/04

# Última modificação em: 14/10/05
#

BACKUP_DIR='/mnt/hdc1/backup'
BACKUP_SERVERS='172.30.31.250 172.30.31.251 172.30.31.252 
172.30.31.253 172.30.31.254'

for SERVER in ${BACKUP_SERVERS}; do
# cria o diretório do backup se não existir
if [ ! -d ${BACKUP_DIR}/${SERVER} ]; then
mkdir ${BACKUP_DIR}/${SERVER}
fi

# entra no diretório do servidor correspondente

cd ${BACKUP_DIR}/${SERVER}

# descobre os diretórios exportados
SHARES=`rsync ${SERVER}:: | awk '{ print $1 }'
for SHARE in $SHARES; do
# Cria o diretório para cada compartilhamento (se não existir) e entra nele.

if [ ! -d ${BACKUP_DIR}/${SERVER}/${SHARE} ]; then
mkdir ${BACKUP_DIR}/${SERVER}/${SHARE}
fi
cd ${BACKUP_DIR}/${SERVER}/${SHARE}

#Faz o backup do compartilhamento
rsync -vurgoapl --delete-excluded${SERVER}::${SHARE} .

done
done

Obs.: Não esqueça de colocar a permissão para execução no script. 🙂

Agora, com o script criado, basta agendar a tarefa no crontab (ou no próprio agendador de tarefas do Windows).

Considerações finais:

Num primeiro momento, puxo todos os arquivos para o disco rígido do servidor encarregado do backup. Após isto ter sido concluído, efetuo a cópia em meio removível. Desta maneira, o servidor não demora para executar os backup diários (incrementais+diferenciais). Será demorado apenas na sua primeira execução (a máquina que conterá os arquivos precisará ter uma cópia de tudo o que possui nas demais máquinas).

Algumas coisas para se implementar nesta rotina:

  • Segurança (esta rotina não utiliza-se de nenhuma validação de usuário/senha)
  • Criptografia (os dados trafegam sem criptografia)
  • Compressão (para não congestionar sua rede e poder executar o script nos horários de expediente e possuir mais de um backup por dia)
  • Retorno do backup (pode-se exportar o diretório onde acontecem os backups via samba para que esteja disponível facilmente via rede ao retornar os arquivos.

Mas estes dois itens, eu deixo para você, leitor, implementar em seus servidores…