ct

    Debian: servidor de arquivos, antivirus, lixeira e auditoria

    Dicas do Guia do Hardware

    A implementação de servidores de arquivos utilizando a plataforma GNU/Linux permite a utilização de diversos recursos, bem como obter ganhos de performance e segurança. Este artigo irá apresentar a implementação de um servidor arquivos utilizando a distribuição Debian GNU/Linux Lenny, bem como, a utilização de 3 módulos VFS (Virtual File System) no Samba, para disponibilizar as funcionalidades de Lixeira, Auditoria e Antivirus. Waldemar Dibiazi Junior
    19/11/2009


    • Ambiente:
      • Sistema básico + Categoria Servidor de Arquivos
      • Disco de instalação (netinst-amd64)

    • Softwares utilizados: Samba+Clamav+Scannedonly
      • Samba: 3.2.5
      • Clamav: 0.95.2
      • Scannedonly: 0.15


    Introdução


    A implementação de servidores de arquivos utilizando a plataforma GNU/Linux permite a utilização de diversos recursos, bem como obter ganhos de performance e segurança.

    Este artigo irá apresentar a implementação de um servidor arquivos utilizando a distribuição Debian GNU/Linux Lenny, bem como, a utilização de 3 módulos VFS (Virtual File System) no Samba, para disponibilizar as funcionalidades de Lixeira, Auditoria e Antivirus.

    O módulo Recycle permite que os compartilhamentos apresentem o recurso de Lixeira, ou seja, durante a exclusão de arquivos, os usuários terão esses arquivos movidos para outro compartilhamento com a função de Lixeira.

    A implementação que será exposta, disponibilizará um compartilhamento para cada usuário logado no servidor, para os mesmos armazenarem seus arquivos, e um compartilhamento que servirá como Lixeira individual para cada usuário.

    O segundo módulo VFS utilizado é chamado Full_Audit, que permite o registro detalhado das operações realizadas sobre cada arquivo, operações como acesso, criação e exclusão de arquivos.

    Outrossim, este módulo permite que o log gerado tenha um formato que permita a sua leitura de forma mais fácil, e claro, sendo muito rico em detalhes.

    O terceiro módulo utilizado é chamado de Scannedonly que desempenhará o papel de backend entre o Samba e o Antivirus Clamav.

    Como muitos sabem, a platarforma GNU/Linux possui excelente histórico com relação a quantidade virus e worms que podem comprometer o sistema.

    A utilização de usuários com privilégios bastante limitados, combinada ao uso de sistemas de controle mandatários como por exemplo AppArmor e o SeLinux que possibilitam proteger os componentes principais do Sistema Operacional, entretanto um Antivirus permite que os arquivos do usuário em questão não sejam comprometidos, o que muitas vezes é pior que ocorrer o comprometimento dos componentes do sistema.

    Em comparação com a platarforma Windows, a quantidade de virus existentes para o GNU/Linux é muito menor.

    Isso é uma vantagem, mas ao mesmo tempo faz com que muitos usuários administradores ignorem o fato de que um servidor Linux atuando como Servidor de Arquivos em uma rede utilizando protocolo CIFS, possa vir atuar como repositório de virus.

    Muitos administradores preferem manter apenas as estações de trabalho com softwares Antivirus, mas com certeza adicionar uma camada extra de proteção ao ambiente é importante.

    Deste modo, implementar um Servidor de Arquivos com Antivirus permite essa segunda camada de proteção, da mesma forma que possibilita que ambientes não muito bem administrados com relação a atualização de definições de virus e/ou uso de antivirus menos eficientes tenham o servidor de arquivos infectados por uma estação, e através do servidor infectado outra estação nos mesmos moldes da estação contaminada seja contaminada também.


    Características do Scannedonly


    No site do projeto (http://olivier.sessink.nl/scannedonly/index.html) estão expostas várias características do software, mas dentre elas, considerei interessante a possibilidade de redirecionar o scanning de arquivos para outro servidor.

    Deste modo, um servidor que atende bem a demanda do número conexões x tamanho dos arquivos, mas que não possui poder de processamento adequado para o scanning de arquivos, poderia ter essa funcionalidade desempenhada por outro servidor na rede.

    Outra característica importante do scannedonly é a escalabilidade, ou seja, quando o mesmo é utilizado em ambientes de média a larga escala, com muitos usuários requisitando acesso a arquivos, bem como, a existência de muitos arquivos grandes e compactados. Nestas condições o módulo Scannedonly se sai melhor que o módulo Samba-vscan.

    Vantagens do Samba-vscan sobre o Scannedonly


    O Samba-vscan realiza o scanning de arquivos a cada requisição realizada sobre um arquivo (on-access), deste modo, um arquivo que não esteja infectado sempre estará disponível para o usuário. Outrossim, o Scannedonly irá negar o acesso na primeira requisição, após a primeira requisição o daemon (scannedonlyd_vscan) será notificado, o arquivo escaneado e somente após a segunda requisição do arquivo é que o arquivo estará disponível caso não esteja infectado.

    Vantagens do Scannedonly sobre o Samba-vscan


    Com a descrição da vantagem do Samba-vscan sobre o Scannedonly também ficou clara a desvantagem dele em relação ao modo como ele trabalha.

    O Scannedonly escaneia apenas uma vez o arquivo requisitado, na próximas requisições ele verificará a existência de um arquivo de controle contendo o nome do arquivo requisitado e a extensão .scanned, caso exista esse arquivo de controle as próximas requisições não demandaram novo escaneamento do arquivo.

    Diferentemente do Samba-vscan que a cada requisição de acesso ao arquivo, realiza o escaneamento do mesmo. Deste modo, um arquivo muito acessado por diversos usuários e várias vezes, demandará o seu escaneamento várias vezes.

    Imagine um servidor com 3000 a 4000 arquivos DBF, com cada um possuindo em média 80 a 100 MB e sendo acessado constantemente por 50 usuários, este foi um dos ambientes que presenciei o uso do Samba+Samba-vscan+Clamav onde o administrador já havia realizado a substituição do switch e estava pensando em implementar agregação de link no servidor, com a esperança de que isso fosse resolver seus problemas com relação a alta latência no acesso, mas o problema estava no utilização da CPU, que em momentos de pico (quase todo o expediente) estava entre 85 a 100%.

    O projeto Samba-vscan e as versões mais recente do Samba


    O projeto Samba-vscan é com certeza um excelente projeto, mas está a algum tempo sem disponibilizar versões que sejam compatíveis com versões das séries mais atuais do Samba, por exemplo, a série 3.4.

    O software Scannedonly foi descoberto durante minhas pesquisas e acesso a muitos foruns de discussão sobre a utilização do Samba-vscan nas versões mais recentes do Samba.

    Além das diversas pesquisas, realizei modificações nos fontes do Samba-vscan na tentativa de obter exito na compilação, mas não obtive exito devido o pouco disponível para estudar o código fonte.

    Deste modo, optei por uma alternativa ao Samba-vscan, pois as versões das séries 3.2 e 3.4 trazem naturalmente diversas correções de segurança, recursos e aumento no desempenho com relação as versões anteriores, sendo assim, andei vendo que muitos administradores tem realizado a instalação de versões anteriores do Samba contendo muitos bugs, como forma de poder obter êxito na compilação do Samba-vscan.


    Implementando o Servidor de Arquivos


    Ajustes no arquivo de repositórios do APT


    Realize a cópia do arquivos de configuração dos repositórios utilizados pelo gerenciador de pacotes apt.

    # cp /etc/apt/source.list /etc/apt/source.list.default

    Realize a inclusão dos repositórios contrib e non-free, deixando o arquivo source.list semelhante ao exibido na figura 1.

    m316a4e58

    Figura 1 – Arquivo de configuração de repositórios do APT.

    Atualização do banco de dados de pacotes


    # apt-get update

    A execução do apt-get upgrade não será necessária caso você tenha optado por instalar o sistema a partir do disco netinst, onde o download dos pacotes são realizados via internet.

    Alguns ajustes no servidor (opcional)


    Instale o utilitário rcconf para ativação/desativação de serviços do sistema.

    # apt-get install rcconf

    Execute o utilitário rcconf e desative os seguintes serviços:

    • exim4
    • mountnfs-bootclean.sh
    • mountnfs.sh
    • nettalk
    • nfs-common
    • nfs-kernel-server
    • openbsd-inetd
    • portmap
    • rsyslog
    • umountnfs.sh

    Instalando o OpenSSH Server (recomendável)


    # apt-get install openssh-server

    Instalando o Sysklogd


    # apt-get install syslogd

    Instalando o Clamav Antivirus


    # apt-get install clamav clamav-docs clamav-daemon clamav-freshclam

    Para realizar testes de scanning de arquivos com clamav é interessante instalar o pacote com arquivos de testes.

    # apt-get install clamav-testfiles

    Se quiser realizar com arquivos realmente infectados, etc você poderá realizar o download no site www.rigacci.org/comp/virus/ (realize esse procedimento por sua conta e risco).

    Será necessária a instalação das bibliotecas de desenvolvimento do Clamav, para que o ScannedOnly possa realizar a solicitação de scanning de arquivos ao Clamav. A não instalação do pacote contendo as bibliotecas de desenvolvimento implicará em erro de compilação do Scannedonly.

    Portanto execute:

    # apt-get install libclamav-dev

    Para que o antivirus seja capaz de realizar o scanning em arquivos compactados é essencial instalar pacotes de utilitários compactadores/descompactadores de formatos como por exemplo: arc, bzip2, cab, 7zip, zip e rar.

    Esta é uma falha encontrada em diversas implementações em produção que já verifiquei, inclusive, em muitos artigos que explicam a implementação de servidores de arquivos com Samba+SambaVscan+Clamav não é dada a devida atenção ao suporte de formatos de arquivos compactados no sistema, sendo assim, o administrador só irá descobrir o problema verificando os erros informados no log onde não foi possível acessar o arquivo compactado.

    # apt-get install arc bzip2 cabextract p7zip unzip unrar

    Assim como o Samba-vscan o Scannedonly necessita dos arquivos contendo o código fonte do Samba.

    Deste modo, iremos instalar o pacote que contém os mesmos. Como a instalação está sendo baseada em boa parte no uso do gerenciador apt-get, então a necessidade de ter deixado as linhas deb-src no arquivo sources.list

    Outrossim, antes de realizar-mos o processo de instalação do pacote com os fontes será necessária a instalação do pacote dpkg-dev, que traz como dependência uma série de pacotes como compiladores, bibliotecas e ferramentas de desenvolvimento como o make.

    Deste modo, execute:

    # apt-get install dpkg-dev

    A seguir instale o pacote com os fontes do Samba:

    # cd /usr/local/src
    # apt-get source samba

    Ao término do processo foi realizado o download de 3 arquivos e a criação de um diretório referente aos fontes do Samba, um arquivo contendo o código fonte, outro contendo os patches de segurança.

    O diretório conterá os arquivos com os fontes que utilizaremos na compilação do ScannedOnly.

    Devemos agora acessar o diretório dos fontes do Samba e gerar o make file, bem como, alguns arquivos headers devido eles conterem alguns prototipos de funções utilizados pelo scannedonly, este procedimento também é necessário na compilação do samba-vscan.

    # cd samba-3.0.25/source
    # ./configure
    # make proto

    A seguir iremos realizar o download dos fontes do ScannedOnly:

    # cd /usr/local/src
    # wget http://olivier.sessink.nl/scannedonly/scannedonly-0.15.tar.bz2

    Proceda com a descompatação e desconcatenação dos arquivos, e a geração do make file:

    # tar -xvjf scannedonly-0.15.tar.bz2
    # cd scannedonly-0.15
    # ./configure –with-samba-source=/usr/local/src/samba-3.2.5/source
    –with-samba-vfs-dir=/usr/lib/samba/vfs

    Atente ao fato do PATH do diretório dos fontes, onde estou considerando que instalamos o pacote no diretório /usr/local/src, mude o PATH conforme o diretório de trabalho que foi utilizado durante o comando "apt-get source samba".

    Realize a compilação e instação:

    # make && make install

    Criando um shell script de inicialização para Scannedonly


    # cd /etc/init.d
    # vi scannedonly

    #!/bin/sh
    scannedonly="/usr/local/sbin/scannedonlyd_clamav"
    port="2020"
    quarent_dir="/quarentena"
    $scannedonly -p $port -d $quarent_dir

    Modifique a permissão de acesso do script de modo que ele seja um arquivo executável:

    # chmod +x scannedonly

    Crie os links simbólicos para inicialização e finalização do daemon scannedonlyd_clamav

    # update-rc.d scannedonly defaults

    Configurando o Samba


    Realize o backup do arquivo exemplo instalado juntamente com o pacote do Samba, pois o mesmo pode servir como referência futura.

    # mv /etc/samba/smb.conf /etc/samba/smb.conf-default

    Crie o arquivo smb.conf e insira o seguinte conteúdo:

    # vi /etc/samba/smb.conf

    [global]
    netbios name = fileserver
    server string = Servidor de arquivos
    workgroup = skynet
    socket options = TCP_NODELAY SO_RCVBUF=102400 SO_SNDBUF=102400
    interfaces = lo eth0
    bind interfaces only = yes
    log level = 0
    passdb backend = tdbsam
    max log size = 1024
    load printers = no
    printing = bsd
    printcap name = /dev/null
    getwd cache = yes

    [homes]
    comment = Diretorio pessoal - %U
    path = /arquivos/%U
    read only = no
    guest ok = yes
    vfs object = recycle full_audit scannedonly
    # Auditoria
    full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir
    full_audit:prefix = %u|%I|%S
    full_audit:failure = none
    full_audit:facilit = local5
    full_audit:priority = notice

    # Antivirus
    scannedonly: domain_socket = False
    scannedonly: portnum = 2020
    scannedonly: scanhost = localhost
    scannedonly: hide_noscanned_files = True

    # Lixeira
    recycled:keeptree = yes
    recycle:versions = yes
    recycle:repository = /lixeira/%U
    recycle:exclude = *.tmp, *.log, *.iso, *.wav, *.mp3, *.wmv, *.avi
    recycle:excludir = tmp, cache

    [lixeira]
    comment = Lixeira - %U
    path = /lixeira/%U
    valid users = %U
    create mask = 0700
    directory mask = 0700
    browseable = yes
    read only = no
    vfs object = scannedonly

    # Antivirus
    scannedonly: domain_socket = False
    scannedonly: portnum = 2020
    scannedonly: scanhost = localhost
    scannedonly: hide_noscanned_files = True

    [quarentena]
    comment = Diretorio de quarentena
    path = /quarentena
    valid users = admin
    create mask = 0700
    directory mask = 0700
    browseable = no
    read only = no

    Execute o comando testparm para verificar erros de sintaxe.

    Além de verificar a saída do comando testparm é importante verificar as mensagens gravadas nos arquivos log.smbd e log.nmbd contidos em /var/log/samba afim de indentificar erros na inicialização dos daemons do Samba, bem como, erros durante a utilização do servidor durante os testes iniciais.

    Inicie os daemons do Samba:


    # /etc/init.d/samba restart

    Crie os diretórios para os Arquivos dos usuários, Lixeira e Quarentena


    # mkdir /arquivos /lixeira /quarentena

    Crie as contas de usuários que terão compartilhamentos no servidor


    A seguir está sendo realizada:

    Criação do usuário fulano no sistema:

    # useradd -d /dev/null -s /bin/false fulano

    Bloqueio da conta de usuário fulano no sistema:

    # passwd -l fulano

    Criação do usuário fulano no Samba:

    # smbpasswd -a fulano

    Criação dos diretórios para arquivos pessoais e lixeira para o usuário fulano:

    # mkdir /arquivos/fulano /lixeira/fulano

    Ajuste de permissões de acesso e mudança do dono dos diretórios:

    # chmod 700 /arquivos/fulano /lixeira/fulano
    # chown fulano /arquivos/fulano /lixeira/fulano


    Auditoria de acesso


    Para verificar os acessos realizados, você pode executar o seguinte comando:

    # tail -f /var/log/messages |grep smbd_audit

    Auditoria de infecção de arquivos


    Todos os arquivos infectados são movidos automaticamente para o diretório quarentena, ao mesmo que no diretório onde o arquivo infectado estava é gerado um arquivo de texto vazio contendo como prefixo a frase "VIRU_found_in_" seguido do nome do arquivo infectado e com o sufixo ".txt".

    Além do arquivo gerado é possível acompanhar os registros de infecção armazenados no arquivo syslog, através do comando:

    # tail -f /var/log/syslog |grep scannedonly

    Realizando testes


    Lixeira

    Copie alguns arquivos para o compartilhamento do(s) usuário(s) que você criou, em seguida exclua-o(s) e verifique que o mesmo foi movido para o compartilhamento lixeira.

    Arquivos infectados

    Você pode realizar o teste com arquivos infectados utilizando os arquivos de teste que foram instalados com o pacote clamav-testfiles.

    Os arquivos se encontram no diretório /usr/share/clamav-testfiles, você pode simplesmente copia-los para o diretório utilizado como compartilhamento pessoal do usuário.

    Se quiser realizar outros testes com arquivos realmente infectados, pode realizar o download de arquivos infectados através do link (www.rigacci.org/comp/virus/ ) informado no inicio do artigo (realize esses testes por sua conta e risco).


    Conclusões


    Através dos módulos VFS do Samba é possível expandir as capacidades de um servidor Samba, sendo que, recursos como Lixeira e Antivirus são muito bem vindos a Servidores de Arquivos pois evitam dores de cabeça maiores devido exclusões acidentais, bem como, infecção de arquivos importantes e claro, que nosso servidor se tranforme em repositório de virus.

    Em relação ao módulo Scannedonly, ele permite que o Servidor Samba tenha sua escalabilidade aumentada com relação a ambientes onde é realizado o acesso a muitos arquivos simultâneamente bem como, esses arquivos sejam grandes e/ou compactados, simplesmente graças ao bom desempenho que o Scannedonly proporciona nessas condições.

    Por Waldemar Dibiazi Junior <waldemar_jr [at] hotmail.com>


     




    Blog:

    Add to Google

    » Gostou do texto?
    Veja nossos livros impressos:

    Smartphones | Linux | Hardware
    Redes | Servidores


    ... ou encontre o que procura usando a busca:

cb
Livros de Carlos E. Morimoto Contato HOME