sexta-feira, 14 de janeiro de 2011

Bloquear gravação de arquivos indesejados em compartilhamentos do Samba

O Windows Server, a partir da versão 2003 R2, possui o recurso File Screening, o qual é possível bloquear a gravação de arquivos no servidor, utilizando uma lista com extensões. Por exemplo, para a criação de uma política que bloqueia arquivos de música, as extensões mp3, wma, ogg, entrariam para a lista.
Bem, felizmente, para quem utiliza a dupla Linux/Samba, também é possível realizar tal bloqueio e de forma simples. Vamos supor que se deseja negar a gravação dos arquivos de música citados acima nos compartilhamentos.
No arquivo de configuração do Samba, vá até a seção das opções do compartilhamento e insira a diretiva abaixo:

veto files = /*.mp3/*.wma/*.ogg/

Na realidade, a política se aplica a arquivos que terminam com o nome .mp3, .wma e .ogg. Desta forma, também possível, por exemplo, bloquear arquivos que contém a string xxx no nome:

veto files = /*xxx*/

Abaixo há um exemplo da diretiva aplicada a um compartilhamento:

[documentos]
        comment = Documentos da rede
        path = /var/documentos
        valid users = @usuarios
        write list = @admin
        read only = No
        create mask = 0770
        directory mask = 0770
        veto files = /*.mp3/

Lembrando que após esta alteração é necessário reiniciar o daemon do Samba.
Esta diretiva irá não só bloquear a gravação dos arquivos, mas também irá ocultar os que já existem. Os usuários não conseguirão visualizá-los ao acessar a pasta compartilhada.
Uma outra dica é excluir ou mover os arquivos indesejados nas pastas compartilhadas do servidor de arquivos:

# find /var/documentos -name "*.mp3" -exec rm -fv {} \; (Para excluir os arquivos)
# find /var/documentos -name "*.mp3" -exec mv {} /var/lixo \; (Para mover os arquivos)

Um abraço e até a próxima.

sexta-feira, 3 de dezembro de 2010

Bloqueando broadcast no rádio Mikrotik

Recentemente, adquirimos dois rádios da Mikrotik para interligar a unidade principal da empresa a um prédio que fica próximo, alguns metros de distância. Os rádios foram instalados nos dois locais e configurados no modo bridge. Desta forma, todos os pacotes são encaminhados entre os rádios, gerando um problema: se tudo é transferido para a outra ponta, o tráfego broadcast também e? A resposta é sim!
Isso gerou vários transtornos, pois eles interligam duas sub-redes com faixa de endereços IP diferentes, porém, com o broadcast viajando pra todo lado, uma estação ao ser ligada, por exemplo, enviava um broadcast solicitando um endereço IP para um servidor DHCP e, às vezes, recebia resposta do que estava instalado em outra sub-rede.
Bem, após várias consultas ao Google, encontrei um fórum onde simplesmente era dito que se deveria "criar um filtro para o tráfego de broacast na bridge". Legal, mas e aí, onde raios fica isso? Bem, resolvi escrever este artigo, pois ele complementa, explicando como realizar a tal configuração.
Outro comentário que gostaria de fazer é que também foi criado um filtro para bloquear os pacotes arp, pois, ele só é utilizado na comunição de computadores em uma mesma sub-rede.
Bem, vamos a obra.
Gostaria de lembrar que na interface web do rádio não há esta opção. É necessário utilizar o winbox.
Após efetuar o logon, na tela inicial, clique em Bridge.



Em seguida, será aberta a tela de configuração da bridge. Vá na aba Filters e clique no botão indicado na figura abaixo.




Primeiramente, vamos criar o filtro que bloqueia os pacotes arp. Assim, nas configurações do novo filtro, deve-se escolher o chain FORWARD, o qual é aplicado aos pacotes que trafegam através do rádio, de uma interface a outra. As configurações devem ficar iguais a exibida na figura abaixo.



Para finalizar, é necessário acessar a aba Action e escolher drop.




Após clicar em OK, o filtro será criado.
Agora, vamos para a criação da regra que bloqueia o broadcast.
Na tela de criação do novo filtro, com exceção da opção MAC Protocol, as demais são iguais a do filtro para o protocolo arp.




Em seguida, deve-se acessar a aba Advanced e em Packet Type selecionar Broadcast.




Para finalizar, escolha drop na aba Action e clique em OK para salvar as alterações.
Após a criação dos filtros, eles serão exibidos conforme abaixo.




Um abraço e até a próxima.

quarta-feira, 22 de setembro de 2010

Monitorar "Event Viewer" do Windows no Zabbix através do SNMP


Uma das tarefas que fazem parte da rotina de um administrador de redes é verificar com certa frequência os logs de eventos dos servidores em busca de erros. Dependendo da quantidade de máquinas contidas na empresa, esta atividade pode se tornar tediosa e cansativa.
Na empresa onde trabalho utilizamos o Zabbix para monitorar nossos servidores. Entretanto, as verificações se restringiam a itens como uso de processador, memória, rede, disco, entre outros. Os eventos gerados pelo sistema operacional ainda eram necessários ser visualizados, individualmente, em cada servidor. Em pesquisas pela internet, encontrei o artigo Trapping Windows Events with SNMP, escrito por Eric A. Hall, o qual ele descreve como configurar o serviço SNMP do Windows para enviar traps a uma estação coletora quando ocorrer algum evento no sistema operacional.
Primeiramente, é necessário configurar o agente SNMP do Windows para enviar os traps a uma estação coletora, no nosso caso, o servidor Zabbix. Este procedimento pode ser visto neste artigo da Microsoft.
A ferramenta chama-se Event to trap translator e pode ser acessada acessando o menu Iniciar > Executar > evntwin. Na tela inicial, deve-se selecionar a opção Custom na seção Configuration type. Isso ativará o botão Edit. Ao clicar nele, a janela expandirá um painel abaixo onde iremos selecionar os eventos que desejamos ser alertados através do Zabbix.



É possível selecionar todos os eventos, porém isto acarretaria em sobrecarga do servidor de monitoramento, pois o Windows grava entradas no log, frequentemente, sendo que a maioria é apenas informativa. 
No meu caso, optei por selecionar apenas os erros ou alertas de warning, e dos serviços específicos daquele servidor. Por exemplo, uma máquina que possui Oracle instalado, ativei os traps dos erros deste software.
Para habilitar o envio de traps por algum evento, navegue pelas pastas contidas do lado esquerdo da tela até encontrar a sessão desejada. Desta forma, do lado direito aparecerão os eventos relacionados.




Após decidir quais eventos serão configurados, basta selecioná-los e clicar no botão Add. Após terminar o processo, basta clicar em OK para salvar e encerrar o aplicativo. Este processo pode demorar alguns minutos dependendo da quantidade de eventos selecionados.
É possível também exportar o que foi alterado visando possuir um backup das configurações. Basta selecionar os eventos já configurados e escolher Export.... Será solicitado um caminho para salvar o arquivo gerado, que possui a extensão cnf. É possível importá-lo depois, caso necessário, utilizando o comando evntcmd.
Agora vamos ao Zabbix.
No servidor de monitoramento, primeiro precisamos editar o serviço SNMP (Net-SNMP). As configurações abaixo foram feitas em um servidor com o Ubuntu Server instalado.
Primeiro deve-se editar o arquivo /etc/default/snmpd alterando a linha:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

Para:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

E a opção TRAPDRUN conforme abaixo:

TRAPDRUN=yes

Depois, precisamos alterar o arquivo /etc/snmp/snmptrapd.conf, inserindo as linhas abaixo:

traphandle default /bin/bash /var/zabbix/bin/snmptrap.sh
authCommunity log,execute,net ComunidadeSNMP

O parâmetro ComunidadeSNMP deve possuir o nome da comunidade SNMP utilizada na sua rede. O caminho /var/zabbix/bin/snmptrap.sh no seu ambiente.
Na pasta misc/snmptrap do pacote de instalação do Zabbix, possui o arquivo snmptrap.sh. Ele deve ser copiado para o diretório indicado no parâmetro traphandle default do arquivo /etc/snmp/snmptrapd.conf conforme exibido acima.
Abaixo há um exemplo do arquivo snmptrap.sh.

#!/bin/bash
ZABBIX_SERVER="localhost"; #IP ou hostname do servidor Zabbix
ZABBIX_PORT="10051";   # Igual ao parametro 'Listen Port' do zabbix_server.conf
#No parametro abaixo, verificar o local do executavel zabbix_sender
ZABBIX_SENDER="/usr/local/bin/zabbix_sender";     # insert you path

read hostname
read ip
read uptime
read trapoid
read payload
 
hostname=`echo $hostname|cut -f1 -d' '`

payload1=`echo $payload|cut -f2- -d' '`   
read payload
payload2=`echo $payload|cut -f2- -d' '`
read payload
payload3=`echo $payload|cut -f2- -d' '`
read payload
payload4=`echo $payload|cut -f2- -d' '`
read payload
payload5=`echo $payload|cut -f2- -d' '`

str="[$hostname] - $payload1 $payload2 $payload3 $payload4 $payload5"

KEY="snmptraps";
HOST="TRAPSERVER";

$ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str"


Em seguida, é necessário reiniciar o daemon snmpd:

# /etc/init.d/snmpd restart

A próxima etapa, corresponde a configuração dos itens na interface web do Zabbix. Primeiramente, é necessário adicionar um novo host.


  
Na criação do item que tratará os traps SNMP, podería-se associá-lo ao host, diretamente, mas, honestamente, prefiro a criação de um novo template e a adição do item e do trigger no mesmo. Desta forma, após a criação do template, adicionar ao mesmo o item conforme a figura abaixo:




Depois, adicionamos um novo trigger ao template.




O trigger permitirá que os eventos sejam exibidos na Dashboard por 60 segundos. Se desejar, pode-se criar uma ação que envia um alerta por e-mail, por exemplo.
Finalmente, associamos o template ao host, que receberá os traps, criado anteriormente.
Pronto! O Zabbix passará a receber eventos gerados pelos servidores Windows. Abaixo a um exemplo de e-mail enviado pelo Zabbix contendo um evento gerado por um servidor Windows.



Um abraço e até a próxima!