Você está na página 1de 33

Descobrindo servio atravs das portas

Introduo
Primeiro voc deve ter o nmap instalado na sua distribuio, no Debian ou derivados, use o "apt-get install nmap", no SuSE use o "yast -i
nmap" ou o yast2 no menu, caso no consiga procure no Google...
Rode o Nmap na mquina assim:
# nmap -PS 127.0.0.1
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2007-09-27 09:32 BRT
Interesting ports on localhost (127.0.0.1):
(The 1657 ports scanned but not shown below are in state: closed)
PORT
STATE SERVICE
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
8080/tcp open http-proxy
Nmap finished: 1 IP address (1 host up) scanned in 0.360 seconds
Primeiro mostrarei o telnet, usaremos a porta 80. Abra um novo console e digite:
$ telnet 127.0.0.1 80
Voc ver isso: aperte qualquer coisa e tecle enter:
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
* voc v no quase no final do arquivo, o programa um apache 2.0.53, que por sinal vulnervel a exploit... mas isso no vem ao caso.
"Qui 27 Set 2007 09:36:22 BRT
Apache/2.0.53 (Linux/SUSE)"
Agora veremos outra opo, o "fuser".
Digite no terminal:
# fuser -v 80/tcp
USER
PID ACCESS COMMAND
80/tcp
root
29223 f....
root
29224 f....
root
29225 f....
root
29226 f....
root
29227 f....
root
29228 f....
root
29233 f....
root
29234 f....
root
29235 f....

httpd2-prefork
httpd2-prefork
httpd2-prefork
httpd2-prefork
httpd2-prefork
httpd2-prefork
httpd2-prefork
httpd2-prefork
httpd2-prefork

Como voc pode ver, o fuser listou o usurio, o processo e o servio, tudo o que queramos...
Agora rode o nmap novamente...
# nmap -PS 127.0.0.1
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2007-09-27 09:32 BRT
Interesting ports on localhost (127.0.0.1):
(The 1657 ports scanned but not shown below are in state: closed)
PORT
STATE SERVICE
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
8080/tcp open http-proxy
Teste o telnet na porta 445, ficando assim:
# telnet 127.0.0.1 445

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Aqui voc pode apertar o que quiser, ele no ir te dar o servio e nem a verso.
O telnet no lista muitos servios na maquina local, para isso temos os fuser.
Rode o fuser na porta 445, assim:
# fuser -v 445/tcp
USER
PID ACCESS COMMAND
445/tcp
root
2777 f....
root
6658 f....

smbd
smbd

Ok conseguimos, ele nos deu o usurio, no caso root e o servio, o Samba, como voc viu, no conseguimos com o telnet.
Agora caso a sua distribuio seja daquelas que quando voc instala vem com um monte de parafernlia, como ssh dentre outros, se voc
no usa bom desinstalar.
Lembrando, rode sempre um porte scanner no micro, pegue as verses e veja no Google se tem algum exploit, isso o manter atualizado
sobre os ataques, e atualize o sistema.
Use somente o necessrio para evitar problemas mais tarde.
Logando o Windows XP no Samba
Introduo
Quando configuramos um servidor proxy comum, um usurio mais esperto pode remover as configuraes de proxy do seu browser e
passar a navegar normalmente pela Internet sem a mediao do Squid. Com isso ele estaria burlando as restries de acesso e todas as
demais regras gerenciadas pelo proxy. Alm disso, sem proxy transparente voc precisa ir de mquina em mquina da rede interna para
configurar as preferncias de servidor proxy. Imagina se voc tem uma rede com mais de 100 desktops?
Para solucionar esses tipos de problema surgiu o recurso de proxy transparente. Enumerando as vantagens do proxy transparente,
podemos citar as seguintes:
ocultar a utilizao do proxy aos usurios que acessam internet;
forar os usurios a utilizarem o proxy, mesmo que eles no queiram;
implementar a poltica real de acesso a sites proibidos, evitando os usurios mais "espertos" de desabilitar a utilizao do proxy na
navegao.
Com o proxy transparente todas as requisies feitas porta 80 so automaticamente redirecionadas para a porta do Squid e assim fica
virtualmente impossvel "bypassar" o Squid com as regras de ACLS.
Nota: autenticao no funciona com Proxy Transparente.
Agora necessrio implementar um linha de IPTABLES para que possamos redirecionar o trfego da porta 80 para a porta do SQUID.
Podemos coloc-la no prprio /etc/rc.local. A Sintaxe a seguinte:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Onde 3128 a porta da qual o Squid est sendo executado. Feito isso, vamos aos detalhes finais no SQUID. Abra o arquivo squid.conf e
descomente as seguintes linhas:
# # HTTPD-ACCELERATOR OPTIONS
# --------------------------------------#
#
#
httpd_accel_port 80
httpd_accel_host virtual
E o Seguinte Grupo:
# # TAG: httpd_accel_with_proxy
# -------------------------------------#
#
httpd_accel_with_proxy on
# TAG: httpd_accel_uses_host_header on|off
#

#
httpd_accel_uses_host_header on
Feito isto, vamos iniciar o SQUID com a linha de comando:
/usr/squid/./RunCache &
O SQUID est pronto para funcionar no modo proxy transparente.
Configurando rede no servidor
Muito bem, no meu caso usarei o SuSE Linux 9.3, mas o mecanismo de montagem o mesmo em qualquer distribuio, variam apenas
pequenas coisas.
Depois de instalado o seu sistema operacional SuSE Linux 9.3, entre no terminal, logue como root e digite no shell:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:02:44:84:B9:22
et6 addr: fe80::20e:a6ff:feaa:860/64 Scope:Link
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:320823 errors:0 dropped:0 overruns:0 frame:0
TX packets:287017 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:401024074 (382.4 Mb) T
eth1

Link encap:Ethernet HWaddr 00:0E:A6:AA:08:60


inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::202:44ff:fe84:b922/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:154055 errors:0 dropped:0 overruns:0 frame:0
TX packets:241518 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16695639 (15.9 Mb) TX bytes:202090318 (192.7 Mb)
Interrupt:11

Como voc pode ver a minha placa ligada a internet o eth1 e o eth0 a placa do modem. Anote o MAC da placa de rede que conecta na
rede interna, no meu caso 00:0E:A6:AA:08:60, para que voc configure a sua placa de rede aps o boot voc tem duas maneiras, a
primeira :
Entrar no YaST2 em menuk > Sistema > YaST > Dispositivos de Rede > Placa de rede.
Aps entrar na configurao de rede, clique em modificar.
Voc ter as placas de rede, tem o nome dos dispositivos que no caso as placas, agora voc ir identificar e configurar a sua placa de rede
atravs do MAC anotado, que no meu caso :00:0E:A6:AA:08:60.
Clique em "Editar", marque a caixa de seleo "Configurao de endereo esttico", deixe a configurao assim:
Endereo de IP: 192.168.10.1
Mascara de Sub-rede: 255.255.255.0
Clique em Prximo, Encerrar.
Agora mande um ifconfig para ver se sua placa foi configurada:
eth1 Link encap:Ethernet HWaddr 00:0E:A6:AA:08:60
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::202:44ff:fe84:b922/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:154055 errors:0 dropped:0 overruns:0 frame:0
TX packets:241518 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16695639 (15.9 Mb) TX bytes:202090318 (192.7 Mb)
Interrupt:11
Muito bem, a placa est configurada...
Agora vamos a instalao e configurao bsica do Squid.
Instalando e configurando o Squid
Depois de configurada a rede, instale o Squid com o YaST no seu terminal, ficando assim:
Esteja logado como root.
# yast -i squid

Ir iniciar o instalador, ele pedir o cd ou o dvd de instalao, aps copiados os arquivos encerre a instalao.
Mande no console isso aqui:
# rcsquid start {para iniciar o squid}
# chkconfig squid on {adicionando ao boot}
Ou coloque o cdigo acima em /etc/rc.d/boot.local.
Caso voc rode esses comandos e ele gere algum erro, j aconteceu comigo, rode esse cdigo aqui:
# squid -z
Agora vamos a configurao do Squid, v em:
# cd /etc/squid
# mv squid.conf /etc/squid/squid.conf.original
# kwrite squid.conf
Muito bem, o que fizemos foi salvar o squid.conf original em caso de alguma perda...
Depois de salvo o squid.conf original, delete todo o contedo do squid.conf e adicione as configuraes abaixo para funcionar o proxy
bsico.
# Sistema bsico para o funcionamento do squid
visible_hostname 192.168.10.1
http_port 8080
acl all src 0.0.0.0/0.0.0.0
http_access allow all
visible_hostname 192.168.10.1 # quer dizer que o ip ou o nome de host vai ficar visvel para os computadores clientes
http_port 8080 # a porta definida para conexo do cliente com o proxy, voc pode alterar para porta que quiser
acl src 0.0.0.0/0.0.0.0 # diz que todos os ips e mscaras de sub-rede so permitidos, caso queira pode definir a faixa que quiser
http_access allow all # isso permite distribuio de acesso total
Aps entender o procedimento e configurado os arquivos, v para /etc/init.d/ e rode o comando:
# /etc/init.d/./squid restart
Caso o Squid falhe, rode o cdigo de novo, ele concluir...
Configurando lista negra
O que a lista negra e o que faz?
A lista negra permite bloquear os sites de pornografia como qualquer contedo que voc ache imprprio.
Para isso crie um arquivo dentro de /etc/squid/ assim:
# kwrite /etc/squid/kwrite black_list
Insira no arquivo as palavras que achar imprprias e salve.
Configurando o squid.conf
D um kwrite no squid.conf.
Coloque no incio do arquivo o seguinte cdigo:
acl lista_negra url_regex "/etc/squid/black_list"
http_access deny lista_negra
Salve o arquivo e restart o squid em:
# /etc/squid/./squid restart

Entendendo o funcionamento da black list:


acl lista_negra # cria uma acl com o nome de lista_negra, pode ser o nome que quiser, funciona como uma varivel...
url_regex # indica que o arquivo que configura a url em um determinado diretrio e arquivo ser executada
http_access deny lista_negra # este cdigo quem vai determinar o bloqueio na url com a acl lista_negra
Editando pgina de erros
Para editar a pgina de erro e traduzir da sua forma v em /etc/squid/errors/ e edite o arquivo: ERR_ACCESS_DENIED
D um kwrite ERR_ACCESS_DENIED e deixe o cdigo fonte como desejar.
Voc pode editar o cdigo fonte do arquivo na mo ou editar em algum programa como Dreamweaver, alterando o design emulado no wine
e colocar o cdigo da sua pgina no arquivo fonte no caso ERR_ACCESS_DENIED e salvar o arquivo.
Aps terminar reinicie o squid com:
# /etc/squid/./squid restart
Aqui d pra ensinar o bsico para configurar o Squid, agora vamos a outra pgina configurando os micros cliente...
Configurando rede e proxy no cliente
Ser mostrado como configurar os micros clientes Windows e Linux...

Linux
No micro cliente configure a sua placa de rede para receber informaes do servidor assim:
Esteja logado como root.
# ifconfig eth0 192.168.10.2 netmask 255.255.255.0 up
No caso o eth0 no micro cliente a placa que troca informao com o servidor, caso no seja sua placa altere eth?, o interrogao quer dizer o nmero
da placa.
Para facilitar sua vida adicione esse cdigo em /etc/rc.d/boot.local, ou se usar distribuies derivadas do Debian adicione em /etc/bootmisc.sh.
Abra o seu browser e configure o proxy para executar em 192.168.10.1:8080.
Mostrarei no Firefox, v em: Editar > Preferencias > Avanado > Rede.
Em ligaes, clique no boto definir, selecione "Configurao manual de proxy". Coloque em proxy http 192.168.10.1 e na porta 8080. Clique em ok,
fechar, e teste o proxy.

Windows
No Windows v em iniciar > Painel de controle > conexes de rede.
Clique com o lado direito do mouse na sua placa de rede > propriedades.
V em Protocolo TCP/IP e clique em propriedades.
Marque a caixa de seleo "Usar o seguinte endereo IP", configure assim:
Endereo de IP: 192.168.10.2
Mscara de sub-rede: 255.255.255.0
Gateway: 192.168.10.1
Clique em Ok, OK.
Agora configure o seu navegador para executar no ip do proxy e na porta 8080 como mostrado no Linux, o modo de configurao depende do browser
que voc usa, se for Internet Explorer 6.0 v em:
Ferramentas > Opes da internet > Conexes > Configuraes de LAN.
Ative a caixa: "Usar um servidor de proxy para rede local", configure assim:
Endereo: 192.168.10.1
Porta: 8080
Clique em Ok, OK.
Teste o proxy, deve estar funcionando.

Se voc seguiu os passos como dito aqui, tudo ir funcionar, caso eu tenha cometido algum erro me avise por favor...
E se mesmo assim no conseguir, procure no Google.

Tutoriais/Proxy/Squid
De Under-Linux.Org Wiki
Ir para:navegao, pesquisa
Configurando o Squid

Tabela de contedo
Introduo
Ol, resolvi escrever esse howto, devido a algumas dvidas do pessoal com relao a configurao do SQUID.
- Proxy
O que o SQUID?
O SQUID um dos Servidores PROXY mais utilizados em todo o mundo, por ele ser seguro, rpido e o principal FREEWARE, servidor PROXY
nada mais do que um servidor que vai distribuir a internet na sua rede, ou seja, todas as mquinas que voc quiser vo estar acessando a
internet atravs do seu servidor PROXY, e registrando LOGS, ou seja, voc saber tudo sobre os sites que o pessoal est acessando.
Instalao
Primeiramente, devemos obter o squid, pode ser feito o download atravs da seguinte URL: www.squid-cache.org/Versions/v2/2.4/, neste
howto, eu irei utilizar a seguinte verso: squid-2.4-200205292300.
Aps baixar o SQUID, crie um diretrio no seguinte caminho: /usr/packages, e copie o SQUID para l.
Depois, digite o seguinte comando:
# tar xvfz squid-2.4-200205292300.tar.gz.
Entre no diretrio que foi descompactado:
# cd squid-2.4-200205292300.
Agora vai depender muito do que vc quer fazer:
Se voc quer apenas um proxy, digite o comando:
# ./configure --prefix=/usr/local/squid
Se voc quer ter um aumento de performance de at 70%, voc vai utilizar alm do SQUID mais uma ferramenta chamada DISKD, a
primeira coisa a se fazer recompilar o kernel do seu sistema com algumas opes:
options SYSVMSG
options MSGMNB=16384
options MSGMNI=41
options MSGSEG=2049
options MSGSSZ=64
options MSGTQL=512
options SHMSEG=16
options SHMMNI=32
options SHMMAX=2097152
options SHMALL=3096
Obs: Se voc ainda no sabe como recompilar o kernel, aguarde, logo estarei disponibilizando aqui um howto, descrevendo
como recompilar seu kernel.
Essas linha foram utilizadas para a seguinte configurao:
Dual Pentium III/450MHz
512MB
Analise-as e adeque a configurao do seu servidor.
Quando voc for configurar o SQUID, voc vai adicionar seguinte opo:
- ./configure --prefix=/usr/local/squid --enable-storeio=diskd.
Com a opo --enable, voc est utilizando apenas para habilitar o DISKD.
Aps configurar o SQUID, vamos compil-lo, digitando os seguintes comandos:
# make all
(Este comando, ir compilar o SQUID propriamente dito).
Quando terminar, digitamos:
# make install
Este comando ir copiar os binrios para os seus devidos lugares.
A prxima coisa a se fazer configurar o arquivo de configurao, para isso, vamos editar o arquivo /usr/local/squid/etc/squid.conf.
Configurao
Vamos alterar as seguintes opes:
http_port : Essa linha ir determinar a porta onde o servio ser utilizado, o default 3128, mas se voc quiser, pode mudar.
icp_port : Essa linha, ir determinar a porta de um servio que pode ser utilizado para fazer uma hierarquia de proxy, a porta
default dele a 3130.
cache_mem : Essa linha serve para voc determinar quanto em MB voc quer que o squid armazene em cache dos sites que
foram acessados.
cache_dir : Nesta configurao, depende do que voc fez l em cima.
Se voc est utilizando apenas o proxy, coloque o seguinte:
cache_dir ufs /usr/local/squid/cache/ 100 16 256.
Se voc est utilizando o proxy com o DISKD, coloque o seguinte comando:
cache_dir diskd /usr/local/squid/cache/ 256 16 256 Q1=64 Q2=72.
maximum_object_size : Coloque nesta linha a seguinte sintaxe: maximum_object_size 2048 KB.
emulate_httpd_log on : Com essa linha voc habilita o log do proxy, os logs sero gravados no seguinte arquivo:
usr/local/squid/logs/access.log.
cache_mgr : Nesta linha, voc coloca o e_mail do Administrador, qualquer problema com o servidor, aparecer esse e-mail, o
qual o usurio poder avisar o Administrador de qualquer problema.

visible_hostname : Nesta linha voc ir colocar o primeiro nome do seu servidor + o seu domnio, ex: surf.bsd-unix.com.br, essa
informao apareer nas telas de erro, (Quando o endereo no for achado, quando o site estiver bloqueado, quando der timeout,
etc).
cache_effective_user nobody e cache_effective_group nogroup: nestas duas linha, voc deve colocar o nome e o grupo
do usurio que vo ser responsveis pelo funcionamento do servio, inclusive gravar logs, acessar a cache, etc.
- Crie a seguinte sintaxe:
acl localnet src 172.20.40.0/255.255.252.0
Nesse caso, voc est especificando sua classe de IP, e est armazenando dentro da acl LOCALNET (esse nome, eu defini, voc pode
colocar qualquer outro que voc queira...).
- Crie mais essa sintaxe:
http_access allow localnet'''
Neste caso, voc est dando acesso a todos que esto dentro da acl localnet.
Com isso, terminamos a configurao do SQUID, agora vamos a inicializao do servio.
Primeira coisa a se fazer, dar permisso ao usurio:
Crie o diretrio de cache
# mkdir /usr/local/squid/cache
D permisso de gravao no diretrio de cache
# chmod 777 /usr/local/squid/cache
D permisso de gravao no diretrio de logs
# chmod 777 /usr/local/squid/logs
D permisso de gravao no diretrio de erros, importante para verificar quando der algum problema com o servio...
chmod 777 /usr/local/squid/etc/errors
Comando para mudar o dono do seguinte diretrio
chwon nobody.nogroup /usr/local/squid/cache
Com esse comando ele ir criar os SWAP DIRECTORY
/usr/local/squid/bin/squid -z
Com esse comando, voc est habilitando o servio e tambm desabilitando o teste de DNS, esse parametro -D deve ser utilizado apenas
na primeira vez que executado, depois as prximas, utilizado apenas: /usr/local/squid/bin/squid.
/usr/local/squid/bin/squid -D
Para testar, digite telnet localhost 3128.
Proxy Transparente
Depois de fazer todas as configuraes que acabamos de fazer, para que o TRANSPARENT PROXY funcione, precisamos recompilar o kernel
com as seguinte options:
options IPFILTER
options IPFILTER_LOG
Temos que entrar no diretrio de instalao do SQUID: /usr/packages/squid-2.4-200205292300
Digitamos o comando para configurar o SQUID com o Proxy Transparente:
- ./configure --prefix=/usr/local/squid --enable-storeio=diskd --enable-ipf-transparent
./configure - Comando utilizado para configurar o squid
--prefix=/usr/local/squid - Com esse parametro, voc fora ele a instalar o SQUID neste diretrio.
--enable-storeio=diskd - Com esse parametro, voc est habilitando a ferramenta DISKD (Utilizada para aumentar a performance
do cache).
--enable-ipf-transparent - Com essa opo, voc est habilitando o proxy transparente, mas no s isso, temos que fazer mais
algumas coisas.
make - Comando para compilar o SQUID.
make install - Com esse comando ele ir copiar todos os binrios e executveis para os seus devidos lugares.
Aps isso, edite o arquivo /usr/local/squid/etc/squid.conf e adicione as seguinte linhas:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Aps executar essas alteraes no arquivo de configurao do proxy devemos configurar o IPFILTER.
pico /etc/ipf.conf
Com esse comando ele ir criar o arquivo ipf.conf.
Coloque o seguinte contedo:
pass in all
Agora devemos configurar o IPNAT
pico /etc/ipnat.rules
Coloque o seguinte contedo:
rdr rl0 0.0.0.0/0 port 80 -> 200.250.43.17 port 3128 tcp
No lugar do IP 200.250.43.17, coloque o IP do seu servidor Proxy
Agora v ao seguinte diretrio: /usr/local/etc/rc.d
Crie o arquivo inicia.sh com o seguinte contedo:
#!/bin/sh
ipf -Fa -E -f /etc/ipf.conf
ipnat -CF -f /etc/ipnat.rules
Salve o arquivo e de a seguinte permisso para ele:
chmod 755 inicia.sh
Agora vamos executar o Proxy, digite o seguinte comando:
/usr/local/squid/bin/squid
Vamos agora iniciar o IPFILTER com o seguinte comando:
ipf -Fa -E -f /etc/ipf.conf
Por ltimo temos que iniciar o IPNAT, que pode ser feito atravs do seguinte comando:

ipnat -CF -f /etc/ipnat.rules


Importante: No esquea de apontar o default gateway das mquinas cliente para o IP do servidor Proxy.
Se voc ainda quiser ganhar mais ainda em performance, no perca o howto sobre SOFTUPDATES, que logo estar disponvel.
Hierarquia de Proxy
Para voc configurar uma hierarquia de proxy muito simples, isso feito atravs da seguinte linha: cache_peer.
cache_peer : Comando utilizado para fazer a hierarquia.
cache_peer 200.250.43.17 parent 3128 3130 no-digest no-query no-netdb-exchange
Logo aps vem o IP do Servidor por onde voc quer passar.
3128 : http_port do servidor Proxy.
3130 : icp_port do servidor Porxy.
Depois vem as options.
Depois s reiniciar o servio, digitando os seguinte comandos:
- killall squid
- killall squid
- /usr/local/squid/bin/squid
Bloqueando sites e restringindo horrios de acesso
Todas as restries e bloqueios so feitos no prprio arquivo de configurao: /usr/local/squid/etc/squid.conf
Para bloquearmos domnios, devemos proceder da seguinte maneira:
Editar o arquivo e digitar:
acl pro_domain dstdomain "/usr/local/squid/block/pro_domain"
Nesta linha voc estar definindo o arquivo onde estar os domnios que sero bloqueados.
http_access deny pro_domain
Essa linha tem que vir antes da http_access allow localnet
Salve o arquivo e crie o seguinte diretrio: mkdir /usr/local/squid/block
Edite o arquivo pro_domain para colocarmos os domnios bloqueados.
.cade.com.br
.bol.com.br
No esquea de reinicar o SQUID.
Para bloquear URLs (Palavras chaves) iremos fazer assim:
acl pro_url url_regex "/usr/local/squid/block/pro_url"
Nesta linha voc estar definindo o arquivo que contm as palavras chaves definidas.
http_access deny pro_url
Essa linha tem que vir antes da http_access allow localnet
Edite o arquivo pro_url
chat
sexo
Agora s reiniciar o SQUID.
Se voc quiser proibir alguma mquina da sua rede de acessar a internet, voc deve proceder da seguinte maneira.
acl pro_url src "/usr/local/squid/block/pro_ip"
Nesta linha voc estar definindo o arquivo que contm o ip das mquinas proibidas de acessar a internet.
http_access deny pro_ip
Essa linha tem que vir antes da http_access allow localnet
Edite o arquivo pro_ip
172.20.42.59
172.20.42.106
Agora s reiniciar o SQUID.
Para restringir horrios de acesso, basta voc adicionar a seguinte linha no seu arquivo de configurao:
Edite o arquivo de configurao do SQUID e adicione a seguinte linha:
acl horario_restrito time SMTWHFA 12:00-15:00
http_access allow localnet horario_restrito
Reinicie o SQUID
url_rewrite
Em breve.
Autenticao de Usurios
Usando Autenticaco em Servidor NT/AD (NTLM)
Esse tipo de autenticacao conhecida como NTLM .
O servidor faz a requisicao direta do usuario que esta logado na maquina , sendo assim no necessrio nenhuma validaco de senha
vinda do usurio .
Pacotes necessrios
samba-3.0.14a-2
samba-common-3.0.14a-2
samba-client-3.0.14a-2
Obs.: As verses nao precisam ser especificamente estas ,
Configurando o Samba
Aps ter instalado o samba , vamos configur-lo!
/etc/samba/smb.conf
[global]
# Nome do dominio Windows
workgroup = nome_do_dominio
# Nome da maquina que voce quer adicionar no domnio
netbios name = nome_da_maquina_proxy
# Identificacao do Server - Pode ser qualquer coisa !
server string = Samba Server - Nome
# Arquivo de log por usuario

log file = /var/log/samba/%m.log


# Tamanho do Log
max log size = 50
# Fala pro samba que esta maquina vai ser um membro do dominio
security = domain
# Os servidores de autenticacao , em ordem , Primario Secundario
password server = 192.168.0.8 192.168.0.4
# Alguns Tweaks
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#
local master = no
# Faz a maquina nao ser um domain master
domain master = no
#
preferred master = no
# Nao resolve nomes pelo server WINS
dns proxy = no
/etc/samba/winbind.conf
# Dominio
workgroup = domain_name
# Nome da maquina
netbios name = name
# Servidores de Autentico
password server = 192.168.0.8 192.168.0.4
# Nossa mquina vai ser um domain member
security = domain
# Informa o range de uid (user ID) e gid (group ID) a ser usado.
winbind uid = 10000-20000
winbind gid = 10000-20000
# Usar sempre o domnio o qual a mquina foi inserida
winbind use default domain = yes
Adicionando a Maquina no Dominio
Para adicionar a maquina no dominio tenha certeza que o firewall libera conexo entre o Server do Samba e os servidores de autenticaco :
---Estamos levando em conta que :
Temos 2 servidore de autenticaco ($_AUTH_1 - $_AUTH_2);
A mquina do samba a mesma do squid e do firewall ;
As interfaces de entrada e saida sao as mesmas ;
---for SRV_NTLM in $_AUTH_1
while read PORT PROTO
iptables -A OUTPUT
iptables -A INPUT
done <<EOF
137 UDP
138 UDP
139 TCP
445 TCP
EOF
done

$_AUTH_2 ; do
; do
-o $D2 -d $SRV_NTLM -p $PROTO --dport $PORT -j ACCEPT
-i $D2 -s $SRV_NTLM -p $PROTO --sport $PORT -j ACCEPT

Para adicionar a maquina vamos usar a ferramenta NET :


net rpc join -S SERVIDOR -U USUARIO -w DOMINIO -d4
A unica opco diferente a '-d4' , que define degub como 4 .
Caso a mensagem de retorno seja :
Joined domain NOME_DO_DOMINIO.
Ento tudo ocorreu como esperado .
Caso ele retorne uma mensagem de erro , aumente o DEBUG e veja o que aconteceu .

Para vermos se tudo ocorreu bem , usamos outro comando , o wbinfo


wbinfo -t
Esperamos a sada :
checking the trust secret via RPC calls succeeded
Caso contrrio , insira a mquina no domnio outra vez e tente denovo .
Modificando o Squid.conf

No nosso squid.conf basta adicionarmos as seguintes entradas :


auth_param ntlm program /usr/bin/ntlm_auth --debuglevel=1 -s /etc/samba/winbind.conf --helperprotocol=squid-2.5-ntlmssp
auth_param ntlm children 64
auth_param ntlm max_challenge_reuses 5
auth_param ntlm max_challenge_lifetime 10 minutes
acl password proxy_auth REQUIRED
http_acess allow minha_rede password
Lembretes
No esqueca de colocar os servicos do samba e do winbind para iniciarem no boot da mquina
NCSA
A autenticao de usurios feita atravs de um software a parte chamado NCSA.
Primeiramente devemos copiar o executvel o software de autenticao para /usr/bin, ou seja para que voc possa digitar o comando
diretamente.
Para isso digite o seguinte comando:
# cp /usr/lib/squid/ncsa_auth /usr/lib
Para gerar a primeira senha, voc deve digitar o seguinte comando:
# htpasswd -c /usr/local/squid/etc/passwd marcus
Para gerar as demais, digite:
# htpasswd /usr/local/squid/etc/passwd joao
A diferena alm do usurio a opo -c, que serve para que seja criado o arquivo de senhas.
Em seguida, insira a seguinte linha na configurao so proxy
# pico /usr/local/squid/etc/squid.conf
Adicione estas duas linhas:
authenticate_program /usr/bin/ncsa_auth /usr/local/squid/etc/passwd - Adicione essa linha
acl password proxy_auth REQUIRED - Adicione mais essa linha
Mude a seguinte linha:
http_access allow localnet
para
http_access allow localnet password
Ou seja, voc est dando acesso a sua rede local a internet mas pedindo autenticao.
Eplogo
Bom pessoal acho que isso, logo estarei disponibilizando mais how-tos, espero ter ajudado....
Por Marcus Vinicius Ribeiro
Comentrios
Re: Configurando o Squid (Pontos: 1)
por vonlinkerstain (dirceu@vonlinkerstain.com.br) em Segunda, 13 junho 2005 @ 12:06:08
- Show de bola o teu artigo cara, adorei, parece-me que finalmente eu vou configurar um squid redondinho...
Re: Configurando o Squid (Pontos: 1)
por maiconovic (maicon@redematrix.com.br) em Segunda, 05 setembro 2005 @ 10:46:19
Informaes do usurio: http://www.redematrix.com.br
- Marcus Vinicius Ribeiro, eu estou com uma s duvida e um probleminha para mim, mim dar um dica eu uso o Squid Version
2.5.STABLE4 do Red Rat 9.0. esta rodando perfeita mente. Mais quando eu temto abrir minha paginas da esse erro aquir, eu sei que
minha porta WEB que esta bloqueada mais como eu disbloquio isso.?
While trying to retrieve the URL: http://www.minhapagina.com.br/ [www.minhapagina.com.br]
The following error was encountered:
* Access Denied.
Access control configuration prevents your request from being allowed at this time. Please
contact your service provider if you feel this is incorrect.
Your cache administrator is root.
Generated Mon, 05 Sep 2005 12:53:53 GMT by meus.server.com.br (squid/2.5.STABLE1)
Crditos
Tutorial no underlinux: http://underlinux.com.br/noticia4295.html
Este tutorial foi desenvolvido por Marcus Vinicius Ribeiro e migrado para o wiki por Duca.

Squid - Dicas - script, modelos e comandos na manuteno de servidor proxy - Squid


Atualizado em: 04/09/2006
Sobre este documento
Dicas - Soluo de problemas
Criar ambiente de testes e backup da instalao
Resumo - Dicas - Comandos de uso frequente...
o Configurao via ambiente grfico e remotamente
o Iniciar, parar, reiniciar, status
o Logs, exemplos de comandos e filtros
o Mais ajuda e dicas de pesquisa
httptunnel, furos de bloqueio - freeproxy, webproxy
Firewall - regras Iptables - redirecionamento
o Exemplos de regras que redirecionam o trafego
o Excluir uma estao do redirecionamento - acessar a net sem proxy
Configurando estaes - Clientes do proxy
o Configurar clientes do proxy Squid
o wget, lynx e outros clientes sem config prpria.
o apt-get, smart e proxy autenticado
ACL - Manuteno
Zerar configuraes, limpar cache
o Limpar cache - reiniciar processo - soluo de problemas.
CUPS e servidor web interno
Remover comentarios do arquivo de configurao
Controle de IP na rede
Formato e manipulao de data no log.
Problemas no acesso ao Hotmail + I.E. + Squid.
Indicaes:
Sobre este documento
Resumo de comandos, linhas de comando e scripts utilizados na manuteno de servidor proxy - Squid (na minha opinio e como eu uso, copiar e colar)
Os comandos e dicas podem no atender as suas necessidades, no ser compatvel com sua instalao, use como referencia, tente adaptar ao seu ambiente.
Dicas - Soluo de problemas
Tente instalar e configurar por partes, tente isolar o problema, facilita na localizao do problema e soluo, na manuteno ou instalao tente seguir esta
ordem.
Passo 1 - Configure o servidor para navegar e pingar as maquinas da rede interna, configure as duas placas de rede e teste com ping para a rede interna e
internet, prossiga com a instalao somente depois de obter respostas do comando ping para as maquinas da rede interna e navegar normalmente, quando
no tem ambiente grfico na maquina, use o lynx para testar a navegao, wget para download, outro servio que possa testar o funcionamento da internet,
ou arrisque prosseguir com o ping, no caso do ping faa testes com ping para um dominio.
Passo 2 - Compartilhe a conexo, sem firewall, somente compartilhe para testar a navegao a partir de uma estao, em lugar do firewall utilize estas
regras de iptables.
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Ajuste o device de acordo com sua rede, ppp0 como no exemplo acima para conexes via modem discado ou ADSL conectado via pppoe, conexes de
ADSL com IP fixo ou obtido por DHCP o device eth0, altere no exemplo acima para o device em uso.
Passo 3 - Configure a estao para navegar, ainda no tem nada de proxy, configure somente o gateway e DNS, com esta configurao a estao navega
sem restrio alguma, veja mais dicas sobre compartilhamento de internet em
http://www.zago.eti.br/adsl-compartilhar.txt
Somente depois que conseguir navegar a partir de uma estao, passe para a configurao do Squid.
Passo 4 - Instale, configure e inicie o Squid, lembrando que no basta instalar, a configurao padro no funciona, precisa de alguns ajustes na
configurao. Explicando, precisa de um ajuste minimo no squid.conf, diretivas como classe de IP da rede, nome da maquina e outros detalhes,
dependendo do controle desejado precisa criar ACL, usurios, senhas e outros detalhes. Tente fazer uma configurao sem controle algum, pelo menos
para entender o funcionamento, subir o Squid e testar a navegao, no FAQ tem varios modelos prontinhos para copiar e colar, no deve servir para o seu
proposito, mas so instalaes testadas e que funcionam, utilize uma delas pelo menos para entender como funciona e testar, depois faa a sua
configurao a partir de zero, para trocar a configurao, basta substituir o squid.conf, apagar cache e recriar novamente, no precisa remover ou reinstalar
nada, somente limpar o cache e trocar o squid.conf, tambm criar ou alterar as ACL conforme a nova configurao.
Inicie o squid e verifique se est rodando OK, prossiga com os proximos tpicos somente depois de iniciar sem mensagens de erro e o status acusar que
est rodando.
Passo 5 - Redirecionando o trafego da porta 80 para a porta 3128, altere as regras de compatilhamento, de novo, ajuste o device caso seja diferente de ppp0
como neste exemplo, ajuste tambm a classe de rede caso seja diferente de 192.168.1.0.
modprobe iptable_nat
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j
REDIRECT --to-ports 3128
/usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Antes de configurar a estao, teste a rede novamente, mesmo aplicando a regra acima, nas estaes o ping tem que alcanar dominios na internet.
Passo 6 - Configurar estaes para usar o proxy, no navegador, procure pelas opes de configuar proxy, em IP informe o IP do micro que roda Squid em
porta informe 3128, salve a configurao e teste a nevagao, as condies de acesso a sites vai depender da configurao do Squid, de qualquer forma vai
obter alguma resposta, navegar ou a tela de erro do Squid, no esquea dos logs, no servidor abra um console e execute a linha de comando.
tail -f /var/log/squid/access.log
Este comando exibe no console as mensagens de log, exibe em tempo real, no momento em que esto sendo formadas, tente a navegao na estao e veja
os resultados no console, at aqui fica fcil isolar o problema, se navegava antes do redirecionamento e agora no navega, j sabe onde procurar, inicie

verificando se est o Squid est rodando, configuraes do squid, diretivas, ACL, permisses nos arquivos e diretrios utilizados pelo squid, documentao
de configurao do Squid, pegue a mensagem de erro e coloque na caixa de pesquisa do Google..
Procure tambm nas mensagens de outros arquivos de log do sistema, qualquer dvida volte ao inicio e v testando passo a passo, quando Ok, configure o
firewall.
Passo 7 - Firewall, as regras acima no tem proteo alguma, maquinas de cara para a internet precisa de um firewall minimo, os exemplos acima so
regras para compartilhar e no oferece proteo, portanto precisa criar seu firewall, como pode notar, precisa de uma linha de comando no firewall para
redirecionar o trafego da porta 80 para a porta 3128 controlada pelo Squid, no seu firewall substitua a linha que faz NAT por esta linha.
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j
REDIRECT --to-ports 3128
Lembrando que o Squid controla somente a navegao pela porta 80, os demais servios que utilizam outras portas so controlados pelo Iptables, tais
como clientes de e-mail, eles utilizam as portas 25 e 110 que no passam pelo squid, conexes via ssh que utilizam a porta 22, outros servios que utilizam
outras portas diferente da porta 80, configure e controle com regras no iptables, um exemplo para fazer NAT para o restante, tudo que no passar pela
porta 80, no firewall, coloque depois da regra de redireconamento.
/usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Criar ambiente de testes e backup da instalao
Considere criar um ambiente de testes, no adianta reclamar que no tem "verba" ou no tem maquina, no custa nada, o pouco tempo que investir agora
vai lhe poupar muito mais no futuro alm de evitar muitos problemas, considere um bom investimento de tempo, pode instalar diversos squid pela rede
sem problema algum.
Veja dicas de como fazer duas instalaes Linux no mesmo HD, utilize estaes para testes, evite em servidores embora seja possivel, passo a
passo em
http://www.zago.eti.br/boot_div.txt
Dual boot Linux e windows - Aproveite e veja a dica sobre backup da instalao completa do windows na partio Linux, quando algum virus
comer o windows ou precisar reinstalar, vai poupar muito tempo, basta uma simples cpia de volta para recuperar a instalao do windows, passo
a passo em.
http://www.zago.eti.br/boot-dual-win-e-linux.html
Nesta estao (instalao) de testes, vai consumir somente parte do espao do HD e nada mais, utilizando maquina que est atrs de firewall no precisa de
mais uma placa de rede, funciona com somente uma placa, configure a nova instalao como uma estao para acessar internet, sem passar por outro
Squid, caso j tenha algum fazendo o controle de acesso internet, caso ele esteja rodando ma maquina que compartilha a conexo, ento inclua no
firewall a regra que exclua a maquina de testes do proxy, com esta maquina navegando sem passar por outro proxy voce tem o servidor que precisa para
seus testes, basta instalar o Squid e configurar uma estao para usa-lo como servidor proxy, ou melhor alterar o endereo de proxy e gateway apontando
para o IP da maquina testes.
Regra de iptables para excluir um IP do redirecionamento, no meu firewall para excluir a maquina de testes, utilizo esta regra.
/usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s \! 192.168.1.53 -p tcp -m multiport --dport
80,443 -j
REDIRECT --to-ports 3128
/usr/sbin/iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
Neste exemplo a estao com IP 192.168.1.53 acessa internet sem passar pelo proxy e pode ser usada para rodar outro squid, nesta maquina configure o
squid, utilize outra estao da rede para utilizer este novo Squid, altere somente o endereo de IP do proxy e gateway apontando para o segundo servidor
proxy, prontinho, tenho outro Squid rodando e estaes passando por ele, este segundo proxy sai pelo firewall sem problema algum, ambiente perfeito para
testes.
Alm de testes ou para backup, serve tambm como um segundo proxy, no encontrei utilidade para esta opo, mas possivel manter dois squid na
mesma rede, rodando independente e com regras diferentes,
Em ambiente de testes vale usar um modem discado nesta maquina, esta opo tambm indicada para testar firewall, regras de squid e outros servios de
rede, pode at ser usado quando cai o link ou ADSL, embora muito mais lento permite acesso internet enquanto o ADSL no volta.
Com o squid configurado na maquina de testes (clone do principal), utilize qualquer estao da rede, configure ou altere as configuraes de proxy
apontando para o servidor de testes, prontinho, tem tudo que precisa para testar ACL, diretivas do Squid e muito mais, quando concluir a configurao,
basta repetir o processo no principal, ou simplificando, copiar os arquivos de configurao.
Considere manter esta instalao como backup, em casos de emergencia, nunca se sabe quando vai ocorrer acidentes, queimar a maquina, HD ou uma pane
na configurao que pare tudo, nestas situaes basta alterar o IP que as estaes nem ficam sabendo da troca, em menos de um minuto se faz a troca do IP
e sobe o Squid.
Use ferramentas como VNC, SSH, FreeNX, Putty e outras, no fique pulando pra l e pra c, indo de maquina em maquina, a partir do ambiente grfico da
maquina Linux, abra um console para acompanhar os logs e acesse o VCN da estao windows para simular o uso. A partir da estao windows faa
conexo via FreeNX ou Putty para abrir o console e acompanhar os resultados do que acontece com os acessos pela estao windows.
Ainda est difcil, faltando opes?, problemas com falta de hardware?, ento use maquina virtual, veja dicas no FAQ;
http://www.zago.eti.br/qemu.txt
Porque no pensei nisso antes!
Resumo - Dicas - Comandos de uso frequente...
Configurao via ambiente grfico e remotamente
Algumas distros tem ferramentas prprias de configurao, como exemplo Yast2 no SUSE 10 tem configurador proxy, estas ferramentas nem
sempre atende todas as necessdades, mesmo nestas distros pode se utilizar outras ferramentas como webmin ou editar os arquivos de
configuao manualmente.
webmin tem modulo para configurar Squid e outros recursos, na aba "servidores" procure pelo icone "Servidor Proxy Squid", em outros idiomas
ou verses mais antigas procure por algo relacionado a servidores e proxy. Veja mais sobre webmin, como acessar remotamente e outras dicas
em
http://www.zago.eti.br/webmin.txt
SSH - Considere o uso do ssh, permite executar aplicativos do ambiente grfico remoto, tem varios aplicativos para windows, tanto em ambiente
grfico como texto (shell) a mais segura e melhor ferramenta para acesso remoto, altamente configurvel.
Acesso remoto via ssh em ambiente grfico, cliente windows utilizando - Winscp - putty - Freenx - tutorial em
http://www.zago.eti.br/ssh/ssh-gui.html
FAQ, instalar, configurar, dicas e exemplos de uso do SSH em
http://www.zago.eti.br/ssh/ssh.txt
Arquivos de configurao podem ser editados e manipulados com simples editor de texto, seja para fazer toda a configurao ou simples ajustes,
pode utilizar ferramentas como webmin e refinar os ajustes com seu editor de texto preferido, pode copiar estes arquivos de outra instalao,
portanto fique vontade para fazer a seu modo, veja mais dicas de como manipular arquivos de configurao em
http://www.zago.eti.br/modelos/A-menu-modelos.html
Veja tambm na pgina principal sobre squid, tpico " Ferramentas de configurao... ", manuteno via web.

Iniciar, parar, reiniciar, status


Parar, iniciar, reiniciar e carregar as novas alteraes.
Verifique qual o comando para sua distro, so diferentes entre as distros,
Comandos comum na maioria das distro.
squid -k reconfigure Carregar alteraes no squid.conf ou ACL, execute sempre que fizer alteraes no squid.conf ou ACL.
squid -k shutdown Parar o servio, derrubar o Squid, prefira esta opo em lugar de outras semelhantes como "service squid stop" ou "rcsquid stop".
Segue alguns exemplos para Conectiva e SUSE.
Configurar para iniciar junto com o boot da maquina: chkconfig squid on
SUSE 10.1
rcsquid restart Reiniciar o servio, evite esta opo, prefira squid -k reconfigure.
Conectiva 10
service squid restart - Reiniciar Squid, evite esta opo, prefira squid -k reconfigure.
service squid start Iniciar Squid manualmente
squid -D iniciar sem testar DNS, pode usar no /etc/rc.d/rc.local.
Esta opo (-D) serve para no testar o DNS, deve ser usada quando a maquina que roda o squid no est conectada na net no momento que inicia o squid
e portanto no como testar o DNS e resulta em erro, ocorre em conexes via modem discado ou ADSL conectado via pppoe, quando tenta iniciar o squid
antes de conexo com a net ocorre o erro porque no tem como testar o DNS, organize a inicializao de forma que o Squid seja iniciado depois de
completar a conexo com a internet, tente iniciar o squid via rc.local lembre de incluir a linha do Squid depois da linha que conecta na net.
Caso ainda falhe, tente com esta:
squid -D z
service squid status conferir status, se est rodando ou no, retorna mensagem semelhante a esta.
root@faqcl9# service squid status
squid inativo mas seus subsistemas trancados
Tenho detectado este problema principalmente aps alteraes nas configuraes do Squid, depois de "mexer e fuar" nas configuraes ele para de rodar
ou passa ter comportamento estranho, no grava logs, no inicia ou morre logo em seguida.
Tente resolver o problerma apagando o arquivo de pid do squid, localize squid.pid e remova este arquivo, exemplo.
Localizar o processo, execute: find / -name squid.pid
Dever retornar algo como:
/var/run/squid.pid
Matar o processo, execute: kill -9 /var/run/squid.pid
Caso no resolva, verifique se a maquina est conectada na internet, tente limpar o cache, zerar os logs e outros procedimentos indicados em outros tpicos
deste documemnto.
Mais dicas sobre como iniciar servios e acompanhar procesoss.
http://www.zago.eti.br/iniciar.txt
http://www.zago.eti.br/processos.txt
Logs, exemplos de comandos e filtros
Acompanhando os logs em tempo real
Acompanhe os logs em tempo real, enquanto eles so formados voce pode acompanhar as entradas dos registros no log do Squid, execute:
tail -f /var/log/squid/access.log
Consulte tambm os log do sistema, veja o que disponvel em /var/log.
ls -la /var/log/
tail -f /var/log/messages
Refinar a pesquisa, ideal em casos de muitos registros nos logs, para acompanhar somente os registros da estao com IP 192.168.1.53, execute
tail -f /var/log/squid/access.log | grep 192.168.1.53
Substitua 192.168.1.53 por outro termo que deseja procurar, exemplo, exibir somente os logs que contenha sexo em qualquer parte do registro.
tail -f /var/log/squid/access.log | grep sexo
Em lugar de sexo, use a palavra que deseja procurar, foto, msn, orkut, mail e etc....
Para salvar o resultado deste filtro em arquivo, use os redirecionadores, exemplo para salvar em arquivo /tpm/logteste.txt
tail -f /var/log/squid/access.log | grep sexo >> /tmp/logteste.txt
Alguns exemplos.
Exibir as ultimas 100 linhas e sair.
tail -100 /var/log/squid/access.log
Refinar o resultado, exibir somente o IP e a URL, exemplo;
tail -f /var/log/squid/access.log | awk '{print "IP="$3"\t URL="$7}'
Formato e exemplo de resultado:
IP=192.168.1.53 URL=http://www.zago.eti.br/log.txt
Exibir outros campos do Log, troque "IP="$3", pela coluna que deseja, altere IP para o nome que deseja exibir e $3 pela coluna que deseja exibir, neste
exemplo o IP a terceira coluna e a URL a setima, para exibir IP e tipo de acesso que fica na coluna 4 use:
tail -f /var/log/squid/access.log | awk '{print "IP="$3"\t CODIGO="$4}'
Formato e exemplo de resultado:
IP=192.168.1.53 CODIGO=TCP_MISS/200
IP=192.168.1.53 CODIGO=TCP_MISS/200
Com curingas pode acompanhar no mesmo console e simultaneamente diversos arquivos de log, exemplos para abrir todos os arquivos que terminam com
.log em /var/log/squid
tail -F /var/log/squid/*.log
tail -f /var/log/squid/*.log
Com filtro por usurio, IP, URL ou outra opo registradas nos logs, use o grep como neste exemplo;
tail -f /var/log/squid/*.log | grep 192.168.1.53
Abrir tambm o /var/log/messages, observe que tem um espao separando os dois endereos.
tail -f /var/log/squid/*.log /var/log/messages
tail -f /var/log/squid/*.log /var/log/messages | grep 192.168.1.53
Faa testes, modifique os exemplos acima, tente outras opes.
Veja mais sobre grep em:
http://www.zago.eti.br/grep.txt
Veja mais sobre awk em:
http://www.zago.eti.br/awk.txt

Saber o tamanho do cache, veja no squid.conf o caminho do cache, o local no padro, portanto, procure na sua instalao, pode pegar o endereo no
squid.conf, procure pela linha semelhante a esta;
cache_dir ufs /var/cache/squid 100 16 256
Neste exemplo o cache est em /var/cache/squid , saber o tamanho, espao ocupado, execute; du -sh /var/cache/squid e o resultado dever ser
semelhante a 109M /var/cache/squid.
O local muda conforme a distro, script de instalao ou a gosto do administrador, o mais comum procurar pelo sub-diretrio squid abaixo de /var/spool,
neste caso utilize o comando du -sh /var/spool/squid, ou localize o caminho correto, navegue pelos diretrios, consulte o squid.conf, use o find
e sua intuio...
Tem mais opes, inclusive como gerar grficos individualizados, relatrios em HTML via SARG e muitos outros recursos, veja mais sobre log e
relatrios no FAQ
http://www.zago.eti.br/squid/sarg.html
http://www.zago.eti.br/log.html
http://www.zago.eti.br/squid/log.txt
Mais ajuda e dicas de pesquisa
Help do Squid
/usr/sbin/squid -help
man squid
Ver com quais com quais flags o Squid foi compilado:
/usr/sbin/squid -v
Quando no entender a mensgem de erro porque est em ingles, utilize tradudores como Altavista ou Google, se ainda no entendeu a mensagem, ento
coloque parte dela na caixa de pesquisa do Google.
Explore o mecanismo de busca do Google, coloque na caixa de dialogo a mensagem de erro ou parte dela, tente combinar a pesquisa para refinar os
resultados.
httptunnel, furos de bloqueio - freeproxy, webproxy
Nas regras de bloqueio (ACL) inclua o bloqueio a estes endereos e as indicaes deles:
http://www.guardster.com/
http://proxy.amsistemas.com.br
http://www.proxy4free.com/index.html
http://www.the-cloak.com/anonymous-surfing-home.html http://www.the-cloak.com/login.html
http://www.megaproxy.com/
http://www.freeproxy.com/
http://surfeasy.info/surfeasy/
http://www.publicproxyservers.com/page1.html
http://www.hopster.com/
Neste site tem um software que burla o proxy e firewall, no testei.
http://www.wproxy.com https://wproxy.com/
Caso teus usurios consiga acessa-los, atraves deles vo burlar o proxy e acessar qualquer outro site na internet, vai anular totalmente as regras de bloqueio
do teu Squid, alguns tem software que instalam na estao para permitir o acesso e uso deles mesmo com eles bloqueado nas regras do squid e firewall,
parece ser demais, ainda no detectei esta situao, como tudo possivel, acho que a soluo a constante vigilancia, analise dos logs e trafego, refinar as
regras pra dificultar ao maximo e nunca vacilar com a segurana e monitoramento.
No tenho como listar todos aqui, mesmo porque no sei quais so, o ideal acompanhar os logs do squid, pelos relatorios do SARG fica muito mais fcil
descobrir acesso a sites estranhos e suspeitos, depois s acrescentar na lista de sites bloqueados.
Procure no google por httptunnel, anonimato e expresses semelhantes vai se surpreender com o que tem disponivel para usurios criar problemas na tua
rede e burlar proxy ou firewall.
Firewall - regras Iptables - redirecionamento
Exemplos de regras que redirecionam o trafego
Redirecionar todo o trafego da porta 80 para o Squid.
Forar as estaes passarem pelo proxy, precisa colocar uma regra no firewall pra redirecionar todo o trafego da porta 80 para a porta 3128, o local de
inserir a regra tambm muito importante, tem que ser antes da regra que faz nat para evitar que as estaes continue navegando sem passar pelo proxy,
veja este exemplo:
modprobe iptable_nat
iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT -to-ports 3128
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Cuidado com a quebra de linha no seu browser, cliente de e-mail ou editor, no exemplo acima esta parte:
iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128
tem que ser uma nica de linha, tem que ajustar para sua rede, neste exemplo estou permitindo proxy pra toda a rede interna com IP 192.168.1.0/24, altere
para a sua classe de rede, ajuste tambm no squid.conf "acl minharede src 192.168.1.0/255.255.255.0" tem que ser da mesma classe de rede. Neste
exemplo 192.168.1.0/24, todas as maquinas da rede permite alteraes somente no ultimo octeto 192.168.1.x, mantenha a mesma classe em todas as
maquinas, nas estaes, no squid.conf e placa de rede interna do micro que compartilha a conexo (firewall), o Squid pode rodar em outra maquina com IP
da mesma classe de rede.
As demais linhas no exemplo acima serve pra fazer NAT para os demais servios como ftp, cliente de e-mail e qualquer acesso web sem ser pela
navegao na porta 80.
Cuidado com a segurana, o exemplo acima serve somente pra ilustrar onde dever ser colocada a regra de redirecionamento, aplique as suas regras de
firewall, qualquer problema altere posio da regra acima para o inicio do firewall.
Excluir uma estao do redirecionamento - acessar a net sem proxy
Qualquer excesso que queira fazer via iptables, tem que ser acrescentada no firewall antes da regra que direciona o trafego pro Squid, o IPtables para a
execuo do script (analize das regras) na primeira condio que for atendida. Pra excluir um IP do redirecionamento pro Squid, a regra tem que estar no
script do firewall, antes da que redireciona o trafego pro Squid.
Esta regra redireciona todo o trafego da porta 80 para a porta 3128 do Squid.
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j
REDIRECT --to-ports 3128
Com a regra acima todas as estaes todas as estaes so foradas a passar pelo proxy pra alcanar a net, portanto submetendo s regras configuradas no
Squid, mas possvel manter o proxy para toda a rede e excluir algumas maquinas do proxy, ficam sujeitas somente s regras de iptables.
Excluir somente uma estao, pode aplicar direto na regra de redirecionamento, quando precisar excluir mais de uma maquina (IP), crie uma regra (linha
abaixo) para cada maquina, obrigatoriamente a ordem destas regras no script tem que ser colocadas na posio antes da regra de redirecionamento, no

exemplo a seguir inclue a regra de redirecionamento para facilitar o entendimento, segue alguns exemplos de regras para tirar do proxy as maquinas com
final 42, 53 e 155,
/usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.42/32 -p tcp -m multiport --dport
80,443 -j ACCEPT
/usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.53/32 -p tcp -m multiport --dport
80,443 -j ACCEPT
/usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s \! 192.168.1.155 -p tcp -m multiport --dport
80,443 -j REDIRECT --to-ports 3128
Ou se preferir, outro formato com o mesmo resultado;
/usr/sbin/iptables -t nat
80,443 -j ACCEPT
/usr/sbin/iptables -t nat
80,443 -j ACCEPT
/usr/sbin/iptables -t nat
80,443 -j ACCEPT
/usr/sbin/iptables -t nat
REDIRECT --to-ports 3128

-A PREROUTING -i eth1 -s 192.168.1.42/32 -p tcp -m multiport

--dport

-A PREROUTING -i eth1 -s 192.168.1.53/32 -p tcp -m multiport

--dport

-A PREROUTING -i eth1 -s 192.168.1.155/32 -p tcp -m multiport

--dport

-A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j

Onde eth1 interface interna e 192.168.1.0 toda a rede interna (clase de rede), altere conforme sua rede.
Mais um exemplo;
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.32/32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.53/32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.155/32 -j MASQUERADE
Ou tambm;
iptables -t nat -A POSTROUTING -s 192.168.1.53 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.53 -o eth0 -j MASQUERADE
A primeira linha pra quem levanta a interface ppp0 e a segunda pra quem levanta a eth0, no
exemplo acima a estao com IP 192.168.1.53 no vai passar pelo proxi nem pelas regras do Squid.
No meu firewall utilizo esta regra para excluir do redirecionamento a maquina com ip 192.168.1.53.
/usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s \! 192.168.1.53 -p tcp -m multiport --dport 80,443 j REDIRECT --to-ports 3128
/usr/sbin/iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
onde
eth0 = interface externa (que sai pra net)
eth1 = interface interna (rede interna)
Nestas estaes no configure proxy no navegador, caso configure vai passar pelo proxy como outra estao qualquer, quem usa mais de
um navegador, pode configurar um deles passando pelo proxy e outro no, em ambiente de testes pode ser muito til.
Confira se as regras de NAT esto ativas para os IP em questo, aps a incluso das regras, execute o script de firewall e depois veja se os IP aparecem na
listagem do comando;
iptables -L -v -t nat
Configurando estaes - Clientes do proxy
Configurar clientes do proxy Squid
Estaes que esto atrs de um servidor proxy, precisam de configurao especial sobre a rede, alm da configurao de rede na estao, IP, DNS, gateway
e rota, quando acessam a internet pelo proxy como Squid, precisam configurar os navegadores e demais servios que utilizam a porta 80 para acessar a
internet pelo proxy, brownser como Mozilla, konqueror, I.E tem opes de configurao do proxy, procure no seu navegador pela opo de configurar o
servidor proxy, informe o IP e porta, onde IP o IP do micro que roda o Squid e a porta em que est ouvindo, normalmente a 3128.
No Firewall deve ter uma regra redirecionando o trafego da porta 80 para a porta 3128, algo semelhante a estas regras.
modprobe iptable_nat
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j
REDIRECT --to-ports 3128
/usr/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forwardd
Quando falhar o acesso a FTP, acrescente as regras pra fazer NAT tambm de FTP, so estas regras:
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
No firewall precisa carregar os modulos responsaveis pelo NAT de FTP, requer no minimo estas regras e nesta ordem:
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j
REDIRECT --to-ports 3128
/usr/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Agora faa um teste com o konqueror nas estaes, na aba:
configuraes
Configurar konqueror
Proxy
selecione usar proxy e configuraes especficas manualmente, clique
em configurar, na linha FTP no preencha, deixe esta linha vazia e
no selecione a opo [] usar o mesmo servidor proxy para todos os
protocolos, o proxy Squid no controla a porta do ftp, portanto no
marque esta opo.

Teste com servidor de FTP externo, tente com servidores de ftp anonimo como a unicamp, teste com este endereo
ftp://ftp.unicamp.br/pub/
Servidores de FTP que requer login, exemplo, atualizar sites, acrescente na URL o login e senha, neste formato:
ftp://meulogin:minhasenha@www.zago.eti.br/
Configurar I.E, tente este caminho:
Em primeiro lugar por questes de segurana tente no usar I.E. tem muitas recomendaes de segurana indicando outros navegadores em lugar do I.E.
Quando o ping alcana a internet e o I.E. no navega, procure nas opes de configurar para navegar por uma rede LAN, procure pelas opes de proxy e
informe o IP do servidor proxy e a porta. Com isto dever navegar, caso falhe, veja nas configuraes de rede se tem o IP da mesma classe, gateway e
DNS, veja se o ping alcana o micro que compartilha a conexo, tente com outros navegadores, com outros servios de acesso internet para tentar isolar
o problema.
Quando o I.E. navega mas no acessa sites de FTP e no micro que compartilha a conexo carrega os modulos como indicado acima, outros navegadores
acessa e falha somente com I.E, ento problema de configurao do I.E. Na barra de menu do internet explorer -> guia avanado no item "navegao"
procure pelas opes com referencia a FTP, desmarque ou marque a opo "Ativar o modo de exibio de pastas para sites ftp". Tente acessar ftp, caso
falhe inverta as opes, vai tentando que a soluo nestes itens.
Configurar I.E direto no registro do windows, tpico em testes com win98 SE.
Faa testes antes de aplicar esta soluo na rede, verifique em uma maquina se o caminho confere, avalie e teste em uma maquina antes de aplicar em
todas.
Crie um script com edit do DOS ou bloco de notas, como sugesto de nome proxyon.reg com este contedo;
REGEDIT4
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000001
"ProxyServer"="192.168.1.2:3128"
"ProxyOverride"="<local>"
No exemplo acima altere somente o IP 192.168.1.2 para o do seu servidor proxy, as demais linhas no altere mantenha o REGEDIT4 como est, nome
pode mudar mas tem que terminar com .reg, no prompt do DOS execute;
regedit -s \\caminho\proxyon.reg
Desfazer a configurao, crie o proxyoff.reg com este contedo;
REGEDIT4
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000000
"ProxyServer"=" "
"ProxyOverride"="<local>"
no prompt do DOS execute; regedit -s \\caminho\proxyoff.reg
No precisa reiniciar Windows, precisa fechar todas as janelas do I.E. e abrir novamente.
No exibe a configurao em propriedades do navegador, fica tudo transparente.
Duplo clique sobre o arquivo tem o mesmo resultado, optei pelo exemplo acima porque serve para executar na linha de comando (prompt do DOS), incluir
no logon script do Samba.
Considere incluir no iniciar, login script do Samba ou outro metodo de execuo automatica, com um servidor DHCP fornecendo IP e gateway, no
precisa configurar nada nas estaes win98
wget, lynx e outros clientes sem config prpria.
Alguns servios como wget, lynx, e outros servios que tambm acessam a net pela porta 80 e no tem opo para configurar o proxy, eles utilizam a
configurao do sistema, a configurao de proxy diferente, portanto precisa configurar no sistema e no no servio que vai usar, formato da linha de
comando para configurar proxy para wget, lynx e outros.
export http_proxy=http://ip.do.proxy:porta-do-proxy
Exemplo da linha de comando que libera estaes para acesso internet compartilhada com proxy Squid, onde o servidor tem o IP 192.168.1.2 e todo o
trafego redirecionado para a porta 3128, nos navegadores deve utilizar como servidor proxy 192.168.1.2 porta 3128, para wget e lynx acessarem a
internet nesta mesma rede, o comando fica assim:
export http_proxy=http://192.168.1.2:3128
Ajuste o IP e porta para sua rede, 192.168.1.2 meu gateway, IP da maquina que roda Squid.
Aps o comando, teste a navegao ou download, navegar com lynx, execute.
lynx http://www.zago.eti.br/comandos.txt
Donload com wget
wget http://www.zago.eti.br/comandos.txt
Use tambm a dupla "vi" + lynx, converte pginas da web para texto limpo diretamente no editor "vi", aproveite e faa o teste, dentro do editor "vi" em
modo comando, cole esta linha:
:r !lynx -dump http://200.204.198.164/zago/comandos.txt
Ou importe este documento que voce est lendo, limpinho, sem nada de HTML dentro do editor "vi".
:r !lynx -dump http://www.zago.eti.br/squid/dicas-e-truques.html
Esta configurao de proxy se perder quando desligar a maquina, para tornar permanente precisa incluir nos arquivos de configurao do sistema, pode
configurar para todos usurios da maquina ou somente para usurios especficos.
Configurao permanente e restrita a alguns usurios, insira a linha de comando no .bash_profile dos usurios, basta editar o arquivo .bash_profile que fica
no home do usurio e acrescentar aps a ultima linha:
export http_proxy=http://192.168.1.2:3128
Pronto, automatizado a execuo desta linha no login do usurio.
Configurando para todos os logins nesta maquina, acrescente no final do arquivo /etc/profile, use o um editor pra acrescentar a linha:
export http_proxy=http://192.168.1.2:3128
Ou da maneira mais simples:
echo "export http_proxy=http://192.168.1.2:3128" >> /etc/profile
A partir do prximo boot da maquina a configurao do proxy j vem configurado para wget, lynx e demais servios que pegam os dados do proxy na
varivel de ambiente, quando optar pelo /etc/profile valer para todos os usurios, portanto no precisa incluir no .bash_profile dos usurios
apt-get, smart e proxy autenticado
APT-GET Somente pra maquinas atrs de proxy squid.... no CL basta copiar e colar esta linha no shell:
echo 'Acquire::HTTP::proxy "http://192.168.1.2:3128";' >> /etc/apt/apt.conf
Ajuste o IP e porta para sua rede, 192.168.1.2 meu gateway, IP da maquina que roda Squid.
No precisa fazer alteraes no squid.
Fazer NAT tambm para FTP precisa incluir no firewall os modulos:

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
Com autenticao.
Com proxy autenticado, quando requer senha para acessar internet, precisa liberar por usurio, pra informar login e senha, coloque no arquivo
/etc/apt/apt.conf, normalmente ele est vazio, caso no existir pode criar, dentro dele coloque a linha neste formato:
Acquire::HTTP::proxy "http://usuario:senha@192.168.1.2:3128/;
Acquire::HTTP::proxy "http://zago:minhasenha@192.168.1.2:3128;
Variavel de ambiente.
Como variavel de ambiente, pra usar somente na sesso atual, precisa executar no shell toda vez que for usar, pode digitar ou copiar e colar, colocar dentro
de um script, vale tambm colocar no .bashrc do root ou outro meio qualquer que possa comandar a execuo, precisa criar duas variveis de ambiente,
elas valem somente at reiniciar a maquina, veja exemplo:
export ftp_proxy=http://usuario:senha@192.168.1.2.8:3128
export http_proxy=http://usuario:senha@192.168.1.2:3128
Pra conferir, ver o contedo da variavel:
echo $ftp_proxy
echo $http_proxy
Caso no funcione com apt-get, procure por proxy no FAQ sobre apt, pesquise em
http://www.zago.eti.br/apt.txt
Veja tambm as regras de firewall que podem bloquear portas ou a saida da conexo.
BitTorrent atrs de servidor proxy, procure por proxy neste FAQ:
http://www.zago.eti.br/bittorrent.txt
Smart - Veja exemplos no FAQ
http://www.zago.eti.br/smart-dicas.html
http://www.zago.eti.br/smart.txt
smart config --set http-proxy=<seu-proxy>
ACL - Manuteno
ACL - Manuteno, alteraes nas ACL, incluir, excluir ou alterar palavras de bloqueio e etc....
Acompanhe os logs ou relatorios do sarg, quando encontrar sites sendo bloqueados ou liberados indevidamente basta fazer a correo no arquivo que
contm as palavras, use qualquer editor de texto puro, por exemplo "vim", aps salvar o arquivo, pra recarregar o squid execute:
squid -k reconfigure
ou
service squid reload
No precisa parar e reiniciar o squid.
Pra muitas alteraes, faa duas conexes via ssh, torne root, alterne entre os terminais, um pra fazer alteraes e outro para acompanhar os logs em tempo
real, execute:
tail -f /var/log/squid/access.log
Na outra conexo v pro diretrio /etc/squid, pra fazer alteraes edite o arquivo desejado, salve e recarregue o squid com (squid -k reconfigure),
volte ao terminal dos logs e continue acompanhado.
O ideal editar o arquivo e acrescentar as palavras em ordem alfabetica, facilita a organizao e manuteno.
Zerar configuraes, limpar cache
Limpar cache - reiniciar processo - soluo de problemas.
OBS. Dica para aplicar em instalao que parou de funcionar, Squid que no inicia ou morre alguns segundos aps iniciar, a provvel causa pode ser
algum arquivo travado, erro no cache ou algum arquivo de dados, zerando estes arquivos, volta condio inicial como funcionava na instalao, esta dica
no resolve erros nem falhas de configurao ou hardware.
Agora tente parar e reiniciar o servio, na maioria das vezes vai resolver o problema, caso persista, ento resta a fora bruta (radicalismo), apague tudo e
recrie novamente, deve existir outras formas, utilizo a recurso acima quando falha sigo a dica passada pelo Anderson andersonmsp@click21.com.br, em
varios casos que a opo acima falhou, a dica abaixo funcionou, tenho at um resumo no final pra copiar e colar, veja que funciona na minha instalao do
CL10, pode no servir pra tua instalao que pode ter nomes de arquivos e diretrios diferentes, procure pelo equivalente na sua instalao.
Tem que funcionar porque zera tudo, caso persista o problema, tente voltar a copia de um squid.conf e ACL que funcionavam antes das alteraes,
verifique o espao em disco, hardware, processos e use a intuio pra descobrir a causa do problema.
Antes de aplicar os procedimentos abaixo, pare todos os processos do squid, verifique se ainda tem algum processo rodando
``ps -aux | grep squid ``
Para solucionar o problema, proceda assim:
remova o diretrio /var/spool/squid rm -rf /var/spool/squid
recrie novamente mkdir squid
Libere a permisso chmod -R 777 squid
Copie os arquivos de log para outro diretrio, mova ou renomeie, exemplo para mover os logs para /tmp, execute:
mkdir /tmp/squidlog
mv /var/log/squid/* /tmp/squidlog
Caso no precise dos logs pode remover tudo que estiver em: /var/log/squid/
rm -rf /var/log/squid/*
Recrie o arquivo access.log
touch /var/log/squid/access.log
Libera geral ou seu modo:
chmod 777 access.log
inicie o squid, demora um pouco, deve voltar a funcionar normalmente, faa um teste, veja o status.
service squid start
Ou em uma tacaca s, resumo dos comandos (copiar e colar), colinha do zago e Anderson.
Neste exemplo, todos os logs sero movido para /tmp.
Instalao com cache em /var/spool/squid e log em /var/log/squid:
service squid stop
mkdir /tmp/squidlog-`date +%d.%b.%Y-%H-%M`
mv /var/log/squid/* /tmp/squidlog-`date +%d.%b.%Y-%H-%M`
rm -rf /var/spool/squid
mkdir /var/spool/squid
chmod -R 777 /var/spool/squid
rm -rf /var/log/squid/*

touch /var/log/squid/access.log
chmod 777 /var/log/squid/access.log
squid -z
service squid start
Instalao com cache em /var/cache/squid e log em /var/log/squid:
service squid stop
mkdir /tmp/squidlog-`date +%d.%b.%Y-%H-%M`
mv /var/log/squid/* /tmp/squidlog-`date +%d.%b.%Y-%H-%M`
rm -rf /var/log/squid/*
rm -rf /var/cache/squid
mkdir /var/cache/squid
touch /var/log/squid/access.log
chmod 777 /var/log/squid/access.log
chown proxy.proxy /var/cache/squid
chgrp proxy /var/cache/squid
chmod 777 /var/log/squid/access.log
chown proxy.proxy /var/log/squid/access.log
chgrp proxy /var/log/squid
squid -z
service squid start
Opo para zerar somente o cache, apagar e recriar somente o cache:
service squid stop
rm -rf /var/spool/squid/*
squid -z
service squid start
CUPS e servidor web interno
ACL para liberar acesso ao servidor web interno (CUPS, Apache e etc...).
Sempre que possvel, mantenho um servidor web interno para disponibilizar os pacotes mais utilizados, tais como OpenOffice, Firefox, ClamWIN e
outros pacotes que consomem muito download, mantenho este servidor atualizado como um mirror, isto agiliza o download pelas estaes e
economiza banda, veja em:
http://www.zago.eti.br/apache.txt
Liberar o acesso a este servidor e aos servidores CUPS (servidor de impresso) precisa criar uma acl para liberar o acesso maquinas da
rede interna, exemplo de acl para acrescentar no squid.conf:
acl ipinterno dst 192.168.1.0/24
http_access allow ipinterno all
Neste exemplo, libera todos os servidores interno para todas as estaes, servidores web, cups e etc.., caso queira liberar somente um
servidor, por exemplo, liberar somente o servidor web que est no IP 192.168.1.3:
acl ipinterno dst 192.168.1.3/32
http_access allow ipinterno all
Liberar o acesso a servidor CUPS, precisa incluir a porta 631 na "acl Safe_ports ", exemplo no squid.conf que libera a porta 631:
acl Safe_ports port 80 21 443 563 631 70 210 1863 1025-65535
No imprime com proxy habilitado no I.E. Estao com win98 no imprime na impressora compartilhada pelo CUPS, quando habilita o
proxy no I.E perde a impresso, envia e nada acontece, removendo as configuraes de proxy a estao imprime sem problema algum.
Enquanto no descubro a soluo estou contornando o problema com a seguinte soluo; deixe o I.E sem configuraes de proxy e use o
Firefox com proxy configurado para navegar, desta forma a estao imprime normalmente.
Remover comentarios do arquivo de configurao
Limpar arquivo de configurao, retirar todos os comentarios e linhas em brando do squid.conf, isto opcional, mas prtico pra enviar o arquivo de
configurao para outras pessoas analizarem, as duas linhas de comando abaixo esto prontas para copiar e colar, para evitar acidentes e subrescrever o
squid.conf, faa cpia para outro local, no exemplo abaixo, a primeira linha faz copia do squid.conf para /tmp, a segunda limpa o arquivo e salva o
resultado em /tmp/squid.conf-limpo.
cp /etc/squid/squid.conf /tmp/squid.conf-comentado
egrep -v "^#|^$" /tmp/squid.conf-comentado > /tmp/squid.conf-limpo
Comparar dois squid.conf e salvar as diferenas entre eles em /tmp/squidif (altere o caminho e nome dos arquivos)
egrep -v "^#|^$" /etc/squid/squid.conf > /tmp/squid1
egrep -v "^#|^$" /etc/squid/squid.confori > /tmp/squid2
diff -y --suppress-common-lines /tmp/squid1 /tmp/squid2 | tr -d '\011' > /tmp/squiddif
less -Nis /tmp/squiddif
Controle de IP na rede
Controlar maquinas por IP pode no ser eficiente, quando os usurios descobrirem que podem trocar o IP pra fugir das regras voce perder o controle.
Uma soluo centralizar tudo em um servidor de DHCP pra fornecer o IP pras estaes, pra melhorar a eficiencia, amarre o IP ao MAC-ADRESS da
placa de rede, este servidor de DHCP pode ser configurado pra fornecer alm do IP, tambm o DNS e gateway da rede, isto poupa o trabalho de
configurao das estaes e centraliza tudo em um s lugar, pra saber mais sobre DHCP veja:
http://www.zago.eti.br/dhcpd.txt
http://www.zago.eti.br/pluguse.txt
veja tambm regras de iptables pelo MAC-ADRESS em:
http://www.zago.eti.br/firewall/iptables-mac.txt
Bloqueio de Banners
Protegendo usurios com antivrus
Autenticando usurios
Controle de Banda
Usando ACLs externas
MAC Address
Tags da seo Access Control Lists
tipos de acl
Relatorios e muito mais, acesse:
http://www.linuxman.pro.br/squid/
Formato e manipulao de data no log.

No inicio da linha de log do Squid aparece um numero semelhante a: 1085173079.594


Este numero representa a data e hora no formato Unix, converter para hora humana, por exemplo, 1085173079.594, o que vem depois do ponto so
milesimos de sengundos que no interessa na data, mesmo porque no usamos este formato de tempo, portanto elimine o ponto e o que vem depois dele, o
formato da linha de comando este: date --date='1/1/1970 + <UNIXTIME> seconds', para converter a data 1085173079.594, execute esta
linha de comando:
date --date='1/1/1970 + 1085173079 seconds'
Veja o resultado:
zago@faqcl9$ date --date='1/1/1970 + 1085173079 seconds'
Sex Mai 21 20:57:59 UTC 2004
Caso ocorra uma diferena de 3 horas problema com a configurao do locale, no Brasil so 3 horas a menos do que o GMT, acerte isto
nas configuraes de fuso horario.
Exemplo em perl, data 1085173079.594 no formato Linux (unix), converter para o formato humano
perl -e "print scalar localtime(shift||1085173079.594)"
Retorna;
[zago@faqcl10 zago]$ perl -e "print scalar localtime(shift||1085173079.594)"
Fri May 21 20:57:59 2004
Veja mais sobre data no FAQ
http://www.zago.eti.br/data.txt
Problemas no acesso ao Hotmail + I.E. + Squid.
Algumas estaes windows no acessam o Hotmail, tem algo a ver com a verso do I.E, outros navegadores como Firefox acessa sem prolemas, caso o
problema seja somente com I.E. pra acessar o Hotmail. ento faa esta alterao no teu squid.conf
Adicione no squid.conf as linhas:
acl hotmail_domains dstdomain .hotmail.msn.com
header_access Accept-Encoding deny hotmail_domains
recarregue o squid com: squid -k reconfigure
Prontinho, as estaes windows com I.E. passam acessar o hotmail passando pelo Squid.
Soluo indicada pelo colega Andersonmsp@yahoo.com.br
Indicaes:
Tirar anuncios atraves do squid,veja que legal
http://www.linuxdicas.com.br/article678.html
Pgina principal sobre Squid, indicaes, FAQ, tutoriais, modelos de configurao, squid.conf, modelos de acl e mais dicas em:
http://www.zago.eti.br/squid/A-menu-squid.html
Pgina principal sobre Firewall - iptables
http://www.zago.eti.br/firewall/A-menu-firewall.html
Pgina principal deste site (FAQ)
http://www.zago.eti.br/menu.html

Linux e Active Directory (Integrando COMPLETAMENTE sua estao Linux a um domnio MS Windows 2000/2003 Server)
Por qu?
Reduzir custo gerencial papel de todo bom administrador. Nada mais recomendvel ento, para se iniciar uma boa gesto de recursos de TI, do que
manter centralizado o mximo possvel de informaes. Tecnologicamente falando, uma base centralizada de usurios (e permisses estes usurios)
deixou de ser simplesmente uma opo de implementao e tornou-se uma real necessidade. Este fator levou grande parte das organizaes a operar
em regime de domnio, regime este que, na dcada de 90, tornou bastante popular o sistema operacional Microsoft Windows NT, que a partir da sua
verso 5.0 (Windows 2000) faz uso de uma base de dados centralizada para manter a organizao de todas as informaes da rede: trata-se do Active
Directory, que o servio de diretrio implementado pela Microsoft para servir como depsito concentrador de informaes comuns (objetos). So
exemplos de objetos do Active Directory: contas de usurios, grupos de usurios, impressoras de rede, polticas de controle, etc.
Muito bem, agora que somos experts em "noes bsicas de domnio", podemos notar que at o presente momento s falamos da Microsoft e das
verses Server de seus sistemas operacionais. Sim, ela (e eles) pioneira na implementao deste conceito, mas o fato do sistema operacional Linux
estar conquistando cada vez mais espao dentro das corporaes (atuando tanto como servidores quanto como estaes de trabalho), incentivou a
comunidade Open Source a integr-lo s j existentes "redes Windows". exatamente a que entra o Samba, que no chega a ser um ritmo musical, mas
d uma verdadeira balanada na gerncia de sistemas heterogneos. bem verdade que mquinas com Linux e executando Samba podem
completamente substituir os controladores de domnio (PDC e BDCs), mas AINDA no podem por si s implementar o Active Directory (caracterstica
esta que certamente estar presente na verso 4 do Samba). Sendo assim vemos a necessidade de colocar ambos sistemas operacionais para se
comunicar em um ambiente de rede; e conseguimos tal feito graas ao protocolo SMB.
O escopo deste artigo abrange a configurao do Samba em uma mquina executando Linux, que poder atuar tanto como uma estao de trabalho
quanto como um servidor membro do domnio. Ao trmino da leitura voc estar apto a, a partir de sua estao MS Windows, acessar recursos
compartilhados na mquina Linux e vice-versa, e com todo controle de autenticao e permisses sendo feito pelo Active Directory.
Consideraes iniciais
Irei considerar que voc tenha compilado seu kernel com suporte aos protocolos SMB (menuconfig: File system -> Network File System -> SMB File
system support) e CIFS (menuconfig: File system -> Network File System -> CIFS support).
Espero que voc esteja familiarizado com instalao de pacotes pr-compilados e/ou a partir da compilao de seu cdigo-fonte.
Com o intuito de enfatizar a simplicidade ou complexidade de cada arquivo de configurao, irei utilizar dados e informaes reais do ambiente em que
estou atuando. Nada de "MyDomain", "your-ip-address-here" ou "foo.com". Claro que indicarei quando que voc dever adequar o arquivo s suas
necessidades, mas creio que estarei fazendo isto em vo pois certamente voc j saber.
Resolvi escrever este artigo depois de passar 4 dias buscando informaes sobre como integrar completamente o Samba 3 ao Active Directory. As
informaes que encontrei foram, na maioria das vezes, insuficientes e dispersas. Tive que montar um verdadeiro quebra-cabeas para conseguir o
resultado desejado. Com isso, tento aqui evitar que voc tenha que sair por a "garimpando" informaes para se chegar ao propsito do que prev este
documento.
Se voc como eu, que gosta de ir saltando trechos que voc pensa j conhecer, muito cuidado: podem passar despercebidos pequenos detalhes que
podem fazer grandes diferenas. Recomendo que seja feita uma leitura imparcial de todo o artigo.
O ambiente utilizado
Acabei fazendo a coisa de trs pra frente: primeiro instalei na minha mquina tudo que ensina este artigo, e agora (depois de tudo pronto)
que resolvi escrev-lo. Com isso irei criar um domnio virtual para fazer tudo novamente, passo a passo, durante a escrita deste
documento. Ganho muito com isso, reforando o aprendizado, e quem o l tambm ganha bastante, pois ter a certeza de que os passos
aqui seguidos sero suficientes para atender a necessidade levantada.
Nada de "MyDomain" ou "foo.com". Chega dessas nomenclaturas simblicas: simularemos uma pequena rede e faremos-na da forma mais
convincente possvel. Com a ajuda do VMWare (e de um bom hardware) irei criar um verdadeiro domnio virtual. Por ter a mente aberta,
detestar fanatismo e saber reconhecer o esforo alheio, irei criar, sem o mnimo remorso, o domnio MICROSOFT.COM. Teremos neste
domnio 5 mquinas. Segue abaixo o papel desempenhado e demais informaes importantes sobre cada uma delas:
Sistema Operacional: Microsoft Windows 2003 Server Enterprise Edition (SP1)
Nome na rede: Win2003
Endereo IP: 169.213.64.1/24
Funo: Controlador de domnio; Servidor DNS; Servidor WINS
Sistema Operacional: Microsoft Windows XP Professional (SP2)
Nome na rede: WinXP
Endereo IP: 169.213.64.2/24
Funo: Membro da rede, compartilhando arquivos e impressoras
Sistema Operacional: Microsoft Windows 2000 Professional (SP4)
Nome na rede: Win2K
Endereo IP: 169.213.64.3/24
Funo: Membro da rede, compartilhando arquivos e impressoras
Sistema Operacional: Microsoft Windows 98 Second Edition
Nome na rede: Win98
Endereo IP: 169.213.64.4/24

Funo: Membro da rede, compartilhando arquivos e impressoras


Sistema Operacional: Slackware Linux 10.2 (Kernel 2.6)
Nome na rede: Slack
Endereo IP: 169.213.64.5/24
Funo: Membro da rede, compartilhando arquivos e impressoras
Veja na figura abaixo a tela do VMWare, com as mquinas virtuais j criadas

Obtendo os softwares necessrios


Neste instante considerarei que todos os sistemas operacionais estejam instalados e configurados conforme descrito na especificao anterior. Nenhum
software adicional necessrio nas mquinas executando Microsoft Windows. Para a nossa estao Linux, deveremos obter:
Kerberos5
http://web.mit.edu/kerberos/www/ (current: v1.4.3)
BerkeleyDB
http://www.sleepycat.com/ (current: v4.4.20)
OpenLDAP
http://www.openldap.org/ (current: v2.3.11)
Samba
http://www.samba.org (current: v3.0.21a)
CUPS
http://www.cups.org (current: v1.1.23)
checkinstall
http://asic-linux.com.mx/~izto/checkinstall/ (current: v1.6.0)
As observaes "current" indicam a ltima verso estvel dos softwares na data de publicao deste artigo (Janeiro de 2006). Estas foram as verses
utilizadas no decorrer da composio deste documento.
Muitos desses softwares j vm compilados e distribudos com os arquivos de instalao das mais populares distribuies Linux e, se voc quiser testar a
funcionalidade destes ao invs de baixar novas verses, fique a vontade. Eu tenho o hbito de sempre compilar pacotes importantes ao sistema,
adequando-os minha mquina e, se durante as etapas de configurao descritas por este artigo, ocorrer alguma anomalia, provavelmente ter sido
decorrente da utilizao de um desses pacotes (que no foram compilados com as mesmas opes descritas neste artigo). Deixe de preguia: remova
estes pacotes, descarregue os sources e compile-os.
IMPORTANTE: Aos que ainda no conhecem, checkinstall uma espcie de gerador de pacotes .tgz (geralmente utilizados pelo Slackware). Pode ser
comparado a arquivos .rpm e .deb, utilizados por outras distribuies. No objetivo deste artigo ensinar a instalar e/ou configurar o checkinstall:
assumirei que voc j o tem instalado, portanto durante a instalao de todos os softwares, se voc no o tiver instalado (ou se no deseja gerar o
pacote pr-compilado), ao invs de executar "checkinstall" utilize "make install".
Kerberos
Kerberos um conhecido protocolo de autenticao de rede. Atualmente as duas implementaes mais difundidas so a MIT Kerberos e a Heimdal.
Neste documento estaremos instalando a MIT.
Depois de descarregar o arquivo em sua estao, descompacte-o com:
# tar zxvf krb5-1.4.3.tar.gz
Acesse o diretrio contendo os fontes do Kerberos, digitando:
# cd krb5-1.4.3/src

Para instalar os programas voc dever executar os procedimentos descritos no artigo utilizando a conta de usurio root. Vamos ento gerar o Makefile,
compilar, e instalar. Execute esta seqencia de comandos:
# ./configure --prefix=/usr --enable-dns-for-realm --enable-thread-support
# make
# checkinstall
Chegou a hora de configur-lo. Utilizando o seu editor de texto predileto, crie o arquivo /etc/krb5.conf e edite-o, adequando s suas necessidades. D
uma olhada no arquivo utilizando para a configurao do ambiente descrito neste artigo:
# vi /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
ticket_lifetime = 24000
default_realm = MICROSOFT.COM
dns_lookup_realm = false
dns_lookup_kdc = false
clockskew = 300
kdc_timesync = 1
[realms]
MICROSOFT.COM = {
kdc = 169.213.64.1
}
IMPORTANTE: Observe que o realm foi especificado com caracteres em maisculo. Este um requisito do krb5. Caso voc se esquea e coloque em
minsculo ocorrer um erro (que ser visto mais adiante).
Vamos testar a autenticao via Kerberos, utilizando o usurio Administrator. Digite:
# kinit Administrator
Observe que o sistema j acrescentar as informaes de domnio no momento em que lhe solicita que a senha seja digitada:
Password for Administrator@MICROSOFT.COM:
Este teste pode ser feito com qualquer usurio do domnio, no necessariamente com o usurio Administrator. Como citado anteriormente, se o realm
for informado em minsculo no krb5.conf (microsoft.com ao invs de MICROSOFT.COM), ao ser informada a senha, o sistema retornar o seguinte erro:
kinit(v5): KDC reply did not match expectations while getting initial credentials
Durante a configurao do meu ambiente original me deparei com um problema relativamente pequeno, mas relevante: sincronismo entre as mquinas.
Por padro o Kerberos exige que haja no mximo 5 minutos de diferena entre o relgio da estao e do servidor. Observe o parmetro "clockskew =
300" no arquivo krb5.conf.
Ele est justamente definindo o valor de 300 segundos como sendo o limite de diferena de horrio entre os computadores. No momento da tentativa
de autenticao, caso a diferena entre o horrio das mquinas ultrapasse o estabelecido pela poltica do Kerberos, a mesma ir falhar, retornando o
seguinte erro:
kinit(v5): Clock skew too great while getting initial credentials
Se for esse o caso, verifique as configuraes de regio, fuso-horrio e ajustes do horrio de vero.
Sugiro inclusive, na primeira vez que for tentar autenticar um usurio (utilizando kinit), informe uma senha invlida, objetivando receber a seguinte
mensgem de erro:
kinit(v5): Preauthentication failed while getting initial credentials
Esta mensagem um bom sinal, desde que tenha sido informada, propositalmente, uma senha invlida, pois indica que houve uma tentativa de
autenticar o usurio mas as senhas no coincidiram. Tente novamente, agora com a senha correta: as chances de funcionar so imensas.
Em suma, o resultado de uma tentativa bem sucedida de autenticao pelo Kerberos exatamente NADA. Isso mesmo: se ao executar o kinit (e informar
a senha), o mesmo no lhe exibir nenhuma mensagem, comemore, pois at o presente momento voc est indo bem, e o que se diz respeito a
configurao do protocolo de autenticao est feito.
OpenLDAP
O LDAP (Lightweight Directory Access Protocol) um protocolo utilizado pelos servidores para concentrar informaes em um repositrio logicamente
organizado. graas a ele que informaes comuns podem ser inseridas, alteradas, excludas e consultadas de uma espcie de "banco de dados de

informaes". Ao se registrar um usurio no domnio, por exemplo, as informaes referentes a esse usurio estaro armazenadas e disponveis graas
ao uso deste protocolo. Por sua vez, o OpenLDAP uma implementao OpenSource do LDAP.
Apesar da extenso .tgz (geralmente utilizada por pacotes pr-compilados), os arquivos descarregados do site oficial do OpenLDAP esto em formato de
cdigo-fonte pronto para compilao. Se preferir, ao descarreg-lo, mude a sua extenso para .tar.gz (isso pode ajudar a evitar confuses). No h
mistrio no processo de descompactao:
# tar zxvf openldap-stable-20051018.tar.gz
Feito isto, acessaremos o diretrio onde se encontra o cdigo-fonte do OpenLDAP a fim de compil-lo. A seqncia de comandos :
# cd openldap-3.2.11
# ./configure --prefix=/usr --enable-debug --enable-syslog --enable-cleartext --enable-crypt --enable-lmpasswd --enable-modules --enable-wrappers -with-threads
Durante este procedimento, ocorreu um erro no meu sistema, decorrente do ambiente que estou utilizando (verso do sistema operacional,
componentes instalados, etc). Acredito que se voc estiver utilizando outra distribuio ou outra verso do Slackware, pode ser que no se depare com
este problema. Aparentemente algo relacionado a incompatibilidade de verses do BarkeleyDB. A mensagem de erro foi:
checking for Berkeley DB version match... Berkeley DB version mismatch
header: Sleepycat Software: Berkeley DB 3.3.11: (July 12, 2001)
library: Sleepycat Software: Berkeley DB 4.2.52: (December 3, 2003)
no
configure: error: Berkeley DB version mismatch
Fui ento verificar as verses instaladas e para minha surpresa havia mais de uma verso no sistema. Provavelmente fui descuidado durante a instalao
do Linux e no observei este fato, ou no. Observe os pacotes que estavam instalados:
# ls /var/log/packages/db*
db3-3.3.11-i486-4
db31-3.1.17-i486-1
db4-4.2.52-i486-2
Verifiquei no site oficial e notei que uma verso mais nova estava disponvel. Radicalmente removi os 3 pacotes, executando os comandos:
# removepkg /var/log/packages/db*
# mv /lib/libdb-4.2.so /tmp
# ldconfig
Efetuei o download da ltima verso e descompactei, compilei e instalei assim:
# tar zxvf db-4.4.20.tar.gz # cd db-4.4.20/build_unix # ../dist/configure --prefix=/usr # make # checkinstall
IMPORTANTE: Observe que para eliminar completamente a incompatibilidade, tive que mover o arquivo "libdb-4.2.so" para um outro diretrio. No
tenho absoluta certeza de que ele de fato desnecessrio ao sistema, por isso sugiro que mantenha-o guardado em algum lugar caso, futuramente, a
sua ausncia venha a ocasionar algum tipo de problema.
Depois de instalada a nova verso do BerkeleyDB, retornei ao diretrio do cdigo fonte do OpenLDAP e executei novamente:
# ./configure --prefix=/usr --enable-debug --enable-syslog --enable-cleartext --enable-crypt --enable-lmpasswd --enable-modules --enable-wrappers -with-threads
Agora sim, podemos compil-lo:
# make
# checkinstall
# ldconfig
Pronto: o LDAP est instalado em nossa mquina.
CUPS
CUPS um acrnimo para Common Unix Printing System, ou Sistema Comum de Impresso para Unix. o mais popular gerenciador de impresso para
os sistemas que esto em conformidade com o padro POSIX. Sua instalao bastante simples: depois de descarregado o arquivo em seu computador,
execute:
# tar jxvf cups-1.1.23.tar.bz2
# cd cups-1.1.23
# ./configure --prefix=/usr --enable-debug --enable-ssl --enable-openssl --disable-pam --with-rcdir=/etc/rc.d
# make
# checkinstall
Pronto, o CUPS est instalado em sua mquina. Para se certificar de que est funcionando bem, execute:

# cups-config --version
O resultado do comando ser a verso instalada do CUPS. timo, agora vamos compilar o Samba.
Samba
Finalmente chegamos no grande nome responsvel pela integrao de sistemas heterogneos em uma rede de computadores. Depois de
descarregado o cdigo-fonte, vamos executar os seguintes comandos:
# tar zxvf samba-3.0.21a.tar.gz
# cd samba-3.0.21a/source
# ./configure --prefix=/usr --enable-debug --enable-krb5developer --enable-cups --with-smbwrapper --with-ldap --withads --with-krb5=/usr --with-automount --with-smbmount --with-syslog --with-quotas --with-acl-support --with-winbind
# make
# checkinstall
# mkdir -p /var/log/samba
Este procedimento instala o samba no teu sistema. Vamos ento editar alguns arquivos de configurao. Vale lembrar que voc o deve
fazer com o editor de textos que estiver mais familiarizado. Vamos l:
# vi /etc/nsswitch.conf
As linhas abaixo devem ser criadas ou modificadas dentro do arquivo nsswitch.conf:
passwd:
files winbind
group:
files winbind
shadow: files
hosts:
files dns winbind
Agora vamos editar o principal arquivo de configurao do Samba. Se foram seguidas as recomendaes deste artigo, o mesmo deve ser
criado em /usr/lib/smb.conf. Crie-o, com este contedo:
[global]
workgroup = MICROSOFT
netbios name = Slack
server string = "Samba 3.0.21a w/ ADS Support"
unix charset = LOCALE
log level = 5
log file = /var/log/samba/LOG.%m
max log size = 1024
load printers = yes
domain master = no
wins server = 169.213.64.1
password server = 169.213.64.1
passdb expand explicit = no
ldap ssl = no
security = ads
realm = MICROSOFT.COM
encrypt passwords = yes
printcap name = cups
disable spoolss = yes
show add printer wizard = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printing = cups
[temp]
comment = Diretorio Temporario
path = /tmp
read only = no
Depois de criado o arquivo, voc poder verificar se no houve nenhum erro na informao dos parmetros, digitando:
# testparm
O resultado da sada (aps o segundo ENTER) ser algo semelhante :
Load smb config files from /usr/lib/smb.conf
Processing section "[temp]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
unix charset = LOCALE
workgroup = MICROSOFT
realm = MICROSOFT.COM
server string = "Samba 3.0.21a e Active Directory (by KL3B3R)"
security = ADS
password server = 169.213.64.1
log level = 5
log file = /var/log/samba/LOG.%m
max log size = 1024
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = cups
disable spoolss = Yes
show add printer wizard = No
domain master = No
wins server = 169.213.64.1
ldap ssl = no
passdb expand explicit = No
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = Yes
[temp]
comment = Diretorio Temporario
path = /tmp
read only = No
De acordo com TODAS as documentaes que tinha lido na Internet, os passos descritos at agora seriam suficientes para que eu
conseguisse montar um recurso compartilhado no servidor Win2003 (o que verdade) e tambm permitir que usurios das minhas estaes
Windows pudessem mapear unidades de redes apontando para o compartilhamento no meu Linux (o que no verdade). Enquanto no
criamos o script de load/unload do Samba, vamos inici-lo assim:
# smbd -D
# nmbd -D
# winbindd -B
Prontinho. Prontinho entre aspas. Ainda no est tudo pronto, mas neste momento o Samba est sendo executado em sua mquina, e
podemos ento montar (no nosso Linux) compartilhamentos existentes no servidor Win2003. Por falar nisso, vamos dar uma olhada no que
se encontra compartilhado nele:

Trabalhando em rede
IMPORTANTE: Sugeri que no momento da compilao do samba fosse utilizada a opo --enable-debug para ajudar no rastreamento de
possveis falhas, contudo a sada dos comandos sero muito mais informativas (verbosas). Depois de todos os testes executados com
sucesso, recompile-o sem esta opo, afim de eliminar mensagens desnecessrias.
A figura abaixo exibe algumas informaes sobre o servidor win2003, como tabela de mapeamentos WINS, ambiente de rede, registros
DNS, resoluo de nomes em linha de comando e computadores registrados no domnio:

At o presente momento nossa estao Slack no membro do domnio MICROSOFT.COM (conforme pudemos ver na imagem).
Vamos ento integr-la ao domnio. Para isto necessrio informar as credenciais de um usurio membro do grupo Domain Admins
(Administradores do domnio):
# net ads join -U Administrator
Administrator's password: *******
Using short domain name -- MICROSOFT
Joined 'SLACK' to realm 'MICROSOFT.COM'
A partir deste momento o computador Slack deve ser exibido na lista de computadores pertencentes ao domnio MICROSOFT.COM.
Agora que estamos aptos a comunicar atravs da rede, utilizando o protocolo SMB, vamos tentar descobrir alguns recursos da rede. A partir
de sua estao Linux execute:
# smbclient -L 169.213.64.1
Deixe o campo Password em branco e pressione ENTER para que seja feita uma tentativa de logon annimo. O resultado, no ambiente dado
foi:
Anonymous login successful
Domain=[MICROSOFT] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
Sharename
Type
Comment
-----------------Error returning browse list: NT_STATUS_ACCESS_DENIED
session request to 169.213.64.1 failed (Called name not present)
session request to 169 failed (Called name not present)
Anonymous login successful
Domain=[MICROSOFT] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
Server
Comment
--------------SLACK
Samba 3.0.21a e Active Directory (by KL3B3R)
WIN2003
Microsoft Windows 2003 Enterprise SP1
WIN2K
Microsoft Windows 2000 Professional SP4
WIN98
Microsoft Windows 98 SE
WINXP
Microsoft Windows XP Professional SP2
Workgroup
Master
--------------MICROSOFT
WIN2003
Observe que prximo ao final do resultado foram listadas as cinco mquinas (com suas respectivas descries) que compem a rede. Um
pouco acima teramos os compartilhamentos disponveis no servidor, entretanto no informamos um usurio e senha vlidas para acessar
tal mquina, o que no permitiu que os compartilhamentos fossem listados, vide NT_STATUS_ACCESS_DENIED.
IMPORTANTE: O comando DEVE funcionar mesmo substituindo o endereo ip do servidor pelo seu nome na rede. O resultado dever ser
exatamente o mesmo quando se digitar:
# smbclient -L win2003
Criamos alguns compartilhamentos na estao Win98, conforme exibido na figura abaixo:

Vamos ento tentar utilizar o mesmo comando para efetuar logon annimo nesta estao. Observe o resultado:
# smbclient -L win98
Password:
Sharename
--------CORREIO
PUBLIC
JOGOS
IPC$
Server
---------

Type
---Disk
Disk
Disk
IPC

Comment
------Recipiente para correios eletrnicos
Pasta de domnio pblico
Console para Atari 2600
Comunicao remota entre processos
Comment
-------

Workgroup
Master
--------------Ao contrrio do que acontece com os sistemas baseados em Windows NT, o Microsoft Windows 98 (bem como 95 e ME) no foram a
necessidade de autenticao. Podemos ento montar estes compartilhamentos na nossa estao Linux, veja:
# mkdir -p /mnt/games
# mount -t smbf //win98/jogos /mnt/games
# ls -l /mnt/games
total 322K
drwxr-xr-x 1 root root 4.0K 2006-01-15 16:55 Duke3D/
-rwxr-xr-x 1 root root 29K 1999-05-05 21:22 FREECELL.EXE*
-rwxr-xr-x 1 root root 120K 1999-05-05 21:22 MSHEARTS.EXE*
-rwxr-xr-x 1 root root 168K 1999-05-05 21:22 SOL.EXE*
-rwxr-xr-x 1 root root 576 2006-01-15 16:59 scores.txt*
Tentemos ento novamente conectar (listar os compartilhamentos) do servidor win2003, mas desta vez informando credenciais
autenticveis. Repetirei o comando exibido um pouco acima, mas desta vez tentando logar com o usurio William Henry Gates
(billgates@microsoft.com) e senha "bluescreen". Execute o seguinte comando, e perceba o resultado:
# smbclient -L win2003 -U billgates%bluescreen
Domain=[MICROSOFT] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
Sharename
Type
Comment
-----------------C$
Disk
Default share
Filmes
Disk
ltimos lanamentos do cinema
IPC$
IPC
Remote IPC
ADMIN$
Disk
Remote Admin
Processos
Disk
Documentos privativos
SYSVOL
Disk
Logon server share
Clipes
Disk
Somente artistas renomados
NETLOGON
Disk
Logon server share
Imagens
Disk
Damas com e sem pudor
Domain=[MICROSOFT] OS=[Windows Server 2003 3790 Service Pack 1]
Server=[Windows Server 2003 5.2]
Server
--------SLACK
WIN2003
WIN2K

Comment
------Samba 3.0.21a e Active Directory (by KL3B3R)
Microsoft Windows 2003 Enterprise SP1
Microsoft Windows 2000 Professional SP4

WIN98
WINXP

Microsoft Windows 98 SE
Microsoft Windows XP Professional SP2

Workgroup
Master
--------------MICROSOFT
WIN2003
Excelente: realmente estamos conseguindo autenticar os usurios do Active Directory. Tente o mesmo comando, informando uma senha
invlida e observe o resultado:
# smbclient -L win2003 -U billgates%PieInTheFace
session setup failed: NT_STATUS_LOGON_FAILURE
Vamos agora montar uma pasta compartilhada no win2003. Execute:
# mkdir -p /mnt/movies
# mount -t sbmfs -o username=billgates,password=bluescreen //win2003/filmes /mnt/movies
O triste resultado deve ser:
cli_negprot: SMB signing is mandatory and we have disabled it.
1704: protocol negotiation failed
Surpresa? No se preocupe, isto j era esperado. Este problema acontece porque recentemente a Microsoft alterou seu protocolo e incluiu
nele algumas melhorias no que diz respeito a segurana. A verso atualizada chamada CIFS, que suporta algumas caractersticas no
suportadas pelo SMBFS. Devido a conhecidos problemas de segurana muitos servidores Windows 2003 so configurados para recusar
acesso clientes usando SMBFS. Portanto, devemos efetuar a montagem utilizando o tipo CIFS, e no meu caso, s funcionou informando
(na linha de comando) nome do usurio, senha, e o endereo ip (e no o nome) do win2003. Eis:
# mount -t cifs -o username=billgates,password=bluescreen //169.213.64.1/filmes /mnt/movies
H uma maneira de desativar esta opo no Windows 2003, mas no sei at que ponto isto poderia ser interessante. Acesse "Administrative
Tools" -> "Domain Controller Security Settings" -> "Local Policies" -> "Security Options". Localize a entrada "Microsoft network server:
Digitally sign communications (always)", desative-a e execute o gpupdate. Apesar de (com essa alterao) j conseguirmos montar os
compartilhamentos especificando SMBFS como tipo de sistema de arquivos, problemas de "Acesso Negado" ocorreram no meu ambiente
quando na tentativa de utilizar um usurio sem privilgios administrativos. Nem entrarei no mrito da questo pois no recomendo
desabilitar opes que so implementados para incrementar segurana dos sistemas. Sugiro que utilize "-t cifs" quando da necessidade de
se conectar compartilhamentos localizados em controladores de domnio Windows 2003 e "-t smbfs" para as demais situaes.
Vamos ento conectar-nos a um compartilhamento de cada uma das mquinas da nossa rede, para testar de uma s vez os
compartilhamentos das verses mais comuns do Microsoft Windows. Podemos comear criando os pontos de montagem:
# cd /mnt
# mkdir win98 win2k winxp win2003
# mount -t smbfs -o username=billgates,password=bluescreen //win98/jogos /mnt/win98
# mount -t smbfs -o username=billgates,password=bluescreen //win2k/softwares /mnt/win2k
# mount -t smbfs -o username=billgates,password=bluescreen //winxp/bd /mnt/winxp
# mount -t cifs -o username=billgates,password=bluescreen //169.213.64.1/netlogon /mnt/win2003
Agora sim, conseguimos acessar qualquer compartilhamento de qualquer computador da rede, desde que o usurio informado tenha acesso
aos mesmos. Mas... e o inverso? Queremos agora que todos as outras mquinas consigam se conectar aos diretrios compartilhados no
nosso slack. Let's try, baby? ;)
Podemos tentar dia e noite, noite e dia que no conseguiremos acessar os compartilhamentos da nossa estao slack. Se o fizermos a partir
do win98, o mesmo ir solicitar uma senha para se conectar em IPC$ conforme mostra a figura abaixo:

Se tentarmos de qualquer outro sistema baseado em Windows NT, a famosa janelinha de logon aparecer, informando que o login atual
no tem permisso para se conectar em slack. E no adianta... qualquer usurio do domnio que voc tentar autenticar no Linux ir falhar.
Perceba nas imagens:

Confesso que na minha instalao original (anterior a esse ambiente virtual), neste ponto o stress tomava conta de meu ser. Recorri a
muitas documentaes na Internet e absolutamente nenhuma informao a respeito solucionava o problema. Mas como eu sou brasileiro e
no desisto nunca... depois de 3 dias de labuta com o tal sistema que no autenticava, fui pra casa, abri outra Skol, sentei em frente ao
meu PC e comecei a jogar Quake 4. Durante o jogo eu mentalizava que cada monstro inimigo era um membro do grupo de
desenvolvimento do SambaTeam, e a eu "pregava bala" com gosto. Fazia questo de estraalhar, um a um, todos aqueles malditos. Matei
pelo menos umas sete ou oito geraes de cada um dos desenvolvedores - malfeitores que no forneciam documentao suficiente para
solucionar nossos problemas. Foi quando de repente me veio cabea: "H? Mas com relao a este problema, a documentao oficial foi o
nico lugar onde ainda no recorri". E fui ento pesquisar a respeito nas manpages e FAQs do site oficial. E no de ver que a soluo
estava descrita l? Os papis se inverteram: eu que era o monstro sem corao que de forma injusta agredia verbalmente pessoas to
idneas e sensatas. At hoje peo perdo por tamanha "cretinice" de minha parte. Mas tudo bem, eu tambm sou quase um mortal e por
isso tenho o direito de quase pecar. Voltando soluo, ela baseia-se na utilizao de uma biblioteca fornecida junto com o cdigo fonte do
samba. Bastou acessar o diretrio onde havia descompactado o Samba e:
# cp source/nsswitch/libnss_winbind.so /lib
# ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
Agora sim podemos nos conectar nossa estao Linux de qualquer mquina da rede, autenticando usurios do Active Directory, conforme
mostra a figura abaixo:

IMPORTANTE: Esteja sempre atento ao sincronismo dos relgios das mquinas pois caso a diferena ultrapasse o limite estabelecido pelas
configuraes do Kerberos os usurios no sero autenticados, conseqentemente o acesso no ser permitido.
E por falar em autenticao de usurios, que tal incrementarmos nosso smb.conf? Podemos definir polticas de acesso por usurios ou
grupos de usurios do domnio. Antes disso, utilize o CUPS (http://localhost:631) para instalar suas impressoras. Feito isso, edite o
smb.conf, mantendo intacta a seo [global], deixando as demais sesses assim:
[Public]
comment = Diretorio Temporario
path = /tmp
read only = no
[Install]

comment = Arquivos de Instalao


valid users = MICROSOFT"Domain Admins"
path = /shared/install
read only = Yes
[Artigos]
comment = Publicaes diversas
path = /shared/artigos
valid users = MICROSOFTKleber
read only = no
browseable = yes
[Scripts]
comment = Acesso restrito
path = /shared/scripts
valid users = MICROSOFTPatrick
read only = no
browseable = no
[Entretenimento]
comment = Have fun!
path = /shared/fun
valid users = MICROSOFTBillGates
[Sexy pics]
comment = Proibido para menores de 18 anos
path = /shared/xxx
valid users = MICROSOFTAdults only
browseable = no
read only = yes
guest ok = no
[printers]
comment = Todas as impressoras
path = /var/spool/samba
create mask = 0600
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = Yes
IMPORTANTE: Obviamente os diretrios informados no PATH de cada uma das sees devem existir ou ser criados. Lembre-se que aps
qualquer alterao feita no arquivo de configurao do Samba, os seus daemons deve sem reinicializados.
timo, agora o nosso ambiente est completo. partir de uma das estaes (win2k), me conectei alguns recursos disponveis na estao
Slack. Observe que ao se tentar acessar o compartilhamento "Install", uma janela se abre para que seja informada uma conta pertencente
ao grupo "Domain Admins", pois este o nico grupo que tem acesso ao recurso. Veja na figura a seguir:

Excelente, agora temos nossa estao Linux absolutamente integrada ao Active Directory. Com estes procedimentos voc pode utilizar sua
estao Linux de forma transparente no seu ambiente de rede. Melhor que isso, voc pode criar um servidor de arquivos para seu domnio,
com todo o conforto e segurana da utilizao de autenticao do Active Directory.
Script de controle

Para facilitar a manipulao dos servios, geralmente utilizamos shell-scripts, que nada mais so que pequenos programas que (na maioria das vezes)
executam comandos em lote, definidos por uma seqncia de condies. A carga/descarga dos daemons do Samba muito simples e o script de
controle no poderia ser diferente. Veja o arquivo que utilizei durante este laboratrio:
# touch /etc/rc.d/sh.Samba-rc
# chmod +x /etc/rc.d/sh.Samba-rc
# vi /etc/rc.d/sh.Samba-rc

#!/bin/sh
#
# /etc/rc.d/sh.Samba-rc - Controla a inicializao dos servios do SAMBA.
#
# by KL3B3R - Janeiro de 2006
SMBD"=/usr/sbin/smbd"
NMBD="/usr/sbin/nmbd"
WIND="/usr/sbin/winbindd"
# O que pra fazer?
case "$1" in
start)
echo -n "Inicializando SAMBA... "
$SMBD -D
$NMBD -D
$WIND -B
sleep 1
echo "Concludo!"
;;
stop)
echo -n "Finalizando servios do SAMBA... "
killall -9 smbd nmbd winbindd
sleep 1
echo " Concludo!"
;;
*)
echo "Use: sh.Samba-rc {start|stop}"
exit 1
esac
Para testar, j sabe:
# /etc/rc.d/sh.Samba-rc start
ou
# /etc/rc.d/sh.Samba-rc stop
Voc encontrar na Internet centenas de milhares de dzias de lotes de zilhes de scripts de controle, com mais recursos (como verificao de status do
servio, inicializao com conta restrita de usurio, etc). Faa as adequaes de acordo com suas necessidades. Viva o software livre.
Consideraes finais
Antes de mais nada, agradeo equipe de desenvolvimento do VMWare. Sou admirador assumido deste software, que uma ferramenta essencial a
todo administrador que tem necessidade de fazer testes de funcionamento (e em especial aqueles que podem comprometer sistemas em produo).
Acho que deveria ser construdo um monumento em forma de caricatura do idealizador do VMWare bem ao lado da esttua da liberdade e que o dia do
seu aniversrio fosse considerado um feriado internacional.
Obviamente no conseguiramos simular o ambiente utilizado com um hardware muito modesto. Criei o domnio virtual (5 mquinas virtuais) em meu
laptop (Intel Pentium 4 HT 3.0GHz, 1 GB RAM, HD 100 GB, AGP Radeon 9700). Saliento que este artigo foi escrito durante a montagem do ambiente
virtual, e que todas as informaes aqui contidas foram testadas em "tempo de execuo". S pra lembrar: a minha estao Linux foi instalada com
Slackware 10.2 e Kernel 2.6.14. Apesar disto, no h nenhum tipo de garantia de que os procedimentos descritos iro lhe proporcional o mesmo
resultado (apesar de eu acreditar veementemente nisto). Tenha sempre backups atualizados de seus arquivos importantes e de configuraes.
Lembre-se que opes semelhante "--enable-debug" utilizadas na compilao de grande parte dos programas envolvidos neste artigo geram sadas
fofoqueiras, que deixam de ser teis depois que "the system is running fine" :) Moleza... faa uma cpia dos arquivos de configurao do programa a ser
reconstrudo, desinstale os pacotes, entre no diretrio contendo o cdigo fonte, execute "make clean", rode o "./configure" novamente (sem o --enabledebug) e instale-o.
Este documento est em sua primeira reviso. Conto com sua contribuio para melhor-lo. Dvidas, esclarecimentos, piadas, elogios, contos erticos,
sugestes, fotos interessantes, e reclamaes podem ser enviadas para meu e-mail particular (kleber@usa.com). As correntes e qualquer tipo de SPAM
esto dispensadas. Ao fazer uso deste artigo como auxilio para sua configurao, gostaria que voc me enviasse uma mensagem, informando sucesso ou
falha.
BOA SORTE!!!