quarta-feira, 30 de março de 2011

Configurando o SARG

1) Download Sarg: http://sarg.sourceforge.net/sarg.php

2) # rpm -ivh sarg-2.2.3.1-1.el5.rf.i386.rpm

3) Vou editar poucas coisas no sarg.conf alterando o arquivo default mesmo, que é muito bem comentado.
   # vim /etc/sarg/sarg.conf

#Deixar os relatórios em Portuguese (Linha 30)
language Portuguese

#Definir os arquivos de log que serão verificados (Linha 37)
access_log /var/log/squid/access.log

#Mudar o titulo do relatório (Linha 49)
title "Log de Acesso da Minha empresa"


#Diretório onde serão gravados os relatórios manuais (Linha 145)
output_dir /var/www/sarg/ONE-SHOT

#Para resolver ip das maquinas (Linha 156)
resolve_ip yes

#Remover os arquivos temporários (Linha 218)
remove_temp_files yes

#Quantidade de sites da lista de TopSites (Linha 262)
topsites_num 250

#Quais variáveis compõem o relatório (Linha 306)
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads

4) Como habilitamos muitas variáveis no relatório é necessário editar o arquivo /etc/sarg/languages/Portuguese e no final de tudo adicionar mais duas linhas uma com a palavra "Negado" e outra com a palavra "Topsites"

5) Para gerar um relatório inicial de teste digite # sarg

6) Vamos agora editar o arquivo /etc/httpd/conf.d/sarg.conf e na linha Allow from 127.0.0.1 acrescente um espaço e digite os números IP das maquinas ou uma rede(rede de serviços por exemplo) que poderão visualizar os relatórios.
Exemplo: Allow from 127.0.0.1 192.168.1.1 192.168.2.0/24
  # service httpd restart

Versão Utilizada:
SARG Version: 2.2.3.1

Configuração Padrão SQUID

    # vim /etc/squid/squid.conf

##Configuracao Basica

http_port 3128
visible_hostname NOME_DO_SERVIDOR

##Configuracao de Memoria e Cache

#Maximo de Memoria RAM
cache_mem 2 GB

#Tamanho maximo de arquivo na memoria RAM
maximum_object_size_in_memory 48  KB

#Tamanho maximo e minimo de arquivo em cache
maximum_object_size 100 MB
minimum_object_size 0 KB

#Porcentagem de descarte da cache
cache_swap_low 85
cache_swap_high 90

#Tamanho em disco e quantidade de diretorios do cache
cache_dir ufs /var/spool/squid 20480 32 512

#Arquivo de Log de Acesso
cache_access_log /var/log/squid/access.log


##Passar telas de acesso negado/erro para portugues
error_directory /etc/squid/errors/Portuguese


###Configuracao do HAVP (plugin de ligacao do squid com o clamav)
icp_port 0
cache_peer 127.0.0.1 parent 8089 0 no-query no-digest no-netdb-exchange default
#Somente trafego http sera scaneado
acl Scan_HTTP proto HTTP
acl Scan_HTTP proto HTTPS
never_direct allow Scan_HTTP

#######################Descricao das ACL's

##########ACL´S Default´s

acl SSL_ports port 443 563
acl Safe_ports port 443 463 #https
acl Safe_ports port 80 90 22 70 210 280 488 777 591 901 1025-65535
acl ftp port 21
acl purge method purge
acl CONNECT method CONNECT


##########ACL´S das redes

#As 3 acl´s abaixo são padrão do squid
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255

#Acl´s das redes locais que vão acessar o squid
acl lan src 192.168.1.0/24
acl servidores src 192.168.2.0/24

##########ACL´S personalizadas (vou botar um exemplo basico das principais)

###Limitando a banda de um site. Para entender essa regra acesse o site http://www.hardware.com.br/livros/servidores-linux/gerenciando-uso-banda.html
#determina o nome da acl e o site
acl youtube dstdomain youtube.com
delay_pools 1
delay_class 1 2
delay_parameters 1 13107200/13107200  131072/131072
delay_access 1 allow youtube

### A ACL abaixo declara os bancos ( o -i significa ignorar o case)
acl bancos dstdomain -i caixa.gov.br bb.com.br bradesco.com.br itau.com.br real.com.br santander.com.br hsbc.com.br

### A ACL abaixo determina horario de almoco
acl almoco time 12:00-14:00

### A ACL abaixo determina horario da noite
acl noite time 18:00-19:00

### A ACL abaixo declara paginas de governo ( o -i significa ignorar o case)
acl governo dstdomain -i .gov.br .edu.br aer.mil.br

### A ACL abaixo efetua bloqueio de downloads
acl block_arq urlpath_regex -i  .com$ .scr$ .mpeg$ .wma$ .avi$ .pif$ .rmvb$ .wmv$ .rar$ .iso$ .mp3$ .mp4$ .torrent$

### A ACL abaixo declara sites de acesso ao MSN (Veja que estou determinando um arquivo e dentro dele ira conter uma lista de sites 1 por linha)
acl msn_domain dstdomain -i "/etc/squid/msn_domain"

### A ACL abaixo declara sites de acesso ao ORKUT
acl orkut url_regex -i "/etc/squid/orkut"



###################Autenticacao no AD

#Aqui estamos utilizando o metodo PAM, exixtem outras maneiras de autenticar como NTLM e outras.
auth_param basic program /usr/lib/squid/pam_auth -n squid
auth_param basic children 15
#Informacao que aparece na caixa de login do usuario, voce pode personalizar
auth_param basic realm Acesso Restrito
#descrição da ACL
acl autenticados proxy_auth REQUIRED


#################AGORA SIM VAMOS AOS ACESSOS. Lembresse que o squid le as regras de cima pra baixo, se uma atender a solicitacao ele NAO pula para a proxima

#nao fazer cache para os sites da acl bancos
no_cache deny bancos

#Passar os sites da acl abaixo direto, sem ler as regras do proxy.
always_direct allow governo
always_direct allow ftp

# Regras padrao do squid
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

### Descricao dos acessos das redes
http_access allow servidores
#bloqueia o acesso, exceto para os usuarios autenticados no AD
http_access deny !autenticados
#bloqueios
http_access deny block_arq
http_access deny msn_domain
#liberaçoes
http_access allow almoco
http_access allow noite
#bloqueio
http_access deny orkut
#liberação
http_access allow autenticados
#bloqueio
http_access deny all

#Resumindo com essas regras, o usuario que eh autenticado no dominio ele vai ter acesso liberado ao orkut no horario de almoço e a noite, e fora isso ele vai bloquear downloads, msn_domain e orkut.


##Nao publicar o squid para internet (padrao squid)
header_access via deny all
header_access X-Forwarded-For deny all

      # service squid restart

Obs: editar o ntsysv para iniciar o squid junto com o linux ou chkconfig squid on

Versão Utilizada:
Squid Cache: Version 2.6.STABLE21

Adicionando uma maquina RedHat em um Dominio(Active Directory)

1)Todos os pacotes necessários para configuração do RedHat já vem instalados no pacote básico do sistema.
2)Revendo as configurações de ip
        para isso veja se sua configuração de DNS esta correta
        cat /etc/resolv.conf
        ping srv-AD
        a maquina não precisa estar com ip fixo para fazermos a inserção no domínio, mais é necessário que o DNS esteja configurado correto.

3)então vamos começar editando o arquivo krb5.conf
        # vim krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = NOME_DO_DOMINIO_MAIUSCULO
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 NOME_DO_DOMINIO_MAIUSCULO = {
  kdc = nome_netbios_do_servidor_AD
  admin_server = nome_netbios_do_servidor_AD
  default_domain = NOME_DO_DOMINIO_MAIUSCULO
 }

[domain_realm]
 .nome_do_dominio_minusculo = NOME_DO_DOMINIO_MAIUSCULO
 nome_do_dominio_minusculo = NOME_DO_DOMINIO_MAIUSCULO
#FIM
Lembrem-se que no realm sempre, eu disse sempre, o nome do domínio deve estar em maiúsculo nos lugares indicados.

4)Adicionando ticket do kerberos e testando
       # kinit administrador
         Senha do administrador do domínio
       # klist (verificar se o ticket esta armazenado corretamente), deve aparecer algo desse tipo:
Default principal: administrador@DOMINIO

Valid starting     Expires            Service principal
03/29/11 17:00:30  03/30/11 03:02:01  krbtgt/DOMINIO@DOMINIO
        renew until 03/30/11 03:00:30
Kerberos 4 ticket cache: /tmp/tkt0


5)Editando o nsswitch.conf
       # vim /etc/nsswitch.conf

#Arquivo editado e retirado os comentarios
passwd:     files winbind
shadow:     files winbind
group:      files winbind

hosts:      files dns winbind

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus 


6)Editando o smb.conf
      # vim /etc/samba/smb.conf
#======================= Global Settings ====================================

[global]

        workgroup = NOME_DO_DOMINIO_MAIUSCULO
        realm = NOME_DO_DOMINIO_MAIUSCULO
        server string = nome_da_maquina
        netbios name = nome_da_maquina
        log file = /var/log/samba/%m.log
        max log size = 50
        debug level = 1
        security = ads
        encrypt passwords = yes
        template shell = /bin/bash
        template homedir = /home/%U
        smb passwd file = /etc/samba/smbpasswd
        username map = /etc/samba/smbusers
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        unix charset = iso-8859-1
        interfaces = 10.1.0.0/16
        password server = nome_do_servidor_do_AD
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        winbind cache time = 10
        winbind enum users = yes
        winbind enum groups = yes
        winbind use default domain = yes
        winbind separator = +
        passdb backend = smbpasswd

#============================ Share Definitions ==============================

#Exemplo de Compartilhamento

#[Infra]
#        Comment = Diretorio de Suporte
#        path = /Suporte
#        browseable = yes
#        valid users = @dominio+"Nome_de_um_grupo_do_dominio" @dominio+"Nome_de_um_usuario_do_dominio"
#        public = yes
#        writable = yes
#        create mask = 0777
 
7)adicionando a maquina no domínio
     # service smb restart
     # service winbind restart
     # net rpc join -U administrador
       digite a senha do administrador do domínio
 
Pronto sua maquina já faz parte de um domínio AD

Instalação do plugin HAVP

Plugin do squid responsável por passar o tráfego http pelo antivírus.

1) Baixar em http://www.server-side.de/download.htm;
2) Descompactar:
    # tar -zxvf havp-0.92a.tar.gz;

3)    # ./configure -prefix=/etc/havp
       # make
       # make install

4)   # groupadd havp
      # useradd -g havp havp

5) nas versões anteriores do HAVP era necessário montar um drive virtual de memoria, que ele usava para fazer as verificações das paginas. Nessa nova versão

não é mais necessário, tal procedimento será feito dentro dos processos que são abertos, para isso é necessário montar o / com a opção mand.

para montar use o comando:
     # mount -o remount,mand /

Obs: Para que essa mudança fique persistente existem duas maneiras de resolver, a primeira editando o arquivo /etc/fstab e mudando de defaults para defaults,mand ou de uma outra maneira editando o arquivo /etc/init.d/havp por volta da linha 52 onde tem: echo "Starting HAVP ..." em baixo desta linha adicione o comando: mount -o remount,mand / 
A segunda opção eu gosto mais porq não altera a inicialização do sistema.

6) Setar as permissões aos arquivos:
    # chown havp /var/tmp/havp /var/log/havp /var/run/havp
    # chmod 700 /var/tmp/havp /var/log/havp /var/run/havp

7) Editar o arquivo /etc/havp/havp.conf
    O Arquivo conf original do havp é muito bem documentado e pode ser revisto posteriormente para novas opções, o básico segue abaixo:
    # vim /etc/havp/havp.conf

#Usuario e Grupo
USER havp
GROUP havp
#Rodar como processo
DAEMON true
#Local do arquivo do processo
PIDFILE /var/run/havp/havp.pid
#Quantidade minima e maxima de processos (Depende do hardware)
SERVERNUMBER 20
MAXSERVERS 100
#Arquivo de Log e Erro
ACCESSLOG /var/log/havp/access.log
ERRORLOG /var/log/havp/havp.log
LOG_OKS false
LOGLEVEL 0
#Arquivos temporarios de verificacao
SCANTEMPFILE /var/tmp/havp/havp-XXXXXX
TEMPDIR /var/tmp
#Porta que o serviço vai escutar novas conexoes (Deve ser liberada no firewall da maquina)
PORT 8089
BIND_ADDRESS 127.0.0.1
#Deixar os erros em portugues
TEMPLATEPATH /etc/havp/templates/br
#Scaniar imagens, tamanho maximo de arquivos que vão ser scaniados
SCANIMAGES enable
MAXSCANSIZE 5000000
KEEPBACKBUFFER 200000
#Habilitando o antivirus Clamav (podem ser outros antivirus, veja o arquivo default de conf)
ENABLECLAMLIB true



8) Galera agora vem o dilema, não me recordo se o arquivo /etc/init.d/havp é instalado no make ou se temos que copiar na mão grande. na duvida segue abaixo o

arquivo, fique atento apenas para a observação do item 5.
    # vim /etc/init.d/havp

#!/bin/sh
#
#
####
# This init-script tries to be LSB conform but platform independent.
#
# Therefore check the following two variables to fit to your requests:
# HAVP_BIN HAVP_CONFIG PIDFILE
# Any configuration of HAVP is done in havp.config
# Type havp --help for help and read havp.config you should have received.

HAVP_BIN=/usr/local/sbin/havp
HAVP_CONFIG=/etc/havp/havp.config
PIDFILE=/var/run/havp/havp.pid

# Return values acc. to LSB for all commands but status:
# 1       generic or unspecified error (current practice)
# 2       invalid or excess argument(s)
# 3       unimplemented feature (for example, "reload")
# 4       user had insufficient privilege
# 5       program is not installed
# 6       program is not configured
# 7       program is not running
# 8-99    reserved for future LSB use
# 100-149 reserved for distribution use
# 150-199 reserved for application use
# 200-254 reserved
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.

reload_havp()
{
echo "Reloading HAVP ..."
PID="`cat $PIDFILE`"
if [ "$PID" != "" ]; then
kill -HUP "$PID" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error: HAVP not running"
exit 1
fi
else
echo "Error: HAVP not running or PIDFILE not readable"
exit 1
fi
exit 0
}

case "$1" in
start)
echo "Starting HAVP ..."
mount -o remount,mand /
if [ ! -f $HAVP_BIN ]; then
echo "Error: $HAVP_BIN not found"
exit 5
fi
$HAVP_BIN -c $HAVP_CONFIG
exit $?
;;

stop)
echo "Shutting down HAVP ..."
if [ ! -f "$PIDFILE" ]; then
 echo "Error: HAVP not running or PIDFILE unreadable"
 exit 1
fi
PID="`cat $PIDFILE`"
if [ "$PID" != "" ]; then
kill -TERM "$PID" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error: HAVP not running"
exit 1
fi
else
echo "Error: HAVP not running or PIDFILE unreadable"
exit 1
fi
sleep 2
exit 0
;;

restart)
echo "Shutting down HAVP ..."
$0 stop >/dev/null 2>&1
$0 start
exit $?
;;

reload-lists)
reload_havp
;;

force-reload)
reload_havp
;;

reload)
reload_havp
;;

status)
echo "Checking for service HAVP ..."
exit 4
;;

*)
#echo "Usage: $0 {start|stop|status|restart|force-reload|reload|reload-lists}"
exit 0
;;
esac


9) Para que o havp inicie junto com sistema use o comando:
    # echo "/etc/init.d/havp start" >> /etc/rc.local

10) vamos iniciar o serviço:
    service havp start


E está pronto, rodando o seu plugin de verificação de virus para squid, qualquer duvida olhe os logs em /var/log/havp/havp.log e /var/log/havp/access.log

Versão Utilizada:
havp-0.92a.tar.gz

Observações Finais:
a) As linhas iniciadas com # foram executadas como root;
b) Para o tutorial foi utilizado o CentOS 5.5. Deve funcionar normalmente para o Fedora e Red Hat, para outras distribuições podem ser consideradas as configurações :)

quarta-feira, 16 de fevereiro de 2011

Usando Ready Boost no Linux

Pessoal segue uma dica interessante, compre um pente de memória e bote no seu note(net)book pois hoje em dia memória esta muito barata.
Mais se você precisa de uma melhora rápida de performance apenas para manter aquelas 212 abas do firefox aberta segue uma solução.
Espete o pen-drive ou cartão de memória no note, veja se não tem nenhuma informação importante no mesmo;
Caso a distro tenha montando automaticamente, desmonte o dispositivo
# umount /media
Feito isso vamos listar os discos reconhecidos pelo sistema para saber qual é o dispositivo que vamos ativar como swap
# fdisk -l
Normalmente em note(net)books só temos um disco então ele será reconhecido como sdb1. Agora vamos criar a área de swap na pen-drive
# mkswap /dev/sdb1
Obs.: se a pen-drive tiver várias partições como por exemplo sdb1 e sdb2 teoricamente apenas a partição sdb1 vai virar swap. Na prática não sei se funciona assim, nunca testei :) Fato é que toda área destinada a partição sdb1 no nosso caso vai virar swap.
Com 99% pronto, só falta agora iniciar nossa área de swap
# swapon -p 32767 /dev/sdb1
Onde -p é a prioridade de utilização que oscila entre 0 e 32767 sendo que quanto maior o numero, mais prioridade a área tem.
Pronto, feito isso sua nova swap já está em funcionamento para testar digite o comando # free que vai te mostrar a swap em disco somada a swap em pen-drive, para ver a informação da configuração digite # cat /proc/swaps lá irá aparecer o tamanho da pen-drive e quanto esta destinada para swap, lembre-se que é quanto está destinada e não quanto está em uso no momento, além da prioridade.
Quando terminar de usar a pen-drive como swap não esqueça de retira-la com segurança pois alguns softwares podem à esta usando como área de transferência, digite:
# swapoff /dev/sdb1
Para terminar, vamos lembrar que pode-se aumentar também o tamanho da swap montando um diretorio no seu hd, mais não indico porque se a intenção é melhorar a performance, nada vai melhorar só vai aumentar o espaço. Outra coisa que vale lembrar é que todo o procedimento feito para usar a pen-drive como swap vai ser perdido ao desligar o note, quando quisermos usar novamente é so usar o swapon...
Se você é como eu e quer usar o cartão de memória como swap sempre, aguarde que vou postar a dica sobre isso.
Abraço a todos.

sexta-feira, 24 de dezembro de 2010

Da Série, dica do mestre

Esteja sempre antenado ao que se passa ao seu redor, ja diria Kevin "a engenharia social pode te fornecer informações poderosas"...
Published with Blogger-droid v1.6.5

quarta-feira, 15 de dezembro de 2010

Da Série, Para quem Interessar Possa....

A maneira mais de facil remover o pacote de kernel da maquina é fazer:

# rpm -q kernel
ele ira mostrar quais versões do kernel estão instaladas no seu computador.
# rpm -e kernel........
A versão que você deseja desinstalar.

Obs: Claro que você não pode estar rodando o kernel que você quer remover. Não se esqueça ainda tem o Kernel-Devel

Agradecimentos ao "Crazy Linux". que me conseguiu essa dica.