quarta-feira, 27 de agosto de 2008
Fábula da Formiga
Recebi em meu email essa fábula, que retrata o ambiente de trabalho de muitas empresas...estou compartilhando com vc´s...
Todos os dias, a formiga chegava cedinho ao escritório e pegava duro no trabalho. Era produtiva e feliz. O gerente marimbondo estranhou a formiga trabalhar sem supervisão. Se ela era produtiva sem supervisão, seria ainda mais se fosse supervisionada. E colocou uma barata, que preparava belíssimos relatórios e tinha muita experiência, como supervisora. A primeira preocupação da barata foi a de padronizar o horário de entrada e saída da formiga. Logo a barata precisou de uma secretária para ajudar a preparar os relatórios e contratou também uma aranha para organizar os arquivos e controlar as ligações telefônicas. O marimbondo ficou encantado com os relatórios da barata, e pediu também gráficos com indicadores e análise das tendências que eram mostradas em reuniões. A barata então contratou uma mosca e comprou um computador com impressora colorida. Logo a formiga produtiva e feliz, começou a lamentar-se de toda aquela movimentação de papéis e reuniões que eram feitas. O marimbondo concluiu que era o momento de criar a função de gestor para a área onde a formiga produtiva e feliz, trabalhava. O cargo foi dado a uma cigarra, que mandou colocar carpete no seu escritório e comprar uma cadeira especial. A nova gestora cigarra logo precisou de um computador e de uma assistente (sua assistente na empresa anterior) para ajudá-la a preparar um plano estratégico de melhorias e um controle do orçamento para a área onde trabalhava a formiga, que já não cantarolava mais e cada dia se tornava mais chateada. A cigarra então convenceu o gerente marimbondo que era preciso fazer um estudo de clima. Mas o marimbondo, ao rever as cifras, se deu conta de que a unidade na qual a formiga trabalhava já não rendia como antes, e assim contratou a coruja, uma prestigiada consultora, muito famosa, para que fizesse um diagnóstico da situação. A coruja permaneceu três meses nos escritórios e emitiu um volumoso relatório, com vários volumes que concluía: "há muita gente nesta empresa". O marimbondo, seguindo o conselho do relatório da coruja, mandou demitir a formiga, porque ela andava muito desmotivada e aborrecida. Moral da história: Prá que simplificar se dá pra complicar...
segunda-feira, 1 de outubro de 2007
Controlador de Domínio com Samba e Clamwin antivírus utilizando Debian
Boa sorte!!!
Introdução
Esse artigo o guiará passo a passo na montagem de um servidor Samba PDC no Debian 3.1 em modo texto e na personalização do servidor para auto configurar o ClamWin Antivirus nas estações, fazendo com que ele se atualize automaticamente, efetue verificações agendadas e informe no e-mail do administrador os virus encontrados.
O Samba, como todos já sabem, faz com que o Linux possa se comunicar com a plataforma Windows através da rede. Até aí tudo bem, porém, quero apresentar o PDC para quem é novo na área.
PDC ou Controlador de Domínio Primário, é um servidor que gerencia todos as contas dos usuários da rede e controla o logon dos mesmos nas estações Windows estipulando regras de acesso, além de claro, servir arquivos. Com ele podemos configurar scripts de logon que, que são executados toda vez que um usuário se loga, podemos mapear automaticamente unidades de rede, sincronizar data e hora, entre muitas outras possibilidades.
Existe ainda a possibilidade de concentrar todos os arquivos de cada usuário no servidor. Desta forma, não importa em que estação de trabalho o usuário efetue logon, ele sempre terá o seu desktop personalizado, com os seus respectivos documentos. Porém a nossa intenção aqui é fazer justamente o oposto, não concentrar os profiles dos usuários no servidor, tendo em vista que não temos hardware suficiente para isso.
O ClamWin é um antivírus open source para a plataforma Windows, baseado no Clam, famoso antivírus para servidores Unix. O ClamWin é o antivirus para windows mais recomendado na minha opinião, por ser gratuito, ter atualizações freqüentes e não ficar em execução em tempo real (ou seja, ele não fica verificando todos os arquivos que você abre, não comprometendo assim o desempenho da estação).
Por outro lado, é justamente por esse motivo (não ficar ativo continuamente) que ele é criticado. A solução encontrada é agendar verificações diárias. Aqui na minha rede, o ClamWin inicia uma varredura completa todo dia no horário de almoço, elimina automaticamente (se possível) o que encontrou de errado e me manda um e-mail informando se encontrou algum virus e o que fez com ele.
Neste artigo aprenderemos a configurar um servidor PDC do zero e depois sincronizar o ClamWin em todas as estações, através dos scripts de logon.
Ainda antes de começarmos, quero destacar que não podemos nos prender a interfaces gráficas para configurar os serviços do Linux, pois, quando a coisa apertar, teremos que recorrer ao arquivo de configuração em modo texto. Assim, também entendemos melhor as regras e personalizamos melhor o sistema de acordo com nossas necessidades. Além do mais, interfaces gráficas consomem recursos da máquina, o que não é nada interessante.
Sem mais firulas, vamos por a mão na massa...
Instalação e Configuração do Samba
Já que o artigo é dedicado ao Debian, vamos utilizar os próprios repositórios da distribuição para instalar o servidor samba.
# apt-get install samba
O mesmo comando serve para distribuições derivadas como o Conectiva e Ubuntu. Se ainda preferir, baixe o código fonte no site oficial (www.samba.org) e compile, mas isso não será tratado aqui. Ao término, o samba já estará instalado. Agora vamos configurá-lo.
Os arquivos de configuração do samba estão no diretório /etc/samba, podendo variar de acordo com a distro. O principal arquivo é o smb.conf. Como base, abaixo segue o meu smb.conf comentado para que você o adapte a sua rede.
No decorrer do arquivo você encontrará referências a usuários e grupos. A manipulação desses usuários será tratado mais adiante.
Segue o arquivo /etc/samba/smb.conf:
# SERVIDOR SAMBA PDC - DEBIAN GNU/LINUX
# POR TIAGO ANDRÉ GERALDI
[global]
# Na sessão Global está definido a forma como o servidor samba irá funcionar.
# Acompanhe com atenção cada campo.
# No workgroup vai o nome do grupo de trabalho ou Domínio,
# No nosso caso, sendo um PDC, é o nome de Domínio.
workgroup = empresa
# netbios name, o nome do servidor na rede
netbios name = SERVER
# A descrição do servidor para a rede
server string = PDC SERVER LINUX
# Usuário Administrador de Domínio.
# Esses usuários serão administradores do domínio.
# São eles que adicionaram os hosts windows no domínio
# entre outras funções administrativas.
# Pode ser informado vários usuários
# separados por espaços e /ou grupos. No exemplo, usuários
# tiago, darci e o grupo cpd serão os administradores
admin users = tiago darci @cpd
# O PDC é um servidor de data e hora?
# habilitamos essa função e posteriormente faremos os
# computadores da rede sincronizar seu relógio com o servidor
time server = yes
# No caso de haver mais de um PDC na rede, como, por exemplo, um
# servidor Windows NT, as próximas linhas
# dizem se este servidor é o principal PDC e qual é seu OS LEVEL
# (o valor de concorrências com os outros).
# Deixe assim como está se só houver um PDC na rede.
preferred master = yes
domain master = yes
os level = 100
# O Servidor aceitará Logon dos usuários nas estações
domain logons = yes
local master = yes
# As próximas duas linhas referem-se aos diretórios
# onde seriam armazenados os profiles dos usuários.
# No nosso caso, o servidor não guardará essas informações,
# elas ficaram salvas localmente em cada estação, por isso
# as tags ficam vazias.
logon path =
logon home =
logon script = todos.bat
# Script a ser executado pelos usuários quando fizerem logon.
# Os scripts deverão estar dentro da pasta NETLOGON que
# veremos adiante o seu compartilhando, também devem ser .bat
# para que o windows possa executá-lo.
# Neste caso temos um único script para todos os usuários,
# Você pode definir scripts individuais com o nome do usuário
# ex: tiago.bat. Aqui na configuração coloque:
# logon script = %u.bat
# ou ainda conforme o grupo do usuário
# logon script = %g.bat
security = user
# Security: nível de acesso, pode ser user ou share.
# User, temos um controle de autenticação por usuário, cada
# usuário tem suas permissões de acesso. Já como share,
# temos um compartilhamento simples onde todos acessam
# tudo sem nenhum controle.
# O servidor aceitará usuários sem senha?
# Eu prefiro deixar No
null passwords = no
# Habilita senhas criptografadas, é importante a habilitação
# para compatibilidade com windows 2000 e XP
encrypt passwords = true
# Corrige acentuação dos arquivos compartilhados
unix charset = iso8859-1
display charset = cp850
# IPs ou hostnames dos micros da rede
# importante para a segurança, evita conexões indesejadas.
# A classe de IPs da minha rede é 10.1.0.0 talvez a sua
# seja 192.168.0.0, mude de acordo. 127. diz respeito
# ao localhost, o próprio servidor.
hosts allow = 10.1.0. 127.
# arquivo de log do samba
log file = /mnt/sda7/logs/samba/log.%m
# tamanho máximo do arquivo de log em KBs
max log size = 10000
# Nível de detalhes do arquivo log
# altere de
log level = 2
debug level = 2
# Aqui finda a seção homes. Agora em diante vem os
# compartilhamentos e suas configurações:
# O compartilhamento netlogon é obrigatório
# nele ficará os scripts de logon dos usuários.
# Defina o path, especificando onde está a pasta netlogon
# não esqueça de criá-la também depois.
# Estamos definindo abaixo que o compartilhamento não
# será navegável e que será somente leitura.
[NETLOGON]
comment = Servico de logon
path = /mnt/sda7/netlogon
browseable = no
read only = yes
# Criamos abaixo um compartilhamento público para todos
# acessarem livremente e trocarem arquivos. Ele é
# navegável (browseable=yes), arquivos somente leitura
# podem ser apagados (delete readonly=yes), gravável
# (writable), publico (usuários anônimos também acessaram) e
# disponível (available). Em veto files, defini extensões
# de arquivos que não poderão gravadas, afim de evitar
# abusos. Em create mode, está definido que os arquivos
# criados poderão ser alterados por qualquer um, não
# somente pelo dono, exemplo diferente você verá mais abaixo
[publico]
browseable = yes
delete readonly = yes
writable = yes
path = /mnt/sda7/publico
create mode = 0777
available = yes
public = yes
veto files = /*.mp3/*.wma/*.wmv/*.avi/*.mpg/*.wav/
# O compartilhamento abaixo segue a mesma estrutura,
# a diferença é que só os usuários do grupo adm
# poderão acessá-lo.
[administracao]
path = /mnt/sda6/adm
available = yes
browseable = yes
create mode = 0777
writable = yes
valid users = @adm
# Abaixo temos um compartilhamento com force file mode=700,
# desta maneira os arquivos criados só poderão ser lidos ou
# alterados pelo usuário que os criou.
[bkps]
path = /mnt/sda7/bkps
available = yes
browseable = yes
writeable = yes
force file mode = 700
veto files = /*.mp3/*.wma/*.wmv/*.avi/*.mpg/
# Agora é só ir criando os compartilhamentos que você precisa
# da mesma maneira. Repare que não temos a seção Homes
# comumente vista nos exemplos de smb.conf porque realmente
# não vamos precisar dela.
# smb.conf por Tiago André Geraldi
Criando Grupos e Usuários
Agora já temos um servidor samba configurado. Precisamos ainda adicionar os grupos e os usuários que especificamos no smb.conf. Falta também criar os scripts dos usuários e, por fim, adicionar as máquinas windows no domínio.
Criando grupos:
# addgroup cpd
# addgroup adm
# addgroup maquinas
Neste exemplo, criei assim os dois grupos de usuários que utilizei no meu smb.conf. Faça de acordo com a sua rede. Também foi adicionado o grupo maquinas onde posteriormente cadastraremos os nomes dos hosts da rede.
Criando usuários:
É interessante que os usuários do samba não sejam usuários normais do sistema. Caso contrário, eles poderão efetuar logon no shell no servidor ou mesmo iniciar uma conexão por ssh, o que aumentaria as brechas de segurança no servidor e que ainda nem tenham diretório home.
Para isso, criamos os usuários usando os seguintes comandos:
# useradd -g cpd -s /bin/false -d /dev/null tiago
# smbpasswd -a tiago
Assim criamos o usuário tiago que é do grupo cpd e não tem acesso shell nem diretório home e, em seguida, o cadastramos no samba.
Para alterar a senha de um usuário, use:
# smbpasswd nome_do_usuario
Para excluir um usuário, primeiro o apague do samba, depois do próprio sistema:
# smbpasswd -x nome
# userdel nome
Além dos usuários precisamos também cadastrar os nomes de todas as máquinas. Se um nome de máquina não estiver cadastrado, ela não poderá ser incluída no domínio. Neste exemplo, a máquina a ser incluída será a adm01:
# useradd -g maquinas -s /bin/false -d /dev/null adm01$
# passwd -l adm01$
# smbpasswd -a -m adm01
# smbpasswd -a tiago
Baixando e Instalando o Clamwin nas Estações
O Clamwin está disponível no http://www.clamwin.com. Baixe a versão mais recente na seção downloads e instale normalmente, como é feito com qualquer executável do Windows. Não é necessário realizar nada diferente durante a instalação. Faça isso em todas as estações.
Primeiramente vamos configurar uma estação apenas, colocar seu arquivo de configuração no diretório Netlogon do servidor e configurar os scripts para que sincronizem a configuração nas estações.
Em uma das estações, abra o Clamwin, clique no menu Tools e abra Preferences. Em General selecione a opção "Remove (Use Carefully)" para que os virus sejam removidos automaticamente quando encontrados.
Na seção Internet Updates, habilite a caixa Update Virus Database on Logon.
Mail Server: servidor de envio. smtp.bol.com.br, por exemplo. A porta a ser usada pelo servidor, 25 é a padrão. Nome de usuário do e-mail que mandará a notificação e senha. Você poderá estar enviando o e-mail de alerta de você para você mesmo, então defina From e To com o mesmo endereço. Clique
Terminamos a configuração. Vá agora ao diretório "Documents and Settings/nome_do_seu_usuario/Dados de Aplicativos/.clamwin/" e copie os dois arquivos para a pasta netlogon do seu servidor. Tendo em vista que o servidor samba ainda não está em execução, faça isso usando um pendrive ou disquete.
O próximo paço é escrever os scripts de logon.
Escrevendo Scripts de Logon
No arquivo smb.conf ao invés de definirmos o script logon como sendo %u.bat para que seja executado um script com o nome do usuário, por exemplo tiago.bat, colocamos todos.bat. A idéia é a seguinte: em todos.bat colocamos o que todos os usuário irão fazer, por exemplo, sincronizar o Clamwin e data e mapear o publico como P:, no final do arquivo fazemos uma chamada a um arquivo individual com o nome do usuário, assim você terá aquilo que todos executam e aquilo que só um usuário executa. Se não entendeu, entenderá mais abaixo.
Vamos criar o todos.bat. No servidor como root digite:
# vi .../netlogon/todos.bat
Adicione as duas linhas abaixo dentro do arquivo:
net use p: \\server\publico /yes
net time \\server /set /yes
Obs: "server" é o nome do servidor, mude se necessário. Uma linha mapeia o público como p: outra sincroniza a data e hora.
Agora vamos sincronizar o antivírus. Adicione ao arquivo:
c:
cd %userprofile%\Dados de Aplicativos\.clamwin
del Clamwin.conf
del ScheduledScans
copy \\server\netlogon\Clamwin.conf /y
copy \\server\netlogon\ScheduledScans /y
\\server\netlogon\%username%.bat
O script abre a pasta de configuração do clamwin, deleta supostos arquivos de configuração atuais e copia do compartilhamento netlogon os dois novos arquivos de configuração. Portanto, toda vez que um usuário logar em uma máquina o antivirus é automaticamente configurado. Na última linha, o script chama um arquivo com o nome do usuário.bat dentro de netlogon. Por exemplo, você pode criar um arquivo chamado tiago.bat e colocar dentro dele o mapeamento de um compartilhamento específico, assim, somente esse usuário mapeará essa unidade.
Executando o Samba e adicionando as estações
Depois de toda a configuração estar pronta, vamos executar o samba:
# /etc/init.d/samba start
Agora podemos começar a incluir as estações Windows no Domínio do Samba. Na estação, acesse a opção: Propriedades de Meu Computador -> Identificação de Rede.
Selecione Domínio e digite o nome, no caso EMPRESA, de acordo com o especificado no smb.conf. Será solicitado nome e senha de administrador de domínio.
Após reiniciar o computador é interessante que você defina a senha de administrador local da máquina e exclua todas as outras contas locais. No Painel de Controle, Ferramentas Administrativas, Gerenciamento do Computador, você controla isso, inclusive pode definir quais usuários do domínio ou grupo terão acesso de administrador na máquina (poderão instalar ou remover programas, modificar configurações, etc.) os demais, apenas poderão trabalhar na máquina sem fazer nada de significativo. Pronto, daí em diante, nada de você ficar se incomodando em formatar máquinas porque os usuários fazem mais do que deviam. Associando o Samba com um servidor proxy, é tiro e queda.
Esse artigo tem como base o guia Foca Linux e a documentação Oficial do Samba. Os livros do Morimoto também foram muito úteis.
Artigo original: http://www.guiadohardware.net/artigos/pdc-debian-clamwin-estacoes/
quarta-feira, 26 de setembro de 2007
Configurando um servidor proxy/cache com firewall no Linux
Este documento foi criado com base no Debian Etch4
Para este procedimento o sistema deverá estar devidamente instalado e configurado com duas placas de rede, caso estas ainda não tenham sido configuradas, você pode fazer essa configuração á partir do arquivo /etc/network/interfaces, conforme segue abaixo:
root@servidor:/# vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface (interface de acesso a internet, ligada a um modem ou cable modem)
allow-hotplug eth0
iface eth0 inet static
address 200.xxx.xxx.xxx
netmask 255.255.255.xxx
network 200.xxx.xxx.xxx
broadcast 200.xxx.xxx.255
gateway 200.xxx.xxx.xxx
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 200.204.0.10 200.204.0.138
dns-search servidor.dominio.com.br
#Interface de acesso a rede interna
allow-hotplug eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
Com as placas de rede configuradas, partimos para a instalação e configuração do servidor proxy, só que para isso devemos verificar se os espelhos utilizados para baixar novos pacotes e atualizar do sistema, estão configurados. Então abra o arquivo /etc/apt/sources.list e verifique se espelhos abaixo estão presentes no arquivo:
deb http://linorg.usp.br/debian/ etch main
deb-src http://linorg.usp.br/debian/ etch main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
deb http://ftp.de.debian.org/debian stable main contrib non-free
Caso esteja tudo ok, vamos atualizar nossa lista de pacotes, utilizando o comando:
root@servidor:/# apt-get update.
Após atualizado o sistema, seguimos com a instalação do servidor proxy Squid (http://www.squid-cache.org), mas lembre-se que para isso você deverá está logado como root.
root@servidor:/#aptitude install squid.
Se tudo correu bem, o sistema será instalado e inicializado automaticamente.
Com o servidor de proxy rodando, agora podemos fazer as configurações conforme nossas necessidades, isto costuma mudar de acordo com as regras de cada empresa, por isso não irei entrar
Após configurado o esquid.conf, partimos para a configuração de um firewall, uma vez que o servidor está conectado a internet e vulnerável á ataques de pessoas mal intencionadas. Para isso, verificamos se o iptables (http://www.netfilter.org/) encontra-se instalado com o comando:
root@servidor:/#iptables –v
Se o mesmo estiver instalado, você terá uma resposta parecida com esta (hoje a versão atual é a 1.3.8) iptables v1.3.8.
Agora criamos um arquivo chamado firewall dentro do diretório /etc/init.d e damos a ele permissão de execução:
root@servidor:/# touch /etc/init.d/firewall (criação do arquivo)
root@servidor:/# chmod +x /etc/init.d/firewall (dando permissão de execução)
root@servidor:/# vi /etc/init.d/firewall(abrindo o arquivo para edição)
Este script monta um firewall básico, pois assim como a configuração do squid, as regras variam de acordo com cada empresa.
#!/bin/bash
echo "Carregando o firewall"
#variaveis
IPT="/sbin/iptables"
REDEINT="192.168.0.0/24"
IPFW="192.168.0.1"
# Habilitando o recurso de IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#Limpa as regras ativas
$IPT -F
$IPT -t nat -F
$IPT -A INPUT -p tcp -i lo -j ACCEPT
#Libera o acesso via ssh na porta 30200
$IPT -A INPUT -p tcp --sport 1024: --dport 30200 -j ACCEPT
#Libera a porta do DNS
$IPT -A INPUT -p udp --sport 1024: -d $IPFW --dport 53 -j ACCEPT
#Libera o acesso a internet na porta 3128
$IPT -A INPUT -p tcp --sport 1024: -d $IPFW --dport 3128 -j ACCEPT
$IPT -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT
#Faz nat para a rede interna
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#Libera as portas de e-mail
$IPT -A FORWARD -p tcp --dport 25 -j ACCEPT
$IPT -A FORWARD -p tcp --dport 110 -j ACCEPT
#Bloqueia a porta 80
$IPT -A FORWARD -p tcp --dport 80 -j DROP
#Protege contra o ping da morte
$IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#Protege contra ataques do tipo syn-flood, dos, etc
$IPT -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
#Protege contra port scanners avancados Ex: nmap
$IPT -A FORWARD -p tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Protege contra pacotes que podem procurar e obter informações da rede interna
$IPT -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
#Protege contra todos os pacotes danificados ou com defeito
$IPT -A FORWARD -m unclean -j DROP
#Bloqueando o traceroute
$IPT -A INPUT -p udp -s 0/0 -i ppp0 --dport 33435:33525 -j DROP
#Protege contra ataques
$IPT -A INPUT -m state --state INVALID -j DROP
Pronto, seu sistema está instalado e configurado para compartilhar o acesso a internet via proxy.
Algumas configurações adicionais são recomendadas para que o servidor tenha um pouco mais de segurança, conforme segue:
- Evitar que o usuário root faça login
Edite o arquivo /etc/ssh/sshd_config e adicione linha:
PermitRoorLogin no
- Mudar a porta de acesso via ssh, que por padrão é 22
Edite o arquivo /etc/sshd_config e altera a linha:
Port 22 para por exemplo Port 30200
- Bloquear respostas ao comando ping, mantendo o servidor escondido
Edite o arquivo /etc/sysct1.conf e adicione a linha:
net.ipv4.icmp_echo_ignore_all = 1
Bibliografia:
Ferreira, Rubem E. Linux Guia do Administrador do Sistema Novatec editora
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7384
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5644
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=8539