Вы находитесь на странице: 1из 37

O QUE VEREMOS NESTE ARTIGO?

Neste artigo, iremos aprender a fazer um Firewall/Proxy para uma rede


pequena. O Proxy ir trabalhar com autenticao e iremos dividir todos os
usurios em grupos.

Todos os exemplos deste artigo so baseados no Debian, por ser uma das
distros mais usadas, mas nada impede que voc adapte para outas distros.

Iremos ver tambm como debugar alguns erros comuns, tornando nossas
vidas um pouco mais tranquilas.

Para melhor entendimento deste artigo, o leitor deve ter os seguintes


conhecimentos:

Comandos Linux;
Noes de redes;
Configurar interfaces de rede (no abordado neste artigo).

Nosso cenrio ser o seguinte:

Firewall/Proxy : Com Debian (pode ser 5 ou 6) com 2 interfaces de rede


Estaes : Windows

O tipo de autenticao usada ser a 'ncsa_auth', que para este artigo


simples, pois trataremos de uma rede pequena.

Em outro artigo, falarei como realizar a autenticao no AD da Microsoft.

Apertem os cintos e vamos l!

INSTALANDO TUDO
Para ter melhor aproveitamento, alm do IPtables e Squid, teremos mais
algumas ferramentas que iro nos ajudar, ento vamos s ferramentas e
instalaes.

- Squid verso 3
O Squid o Proxy propriamente dito, com ele que iremos criar as regras
para o controle de acesso a sites da Internet.

Instalao:

# apt-get update
# apt-get install squid3

- Sarg (Squid Analysis Report Generator)

Este o programa que vai gerar para voc, os relatrios dos acessos aos
sites.

Instalao:

# apt-get install sarg

- Apache 2

Servidor WEB que, neste caso, precisaremos para acessar os relatrios


gerados pelo Sarg e tambm para criar as senhas de autenticao.

Instalao:

# apt-get install apache2

- IPtables

O IPtables j vem pronto para o uso na maioria das distribuies, portanto


dispensa explicaes aqui.

Ou, voc pode juntar tudo em um comando s:

# apt-get update && apt-get install -y squid3 sarg apache2

Traduzindo: O APT-GET vai atualizar as listas de pacotes, e se o comando


for bem sucedido, ele ir instalar o Squid3 e o Sarg.

Com as ferramentas acima instaladas, podemos comear a configur-las e


utiliz-las.

IPTABLES
Vamos criar um Script simples do IPtables.

Com ele, iremos deixar nossa rede mais segura e teremos um maior
controle do que pode, ou no ser acessado.

O Script ser todo comentado, assim, o leitor ter uma maior compreenso
do que est utilizando.

Vale lembrar que o Script abaixo um exemplo de uso livre, e o mesmo


pode e deve ser alterado a seu gosto.

Antes de mais nada, vamos a organizao do Script:

Cabealho;
Variveis que sero usadas;
Ajustes / Mdulos;
Regras de NAT;
Regras de INPUT;
Regras de OUTPUT;
Regras de FORWARD;
Parmetros do script (start | stop | restart).

Um Script bem organizado evita problemas, e facilita muito na hora de uma


adio ou remoo de regras, assim como tambm facilita na hora da
manuteno.

Vamos ao Script:

#!/bin/bash

#######################################################
# SCRIPT DE FIREWALL PARA FINS DE APRENDIZADO, MODIFIQUE-O A SEU GOSTO #
# Criado por phrich
#
#######################################################

###################
# DECLARANDO VARIVEIS #
###################
# Interface de rede que recebe a internet
IFACE_WEB="eth0"

# Interface de rede ligada a rede interna


IFACE_LAN="eth1"

# Rede interna
REDE_INTERNA="10.0.0.0/24"

#####################################################################
# FUNO STOP
#
# Esta funo limpa todas as regras e libera todos os acessos, caso necessite
de redirecionamentos (NAT) #
# Favor incluir as linhas referentes a nat, que no est incluso neste exempl
o #
#####################################################################

# Cria a funo

function stop() {

# Limpa todas as regras


iptables -F
iptables -t nat -F
iptables -t mangle -F

# Coloca as polticas padres como ACCEPT, liberando todo e qualquer acesso


iptables -A INPUT -P ACCEPT
iptables -A OUTPUT -P ACCEPT
iptables -A FORWARD -P ACCEPT

# Habilita o roteamento no kernel #


echo 1 > /proc/sys/net/ipv4/ip_forward

# Compartilha a internet
iptables -t nat -A POSTROUTING -o $IFACE_WEB -j MASQUERADE

# Fecha a funo
}

# FIM DA FUNO STOP #

####################################################################
# FUNO START
#
# Esta funo tem por finalidade setar as regras a fim de realizar as libera
es, pois trabalharemos com #
# as polticas do iptables como DROP
#
####################################################################

# Cria a funo
function start () {

# Limpa as regras criadas anteriormente #

# Limpa a tabela filter


iptables -F

# Limpa a tabela nat


iptables -t nat -F

# Limpa a tabela mangle


iptables -t mangle -F

# Coloca as polticas padres como DROP, ou seja nenhum acesso foi liberado #

iptables -P INPUT DROP


iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Carrega mdulos #

# Em alguns casos esses mdulos sero teis, realize uma pesquisa sobre cada
um #
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe nf_conntrack_ipv4
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe nf_nat
/sbin/modprobe nf_conntrack
/sbin/modprobe x_tables
/sbin/modprobe nf_nat_pptp

# Habilita o roteamento no kernel #


echo 1 > /proc/sys/net/ipv4/ip_forward

# Compartilha a internet
iptables -t nat -A POSTROUTING -o $IFACE_WEB -j MASQUERADE

#############
# REGRAS DE NAT #
#############

# Acesso remoto via RDP para um host RWindows


iptables -t nat -A PREROUTING -i $IFACE_WEB -p tcp --dport 3389 -j REDIRECT -
-to 10.0.0.2:3389

###############
# REGRAS DE INPUT #
###############
# Libera o squid a partir da rede interna
iptables -A INPUT -p tcp --dport 3128 -s $LAN -j ACCEPT

# Libera SSH Apenas para a rede interna


iptables -A INPUT -p tcp --dport 22 -s $LAN -j ACCEPT

################
# REGRAS DE OUTPUT #
################

# Libera as portas 80 e 443 apenas para localhost


iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Libera DNS apenas para localhost


iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# Libera FTP para localhost (muito til para o apt-get, yum, etc)
iptables -A OUTPUT -p tcp -m multiport --dports 20,21 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 20,21 -j ACCEPT

#################
# REGRAS DE FORWARD #
#################

# Libera o acesso a clientes de email, pop e smtp


iptables -A FORWARD -p tcp -m multiport --dports 25,110 -j ACCEPT

# Fecha a funo
}

# FIM DA FUNO START #

############################
# CRIANDO OS PARMETROS DO SCRIPT #
############################

#Aqui sero definidos os parmetros:

# start = Ativa todas as regras, realizando os bloqueios e liberaes


# stop = Limpa todoas as regras, "libera geral" ;-)
#restart = Carrega novas regras inseridas posteriormente

case $1 in

start)
start
;;

stop)
stop
;;

restart)
stop
start
;;

*)
echo "Erro, utilize os seguintes parmetros: start | stop | restart"
exit 0
;;

esac

# FIM DO SCRIPT DE FIREWALL #

SQUID
O Squid, como todos sabem, um servio de Proxy, onde o mesmo realiza
o controle de acesso sites da Internet, faz cache de pginas, etc.

Neste artigo, veremos como realizar bloqueios e liberaes, utilizando


grupos que podero ou no acessar determinados sites, para isto,
usaremos a autenticao baseada no utilitrio do Apache, o 'ncsa_auth'.

Ao instalar o Squid, verso 3, pelo APT-GET, seus arquivos de


configuraes ficam dentro de /etc/squid3, sendo assim, vamos organizar
um pouco melhor este diretrio.

Vamos criar dois novos diretrios, um onde contero os grupos e o outro


com uma lista que precisaremos para criar ACLs:

# mkdir /etc/squid3/acls
# mkdir /etc/squid3/grupos

Vamos trabalhar com 3 grupos de exemplo:

DIRETORIA: Acesso total a internet


Vendas: Acesso com algumas restries
Recepo: Acesso somente a sites especficos

Ento, vamos criar e popular os grupos:

# htpasswd -c /etc/squid3/grupos/diretoria humberto.chagas

O comando acima utiliza o HTPASSWD (que tambm um utilitrio do


Apache), que o programa responsvel por criar as senhas.

O parmetro '-c' cria um novo arquivo, posteriormente indicamos o caminho


do novo arquivo, e por ltimo, colocamos o nome do usurio a ser inserido
no arquivo.

Aps digitar o comando acima, ele pedir uma senha para o novo usurio,
insira a senha e depois confirme-a.

Para adicionar um novo usurio, digitamos o mesmo comando, porm sem


o parmetro '-c', vejamos:

# htpasswd /etc/squid3/grupos/diretoria carlos.augusto


# htpasswd /etc/squid3/grupos/diretoria geraldo.magela
Mesma coisa, digite a senha para os novos usurios e confirme-as.

Vamos popular os dois grupos restantes:

# htpasswd -c /etc/squid3/grupos/vendas carlos.augusto


# htpasswd /etc/squid3/grupos/vendas jose.bonifacio

# htpasswd -c /etc/squid3/grupos/recepcao tania.maria

Vamos agora realizar uma pr-bloqueio, com ele, podemos ver algumas
palavras que no queremos que usurios acessem:

# touch /etc/squid3/acls/palavras_proibidas

Dentro do arquivo acima, vamos inserir algumas palavras:

sexo*
jogo*
jogatina*
facebook*
youtube*
orkut*

No se esqueam do ' * ' (Asterisco) ao final de cada palavra, pois como


vamos usar a ACL do tipo 'url_regex', o asterisco entra como expresso
regular.

Vamos criar uma lista com sites permitidos para o grupo recepo:

# touch /etc/squid3/acls/sites_recepcao

Insira os seguintes sites ao grupo:

.vivaolinux.com.br*
.siteempresa.com.br*
.cotacoes.com.br*

Novamente, repare no ' . ' (Ponto) antes do site e no ' * ' (Asterisco) ao final.
Eles tambm so expresses regulares, que indicam que devem liberar
todo os subdiretrios do site e tudo o que tiver antes do ponto.

Por exemplo, vamos supor que o site 'meusite.com' tenha as seguintes


pginas:

- www2.meusite.com
- www.meusite.com/sexosaude

Se colocssemos somente 'www.meusite.com' em nossa lista, ele no


liberaria o 'www2.meusite.com', pois no consta na lista, e tambm no
liberaria o 'www.meusite.com/sexosaude', pois no nosso bloqueio conteria a
palavra sexo. Mas estes conceitos, entenderemos mais tarde.

SQUID.CONF

Aqui, eu apenas comentarei os exemplos de ACLs, e as linhas que acho


mais convenientes.

Crie um cpia do arquivo original do squid.conf para que voc possa ter
uma sempre a mo, pois este arquivo rico em comentrios e exemplos,
portanto, para uma administrao mais simples, eu recomendo 'limpar' os
comentrios e exemplos, deixando o arquivo menor e visualmente mais fcil
de trabalhar...

- Deixe de ser preguioso e leia os comentrios e exemplos!!! ;-)

Contedo de /etc/squid3/squid.conf:

# Porta em que o squid ir "ouvir"


http_port 3128

# Nome visvel do servidor


visible_hostname Proxy

# Programa que ser usado na autenticao, no caso msnt_auth


auth_param basic program /usr/lib/squid3/msnt_auth

# Nmero de processos filhos usados pelo autenticador, caso seja utilizado em


uma rede muito grande
# esse nmero deve ser aumentado.
auth_param basic children 5

# Mensagem que aparecer na janela de autenticao


auth_param basic realm "Servidor Proxy"

#######
# ACLS #
#######

# ACLS que no vo passar pela autenticao


# Insira aqui as acls que voc no quer que passe pela autenticao
# Nesta artigo no darei exemplos, porm voc pode usar para uma atualizao
de antivrus
# Ou qualquer outra aplicao que no necessite de autenticao

# Insira dentro do arquivo citado abaixo os ips usados pelo seu antivrus
acl antivirus dst "/etc/squid3/acls/antivirus"

# Torna obrigatrio o uso de autenticao (O que for feito desta linha para b
aixo)
acl internal_lan proxy_auth REQUIRED

# GRUPOS #

# Administradores
acl administrators proxy_auth "/etc/squid3/grupos/administradores"

# Diretoria
acl diretoria proxy_auth "/etc/squid3/groups/diretoria"

# Vendas
acl recepcao proxy_auth "/etc/squid3/groups/vendas"

# Recepcao
acl recepcao proxy_auth "/etc/squid3/groups/recepcao"

# Arquivos com bloqueios #


# Acl do tipo url_regex (regex de expresso regular - Regular Expression)
# Isira no arquivo as palavras proibidas como sexo, orkut, etc, conforme vist
o anteriormente
acl palavras_proibidas url_regex "/etc/squid3/acls/palavras_proibidas"

# Acl do tipo url_regex (regex de expresso regular - Regular Expression)


# Insira aqui os sites que foram bloqueados pela acl palavras proibidas, como
por exemplo .sexosaude.com*
acl palavras_permitidas url_regex "/etc/squid3/acls/palavras_permitidas"

# Colocar no arquivo /etc/squid3/acls/sites_restritos


# links de sites que so proibidos
# Exemplo: O site uol.com.br est liberado, porm o usurio no consegue aces
sar a parte do site sexo.uol.com.br
# Portanto adicione no arquivo as sesses dos sites que voc no quer que o u
surio acesse.
acl sites_restritos dstdomain "/etc/squid3/acls/sites_restritos"

#Recommended minimum configuration:


acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl rede_interna 10.0.0.0/24

# Acls padres do SQUID (Aqui ele faz liberaes de algumas portas)


acl SSL_ports port 443
acl SSL_ports port 2095
acl SSL_ports port 2082
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 445
acl CONNECT method CONNECT

# MANAGER ACLS #

# Acls padres do SQUID


http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# PERSONAL MANAGER #

# Insira aqui as regras de liberaes para o que no vai passar pela autentic
ao

# Libera os ips contdos na acl antivirus


http_access allow antivirus
##

# Administradores (Acesso total)


http_access allow administradores

# Diretoria (Acesso total)


http_access allow diretoria

# Vendas (Acesso com restries, o que estiver contido em palavras_proibidas


e sites_restritos)
http_access allow vendas palavras_permitidas !palavras_proibidas !sites_restr
itos

# Recepcao (Acesso apenas ao que estiver listado em sites_recepcao)


http_access deny recepcao !sites_recepcao

# Nega palavras proibidas exceto o que estiver em palavras_permitidas


http_access deny palavras_proibidas !sites_permitidos

# Libera rede interna, Localhost e nega tudo o que no se enquadrou em nenhum


a regra
http_access allow localhost
http_access allow internal_lan
http_access deny all

icp_access deny all


htcp_access deny all

hierarchy_stoplist cgi-bin \?

# Overwrite cache
cache_replacement_policy lru
memory_replacement_policy lru

#Default:
# cache_dir ufs /var/spool/squid3 100 16 256

# Arquivo de log
access_log /var/log/squid3/access.log squid

# Arquivo de cache
cache_log /var/log/squid3/cache.log

# Ajustes do cache, no entrarei em maiores detalhes


refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320

icp_port 3130

# Coloca as pginas de erro em portugus


error_directory /usr/share/squid3/errors/Portuguese
coredump_dir /var/spool/squid3

SARG

O Sarg o programa responsvel por gerar os relatrios bonitinhos do que


foi acessado, ele mostra o que foi acessado, o que foi negado, gera
estatsticas de tempo de acesso, etc.

Os arquivos de configurao do Sarg, quando instalado pelo APT-GET,


ficam dentro de /etc/squid, no confundam com o diretrio /etc/squid3.

Vamos ento, configurar o Sarg atravs do arquivo sarg.conf.

Lembrando que, aqui estou colocando o arquivo original


(/etc/squid/sarg.conf), e que tambm vou comentar somente as principais
linhas, portanto, o restante das configuraes ficam a seu critrio:

# sarg.conf
#
# TAG: language
# Available languages:
# Bulgarian_windows1251
# Catalan
# Czech
# Dutch
# English
# French
# German
# Greek
# Hungarian
# Indonesian
# Italian
# Japanese
# Latvian
# Polish
# Portuguese
# Romanian
# Russian_koi8
# Russian_UFT-8
# Russian_windows1251
# Serbian
# Slovak
# Spanish
# Turkish
#
# VAMOS COLOCAR OS RELATRIOS EM PORTUGS
language Portuguese

# TAG: access_log file


# Where is the access.log file
# sarg -l file
#
# ESTA LINHA INFORMA ONDE O SARG VAI BUSCAR OS LOGS DO SQUID
access_log /var/log/squid3/access.log

# TAG: graphs yes|no


# Use graphics where is possible.
# graph_days_bytes_bar_color blue|green|yellow|orange|brown|red
#
#graphs yes
#graph_days_bytes_bar_color orange

# TAG: title
# Especify the title for html page.
#
# A LINHA ABAIXO DIZ RESPEITO AO NOME DA PGINA, ALTERE A SEU GOSTO
title "Squid User Access Reports"

# TAG: font_face
# Especify the font for html page.
#
font_face Tahoma,Verdana,Arial

# TAG: header_color
# Especify the header color
#
header_color darkblue

# TAG: header_bgcolor
# Especify the header bgcolor
#
header_bgcolor blanchedalmond

# TAG: font_size
# Especify the text font size
#
font_size 9px

# TAG: header_font_size
# Especify the header font size
#
#header_font_size 9px

# TAG: title_font_size
# Especify the title font size
#
#title_font_size 11px

# TAG: background_color
# TAG: background_color
# Html page background color
#
background_color white

# TAG: text_color
# Html page text color
#
text_color #000000

# TAG: text_bgcolor
# Html page text background color
#
text_bgcolor lavender

# TAG: title_color
# Html page title color
#
title_color green

# TAG: logo_image
# Html page logo.
#
#logo_image none

# TAG: logo_text
# Html page logo text.
#
#logo_text ""

# TAG: logo_text_color
# Html page logo texti color.
#
#logo_text_color #000000

# TAG: logo_image_size
# Html page logo image size.
# width height
#
#image_size 80 45

# TAG: background_image
# Html page background image
#
#background_image none

# TAG: password
# User password file used by authentication
# If used here, reports will be generated only for that users.
#
#password none

# TAG: temporary_dir
# Temporary directory name for work files
# sarg -w dir
#
temporary_dir /tmp

# TAG: output_dir
# The reports will be saved in that directory
# sarg -o dir
#
# A LINHA ABAIXO INFORMA ONDE SER SALVO OS RELATRIOS GERADOS, APONTE PARA O
SEU DIRETRIO WEB,
# QUE NO CASO DO DEBIAN /var/www/ e o diretrio, squid-reports
#output_dir /var/www/html/squid-reports
output_dir /var/www/squid-reports

# TAG: output_email
# Email address to send the reports. If you use this tag, no html repor
ts will be generated.
# sarg -e email
#
#output_email none

# TAG: resolve_ip yes/no


# Convert ip address to dns name
# sarg -n
# QUANDO HABILITADO, RESOLVE IP EM NOME
resolve_ip yes

# TAG: user_ip yes/no


# Use Ip Address instead userid in reports.
# sarg -p
# A LINHA ABAIXO INFORMA SE VOC QUER OBTER O IP DO USURIO NO CASO EU DEIXEI
COMO "no" POIS
# IREMOS VER OS RELATRIOS POR USURIOS
user_ip no

# TAG: topuser_sort_field field normal/reverse


# Sort field for the Topuser Report.
# Allowed fields: USER CONNECT BYTES TIME
#
topuser_sort_field BYTES reverse

# TAG: user_sort_field field normal/reverse


# Sort field for the User Report.
# Allowed fields: SITE CONNECT BYTES TIME
#
user_sort_field BYTES reverse

# TAG: exclude_users file


# users within the file will be excluded from reports.
# you can use indexonly to have only index.html file.
#
# A LINHA ABAIXO DIZ RESPEITO AO ARQUIVO ONDE CONSTAM OS USURIOS QUE NO TER
O RELATRIOS
exclude_users /etc/squid/sarg.users

# TAG: exclude_hosts file


# Hosts, domains or subnets will be excluded from reports.
#
# Eg.: 192.168.10.10 - exclude ip address only
# 192.168.10.0 - exclude full C class
# s1.acme.foo - exclude hostname only
# acme.foo - exclude full domain name
#
exclude_hosts /etc/squid/sarg.hosts

# TAG: useragent_log file


# useragent.log file patch to generate useragent report.
#
#useragent_log none

# TAG: date_format
# Date format in reports: e (European=dd/mm/yy), u (American=mm/dd/yy),
w (Weekly=yy.ww)
#
date_format u

# TAG: per_user_limit file MB


# Saves userid on file if download exceed n MB.
# This option allow you to disable user access if user exceed a downloa
d limit.
#
#per_user_limit none

# TAG: lastlog n
# How many reports files must be keept in reports directory.
# The oldest report file will be automatically removed.
# 0 - no limit.
#
lastlog 0

# TAG: remove_temp_files yes


# Remove temporary files: geral, usuarios, top, periodo from root report
directory.
#
# REMOVE ARQUIVOS TEMPORRIOS, SE VOC HABILITAR ESTA OPO CORRE O RISCO DE
ENCHER O DISCO
remove_temp_files yes

# TAG: index yes|no|only


# Generate the main index.html.
# only - generate only the main index.html
#
index yes

# TAG: index_tree date|file


# How to generate the index.
#
index_tree file

# TAG: overwrite_report yes|no


# yes - if report date already exist then will be overwrited.
# no - if report date already exist then will be renamed to filename.n,
filename.n+1
#
overwrite_report yes

# TAG: records_without_userid ignore|ip|everybody


# What can I do with records without user id (no authentication) in acce
ss.log file ?
#
# ignore - This record will be ignored.
# ip - Use ip address instead. (default)
# everybody - Use "everybody" instead.
#
records_without_userid ip

# TAG: use_comma no|yes


# Use comma instead point in reports.
# Eg.: use_comma yes => 23,450,110
# use_comma no => 23.450.110
#
use_comma yes

# TAG: mail_utility mail|mailx


# Mail command to use to send reports via SMTP
#
mail_utility mailx
# TAG: topsites_num n
# How many sites in topsites report.
#
topsites_num 100

# TAG: topsites_sort_order CONNECT|BYTES A|D


# Sort for topsites report, where A=Ascendent, D=Descendent
#
topsites_sort_order CONNECT D

# TAG: index_sort_order A/D


# Sort for index.html, where A=Ascendent, D=Descendent
#
index_sort_order D

# TAG: exclude_codes file


# Ignore records with these codes. Eg.: NONE/400
#
exclude_codes /etc/squid/sarg.exclude_codes

# TAG: replace_index string


# Replace "index.html" in the main index file with this string
# If null "index.html" is used
#
#replace_index

# TAG: max_elapsed milliseconds


# If elapsed time is recorded in log is greater than max_elapsed use 0 f
or elapsed time.
# Use 0 for no checking
#
#max_elapsed 0
# 8 Hours
max_elapsed 28800000

# TAG: report_type type


# What kind of reports to generate.
# topusers - users, sites, times, bytes, connects, links to a
ccessed sites, etc
# topsites - site, connect and bytes report
# sites_users - users and sites report
# users_sites - accessed sites by the user report
# date_time - bytes used per day and hour report
# denied - denied sites with full URL report
# auth_failures - autentication failures report
# site_user_time_date - sites, dates, times and bytes report
# downloads - downloads per user report
#
# Eg.: report_type topsites denied
#
#report_type topusers topsites sites_users users_sites date_time denied auth_
failures site_user_time_date downloads
report_type topusers topsites sites_users users_sites date_time denied auth_f
ailures site_user_time_date downloads

# TAG: usertab filename


# You can change the "userid" or the "ip address" to be a real user name
on the reports.
# Table syntax:
# userid name or ip address name
# Eg:
# SirIsaac Isaac Newton
# vinci Leonardo da Vinci
# 192.168.10.1 Karol Wojtyla
#
# Each line must be terminated with '\n'
#
usertab /etc/squid/sarg.usertab

# TAG: long_url yes|no


# If yes, the full url is showed in report.
# If no, only the site will be showed
#
# YES option generate very big sort files and reports.
#
# AQUI ELE DIZ SOBRE SE VOC QUER VER OS ENDEREOS NOS RELATRIOS NO MODO CUR
TO
# OU A URL INTEIRA, COM POR EXEMPLO

# Modo curto: meusite.com


# Modo extenso: meusite.com/aplicacoes/aplicacao1
long_url no

# TAG: date_time_by bytes|elap


# Date/Time reports will use bytes or elapsed time?
#
date_time_by bytes

# TAG: charset name


# ISO 8859 is a full series of 10 standardized multilingual single-byte
coded (8bit)
# graphic character sets for writing in alphabetic languages
# You can use the following charsets:
# Latin1 - West European
# Latin2 - East European
# Latin3 - South European
# Latin4 - North European
# Cyrillic
# Arabic
# Greek
# Hebrew
# Latin5 - Turkish
# Latin6
# Windows-1251
# Koi8-r
#
charset Latin1

# TAG: user_invalid_char "&/"


# Records that contain invalid characters in userid will be ignored by S
arg.
#
#user_invalid_char "&/"

# TAG: privacy yes|no


# privacy_string "***.***.***.***"
# privacy_string_color blue
# In some countries the sysadm cannot see the visited sites by a restric
tive law.
# Using privacy yes the visited url will be changes by privacy_string an
d the link
# will be removed from reports.
#
#privacy no
#privacy_string "***.***.***.***"
#privacy_string_color blue

# TAG: include_users "user1:user2:...:usern"


# Reports will be generated only for listed users.
#
#include_users none

# TAG: exclude_string "string1:string2:...:stringn"


# Records from access.log file that contain one of listed strings will b
e ignored.
#
#exclude_string none

# TAG: show_successful_message yes|no


# Shows "Successful report generated on dir" at end of process.
#
show_successful_message no

# TAG: show_read_statistics yes|no


# Shows some reading statistics.
#
show_read_statistics no
# TAG: topuser_fields
# Which fields must be in Topuser report.
#
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TI
ME MILISEC %TIME TOTAL AVERAGE

# TAG: user_report_fields
# Which fields must be in User report.
#
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME
TOTAL AVERAGE

# TAG: topuser_num n
# How many users in topsites report. 0 = no limit
#
topuser_num 0

# TAG: site_user_time_date_type list|table


# generate reports for site_user_time_date in list or table format
#
site_user_time_date_type table

# TAG: datafile file


# Save the report results in a file to populate some database
#
#datafile none

# TAG: datafile_delimiter ";"


# ascii character to use as a field separator in datafile
#
#datafile_delimiter ";"

# TAG: datafile_fields all


# Which data fields must be in datafile
# user;date;time;url;connect;bytes;in_cache;out_cache;elapsed
#
#datafile_fields user;date;time;url;connect;bytes;in_cache;out_cache;elapsed
# TAG: datafile_url ip|name
# Saves the URL as ip or name in datafile
#
#datafile ip

# TAG: weekdays
# The weekdays to take account ( Sunday->0, Saturday->6 )
# Example:
#weekdays 1-3,5
# Default:
#weekdays 0-6

# TAG: hours
# The hours to take account
# Example:
#hours 7-12,14,16,18-20
# Default:
#hours 0-23

# TAG: dansguardian_conf file


# DansGuardian.conf file path
# Generate reports from DansGuardian logs.
# Use 'none' to disable it.
# dansguardian_conf /usr/dansguardian/dansguardian.conf
#
#dansguardian_conf none

# TAG: dansguardian_ignore_date on|off


# Use 'on' use the record even the date range is different from the use
d squid access.log file.
# Use 'off' use the record only if the date range is in the used squid a
ccess.log file.
#
#dansguardian_ignore_date off

# TAG: squidguard_conf file


# path to squidGuard.conf file
# Generate reports from SquidGuard logs.
# Use 'none' to disable.
# You can use sarg -L filename to use an alternate squidGuard log.
# squidguard_conf /usr/local/squidGuard/squidGuard.conf
#
#squidguard_conf none

# TAG: squidguard_ignore_date on|off


# Use 'on' use the record even the date range is different from the use
d squid access.log file.
# Use 'off' use the record only if the date range is in the used squid a
ccess.log file.
#
#squidguard_ignore_date off

# TAG: squidguard_log_format
# Format string SquidGuard logs.
# REJIK #year#-#mon#-#day# #hour# #list#:#tmp# #ip# #user# #tmp#/#
tmp#/#url#/#end#
# SQUIDGUARD #year#-#mon#-#day# #hour# #tmp#/#list#/#tmp#/#tmp#/#url#/#
tmp# #ip#/#tmp# #user# #end#
#squidguard_log_format #year#-#mon#-#day# #hour# #tmp#/#list#/#tmp#/#tmp#/#ur
l#/#tmp# #ip#/#tmp# #user# #end#

# TAG: show_sarg_info yes|no


# shows sarg information and site path on each report bottom
#
#show_sarg_info yes

# TAG: show_sarg_logo yes|no


# shows sarg logo
#
#show_sarg_logo yes

# TAG: parsed_output_log directory


# Saves the processed log in a sarg format after parsing the squid log f
ile.
# This is a way to dump all of the data structures out, after parsing fr
om
# the logs (presumably this data will be much smaller than the log files
themselves),
# and pull them back in for later processing and merging with data from
previous logs.
#
#parsed_output_log none

# TAG: parsed_output_log_compress /bin/gzip|/usr/bin/bzip2|nocompress


# sarg logs compress util
#
#parsed_output_log_compress /bin/gzip

# TAG: displayed_values bytes|abbreviation


# how the values will be displayed in reports.
# eg. bytes - 209.526
# abbreviation - 210K
#
#displayed_values bytes

# Report limits
# TAG: authfail_report_limit n
# TAG: denied_report_limit n
# TAG: siteusers_report_limit n
# TAG: squidguard_report_limit n
# TAG: user_report_limit n
# TAG: dansguardian_report_limit n
# TAG: download_report_limit n
# report limits (lines).
# '0' no limit
#
#authfail_report_limit 10
#denied_report_limit 10
#siteusers_report_limit 0
#squidguard_report_limit 10
#dansguardian_report_limit 10
#user_report_limit 10
#user_report_limit 50

# TAG: www_document_root dir


# Where is your Web DocumentRoot
# Sarg will create sarg-php directory with some PHP modules:
# - sarg-squidguard-block.php - add urls from user reports to squidGuard
DB
#
#www_document_root /var/www/html

# TAG: block_it module_url


# This tag allow you to pass urls from user reports to a cgi or php modul
e,
# to be blocked by some Squid acl
#
# Eg.: block_it /sarg-php/sarg-block-it.php
# sarg-block-it is a php that will append a url to a flat file.
# You must change /var/www/html/sarg-php/sarg-block-it to point to your f
ile
# in $filename variable, and chown to a httpd owner.
#
# sarg will pass http://module_url?url=url
#
#block_it none

# TAG: external_css_file path


# This tag allow internal sarg css override.
# Sarg use theses style classes:
# .body body class
# .info sarg information class, align=center
# .title title class, align=center
# .header header class, align:left
# .header2 header class, align:right
# .header3 header class, align:right
# .text text class, align:left
# .data table text class, align:right
# .data2 table text class, align:right, border colors
# .link link class
#
# There is a sample in /usr/local/sarg/etc/css.tpl
#
#external_css_file none

# TAG: user_authentication yes|no


# Allow user authentication in User Reports using .htaccess
# Parameters:
# AuthUserFile - where the user password file is
# AuthName - authentication realm. Eg "Members Only"
# AuthType - authenticaion type - basic
# Require - authorized users to see the report.
# %u - user report
#
# user_authentication no
# AuthUserFile /usr/local/sarg/passwd
# AuthName "SARG, Restricted Access"
# AuthType Basic
# Require user admin %u

# TAG: download_suffix "suffix,suffix,...,suffix"


# file suffix to be considered as "download" in Download report.
# Use 'none' to disable.
#
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh
,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

# TAG: ulimit n
# The maximum number of open file descriptors to avoid "Too many open file
s" error message.
# You need to run sarg as root to use ulimit tag.
#
#ulimit 20000

# TAG: ntlm_user_format username|domainname+username


# NTLM users format.
#
#ntlm_user_format domainname+username

# TAG: realtime_refresh_time num sec


# How many time to auto refresh the realtime report
# 0 = disable
#
# realtime_refresh_time 3

# TAG: realtime_access_log_lines num


# How many last lines to get from access.log file
#
# realtime_access_log_lines 1000

# TAG: realtime_types: GET,PUT,CONNECT,ICP_QUERY,POST


# Which records must be in realtime report.
#
# realtime_types GET,PUT,CONNECT

# TAG: realtime_unauthenticated_records: ignore|show


# What to do with unauthenticated records in realtime report.
#
# realtime_unauthenticated_records: ignore

# TAG: byte_cost value no_cost_limit


# Cost per byte.
# Eg. byte_cost 0.01 100000000
# per byte cost = 0.01
# bytes with no cost = 100 Mb
# 0 = disable
#
# byte_cost 0.01 50000000
DICAS
Bom, vamos entender melhor a linha: exclude_users /etc/squid/sarg.users

Dentro do arquivo "/etc/squid/sarg.users", deve constar os usurios que


sero excludos do relatrio gerado pelo Sarg.

Caso voc no queira gerar o relatrio de algum usurio, insira o nome do


usurio (1 por linha) dentro do arquivo citado.

Para gerar os relatrios automaticamente, insira a seguinte linha dentro do


cron:

00 22 * * * /usr/sbin/sarg-reports today

DEBUGANDO POSSVEIS ERROS

SQUID
muito comum em novas configuraes do Squid, erros de digitao;
quando isto acontece, o Squid no carrega as configuraes e no inicia.

Na hora dos testes, caso o seu Squid no esteja iniciando. Que podemos
ver com o comando:

# ps aux | grep squid

Inicie o Squid da seguinte forma:

# squid -d 10

Assim ele tentar inicializar com o modo Debug, onde sero mostradas
todas as mensagens da inicializao do Squid, assim, caso exista algum
erro, voc poder facilmente corrigi-lo.

Vejo acontecer muito com as pessoas, que ao digitar o comando: ps aux


| grep squid, a pessoa pense que o Squid est rodando, quando na
verdade apenas a sada do comando GREP, portanto, fique atento e no
deixe os seus olhos lhe enganarem. ;-)
Ao realizar a liberao de algum site, pode acontecer de o site abrir todo
'quebrado', isto ocorre quando o site carrega imagens de outros site. Para
corrigir o site 'quebrado', procedemos da seguinte maneira:

# tail -f /var/log/squid3/access.log | grep nome_usurio

Assim, veremos todos os acessos em tempo real do usurio, e poderemos


descobrir o que est sendo negado. Caso voc queira uma maneira mais
simples, pode usar tambm o seguinte comando:

# tail -f /var/log/squid3/access.log | grep nome_usurio | grep


-i denied

Assim, voc ver apenas o que est sendo bloqueado para o usurio.

Voc tambm pode trocar o nome do usurio pelo IP do Host.

IPTABLES / SCRIPT DE FIREWALL


Na execuo do seu Script, pode ocorrer erros, sejam de digitao, falta de
parmetros, etc. Ento, o Script retornar um erro, mas como descobrir em
qual linha???

Simples, chame o Script da seguinte maneira:

# bash -x /etc/init.d/firewall

Esta maneira ir lhe mostrar exatamente a linha onde est o erro.

PARA FINALIZAR
Sites, dicas, etc.

Vamos supor que voc adicione um novo site em alguma regra, ou que
voc adicione uma nova ACL ou configurao, voc deve reiniciar o Squid
para que as alteraes tenham efeito.

Porm, este processo demorado, e seus usurios poderiam ficar at 1


minuto sem Internet, para isto, quando realizamos alteraes no Squid,
podemos simplesmente reler os arquivos de configurao, sem a
necessidade de parar o cache.

Para isto, digitamos o comando:

# squid -k reconfigure

Caso ocorra algum erro, ele informar o erro para voc, e ento, basta
corrigir o erro indicado e digitar o comando acima novamente.

* Mas ateno, caso voc crie uma ACL, por exemplo:

acl teste url_regex "/etc/squid3/acls/teste"

. . .E a mesma esteja vazia, quando voc digitar o comando citado, o Squid


ir lhe informar que a ACL citada vazia, porm, ele vai ler as regras
normalmente.

Ou, se por ventura, voc comear a popular esta ACL e sem querer, colocar
os site assim:

.site1.com*
.site2.com*
.site3.com*
.site1.com*

Ele vai lhe informar que o 'site1.com' j est inserido, e logo voc precisar
remover uma das entradas e digitar o comando novamente.

Voc no sabe a porta de algum servio???

Busque no Services, dentro do arquivo /etc/services, existe uma lista com


todos os servios (ou a maioria).

L a sua fonte de buscas!

Вам также может понравиться