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...