Reduzindo a velocidade de download se o usuário abusar

21 21UTC setembro 21UTC 2010

Com a expansão da Wifi aqui na empresa tive problemas com usuários que abusam do serviço para baixar videos, filmes entre outras coisas.  Então resolvi buscar por soluções menos trabalhosas para ajudar. Me utilizei do relatório do lightsquid para ver quem são os usuários que abusam do serviço.

Criei as seguintes ACL no squid.conf antes das regras de portas seguras:

#############################################################
###                                                                                                                           #####
###   CONTROLE DE BANDA POR USUÁRIOS                                           #####
###                                                                                                                           #####
#############################################################
# Controle de banda – jhony 09/09/2010 magoado com os usuários
acl user_fdp proxy_auth “/etc/squid/usuarios_limitados_banda1.txt”
acl user_fdp_fuck proxy_auth “/etc/squid/usuarios_limitados_banda2.txt”
### quantia de pools
delay_pools 2

#faixa 1 redução pequena
delay_class 1 2
# Limita a sua banda para +- 64 Kbps de download
delay_parameters 1 7200/7200 7200/7200
delay_access 1 allow user_fdp

#faixa Fuck  redução maior
delay_class 2 2
# Limita a sua banda para +- 35 Kbps de download
delay_parameters 2 3800/3800 3800/3800
delay_access 2 allow user_fdp_fuck

##############################################################
###  FIM DO CONTROLE DE BANDA                                                                  ###
##############################################################

em seguida criei os arquivos em que os nomes dos usuários vão ser consultados pelas acls:

/etc/squid/usuarios_limitados_banda1.txt

/etc/squid/usuarios_limitados_banda2.txt

para finalizar criei um script shell que busca no report do lightsquid e adiciona estes usuário aos arquivos acima e faz reload do squid.

#!/bin/bash

dt=`date +%Y%m%d`
dtlog=`date +%d%m%Y:%HH%MM`
log=/var/log/usuarios_fdp.log
###

#Cria log histórico dos usuários
echo ” dia e hora – $dtlog” >> $log

#limpa o arquivo
> /etc/squid/usuarios_limitados_banda1.txt
> /etc/squid/usuarios_limitados_banda2.txt

### busca no report do lightsquid quem são os usuários que estão abusando

### se for maior que 200mb e menor que 500mb coloca na primeira faixa de velocidade limitada
for i in `grep “total:” /var/www/html/lightsquid/report/$dt/* |cut -d: -f3`; do
if [ "$i" -gt "200000000" ] && [ "$i" -lt "500000000" ];then
echo “Limitados banda 1″ >> $log
usuario1=`grep “$i” /var/www/html/lightsquid/report/$dt/* |cut -d: -f1 `
echo `basename $usuario1` >> /etc/squid/usuarios_limitados_banda1.txt
echo `basename $usuario1` >> $log
### se for maior que 500mb coloca na segunda faixa de velocidade limitada.
elif [ "$i" -gt "500000001" ];then
echo “Limitados banda 2″ >> $log
usuario2=`grep “$i” /var/www/html/lightsquid/report/$dt/* |cut -d: -f1 `
echo `basename $usuario2` >> /etc/squid/usuarios_limitados_banda2.txt
echo `basename $usuario2` >> $log
fi
done
#carega as configs no squid
/sbin/service squid reload

Depois é só adicionar no cron e ferrar com os abusados:

*/15 * * * * /var/www/html/lightsquid/lightparser.pl today
*/15 * * * * /etc/squid/verifica_usuario_fdp.sh


Verificando se os rádios estão online através das portas

16 16UTC março 16UTC 2010

Recentemente instalamos um D-Link DWS-3024, que centraliza a configuração dos rádios da dlink e disponibiliza sinal 2.4GHz, como gosto da monitoração via nágios e não de ficar acessando direto a ferramenta fiz um scritp simples em shell para saber as portas ativas e por conseguinte saber se os rádios estão online.

######################################################################

#!/bin/bash

#historico
#11/02/2010 -  script de monitoração dos wireless switch e respectivos AP’s

#versão 1.0

#################
#Variáveis gerais
#as portas a ser monitoradas vão de um até o especificado abaixo.
portas=15

################

#recupera os valores da MIB das portas
sw=`snmpbulkget -v2c  -Cr$portas -c public $1 ifOperstatus |cut -d. -f2 |awk ‘{print $1 $4}’|cut -d s -f 3- |rev |cut -d \(  -f2- |rev`

#busca por down na variável
for w1 in `echo  $sw` ;do
if [ `echo $w1| grep down` ];
then
echo “CRITICAL: Antena $w1 “
exit 2
fi
done;
#se não encontrar erros retorne ao nagios OK
if [ $? = 0 ];
then
echo “OK: Antenas funcionando “
exit 0
fi

para executar é só chamar o script com ./nomescript.sh  ipdoequipamento


Fala agora magrão

29 29UTC outubro 29UTC 2009

Fui convidado no mês passado para ministrar algoritmos a uma turma do curso de ciência da computação da Unochapecó no Campi de São Lourenço do Oeste. Confesso que de início fiquei meio aflito, mas encarei, e de fato achei uma experiência muito interessante. Agora estou na expectativa de fechar para o próximo semestre também. Como estou utilizando materiais de outros professores não vou disponibilizar nada por momento.


IV Jornada de Ciência e Tecnologia – JOCETEC e II Jornada de Integração das Semanas Acadêmicas do CETEC,

17 17UTC setembro 17UTC 2009

Fui convidado a palestrar em conjunto com meu colega de trabalho, na IV Jornada de Ciência e Tecnologia – JOCETEC e II Jornada de Integração das Semanas Acadêmicas do CETEC, e o tema foi Monitoração de redes com softwares livres, no evento falamos sobre Cacti e Nagios como ferramentas, fizemos uma instalação básica para demostrar e expomos alguns casos de uso da empresa. Segue o material:

slides

nagios-passo-a-passo


Base Ldap + Domínio Samba

21 21UTC agosto 21UTC 2009

Recentemente tivemos que criar um novo servidor de LDAP aqui para a empresa, segue os passos utilizados:

Versões  dos pacotes:

CentOS release 5.2 (Final) 2.6.18-92.el5

Nota: Habilitar o repo centos-plus e atualizar o so.

samba-common-3.0.28-1.el5_2.1

samba-client-3.0.28-1.el5_2.1

samba-3.0.28-1.el5_2.1

Para instalar o pacote smbldap-tools-0.9.4-1.el5.rf executar o abaixo:

wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Criar o usuário ldap antes de instalar os rpms.

nss_ldap-253-12.el5

python-ldap-2.2.0-2.1

openldap-clients-2.3.27-8.el5_2.4

smbldap-tools-0.9.5-1.el5.rf

openldap-2.3.27-8.el5_2.4

openldap-servers-2.3.27-8.el5_2.4

Não instalar -> cyrus-sasl-ldap-2.1.22-4

php-ldap-5.1.6-20.el5_2.1

openldap-devel-2.3.27-8.el5_2.4

php

apache

phpldapadmin-1.1.0.6.tar.gz

##################

Editar o arquivo /etc/ldap.conf:

host 127.0.0.1

base o=empresa

ssl no

tls_cacertdir /etc/openldap/cacerts

pam_password md5

##################

Criar arquivo /etc/ldap.secret com mode 600 com a senha do manager do ldap.

#################

Editar o arquivo /etc/samba/smb.conf:

workgroup = [nome do domínio]

server string = Samba Server

netbios name = MYSERVER

Comentar a linha:

; passdb backend = tdbsam

Descomentar as linhas:

domain master = yes

domain logons = yes

preferred master = yes

add user script = /usr/sbin/useradd “%u” -n -g users

add group script = /usr/sbin/groupadd “%g”

add machine script = /usr/sbin/useradd -n -c “Workstation (%u)” -M -d /nohome -s /bin/false “%u”

delete user script = /usr/sbin/userdel “%u”

delete user from group script = /usr/sbin/userdel “%u” “%g”

delete group script = /usr/sbin/groupdel “%g”

passdb backend = ldapsam:ldap://127.0.0.1

ldap admin dn = “cn=manager, o=empresa”

ldap group suffix = ou=Group

ldap user suffix = ou=People

ldap machine suffix = ou=Hosts

ldap suffix = o=empresa

ldap ssl= off

idmap uid = 16777216-33554431

idmap gid = 16777216-33554431

wins support = yes

################

Executar o comando smbpasswd -w senha do manager do ldap

Editar o arquivo /etc/smbldap-tools/smbldap_bind.conf:

slaveDN=”cn=manager,o=empresa”

slavePw=”senhadomanager”

masterDN=”cn=manager,o=empresa”

masterPw=”senhadomanager”

###################

Executar os comandos:

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

chown ldap. /var/lib/ldap/DB_CONFIG

cp /usr/share/doc/samba-3.0.28/LDAP/samba.schema /etc/openldap/schema/

###################

Editar o arquivo /etc/openldap/slapd.conf:

Incluir os schemas adicionais necessários:

include /etc/openldap/schema/samba.schema

suffix “o=empresa”

rootdn “cn=manager,o=empresa”

rootpw {SSHA}KOllLHHyDoeyY0IEdqy18v/BH+4bB2Lt (gerar a senha com o comando slappasswd)

##########################

Editar o arquivo /etc/smbldap-tools/smbldap.conf:

Executar “net getlocalsid” e inserir o SID resultante em SID=

sambaDomain=”nomedodominionosamba”

slaveLDAP=”127.0.0.1″ (alterar para o ip do ldap)

masterLDAP=”127.0.0.1″ (alterar para o ip do ldap)

suffix=”o=empresa

“ldapTLS=”0″

usersdn=”ou=People,o=empresa”

computersdn=”ou=Hosts,o=empresa”

groupsdn=”ou=Groups,o=empresa”

idmapdn=”ou=Idmap,o=empresa”

sambaUnixIdPooldn=”cn=NextFreeUnixId,o=empresa” (depende da estrutura do LDAP)

userLoginShell=”/bin/false”

defaultUserGid=”65535″ (configurar para o grupo primário do usuário padrão)

defaultMaxPasswordAge=”99″ (desabilitar expiração de senhas)

userSmbHome=”"

userProfile=”"

userScript=”%U.bat”

mailDomain=”empresa.com.br”

######################

Executar o comando service ldap start.

######################

Editar o arquivo /etc/nsswitch.conf:

passwd: files ldap

shadow: files ldap

group: files ldap

####################

Descompactar o arquivo phpldapadmin-1.1.0.6.tar.gz na pasta /var/www/html.

####################

Editar o arquivo config.php com os dados do ip do servidor LDAP.

Inserir no arquivo /var/lib/ldap/DB_CONFIG as linhas abaixo:

### INICIO ARQUIVO DB_CONFIG ###

# Define o tamanho do arquivo de cache.

set_cachesize 0 52428800 0

#### Set database flags ####

# Remove automaticamente arquivos de logs.
set_flags DB_LOG_AUTOREMOVE

# Setando valores dos LOGS

set_lg_regionmax 262144
set_lg_max 10485760
set_lg_bsize 2097152
set_lg_dir /var/lib/ldap/
# Increase locks
set_lk_max_locks 3000
set_lk_max_objects 1500
set_lk_max_lockers 1500

### FIM ARQUIVO DB_CONFIG ###

rodar smbldap-populate para popular a base com os atributos necessários para o domínio.

Espero que ajude.


Autenticando usuários no LDAP e mapeando as unidades de rede do antigo servidor samba via sshfs no fedora 10

14 14UTC abril 14UTC 2009

Estamos começando a migrar as estações dos nossos usuários de Windows para Linux e adivinha uma das primeiras requisições do usuário são os mapeamentos automáticos feitos via samba.

Depois de algumas tentativas frustradas de inserir o linux no domínio como faz com o Windows resolvemos mudar a tática e chegamos a uma receita que a princípio esta funcionando, autenticar no LDAP e buscar as unidades do usuário via sshfs através das informações de grupos que o usuário possui no LDAP.

Criamos um script que busca todos os grupos que o usuário pertence e cria a conexão sshfs com uma unidade no Desktop do usuário, ficando transparente para ele o processo. O processo ficou assim: quando o usuário faz login no micro aparece um dialog pedindo a senha para acessar os recursos de rede, após digitado ele cria os locais por letras e o usuário acessa como se fosse uma pasta.

Uma pena que não encontrei ainda uma forma de recuperar a senha no login que ele faz do Gnome, assim o usuário não precisaria digitar a senha duas vezes.

Segue os passo que utilizei:

####################################################

Passo 1

clicar na barra Sistemas -> Administração -> Autenticação -> Informações do usuário -> Ativar suporte LDAP

BASE-> o=empresa

Servidor -> xxx.xxx.xxx.xxx

Para verificar se funcionou abrir um terminal e testar com id usuario

##############################################

Passo 2

Configurar no seu servidor DNS um CNAME para serarq com o ip do seu antigo servidor samba

##############################################

Passo 3

Instalar na estação o fuse.sshfs ou sshfs e o dialog e o Xdialog

fazer update do sistema todo

#########################################################

Passo 4

criar o script scritp.desktop dentro de /usr/share/gnome/autostart/  com o seguinte conteúdo:

[Desktop Entry]

Encoding=UTF-8

Name=Map user script

Comment[br]=MAP user scritp

Icon=bluetooth

Exec= gnome-terminal /usr/sbin/mapeia_rede.sh

Terminal=false

Type=Application

Categories=

OnlyShowIn=GNOME;

############################################################

Passo 5

criar o script chamado mapeia_rede.sh em /usr/sbin/  com o seguinte conteudo:


Reportagem sobre CakePHP revista TIdigital

8 08UTC abril 08UTC 2009
Foi publicada na segunda edição da revista TIdigital uma reportagem sobre o framework CakePHP.
A Equipe da revista fez uma entrevista com John David Anderson (um dos criadores do cake-php), e entrevistou alguns profissionais que utilizam a ferramenta para expor as suas opiniões sobre o framework. Dentre eles encontra-se: Elton Luís Minetto, Tulio Vitor Machado Faria, Oberaldo Büll Junior, João José Carvalho Pedrini.
Nossas participações foram modestas mas o formato da revista ficou muito bom.
O PDF da reportagem está disponível neste link

Especialização em Software Livre

20 20UTC fevereiro 20UTC 2009

Após um ano de dedicação e estudo, finalmente a confirmação do meu orientador Professor Luiz Otavio Botelho Lento

Agora sou especialista em Gestão e implantação de software livre pela Fundação de Apoio á Educação, Pesquisa e Extensão da UNISUL, FAEPESUL;

Como trabalho de conclusão escrevi o seguinte artigo: SOLUÇÕES DE SOFTWARE LIVRE PARA MONITORAÇÃO DE REDES, onde falo sobre duas ferramentas muito bacanas que utilizamos, o Nagios e o Cacti. O artigo está disponível aqui


Script para detecção de Erros nos Switches

8 08UTC dezembro 08UTC 2008

Para otimização da rede e melhoria na monitoração proativa, criamos um shell script que captura da MIB dos switchs da 3Com e retorna quais portas estão com problema, assim se você tiver uma placa de rede com problema ligada a um switch gerenciável da 3com é possível descobrir o erro sem precisar acessar a interface WEB do switch. Pode ser útil para quem administra redes com muitos equipamentos como no nosso caso e não tem tempo para ficar olhando de equipamento em equipamento.
Funciona bem com os switches de modelo:
- 3c17300: neste modelo ele captura os erros de CRC Error e colisões no mesmo trap.
- 3c17300A: se o firmware estiver atualizado captura só os CRC Errors.
O código fonte do plugin esta aqui


Shell Script Profissional

27 27UTC novembro 27UTC 2008

Recentemente adquiri o livro do Aurélio Marinho Jargas, shell script profissional, confesso que ainda não consegui ler por inteiro mas fica aqui meu elogio ao Aurélio pela qualidade do material e principalmente pelo incentivo ao uso de boas praticas de programação tão raras entre os administradores de redes.

hehehe eu tbm não comentava nada até então


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.