Ajuda com Ubuntu 12.04 + Squid3 com uma placa de rede

1. Ajuda com Ubuntu 12.04 + Squid3 com uma placa de rede

Douglas de Sousa Alvarenga
sousadouglas

(usa CentOS)

Enviado em 03/08/2012 - 11:17h

Olá amigos, sou novo no fórum e novo no mundo Linux.
Estou com a necessidade de criar um Proxy aqui para a empresa em que trabalho. Acabei escolhendo entre as distribuições o Ubuntu 12.04 LTS
Instalei o Squid3 e adicionei o squid.conf com configuração básica para após conseguir fazer funcionar vou implementar os bloqueios por site, palavras e extensões. Até ai fui vendo os tópicos do fórum e consegui ir fazendo até a criação do squid.conf

Outros detalhes de como funciona a rede aqui: Já existe um roteador liberando a internet para o switch da rede (qualquer máquina com o gateway que usei na configuração ja recebe a internet). Inclusive está funcionando a internet nele como em qualquer outro pc da rede. Por exigência da empresa, preciso montar este servidor somente com uma placa de rede a mesma que recebe a internet já é a da rede interna.
Não preciso configurar como Proxy transparente, aqui usando outro Proxy a empresa já usa desta maneira, configurando o ip e porta no navegador para redirecionar ao Proxy.
Preciso configurar este novo Server para que trabalhe da mesma maneira
Configurei via interface gráfica mesmo as seguintes configurações:
Ip da máquina por ex. 192.168.0.217
Masc: 255.255.255.0
Gateway: 192.168.0.220
DNS: coloquei um DNS válido aqui
Além desta configuração não configurei nada de Firewall ou no /etc/interfaces/


Meu squid.conf está assim:


http_port 3128

visible_hostname SVPROXY

error_directory /usr/share/squid/errors/Portuguese/

cache_mem 128 MB

maximum_object_size_in_memory 128 KB

maximum_object_size 512 MB
minimum_object_size 0 KB

cache_swap_low 90
cache_swap_high 95

cache_dir ufs /var/spool/squid 20480 16 256

cache_access_log /var/log/squid/access.log

refresh_pattern ^ftp 15 20% 2280
refresh_pattern ^gother 15 0% 2280
refresh_pattern . 15 20% 2280

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 21 443 563 280 488 777
acl Safe_ports port 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

acl rede_local src 192.168.0.0/24


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

http_access allow rede_local
http_access allow localhost
http_access deny all


Agora, minha pergunta é, o que preciso fazer para continuar daqui e finalizar a configuração. Desculpem a pergunta totalmente newbie, mas estou tentando aprender e nada como perguntar a quem sabem d+ como vocês do VOL.

Obrigado!


  


2. Ubuntu 12.04 + Squid3

Eduardo Francisco Camargo
willcamarg

(usa CentOS)

Enviado em 28/08/2012 - 08:28h

Bom cara primeiro! eu nunca vi um squid rodando com uma unica placa de rede, a não ser que vc virtualize a sua placa de rede desta forma....
#uto lo
iface lo inet loopback


auto eth0:0
iface eth0:0 inet static
address 192.168.7.1 # rede interna
netmask 255.255.255.0
network 192.168.7.0
broadcast 192.168.7.255

auto eth0 # rede externa
iface eth0 inet static
address 10.101.0.154
netmask 255.255.255.0
gateway 10.101.0.254
#########################
segundo! seria legal vc instalar um servidor dhcp usando os ips da rede interna e fazer um compartilhamento de internet um nat redirecionando para seu squid.. aí sim vc deve dar sequencia....

o restante é só configurar o squid usando todos as ajudas que a net oferece dentro de sua necessidade. Um abraço.


3. Re: Ajuda com Ubuntu 12.04 + Squid3 com uma placa de rede

Douglas de Sousa Alvarenga
sousadouglas

(usa CentOS)

Enviado em 28/08/2012 - 11:29h

Amigo! dei uma pausa nesta instalação mas até onde fui consegui fazer funcionar criando uma regra para direcionar a porta:


#!/bin/bash

vim /etc/rc.local
iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

exit 0

Obrigado pela ajuda!


4. squid3

Eduardo Francisco Camargo
willcamarg

(usa CentOS)

Enviado em 20/10/2012 - 08:36h

Tente isso e retire o que for necessario qualquer coisa me avise willcamarg@hotmail.com


Servidor Ubuntu 12.04 com Controle de Acessos e autenticação no mysql e configurações básicas para começo da implementação, como interfaces e Dhcp.

1º passo Instalar um Ubuntu 12.04 - server ou Desktop
2º passo Atualizar o sistema Operacional com os seguintes comandos abaixo:

# apt-get update && apt-get upgrade –y
4º passo Configurar as interfaces Segue o exemplo:
Você precisará de duas placas de Rede para esta configuração
Edite com qualquer editor eu uso o vim.
# vim /etc/network/interface
auto lo
iface lo inet loopback
auto eth1 # rede interna
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255

auto eth0 # rede externa
iface eth0 inet static
address 10.101.0.x # seu ip da rede externa
netmask 255.255.255.0
gateway 10.101.0.254




5º passo instale o servidor Dhcp; este servidor irá espalhar os ips automáticamente.
User os seguintes comandos abaixo:
# apt-get install dhcp3-server dhcp3-common
Em seguida acesse a pasta

# cd /etc/default/

# vim isc-dhcp-server

altere essa linha: INTERFACES=""
ficando assim ( INTERFACES=" eth1")
Agora partimos para configuração do dhcpd.conf:
# cd /etc/dhcp/

# cp dhcpd.conf dhcpd.conforiginal <aqui iremos fazer um backup do arquivo original>
# vim dhcpd.conf < apague todo arquivo e inserir este conteúdo abaixo de acordo com sua rede>.

ddns-update-style none;
authoritative;
log-facility local7;

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.103 192.168.2.100;
option domain-name-servers 192.168.2.254,192.168.2.107;
option domain-name "genivaldo.net";
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
default-lease-time 600;
max-leasev-time 7200;
}
#host casa {
# hardware ethernet 00:00:00:20:c0:a4;
# fixed-address casa.com;
#}
Precione “ :x! “ para sair e salvar.




Vamos dar um restart no serviço DHCP

# cd /etc/init.d/

# ./isc-dhcp-server restart

“Instale este pacote para usar na inicialização dos serviços no boot do sistema”.
# apt-get install sysv-rc-conf
6º passo compartilhando a internet
Edite o arquivo:

# vim /etc/sysctl.conf

Descomentar a linha:
# net.ipv4.ip_forward=1

Onde deve ficar assim:
net.ipv4.ip_forward=1

Salvando o arquivo e executando o seguinte comando, para efetivar a mudança sem precisar de um Reboot:

# sysctl -w net.ipv4.ip_forward=1

Vamos criar um Script para o compartilhamento. Crie no seguinte diretório "/etc/init.d":

# vim /etc/init.d/internet

E adicione:
#!/bin/bash

iniciar(){
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
}

parar(){
iptables -F -t nat
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start ou stop"
esac


Salve e saia do arquivo. E dê permissão de execução:

# chmod 777 /etc/init.d/internet

< Lembrando que a linha com o 'eth0', é a placa onde está ligado a sua rede externa>.
<Se estiver ligado na 'eth1', só alterar para: eth1 >

Para iniciar e parar o serviço da Internet, use os seguintes comandos abaixo:

Para começar:

# invoke-rc.d internet start ou # /etc/init.d/internet start


Ou:


# invoke-rc.d internet stop ou # /etc/init.d/internet stop


Serviço de compartilhamento de internet já está ok.

Ative na inicialização o serviço de internet com o comando abaixo.
# sysv-rc-conf
Salve e saia do arquivo.

7º passo Instalação do mysql e apache para uma futura configuração de um sistema de autenticação do squid3 com os seguintes comandos:
# apt-get install tasksel
Digite;
# tasksel
Marque os campos Lamp server e OpenSSH Server e selecione ok ( para selecionar use a tecla espaço do teclado).
<Nos campos da instalação digite as senhas todas iguais para melhor adaptação dos serviços porteriores>.
8º passo instalação do squid3 digite os comandos a seguir:
# apt-get install squid3
# cp /etc/squid3/squid.conf /etc/squid3/squid.conf.origin
# cd /etc/squid3
Digite para limpar o arquivo de configuração
# > squid.conf
Edite o arquivo com as seguintes configurações
# vim squid.conf
___________________________________________________________________________

#Recommended minimum configuration:
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl purge method PURGE
#acl all src 0.0.0.0/0.0.0.0 ##nao precisa no squid

acl rede_adm src 10.101.0.0/24
acl rede_labinf src 192.168.2.0/24


#access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed

acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
acl localnet src 172.16.0.0/24 # RFC1918 possible internal network
acl localnet src 192.168.0.0/24 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

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

##Filtro de conteúdo e autenticação
auth_param basic program /usr/lib/squid/mysqlt_auth
auth_param basic children 5
auth_param basic realm Laboratorio de informatica
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED

################################################
### REGRA GERAIS DE ACESSO ###
acl tecnicos_lab proxy_auth "/etc/squid/tecnicos
################################################
### REGRA HORARIO DE ACESSO DO ORKUT E OUTROS ###
acl horario time 11:45-13:15
acl almoco url_regex -i "/etc/squid/regras/horario_almoco"
http_access allow almoco horario

####### Sites sem cache ##########
acl sitesemcache url_regex -i "/etc/squid/regras/sites-no-cache"
no_cache deny sitesemcache

acl messenger urlpath_regex gateway.dll

acl ips_liberados src "/etc/squid/regras/ips_liberados"
acl ips_bloqueados src "/etc/squid/regras/ips_bloqueados"

acl download_proibidos_geral url_regex -i "/etc/squid/regras/download_proibidos_geral"
acl download_proibidos_adm url_regex -i "/etc/squid/regras/download_proibidos_adm"
acl download_proibidos_labinf url_regex -i "/etc/squid/regras/download_proibidos_labinf"
acl dominios_proibidos_geral url_regex -i "/etc/squid/regras/dominios_proibidos_geral"
acl dominios_proibidos_adm url_regex -i "/etc/squid/regras/dominios_proibidos_adm"
acl dominios_proibidos_labinf url_regex -i "/etc/squid/regras/dominios_proibidos_labinf"

acl palavras_proibidas_geral url_regex -i "/etc/squid/regras/palavras_proibidas_geral"
acl palavras_proibidas_adm url_regex -i "/etc/squid/regras/palavras_proibidas_adm"
acl palavras_proibidas_labinf url_regex -i "/etc/squid/regras/palavras_proibidas_labinf"

acl palavras_liberadas_geral url_regex -i "/etc/squid/regras/palavras_liberadas_geral"
acl palavras_liberadas_adm url_regex -i "/etc/squid/regras/palavras_liberadas_adm"
acl palavras_liberadas_labinf url_regex -i "/etc/squid/regras/palavras_liberadas_labinf"
acl dominios_liberados_geral dstdomain -i "/etc/squid/regras/dominios_liberados_geral"

#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow all tecnicos_lab
http_access allow manager localhost
http_access deny manager

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#http_access deny streaming
http_access deny messenger rede_adm
http_access deny messenger rede_labinf

http_access allow ips_liberados
http_access deny ips_bloqueados

http_access allow dominios_liberados_geral rede_adm
http_access allow dominios_liberados_geral rede_labinf

#BLOQUEIO DE DOWNLOAD POR EXTENSAO

acl bloqueiodownload urlpath_regex \.mp4$ \.flv$ \.rar$ \.cab$ \.ocx$ \.asf$ \.wmv$ \.mpg$ \.mpeg$ \.avi$ \.mov$ \.divx$ \.ogm$ \.mp3$ \.wma$ \.rm$ \.ram$ \.com$ \.scr$ \.pif$ \.bat$ \.arj$ \.ace$ \.tar$ \.gz$ \.z$ \.bin$ \.lzh$ \.lha$ \.exe$ \.mp4?$\.flv?$ \.rar?$ \.cab?$ \.ocx?$ \.asf?$ \.wmv?$ \.mpg?$ \.mpeg?$ \.avi?$ \.mov?$ \.divx?$ \.ogm?$ \.mp3?$ \.wma?$ \.rm?$ \.ram?$ \.com?$ \.scr?$ \.pif?$ \.bat?$ \.arj?$ \.ace?$ \.tar?$ \.gz?$ \.z?$ \.bin?$ \.lzh?$ \.lha?$ \.exe?$ !dominios_liberados_geral

http_access deny download_proibidos_geral rede_adm
http_access deny download_proibidos_geral rede_labinf

http_access deny download_proibidos_adm rede_adm
http_access deny download_proibidos_labinf rede_labinf

http_access deny dominios_proibidos_geral rede_adm
http_access deny dominios_proibidos_geral rede_labinf
http_access deny dominios_proibidos_adm rede_adm
http_access deny dominios_proibidos_labinf rede_labinf

http_access deny palavras_proibidas_geral !palavras_liberadas_geral rede_adm
http_access deny palavras_proibidas_geral !palavras_liberadas_geral rede_labinf
http_access deny palavras_proibidas_adm !palavras_liberadas_adm rede_adm
http_access deny palavras_proibidas_labinf !palavras_liberadas_labinf rede_labinf

http_access allow rede_adm
http_access allow rede_labinf

http_access deny all

#Allow HTCP queries from local networks only
#htcp_access allow rede_adm
#htcp_access allow rede_labinf
#htcp_access deny all

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost

# Squid normally listens to port 3128
http_port 3128
visible_hostname labinf - Informatica

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir
cache_dir ufs /var/spool/squid 2048 16 256

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) -1 0% 0
refresh_pattern . 0 20% 4320

cache_effective_user proxy
cache_effective_group Proxy

Salve e Saia: “ :x!”
Crie uma pasta chamada regras dentro de /etc/squid3/regras
# mkdir /etc/squid3/regras
Dentro da pasta regras use o vim para criar um arquivo para cada regra do squid por exemplo:
Vim /etc/squid3/regras/domínios_liberados-geral, ips_liberados, ips_bloquados
Também use o vim para criar um arquivo chamado técnicos em /etc/squid3/técnicos ou administradores conforme sua política.

Obs.: ainda não start o serviço do squid3 ainda
9º passo configurando o mysql
Configurando o MySQL
Entre no terminal como root e logue-se no MySQL com os seguintes comandos:

$ mysql -u root -p

Será solicitado uma senha, que é a senha digitada na instalação do servidor MySQL

mysql>



Para ver as bases criadas digite:

mysql> show databases;

Para selecionar, digite:

mysql> use nome_da_base;

Vamos criar uma base com o nome de "Squid". Digite o comando:

mysql> create database Squid; ( neste caso usei o nome squid, você pode usar Autentica squid ou semelhante)

e enter.

Selecione a base que acabamos de criar para trabalharmos nela:

mysql> use Squid;

e dê um enter.
Criando as tabelas
Vamos criar a tabela que conterá as informações de nome, senha e status dos usuários no Squid. Se você deve analisar, nós podemos ter três situações de usuário no nosso servidor proxy: usuário válido, usuário invalido, usuário desativado. Quando usamos a autenticação ncsa_auth, para desativar um usuário adicionamos o caractere "#" para comentar a linha e ignorá-la, como estamos utilizando uma base dados, utilizaremos um número (0 ou 1) para determinar o status do usuário: 0 = desabilitado e 1 = habilitado.

Criando a tabela, siga os passos:

mysql> CREATE TABLE usuarios (
nome varchar(100) NOT NULL,
senha varchar(15) NOT NULL,
status tinyint(1) NOT NULL default "1",
PRIMARY KEY (NOME)
);

“ok”

Vamos inserir dois usuários para podermos fazer os testes, ainda com a base de dados selecionada, use os seguintes comandos: ( você também pode usar o phpmyadmin para inserir estes usuários).

mysql> INSERT INTO usuarios VALUES ('joao1', encrypt('senha1'), 1);
mysql> INSERT INTO usuarios VALUES ('joao2', encrypt('senha2'), 0);

Veja o usuário joao1 está como válido, diferente do usuário joao2.

O parâmetro encrypt antes da senha significa que a sua senha estará devidamente criptografada.
ok! O banco de dados está corretamente configurado, iremos configurar o Squid para autenticar em nossa base de dados.
Criando o script
Dentro da pasta /usr/lib/squid3 você terá alguns arquivos executáveis, que são scripts prontos do sistema instalado e métodos de autenticação criados para seu Squid.

Crie um script com o nome de mysqlt_auth.

# vim /usr/lib/squid3/mysqlt_auth
< coloque este conteúdo abaixo no seu arquivo criado, observando os campos usuário e senha e definindo conforme a senha do banco mysql>


#!/usr/bin/php
<?
$link = mysqli_connect("localhost", "usuario_do_banco", "senha_do_banco");

if (!$link) {
printf("Erro ao Conectar com o Banco de Dados: %s\n", mysqli_connect_error());
die();
}

$selectdb = mysqli_select_db($link, "Squid");

if (!$selectdb) {
printf("Erro ao Abrir o Banco de Dados: %s\n", mysqli_error($link));
die();
}

while ( fscanf(STDIN, "%s %s", $nome, $senha) ) {
$select = "SELECT nome, senha FROM usuarios WHERE nome = '".$nome."' AND status = 1";
$Query = mysqli_query($link, $select);
$nrRegistros = mysqli_num_rows($Query);
$erro = true;

while ( $Registro = mysqli_fetch_array($Query) ) {
$erro = false;

if ( crypt($senha, $Registro[senha]) == $Registro[senha] ) printf("OK\n");
else printf("ERR\n");
}
if ($erro) printf("ERR\n");
}
?>

< Se você for um programador use também este script para conectar com um sistema desenvolvido por você ou por alguém, por exemplo: um sistema com interface gráfica >.
Dentro de /usr/lib/squid3 crie um arquivo chamado mysqlt_user, caso contrário fique apenas com o script acima.

#!/usr/bin/php
<?
require_once ('mysqli_connect.php');
$link = mysqli_connect("localhost", "root", "senha");
if (!$link) {
printf("Erro ao conectar com o banco de dados: %s\n", mysqli_connect_error());
die();
}
$selectdb = mysqli_select_db($link, "AutenticaSquid");
if (!$selectdb) {
printf("Erro ao abrir o banco de dados: %s\n", mysqli_error($link));
die();
}

$select = "SELECT nome, senha FROM Usuarios WHERE ativo = 1";
$Query = mysqli_query($link, $select);
$nrRegistros = mysqli_num_rows($Query);
$erro = true;

while ( $Registro = mysqli_fetch_array($Query) ) {
printf($Registro['nome'].':'.$Registro['senha'].'
');
}
?>

Digite: para dar permissão aos arquivos.
# chmod +x mysqlt_auth
#chmod +x mysqlt_user
10º passo start o squid3 com os seguintes comandos:
# /etc/init.d/squid3 start ou service squid3 start
Obs.: Se você usar um arquivo de configuração diferente no squid.conf ou até este mesmo é provável que encontrará erros na inicialização do mesmo, e estes erros devem ser corrigidos conforme as mensagem retornadas, use os fóruns para ajuda e boa sorte.

http://www.vivaolinux.com.br/artigo/Ubuntu-Server-1204-LTS-Como-Servidor-Gateway-e-DHCP/
http://www.vivaolinux.com.br/artigo/Autenticando-usuarios-do-Squid-em-um-banco-de-dados-MySQL?pagina...




5. Re: Ajuda com Ubuntu 12.04 + Squid3 com uma placa de rede

Leonardo Aquino
leonardoaquino

(usa Ubuntu)

Enviado em 07/05/2013 - 11:23h

NAO FUNCIONOU!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts