Antes de tudo agradeço a todos que seguem meu blog e que estão dispostos a criar novas soluções na área de informática e compartilha-las para difundirmos o conhecimento sem restrições. Este é meu segundo artigo, espero ser claro o suficiente para que tenham êxito nesta solução o tanto quanto eu tive.
Resolvi disponibilizar um tutorial bem detalhado de um servidor com Proxy autenticado com opção do usuário poder alterar sua senha da internet e relatório de acesso a internet por usuário.
Nosso servidor conta também com pastas compartilhadas para uma eventual troca de arquivos entre os usuários e, é claro, um servidor de impressão para facilitar a instalação e não ter aquele problema da máquina, que está compartilhando a impressora estar desligada ou com vírus, que é o mais comum.
Primeiramente ditarei o ambiente que utilizo e que está em funcionamento: Ubuntu Server 8.04.
Considerando que o servidor tenha duas placas de rede e acesso à internet.
No meu caso tenho IP fixo, então meu modem dá o IP real da internet para minha placa de rede onboard.
Na placa de rede off-board coloco um switch de 24 portas para fornecer internet para os demais.
Resolvi disponibilizar um tutorial bem detalhado de um servidor com Proxy autenticado com opção do usuário poder alterar sua senha da internet e relatório de acesso a internet por usuário.
Nosso servidor conta também com pastas compartilhadas para uma eventual troca de arquivos entre os usuários e, é claro, um servidor de impressão para facilitar a instalação e não ter aquele problema da máquina, que está compartilhando a impressora estar desligada ou com vírus, que é o mais comum.
Primeiramente ditarei o ambiente que utilizo e que está em funcionamento: Ubuntu Server 8.04.
Considerando que o servidor tenha duas placas de rede e acesso à internet.
No meu caso tenho IP fixo, então meu modem dá o IP real da internet para minha placa de rede onboard.
Na placa de rede off-board coloco um switch de 24 portas para fornecer internet para os demais.
Atualizando servidor e criando usuário root
Edite o arquivo /etc/apt/sources.list e remova todas as "#" dos "#deb".
# apt-get update
# apt-get upgrade
Pode demorar até 20 minutos, dependendo da conexão.
# passwd root
Adicione a senha do root.
# apt-get update
# apt-get upgrade
Pode demorar até 20 minutos, dependendo da conexão.
# passwd root
Adicione a senha do root.
Instalando os pacotes necessários
Digite:# apt-get install squid sarg samba php5-cgi gcc swat xinetd cupsys make mc g++ patch
Obs.: porta do Swat é 901 e a do CUPS é 631.
Antes de editar o arquivo original do Squid vamos criar um backup do mesmo:
# cp squid.conf squid.conf.backupEdite o arquivo /etc/squid/squid.conf e copie a configuração abaixo, não esquecendo de modificar o nome da máquina e o IP na configuração do squid.conf.
# -----------------------------------------------------------------------------
# SCRIPT DE CONFIGURACAO DO PROXY-SQUID - FABIO VIEIRA
# -----------------------------------------------------------------------------
# Autor: Fabio Vieira
# fabioovieira@hotmail.com
# Script de Proxy Squid v.0.1-beta
#
# -----------------------------------------------------------------------------
# CONFIGURACAO PARA AUTENTICACAO DO PROXY
# -----------------------------------------------------------------------------
#
# -----------------------------------------------------------------------------
# PORTA DE REDIRECIONAMENTO PARA O PROXY
# -----------------------------------------------------------------------------
cache_mgr e-mail_do_admin@admin.com.br
http_port IP_DO_SERVIDOR:3128 transparent
visible_hostname IP_DO_SERVIDOR
#
# -----------------------------------------------------------------------------
# CACHE DE MEMORIA DE ACESSOS
# -----------------------------------------------------------------------------
maximum_object_size_in_memory 1024 KB
maximum_object_size 40960 KB
cache_swap_low 90
cache_swap_high 95
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no
cache ignore-private
refresh_pattern -i \.nup$ 120 90% 180 override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|rar|ppt|doc|tiff|cab)$ 43200 90% 432000 override-expire ignore
no-cache ignore-private
refresh_pattern -i imp 0 0% 0
refresh_pattern -i \.index.(html|htm)$ 0 40% 10080
refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320
refresh_pattern . 0 40% 40320
refresh_pattern (/cgi-bin/|\?) 0 0% 0
#
# -----------------------------------------------------------------------------
# ARQUIVOS ONDE REGISTRAM OS LOGS DE ACESSO
# -----------------------------------------------------------------------------
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
cache_log /var/squid/logs/cache.log
cache_dir ufs /var/spool/squid 5000 16 256
error_directory /usr/share/squid/errors/Portuguese
#
# -----------------------------------------------------------------------------
# REGRAS DE ACESSO PARA LIBERACAO DE PORTAS
# -----------------------------------------------------------------------------
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 110
acl Safe_ports port 25
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 901
acl Safe_ports port 1025-65535
acl Safe_ports port 3389
acl purge method PURGE
acl CONNECT method CONNECT
#
# -----------------------------------------------------------------------------
# PROIBE ACESSO AS PORTAS NAO LISTADAS ACIMA
# -----------------------------------------------------------------------------
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#
# -----------------------------------------------------------------------------
# DESATIVA A VERIFICACAO DE LETRAS MAIUSCULAS E MINUSCULAS
# -----------------------------------------------------------------------------
auth_param basic casesensitive off
#
# -----------------------------------------------------------------------------
# CONFIGURACOES BASICAS
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# POLITICA DE ACESSO POR USUARIO, HORARIO, IPS, PALAVRAS E DOMINIOS
# -----------------------------------------------------------------------------
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
#
# -----------------------------------------------------------------------------
# REGRA QUE LIBERA ACESSO TOTAL A INTERNET POR IP MENOS AOS SITES BLOQUEADOS
# -----------------------------------------------------------------------------
acl ips_liberados src "/etc/squid/acls/liberados/ips"
http_access allow ips_liberados
#
# -----------------------------------------------------------------------------
# REGRA QUE BLOQUEIA ACESSO TOTAL A INTERNET (BLOQUEIA IP PARA ACESSO)
# -----------------------------------------------------------------------------
acl ips_bloqueados src "/etc/squid/acls/bloqueados/ips"
http_access deny ips_bloqueados
#
# -----------------------------------------------------------------------------
# AUTENTICACAO DE USUARIOS PARA ACESSO A INTERNET
# -----------------------------------------------------------------------------
auth_param basic program /usr/lib/squid/ncsa_auth /usr/local/squid/etc/passwd
auth_param basic realm Proxy server Fabio Vieira. ATENCAO! Ao digitar seu login e senha o usuario declara estar ciente do conteudo acessado na internet.
auth_param basic credentialsttl 1 hours
# auth_param basic children 5
#
# -----------------------------------------------------------------------------
# PEDE A AUTENTICACAO NO PROXY
# -----------------------------------------------------------------------------
acl autenticados proxy_auth REQUIRED
#
# -----------------------------------------------------------------------------
# LIBERA O ACESSO NA HORA DO ALMOCO
# -----------------------------------------------------------------------------
alc almoco time 12:00-13:00
acl acesso_full url_regex -i "/etc/squid/acls/almoco"
http_access allow acesso_full almoço
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE USUARIOS LIBERADOS
# -----------------------------------------------------------------------------
acl user_liberados proxy_auth "/etc/squid/acls/liberados/usuarios"
http_access allow user_liberados
#
# -----------------------------------------------------------------------------
# DEFINE OS USUARIOS TOTALMENTES LIBERADOS
# -----------------------------------------------------------------------------
acl user_total proxy_auth "/etc/squid/acls/liberados/usuarios_total"
http_access allow user_total
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE SITES LIBERADOS
# -----------------------------------------------------------------------------
acl dominios_liberados dstdomain -i "/etc/squid/acls/liberados/dominios"
http_access allow dominios_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE PALAVRAS LIBERADAS
# -----------------------------------------------------------------------------
acl palavras_liberadas url_regex -i "/etc/squid/acls/liberados/palavras"
http_access allow palavras_liberadas
#
#------------------------------------------------------------------------------
# DEFINE DLLs E DOMINIOS LIBERADOS PARA O MSN-PROXY
# -----------------------------------------------------------------------------
acl msn_proxy url_regex sqmserver.dll contacts.msn.com login.live.com
http_access allow msn_proxy
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE USUARIOS BLOQUEADOS
# -----------------------------------------------------------------------------
acl user_bloqueados proxy_auth "/etc/squid/acls/bloqueados/usuarios"
http_access deny user_bloqueados dominios_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE SITES BLOQUEADOS
# -----------------------------------------------------------------------------
acl dominios_bloqueados dstdomain -i "/etc/squid/acls/bloqueados/dominios"
http_access deny dominios_bloqueados user_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE PALAVRAS BLOQUEADAS
# -----------------------------------------------------------------------------
acl palavras_bloqueadas url_regex -i "/etc/squid/acls/bloqueados/palavras"
http_access deny palavras_bloqueadas user_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE EXTESOES BLOQUEADAS
# -----------------------------------------------------------------------------
acl extensoes url_regex -i "/etc/squid/acls/bloqueados/extensoes"
http_access deny extensoes user_bloqueados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO QUE BLOQUEIA DOMINIOS DO MSN
# -----------------------------------------------------------------------------
acl msn url_regex -i "/etc/squid/acls/bloqueados/msn_dominios"
http_access deny msn
#
# -----------------------------------------------------------------------------
# LIBERACAO DE ACESSO AO SQUID NA REDE LOCAL
# -----------------------------------------------------------------------------
acl redelocal src 192.168.0.0/255.255.255.0
http_access deny redelocal
#
# -----------------------------------------------------------------------------
# BLOQUEIA TODO RESTANTE
# -----------------------------------------------------------------------------
no_cache deny SSL_ports
http_access deny all
# SCRIPT DE CONFIGURACAO DO PROXY-SQUID - FABIO VIEIRA
# -----------------------------------------------------------------------------
# Autor: Fabio Vieira
# fabioovieira@hotmail.com
# Script de Proxy Squid v.0.1-beta
#
# -----------------------------------------------------------------------------
# CONFIGURACAO PARA AUTENTICACAO DO PROXY
# -----------------------------------------------------------------------------
#
# -----------------------------------------------------------------------------
# PORTA DE REDIRECIONAMENTO PARA O PROXY
# -----------------------------------------------------------------------------
cache_mgr e-mail_do_admin@admin.com.br
http_port IP_DO_SERVIDOR:3128 transparent
visible_hostname IP_DO_SERVIDOR
#
# -----------------------------------------------------------------------------
# CACHE DE MEMORIA DE ACESSOS
# -----------------------------------------------------------------------------
maximum_object_size_in_memory 1024 KB
maximum_object_size 40960 KB
cache_swap_low 90
cache_swap_high 95
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no
cache ignore-private
refresh_pattern -i \.nup$ 120 90% 180 override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|rar|ppt|doc|tiff|cab)$ 43200 90% 432000 override-expire ignore
no-cache ignore-private
refresh_pattern -i imp 0 0% 0
refresh_pattern -i \.index.(html|htm)$ 0 40% 10080
refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320
refresh_pattern . 0 40% 40320
refresh_pattern (/cgi-bin/|\?) 0 0% 0
#
# -----------------------------------------------------------------------------
# ARQUIVOS ONDE REGISTRAM OS LOGS DE ACESSO
# -----------------------------------------------------------------------------
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
cache_log /var/squid/logs/cache.log
cache_dir ufs /var/spool/squid 5000 16 256
error_directory /usr/share/squid/errors/Portuguese
#
# -----------------------------------------------------------------------------
# REGRAS DE ACESSO PARA LIBERACAO DE PORTAS
# -----------------------------------------------------------------------------
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 110
acl Safe_ports port 25
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 901
acl Safe_ports port 1025-65535
acl Safe_ports port 3389
acl purge method PURGE
acl CONNECT method CONNECT
#
# -----------------------------------------------------------------------------
# PROIBE ACESSO AS PORTAS NAO LISTADAS ACIMA
# -----------------------------------------------------------------------------
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#
# -----------------------------------------------------------------------------
# DESATIVA A VERIFICACAO DE LETRAS MAIUSCULAS E MINUSCULAS
# -----------------------------------------------------------------------------
auth_param basic casesensitive off
#
# -----------------------------------------------------------------------------
# CONFIGURACOES BASICAS
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# POLITICA DE ACESSO POR USUARIO, HORARIO, IPS, PALAVRAS E DOMINIOS
# -----------------------------------------------------------------------------
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
#
# -----------------------------------------------------------------------------
# REGRA QUE LIBERA ACESSO TOTAL A INTERNET POR IP MENOS AOS SITES BLOQUEADOS
# -----------------------------------------------------------------------------
acl ips_liberados src "/etc/squid/acls/liberados/ips"
http_access allow ips_liberados
#
# -----------------------------------------------------------------------------
# REGRA QUE BLOQUEIA ACESSO TOTAL A INTERNET (BLOQUEIA IP PARA ACESSO)
# -----------------------------------------------------------------------------
acl ips_bloqueados src "/etc/squid/acls/bloqueados/ips"
http_access deny ips_bloqueados
#
# -----------------------------------------------------------------------------
# AUTENTICACAO DE USUARIOS PARA ACESSO A INTERNET
# -----------------------------------------------------------------------------
auth_param basic program /usr/lib/squid/ncsa_auth /usr/local/squid/etc/passwd
auth_param basic realm Proxy server Fabio Vieira. ATENCAO! Ao digitar seu login e senha o usuario declara estar ciente do conteudo acessado na internet.
auth_param basic credentialsttl 1 hours
# auth_param basic children 5
#
# -----------------------------------------------------------------------------
# PEDE A AUTENTICACAO NO PROXY
# -----------------------------------------------------------------------------
acl autenticados proxy_auth REQUIRED
#
# -----------------------------------------------------------------------------
# LIBERA O ACESSO NA HORA DO ALMOCO
# -----------------------------------------------------------------------------
alc almoco time 12:00-13:00
acl acesso_full url_regex -i "/etc/squid/acls/almoco"
http_access allow acesso_full almoço
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE USUARIOS LIBERADOS
# -----------------------------------------------------------------------------
acl user_liberados proxy_auth "/etc/squid/acls/liberados/usuarios"
http_access allow user_liberados
#
# -----------------------------------------------------------------------------
# DEFINE OS USUARIOS TOTALMENTES LIBERADOS
# -----------------------------------------------------------------------------
acl user_total proxy_auth "/etc/squid/acls/liberados/usuarios_total"
http_access allow user_total
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE SITES LIBERADOS
# -----------------------------------------------------------------------------
acl dominios_liberados dstdomain -i "/etc/squid/acls/liberados/dominios"
http_access allow dominios_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE PALAVRAS LIBERADAS
# -----------------------------------------------------------------------------
acl palavras_liberadas url_regex -i "/etc/squid/acls/liberados/palavras"
http_access allow palavras_liberadas
#
#------------------------------------------------------------------------------
# DEFINE DLLs E DOMINIOS LIBERADOS PARA O MSN-PROXY
# -----------------------------------------------------------------------------
acl msn_proxy url_regex sqmserver.dll contacts.msn.com login.live.com
http_access allow msn_proxy
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE USUARIOS BLOQUEADOS
# -----------------------------------------------------------------------------
acl user_bloqueados proxy_auth "/etc/squid/acls/bloqueados/usuarios"
http_access deny user_bloqueados dominios_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE SITES BLOQUEADOS
# -----------------------------------------------------------------------------
acl dominios_bloqueados dstdomain -i "/etc/squid/acls/bloqueados/dominios"
http_access deny dominios_bloqueados user_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE PALAVRAS BLOQUEADAS
# -----------------------------------------------------------------------------
acl palavras_bloqueadas url_regex -i "/etc/squid/acls/bloqueados/palavras"
http_access deny palavras_bloqueadas user_liberados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO DE EXTESOES BLOQUEADAS
# -----------------------------------------------------------------------------
acl extensoes url_regex -i "/etc/squid/acls/bloqueados/extensoes"
http_access deny extensoes user_bloqueados
#
# -----------------------------------------------------------------------------
# DEFINE O CAMINHO DO ARQUIVO QUE BLOQUEIA DOMINIOS DO MSN
# -----------------------------------------------------------------------------
acl msn url_regex -i "/etc/squid/acls/bloqueados/msn_dominios"
http_access deny msn
#
# -----------------------------------------------------------------------------
# LIBERACAO DE ACESSO AO SQUID NA REDE LOCAL
# -----------------------------------------------------------------------------
acl redelocal src 192.168.0.0/255.255.255.0
http_access deny redelocal
#
# -----------------------------------------------------------------------------
# BLOQUEIA TODO RESTANTE
# -----------------------------------------------------------------------------
no_cache deny SSL_ports
http_access deny all
Criando o arquivo que irá armazenar os logins e senhas dos usuários do proxy
Digite:
# mkdir /usr/local/squid
# mkdir /usr/local/squid/etc
# touch /usr/local/squid/etc/passwd
# chmod 777 /usr/local/squid/etc/passwd
Criar arquivo de cache dos diretórios:
# mkdir /var/cache/squid
# chmod 777 /var/cache/squid
Pastas das ACLs:
# mkdir /etc/squid/acls
# mkdir /usr/local/squid
# mkdir /usr/local/squid/etc
# touch /usr/local/squid/etc/passwd
# chmod 777 /usr/local/squid/etc/passwd
Criar arquivo de cache dos diretórios:
# mkdir /var/cache/squid
# chmod 777 /var/cache/squid
Pastas das ACLs:
# mkdir /etc/squid/acls
# mkdir /etc/squid/acls/bloqueados
# mkdir /etc/squid/acls/liberados
ACLs:
# touch /etc/squid/acls/almoco
# touch /etc/squid/acls/bloqueados/domínios
# touch /etc/squid/acls/bloqueados/extensões
# touch /etc/squid/acls/bloqueados/ips
# touch /etc/squid/acls/bloqueados/msn_dominios
# touch /etc/squid/acls/bloqueados/palavras
# touch /etc/squid/acls/bloqueados/usuarios
# touch /etc/squid/acls/liberados/domínios
ACLs:
# touch /etc/squid/acls/almoco
# touch /etc/squid/acls/bloqueados/domínios
# touch /etc/squid/acls/bloqueados/extensões
# touch /etc/squid/acls/bloqueados/ips
# touch /etc/squid/acls/bloqueados/msn_dominios
# touch /etc/squid/acls/bloqueados/palavras
# touch /etc/squid/acls/bloqueados/usuarios
# touch /etc/squid/acls/liberados/domínios
# touch /etc/squid/acls/liberados/ips
# touch /etc/squid/acls/liberados/ips_msn_direto
# touch /etc/squid/acls/liberados/palavras
# touch /etc/squid/acls/liberados/usuários
# touch /etc/squid/acls/liberados/usuários_total
# touch /etc/squid/acls/liberados/ips_msn_direto
# touch /etc/squid/acls/liberados/palavras
# touch /etc/squid/acls/liberados/usuários
# touch /etc/squid/acls/liberados/usuários_total
Aplique permissão total sobre os arquivos e pastas criadas:
# cd /etc/squid
# chmod 777 * -R
Edite os arquivos e bloqueie os usuários, sites e palavras ao seu gosto:
Exemplo:
# vi /etc/squid/acls/liberados/ips
# vi /etc/squid/acls/bloqueados/ips
# touch /var/log/squid/access.log
# chmod 777 /var/log/squid/access.log
Reinicie o Squid e você verá que já pode adicionar o proxy ao seu navegador e irá pedir usuário e senha, lembrando que seu proxy deve estar como IP do servidor e a porta selecionada:
$ sudo /etc/init.d/squid restart
# vi /etc/squid/acls/liberados/ips
# vi /etc/squid/acls/bloqueados/ips
# touch /var/log/squid/access.log
# chmod 777 /var/log/squid/access.log
Reinicie o Squid e você verá que já pode adicionar o proxy ao seu navegador e irá pedir usuário e senha, lembrando que seu proxy deve estar como IP do servidor e a porta selecionada:
$ sudo /etc/init.d/squid restart
Exemplo abaixo da reinicialização do mesmo:
* Restarting Squid HTTP proxy squid
* Waiting...
* ...
* ...
* ...
* ...
* ...
* ...
...done.
...done.
* Restarting Squid HTTP proxy squid
* Waiting...
* ...
* ...
* ...
* ...
* ...
* ...
...done.
...done.
Criando os usuários e senha para acesso a internet
Obs.: não funciona sem o Apache instalado caso você pule parte do tutorial.
Entre na pasta:
# cd /usr/local/squid/etc
Crie o usuário de seu gosto como comando:
# htpasswd -c passwd fabio
Digite a senha e confirme. Somente a primeira vez usar o comando com -c para criar usuários. Pronto, na caixa de autenticação do seu navegador você já pode digitar esse usuário criado que o acesso à internet já será liberado
Entre na pasta:
# cd /usr/local/squid/etc
Crie o usuário de seu gosto como comando:
# htpasswd -c passwd fabio
Digite a senha e confirme. Somente a primeira vez usar o comando com -c para criar usuários. Pronto, na caixa de autenticação do seu navegador você já pode digitar esse usuário criado que o acesso à internet já será liberado
Configuração do SARG
Edite o aquivo /etc/squid/sarg.conf e altere as seguintes linhas.
Localize a linha:
"language"
Por padrão deve estar como "English", mude para "Portuguese" (esta é a linha que define a linguagem padrão do SARG).
Localize a linha:
"language"
Por padrão deve estar como "English", mude para "Portuguese" (esta é a linha que define a linguagem padrão do SARG).
language Portuguese
Caso de algum erro ao reiniciar o Squid altere o arquivo para:
languagePartuguese
Procure a linha:
"access_log"
E coloque o caminho e o nome do arquivo de log do Squid, por padrão esse arquivo fica em "/var/log/squid/access.log".
access_log /var/log/squid/access.log
title "Relatório de acesso a internet"
title "Relatório de acesso a internet"
Encontre a linha:
"output_dir"
E coloque "/var/www/sarg". Essa linha define onde o relatório será colocado depois de pronto para que possa ser acessado.
output_dir /var/www/sarg
Para gerar o relatório no SARG com o nome de usuário ao invés do IP, altere a seguinte linha.
Mude por padrão de:
"user_ip yes"
Para "no":
user_ip no
# TAG: Mostrar Usuário
usertab /etc/squid/sarg.usertab
# TAG: Mostrar Usuário
usertab /etc/squid/sarg.usertab
Crie a pasta:
# mkdir /var/www/sarg
# sarg
Instalando script para troca de senhas da internet
Entre na pasta:
# cd /etc/squid
# wget http://prdownloads.sourceforge.net/orsochpasswd/chpasswd-2.2.3.tar.gz?download
# ls
# tar -xvzf chpasswd-2.2.3.tar.gz
# mv chpasswd-2.2.3 chpasswd
# cd chpasswd
# mkdir /var/www/cgi-bin
# mkdir /var/www/cgi-bin/chpasswd
Baixe o patch:
# wget http://sarg.sourceforge.net/htoi.patch
# patch -p0 < htoi.patch
# ./configure --enable-language=Portuguese --enable-cgidir=/usr/lib/cgi-bin
# make
# make install
Edite o arquivo chpasswd.conf:
# vi /usr/local/etc/chpasswd/chpasswd.conf
E altere o parâmetro e descomente:
header "Change your Squid account password"
Para:
# cd /etc/squid
# wget http://prdownloads.sourceforge.net/orsochpasswd/chpasswd-2.2.3.tar.gz?download
# ls
# tar -xvzf chpasswd-2.2.3.tar.gz
# mv chpasswd-2.2.3 chpasswd
# cd chpasswd
# mkdir /var/www/cgi-bin
# mkdir /var/www/cgi-bin/chpasswd
Baixe o patch:
# wget http://sarg.sourceforge.net/htoi.patch
# patch -p0 < htoi.patch
# ./configure --enable-language=Portuguese --enable-cgidir=/usr/lib/cgi-bin
# make
# make install
Edite o arquivo chpasswd.conf:
# vi /usr/local/etc/chpasswd/chpasswd.conf
E altere o parâmetro e descomente:
header "Change your Squid account password"
Para:
header "Alteração de senha da internet"
Para entrar na página de alteração de senha:
http://seu_ip/cgi-bin/chpasswd.cgi
Configurando o .htaccess
Abra o arquivo /etc/apache2/apache2.conf:
# vi /etc/apache2/apache2.conf
Verifique se a linha "AccessFileName" está desta forma:
# vi /etc/apache2/apache2.conf
Verifique se a linha "AccessFileName" está desta forma:
AccessFileName .htaccess
Agora vamos criar o arquivo .htaccess e jogá-lo dentro do diretório do Sarg. Criar o arquivo .htaccess e acrescentar as linhas descritas:
$ sudo vim /var/www/sarg/.htaccess
Cole as linhas abaixo:
AuthType Basic
AuthName "Digite usuário e senha para ter acesso ao relatório de páginas de acesso a internet"
AuthUserFile /usr/local/squid/etc/.htpasswd
Require valid-user
Satisfy Any
AuthName "Digite usuário e senha para ter acesso ao relatório de páginas de acesso a internet"
AuthUserFile /usr/local/squid/etc/.htpasswd
Require valid-user
Satisfy Any
O arquivo de senhas /usr/local/squid/etc/.htpasswd tem que ser criado. Crio este arquivo facilmente com o comando htpasswd da seguinte forma:
# htpasswd -c /usr/local/squid/etc/.htpasswd fabio
Você pode adicionar o usuário que desejar, no exemplo foi fabio
Onde: -c = create new archive, apenas para criar o primeiro usuário que terá acesso aos relatórios do SARG, caso haja necessidade de mais usuários, utilizar o comando mas sem o "-c".
Reinicie o Apache:
# /etc/init.d/apache2 restart
# vi /etc/apache2/sites-enabled/000-default
Copie no final do arquivo, mas antes do fechamento da tag "</VirtualHost>".
<Directory /var/www/sarg>
Deny from all
AuthType Basic
AuthName "Digite usuário e senha para ter acesso ao relatório de páginas acessadas dos usuários da internet"
AuthUserFile /usr/local/squid/etc/.htpasswd
Require valid-user
Satisfy Any
</Directory>
Deny from all
AuthType Basic
AuthName "Digite usuário e senha para ter acesso ao relatório de páginas acessadas dos usuários da internet"
AuthUserFile /usr/local/squid/etc/.htpasswd
Require valid-user
Satisfy Any
</Directory>
Salve o arquivo e:
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start
Ou:
#/etc/init.d/apache2 restart
Pronto, basta digitar no seu navegador:
http://seu_ip/sarg
E terá o aviso pedindo senha.
Configurando o Samba
Edite o arquivo do Samba:
$ sudo vi /etc/samba/smb.conf
Vou citar um exemplo de configuração do Samba bem simples, afinal tem muito artigo sobre isso na internet, alguns com veto files e lixeira da rede, mas não vou me aprofundar agora, quem sabe em um próximo tutorial.
Entre na pasta onde contem os arquivos do Samba:
$ sudo vi /etc/samba/smb.conf
Vou citar um exemplo de configuração do Samba bem simples, afinal tem muito artigo sobre isso na internet, alguns com veto files e lixeira da rede, mas não vou me aprofundar agora, quem sabe em um próximo tutorial.
Entre na pasta onde contem os arquivos do Samba:
# cd /etc/samba
Crie um backup do arquivo original de configuração do Samba:
# cp smb.conf smb.conf.backup
Agora vamos editar o arquivo:
Agora vamos editar o arquivo:
# vi /etc/samba/smb.conf
Apague todo seu arquivo do smb.conf e cole o exemplo abaixo:
global]
workgroup = SEU_DOMINIO
server string = DOMINIO - Ubuntu Server Test
hosts allow = 0.0.0.0/0
interfaces = lo eth0
bind interfaces only = yes
smb ports = 445
printcap name = /etc/printcap
load printers = yes
printing = cups
log file = /var/log/samba/log.%m
max log size = 50
debug level = 1
security = share
encrypt passwords = true
passdb backend = tdbsam
admin users = root
client lanman auth = yes
client ntlmv2 auth = yes
client schannel = auto
client signing = auto
client use spnego = yes
server schannel = yes
server signing = yes
use spnego = yes
unix charset = iso8859-1
hide dot files = yes
level2 oplocks = no
time server = yes
socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
local master = no
os level = 3
domain master = no
logon path =
preferred master = no
domain logons = no
logon script = logon.bat
wins support = yes
dns proxy = yes
create mask = 0777
force create mode = 0777
security mask = 0777
force security mode = 0777
directory mask = 0777
force directory mode = 0777
directory security mask = 0777
force directory security mode = 0777
server string = DOMINIO - Ubuntu Server Test
hosts allow = 0.0.0.0/0
interfaces = lo eth0
bind interfaces only = yes
smb ports = 445
printcap name = /etc/printcap
load printers = yes
printing = cups
log file = /var/log/samba/log.%m
max log size = 50
debug level = 1
security = share
encrypt passwords = true
passdb backend = tdbsam
admin users = root
client lanman auth = yes
client ntlmv2 auth = yes
client schannel = auto
client signing = auto
client use spnego = yes
server schannel = yes
server signing = yes
use spnego = yes
unix charset = iso8859-1
hide dot files = yes
level2 oplocks = no
time server = yes
socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
local master = no
os level = 3
domain master = no
logon path =
preferred master = no
domain logons = no
logon script = logon.bat
wins support = yes
dns proxy = yes
create mask = 0777
force create mode = 0777
security mask = 0777
force security mode = 0777
directory mask = 0777
force directory mode = 0777
directory security mask = 0777
force directory security mode = 0777
[printers$]
comment = All Printers
path = /var/spool/samba
browseable = yes
writable = no
printable = yes
public = yes
path = /var/spool/samba
browseable = yes
writable = no
printable = yes
public = yes
[webserver$]
path = /var/www
comment = Webserver
hosts allow = 192.168.0.1 # Liberação de acesso mediante IPs autorizados
browsable = yes
guest ok = yes
preserve case = yes
create mode = 0777
create mask = 0777
writable = yes
comment = Webserver
hosts allow = 192.168.0.1 # Liberação de acesso mediante IPs autorizados
browsable = yes
guest ok = yes
preserve case = yes
create mode = 0777
create mask = 0777
writable = yes
# [exemplo$] Liberão de acesso total ao compartilhamento
# path = /etc/exemplo
# comment = Exemplo
# writable = yes
# guest ok = yes
# browseable = yes
# path = /etc/exemplo
# comment = Exemplo
# writable = yes
# guest ok = yes
# browseable = yes
# [exemplo2$] Liberação de acesso mediante login
# comment = Exemplo2
# path = /var/www
# valid users = root,suporte
# write list = root,suporte
# comment = Exemplo2
# path = /var/www
# valid users = root,suporte
# write list = root,suporte
Salve o arquivo e reinicie o Samba:
# /etc/init.d/samba restart
Agora você já pode acessar seu servidor em alguma máquina na rede \\ip_servidor\nome_pasta$ e as pastas compartilhadas já estarão lá!
Caso queira deixar mais fácil e se aprofundar mais você pode usar o Swat dessa maneira:
# vi /etc/inetd.conf
Veja se existe essa linha, se não existir adicione, se estiver comentada, descomente-a:
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
Agora reinicie o serviço:
$ sudo /etc/init.d/xinetd restart
Já pode ser acessado via:
http://ip_servidor:901
A senha que vai pedir é do root.
Configurando o CUPS
Altere as linhas do arquivo:
# vi /etc/cups/cupsd.conf
"Listen localhost:631"
Para:
# vi /etc/cups/cupsd.conf
"Listen localhost:631"
Para:
port 631
Reinicie o CUPS:
# /etc/init.d/cupsys restart
Agora já pode ter acesso pelo IP http://ip_do_servidor:631, mas com o erro 403 Forbidden.
Vamos agora dar permissão para acesso ao CUPS.
# vi /etc/cups/cupsd.conf
E altere as linhas conforme abaixo:
# vi /etc/cups/cupsd.conf
E altere as linhas conforme abaixo:
# Show shared printers on the local network.
Browsing On
DefaultAuthType Basic
< Location />
Allow From 192.168.0.1
Allow all
< /Location>
Browsing On
DefaultAuthType Basic
< Location />
Allow From 192.168.0.1
Allow all
< /Location>
E, para termos acesso às paginas de administração:
# Restrict access to the server...
< Location />
Order allow,deny
Allow From 192.168.0.1
< /Location>
# Restrict access to the admin pages...
< Location /admin>
Allow From 192.168.0.1
Allow all
< /Location>
< Location />
Order allow,deny
Allow From 192.168.0.1
< /Location>
# Restrict access to the admin pages...
< Location /admin>
Allow From 192.168.0.1
Allow all
< /Location>
Agora reinicie o serviço:
# /etc/init.d/cupsys restart
Pronto, já pode acessar o CUPS sem o erro 403 pelo endereço do seu servidor na porta 631, lembrando que o IP acima 192.168.0.1 é do meu servidor, altere conforme o IP do seu.
Agora é só adicionar uma impressora conectada à ele na tela do CUPS em "add printer" e depois de concluído só acessar de uma máquina \\ip_servidor e você verá as pastas compartilhadas do Samba e a impressora instalada pelo CUPS. :)
Algumas dicas
Para configurar sua máquina para usar um servidor DHCP ou IP fixo:
# ifconfig -a
# vi /etc/network/interfaces
# ifconfig -a
# vi /etc/network/interfaces
Para IP com DHCP
auto eth0
iface eth0 inet dhcp
Ou:
Para IP Fixo
auto eth1 iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.254
Ou até mesmo configuração de IP direto, sem editar o arquivo interfaces:
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add default gw 192.168.0.254
Por último, para configurar o DNS, edite o arquivo:
# vi /etc/resolv.conf
Preencha da seguinte maneira:
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add default gw 192.168.0.254
Por último, para configurar o DNS, edite o arquivo:
# vi /etc/resolv.conf
Preencha da seguinte maneira:
nameserver DNS Externo
Mude tudo de acordo com sua rede. Essas dicas são apenas para caso você não lembre como configurar a rede via terminal.
MSN-Proxy no Ubuntu Server.
Instalação e configuração
Agora vamos instalar o MSN-Proxy para controlar os acessos ao MSN.
Andes de mais nada vamos alterar algumas configurações no PHP.INI
# vi /etc/php5/apache2/php.ini
Altere:
Altere:
safe_mode = On
safe_mode_gid = On
register_globals = On
display_errors = On
safe_mode_gid = On
register_globals = On
display_errors = On
Instalando os compiladores e lib do MySQL:
# apt-get install make gcc g++
# apt-get install -f libmysqlclient15-dev
# apt-get install make gcc g++
# apt-get install -f libmysqlclient15-dev
Instalando MSN Proxy
Tenha os arquivos no servidor:
Instalando libvent:
# wget http://monkey.org/~provos/libevent-1.3d.tar.gz
# tar -vxzf libevent-1.3d.tar.gz
# cd libevent-1.3d
# ./configure
# make
# make install
# cd /usr/lib/
# ln -s /usr/local/lib/libevent-1.3d.so.1
Instalando o MSN Proxy:
# wget http://ufpr.dl.sourceforge.net/sourceforge/\
msn-proxy/msn-proxy-0.6.1-mysql.tar.gz
# tar -vxzf msn-proxy-0.6.tar.gz
# cd msn-proxy
# vim Makefile
Comente as linhas do FreeBSD e altere as do Linux.
Instalando libvent:
# wget http://monkey.org/~provos/libevent-1.3d.tar.gz
# tar -vxzf libevent-1.3d.tar.gz
# cd libevent-1.3d
# ./configure
# make
# make install
# cd /usr/lib/
# ln -s /usr/local/lib/libevent-1.3d.so.1
Instalando o MSN Proxy:
# wget http://ufpr.dl.sourceforge.net/sourceforge/\
msn-proxy/msn-proxy-0.6.1-mysql.tar.gz
# tar -vxzf msn-proxy-0.6.tar.gz
# cd msn-proxy
# vim Makefile
Comente as linhas do FreeBSD e altere as do Linux.
MYSQLINC=/usr/lib/mysql
MYSQLLIB=/var/lib/mysql/mysql
MYSQLLIB=/var/lib/mysql/mysql
# make
# make install
# mkdir /var/www/msn-proxy
# cp -R php /var/www/
# mv /var/www/php /var/www/msn-proxy
# vim /var/www/msn-proxy/mysql.inc.php
Altere
$host = "localhost";
$user = "root";
$pass = "SENHA-DO-MYSQL";
$db = "msn-proxy";
$port = 3306;
$user = "root";
$pass = "SENHA-DO-MYSQL";
$db = "msn-proxy";
$port = 3306;
# vi /usr/local/etc/msn-proxy/mysql/conf
Deixe assim:
localhost|3306|root|SENHA-DO-MYSQL|msn-proxy
# mysql -p
(e digite a senha do root)
mysql> CREATE DATABASE `msn-proxy`;
mysql> quit
# /usr/local/bin/msn-proxy
Se tudo ocorrer bem, terá a seguinte mensagem:
PUBLIC ACCESS on /usr/local/etc/msn-proxy/mysql/conf should be removed !!!¹
fail to read mysql config (check defaults table)
# chmod 600 /usr/local/etc/msn-proxy/mysql/conf
# vim /usr/local/etc/msn-proxy/msn-proxy.conf
-> max_clients=10
Por padrão vem controle para até 10 usuários, altere de acordo com suas necessidades.
Direcionamento da porta 1863 do msn:
# /sbin/iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1863 -j REDIRECT --to-port 1863
Configurando o IP da sua rede no banco de dados, onde 192.168.0.1 é o IP da placa ligada na rede dos clientes.
# mysql -p
(e digite a senha do root)
mysql> use msn-proxy;
mysql> show tables;
Com esse comando você confere se está mesmo na base de dados msn-proxy, se estiver irá aparecer isso:
+-----------------------------+
| Tables_in_msn-proxy |
+-----------------------------+
| contact_groups |
| contacts |
| defaults |
| log |
| sb |
| users |
+-----------------------------+
VALUES (
'192.168.0.1', 'YES', 'YES', 'YES', '0', admin@admin.com.br, 'Administrador do Sistema', 'Para sua segurança esta mensagem esta sendo monitorada.', 'Arial', 'black'
);
verificando se gravou:
mysql> SELECT * FROM `defaults`;
| 192.168.0.1 | YES | YES | YES | 0 | admin@admin.com.br | Administrador do Sistema | Para sua segurança esta mensagem esta sendo monitorada. | Arial | black |
1 row in set (0.00 sec)
Se essa foi a reposta, está tudo pronto!
mysql> quit
Iniciando MSN Proxy:
# /usr/local/bin/msn-proxy &
# /usr/local/bin/msn-proxy -d & (-d para ver os logs)
Carregando na inicialização:
Crie um arquivo com o seguinte conteúdo, ex.:
# vim /etc/init.d/msn-proxy.sh
Inclua as linhas abaixo:
#!/bin/bash
/usr/local/bin/msn-proxy -b &
echo "MSN-Proxy Inicializado"
/usr/local/bin/msn-proxy -b &
echo "MSN-Proxy Inicializado"
# cd /etc/init.d/
# chmod 755 /etc/init.d/msn-proxy.sh
# update-rc.d msn-proxy.sh defaults 80
Instalação do gerenciador do Proxy Web e Monitoramento de Servidores
Agora vamos colocar em nosso servidor web o arquivo para gerenciamento do Proxy Squid e Monitoramento de Servidores:
Desenvolvi os sistemas em PHP com imagens em PNG e Javascript, totalmente editável de acordo com suas necessidades.
Antes de realizar o donwload dos arquivo vamos dar permissão para que o PHP consiga alterar arquivos do sistema:
Edite o arquivo abaixo:
# visudo -f /etc/sudoers
Adicione essa linha no fim do arquivo:
www-data ALL=NOPASSWD:/usr/sbin/squid -k reconfigure, NOPASSWD:/usr/bin/sort
Obs.: Sem essa alteração as páginas html não conseguirão dar um refresh nas regras
do Squid para aplicar os bloqueios ou liberações.
Agora basta realizar o download dos sistemas no link abaixo e descompactar dentro da pasta /var/www do seu servidor Linux:
http://sourceforge.net/projects/fabioovieira/files/
Aplique permissão total nos arquivos que você realizou o download:
# cd /var/www
# chmod 777 * -R
Entre com os seguintes endereços para visualização.
http://Ip_do_servidor/lmanager
Entre com a senha padrão:
User: admin
Senha: 123456
Para alterar a senha de acesso basta editar o arquivo:
# vi /var/www/lmanager/valida_login.php
Altere a linha 24.
Neste endereço você poderá controla o Proxy Squid.
Sistema de Monitoramento de Servidores
Para visualizar o sistema de monitoramento que você realizou o donwload e descompactou basta acessar o seguinte endereço:
http://Ip_do_servidor/monitoramento
Esse Script basea-se em Ping e Porscanners nos endereços de IP dos servidores que você possui.
para editar os nomes dos Servidores e endereços de IP basta editar o arquivos:
# vi /var/www/monitoramento/index.php
Bom pessoal, é isso aí, espero que gostem. Dúvidas? Estamos aí para tentar resolver.
Um forte abraço!
Fabio queria tirar uma duvida na questao daslistas e so colocar o ip.
ResponderExcluir