segunda-feira, 1 de outubro de 2007

Controlador de Domínio com Samba e Clamwin antivírus utilizando Debian

Este artigo produzido por Tiago André Geraldi, foi muito útil para que eu conseguisse montar um servidor PDC na empresa onde trabalho e por isso estou compartilhando com voçês. No meu caso, ele foi bastante customizado, por exemplo, aqui ele se baseia no Debian 3.1, enquanto eu fiz com o 4.0 Etch, mas serviu de base para que eu pudesse caminhar sózinho.

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 1 a 5 e verifique as diferenças
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. Em Shedule Scans, clique em Add. (recomendo usar a opção Daily, para exames diários). Escolha uma hora, a pasta a ser verificada (coloque c:\ para verificar todo o disco) e a descrição.

Na seção Internet Updates, habilite a caixa Update Virus Database on Logon. Em E-mail Alerts, habilite Send Email On Virus Detection, em seguida defina:

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 em Send Test Email para ver se deu tudo certo.

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/

Nenhum comentário: