sexta-feira, 23 de agosto de 2013

Instale LinSSID: um escaner de redes wireles para Linux com interface gráfica

Está procurando uma ferramenta para encontrar redes wireless e ver mais detalhes delas? Experimente o LinSSID.
LinSSID

LinSSID é graficamente e funcionalmente semelhante ao iwscanner (Linux) e o Inssider (Windows). Ele é escrito em C + + utilizando ferramentas wireless para Linux e Qt4. Veja abaixo mais detalhes do aplicativo.

Características do LinSSID

  • Possui várias colunas de informações diferentes;
  • Possui colunas classificáveis e móveis;
  • Permite ajustar a velocidade;
  • Atualização em tempo real;
  • Mostra gráficos de intensidade de sinal por canal e ao longo do tempo;
  • Funciona em canais de 2,4 GHz e 5 GHz.

Instalando o LinSSID no Ubuntu

Para instalar o LinSSID no Ubuntu, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Adicione o repositório do aplicativo com o seguinte comando:
sudo add-apt-repository ppa:wseverin/ppa
Passo 3. Atualize o Apt digitando o comando:
sudo apt-get update
Passo 4. Agora instale o programa com o comando:
sudo apt-get install linssid

Instalando o LinSSID em outras distribuições

Quem estiver usando outra distribuição, pode dar uma olhada no site do desenvolvedor do aplicativo acessando esse link. Lá tem as instruções, e possivelmente, um pacote para instalar ele em outras distribuições Linux. Apesar de estar em inglês, as instruções são bem simples. Se quiser pode tentar uma versão traduzida pelo Google Translator clicando aqui. Mas cuidado com os comandos, eles não devem ser traduzidos.

segunda-feira, 19 de agosto de 2013

VLsub: baixando legendas pelo VLC

Cansado de ficar puto perder aquele tempo pesquisando legendas para vídeos que baixou da Internet? Seus problemas acabaram! O VLsub é uma extensão para o VLC que permite facilmente pesquisar e baixar legendas diretamente do player. E mais: ela suporta perfeitamente o download de legendas no nosso idioma :-)
VLsub: baixando legendas pelo VLC
Depois de instalado, o VLsub fica disponível no menu Exibir do VLC
Criada em 2010 pelo desenvolvedor francês Guillaume Le Maout, a extensão é distribuída sob licença GPLv2 e foi desenvolvida usando a já conhecida linguagem de programação brasileira Lua.

Instalando o VLsub no Linux

Para efetuar a instalação é simples, basta abrir o terminal e digitar os comandos abaixo:
mkdir -p ~/.local/share/vlc/lua/extensions && cd $_
wget https://raw.github.com/exebetche/vlsub/master/vlsub.lua
Feito isso, basta abrir o VLC e acessar o VLsub por meio do menu Exibir, simples assim :-) Na janela que abriu, basta mudar o idioma para Portuguese-BR, clicar em pesquisar pelo nome ou hash, selecionar a legenda desejada e, por fim, clicar em Download selection. Pronto, a legenda será baixada e carregada em tempo real!
VLsub: baixando legendas pelo VLC
Dica: o filme usado na imagem acima chama-se Away from Keyboard, e pode ser baixado gratuitamente aqui. Conta um pouco da história do mais popular site de torrents da Internet, o The Pirate Bay, e, por consequência, da história dos torrents :-)

Manual traduzido do Squid

Introdução

Tradução livre do Squid.

Talvez, tenha alguns erros de digitação ou de tradução, mas nada que impeça o entendimento.

Será feita em séries, uma vez que o manual do Squid tem 191 páginas.

Welcome to Squid 3.3.3

Esta é a documentação do arquivo de configuração do Squid. Esta documentação também pode ser encontrada online em:
Veja a página do Squid e Wiki para encontrar o FAQ e outras documentações:
Esta documentação mostra os padrões para várias diretivas. Se você não precisa mudar o padrão, é só não alterar seu squid.conf, na maioria dos casos.

Em alguns casos, "none" significa que não há nenhuma configuração padrão, enquanto em outros casos, refere-se ao valor da opção. Os comentários indicarão quando for o caso.

Opções de configuração podem ser incluídas usando a diretiva "include". "include" recebe uma lista de arquivos a serem incluídos. Citações e curingas são suportados.

Por exemplo:

include /path/to/included/file/squid.acl.config


As inclusões podem ser aninhadas até uma profundidade embutida de 16 níveis.

Esta restrição arbitrária é para evitar referências recursivas do Squid, fazendo-o entrar em um loop infinito, enquanto tenta carregar os arquivos de configuração.

Configuração condicional

Declarações "if" podem ser usadas para fazer diretivas de configuração. Dependem das condições:

if <CONDITION>
    ... regular configuration directives ...
[else
    ... regular configuration directives ...]
endif


"else" é opcional. As palavras "if", "else" e "endif", devem ser digitadas em suas próprias linhas, como se fossem diretivas regulares de configuração.

* Nota: a condição "else-if" não é suportada.

Estas condições individuais são suportadas:
  • true :: sempre avaliada como verdadeira.
  • false :: sempre avaliada como falsa.
  • <integer> = <integer> :: comparação de igualdade de dois números inteiros.

SMP - Macros relacionadas

As seguintes macros SMP relacionadas com o pré-processador de macros podem ser usadas:
  • ${process_name} :: expande para o "name" do processo atual, (ex.: squid1, squid2 ou cache1).
  • ${process_number} :: expande para o identificador do processo atual do Squid, que é um número inteiro (por exemplo, 1, 2, 3) único para os processos do Squid.

  • TAG: broken_vary_encoding :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: error_map :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: external_refresh_check :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: ignore_ims_on_miss :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: location_rewrite_program :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: refresh_stale_hit :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: storeurl_access :: esta opção ainda não é suportada por esta versão do Squid3.
  • Default: none

  • TAG: ignore_expect_100 :: remova esta linha. O recurso HTTP/1.1 agora é totalmente suportado por padrão.
  • Default: none

  • TAG: dns_v4_fallback :: remova esta linha. O Squid executa um algoritmo "'Happy Eyeballs ", o algoritmo "fallback" não é mais relevante.
  • Default: none

  • TAG: ftp_list_width :: remova esta linha. Configure a exibição de página FTP usando os controles de CSS em errorpages.css.
  • Default: none

  • TAG: maximum_single_addr_tries :: substituído pelo connect_retries. O comportamento foi alterado, por favor, leia a documentação antes de alterar.
  • Default: none

  • TAG: update_headers :: remova esta linha. O recurso é suportado por padrão nos tipos de armazenamento onde a atualização é implementada.
  • Default: none

  • TAG: url_rewrite_concurrency :: remova esta linha. Defina a opção "concurrency=" na tag url_rewrite_children.
  • Default: none

  • TAG: dns_testnames :: remova esta linha. O DNS não é mais testado na inicialização.
  • Default: none

  • TAG: extension_methods :: remova esta linha. Todos os métodos válidos para HTTP são aceitos por padrão.
  • Default: none

  • TAG: zero_buffers
  • Default: none

  • TAG: incoming_rate
  • Default: none

  • TAG: server_http11 :: remova esta linha. HTTP/1.1 é suportado por padrão.
  • Default: none

  • TAG: upgrade_http0.9 :: remova esta linha. O protocolo de straming ICY/1.0 é suportado por padrão.
  • Default: none

  • TAG: zph_local :: altere essas entradas. Use a diretiva qos_flows.
  • Default: none

  • TAG: header_access :: desde o Squid-3.0 substituir por request_header_access ou reply_header_access, dependendo se você deseja corresponder pedidos de clientes ou respostas do servidor.
  • Default: none

  • TAG: httpd_accel_no_pmtu_disc :: desde o Squid-3.0 é usada a flag "disable-pmtu-discovery".
  • Default: none

  • TAG: wais_relay_host :: substitua essa linha pela configuração "cache_peer".
  • Default: none

  • TAG: wais_relay_port :: substitua essa linha pela configuração "cache_peer".
  • Default: none 

Opções de autenticação I

TAG: auth_param :: opções utilizadas para definir os vários parâmetros suportados pelo Squid3 para diferentes esquemas de autenticações.
Formato: auth_param scheme parameter [setting]

A ordem em que são apresentados os esquemas de autenticação para o cliente é dependente da ordem em que o esquema aparece pela primeira vez no arquivo de configuração.

Isto é, tem um bug (não é compatível com a RFC 2617) em que ele vai usar o esquema básico que se constitui da primeira entrada apresentada, mesmo se esquemas mais seguros forem utilizados.

Utilize a ordem nas configurações recomendadas abaixo.

Se outros navegadores têm dificuldades (não reconhecem os esquemas oferecidos, mesmo se você estiver usando o esquema básico) ou se você colocar primeiro o básico, ou desativar os outros esquemas (comentando sua linha de entrada).

Uma vez que um esquema de autenticação esteja totalmente configurado, ele só pode ser desligado fechando o Squid3 e/ou reiniciando. As alterações podem ser feitas com o Squid3 funcionando e ativadas com "reconfigure", isto é, você pode mudar para um suporte diferente, mas não desconfigurar o suporte completamente.

Por favor, note que esta diretiva define como o Squid processa a autenticação, porém, não ativa automaticamente a autenticação.

Para usar a autenticação, você deve, além disso, utilizar ACLs baseadas no login em http_access (proxy_auth, proxy_auth_regex or external with %LOGIN used in the format tag). O navegador tentará autenticar de acordo com a primeira ACL encontrada em http_access e também será desafiado para novo login com credenciais se a requisição estiver sendo negada por uma ACL do tipo proxy_auth.

* Atenção: a autenticação não pode ser usada em um proxy transparente interceptador, no qual o cliente pensa que está falando com o servidor de origem. Esta é uma limitação do protocolo TCP/IP para proxy transparente interceptando na porta 80. Não é uma limitação do Squid. As opções "transparent", "intercept" ou "tproxy", desabilitam a autenticação.

Parâmetros para o esquema básico

"program" cmdline :: especifica o comando para o autenticador externo. O programa lê uma linha contendo "username password" e responde "OK" ou "ERR" em um loop infinito.

Respostas do tipo "ERR" podem, opcionalmente, ser seguidas por uma descrição de erro disponível como %m na página de erro retornado. Se você usar autenticação, tenha certeza de ter pelo menos uma ACL do tipo proxy_auth.

Por padrão, o esquema de autenticação básico não é usado, a menos que um programa seja especificado.

Se você quiser usar a tradicional autenticação NCSA de proxy, defina esta linha para algo como:

auth_param basic program /etc/squid3/libexec/ncsa_auth /etc/squid3/etc/passwd


"utf8" on|off :: HTTP usa iso-latin-1 como conjunto de caracteres, enquanto alguns back-ends de autenticação, como LDAP usam UTF-8.

Se for definido como "on", o Squid3 traduzirá o HTTP charset iso-latin-1 para UTF-8 antes de enviar o nome de usuário e senha para o suporte.

"children" numberofchildren [startup=N] [idle=N] [concurrency=N] :: número máximo de processos para autenticar.

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N, em uma tentativa de atender às necessidades do tráfego e manter idle=N livre acima do máximo das necessidades.

A opção "concurrency=", define o número de requisições simultâneas que o Squid3 pode processar. O padrão 0 é utilizado para suportar apenas uma requisição por vez.

Configurando-o para um número maior que 0 altera o protocolo usado para incluir um número de canal na primeira linha do request/response, permitindo que vários pedidos possam ser enviados em paralelo mesmo sem esperar a resposta.

Não deve ser definida, a menos que tenha suporte para isso.

auth_param basic children 20 startup=0 idle=1


"realm" realmstring :: especifica o nome que será comunicado ao cliente para o esquema básico de autenticação de proxy (parte do texto que o usuário vai ver quando for solicitado seu nome de usuário e senha). Não há padrão.

auth_param basic realm Squid proxy-caching web server


"credentialsttl" timetolive :: especifica para o Squid3 por quanto tempo é válido o "username:password", em outras palavras, muitas vezes o programa auxiliar é chamado para esse usuário. Defina um valor baixo para forçar a revalidação com senhas curtas.

Note que definir um valor alto, não tem impacto sobre a sua suscetibilidade para repetir os ataques, a menos se você estiver usando uma senha de uso único no sistema (como SecureID). Se você estiver usando tal sistema, estará vulnerável a ataques de repetição, a menos que você use a ACL "max_user_ip" em uma regra "http_access".

"casesensitive" on|off :: especifica se nomes de usuários são case sensitive. A maioria dos bancos de dados de usuários são case sensitive permitindo que o mesmo nome de usuário possa ser escrito usando letras maiúsculas e minúsculas. Faz uma grande diferença para o processamento da ACL user_max_ip.

auth_param basic casesensitive off


Parâmetros para o esquema Digest

"program" cmdline :: especifica o comando para o autenticador externo. Um programa lê uma linha contendo "username":"realm" e responde com o valor apropriado hexadecimal H (A1) ou "ERR", se o usuário (ou o seu hash H (A1)) não existe.

Veja RFC 2616 para a definição de H (A1).

As respostas "ERR" podem, opcionalmente, ser seguidas por uma descrição de erro disponível como %m na página retornada.

Por padrão, o esquema de autenticação Digest não é usado, a menos que um programa seja especificado.

Se for usar um autenticador Digest, defina esta linha como, por exemplo:

auth_param digest program /etc/squid3/bin/digest_pw_auth /etc/squid3/etc/digpass


"utf8" on|off :: HTTP usa iso-latin-1 como conjunto de caracteres, enquanto alguns back-ends de autenticação, como LDAP, usam UTF-8.

Se for definido como "on", o Squid3 traduzirá o HTTP charset iso-latin-1 para UTF-8 antes de enviar o nome de usuário e senha para o suporte.

"children" numberofchildren [startup=N] [idle=N] [concurrency=N] :: número máximo de autenticações para autenticar (padrão 5).

Se você iniciar com um valor baixo, o Squid3 terá que esperar por eles para processar um backlog de cálculos de H (A1), e vai diminuir a velocidade.

Quando os cálculos H (A1) forem feitos através de uma rede (lenta), é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre acima do máximo das necessidades.

A opção "concurrency=" define o número de requisições simultâneas que o Squid3 pode processar. O padrão 0 é utilizado para suportar apenas uma requisição por vez. Configurando-o para um número maior que 0, altera o protocolo usado para incluir um número de canal na primeira linha do request/response, permitindo que vários pedidos possam ser enviados em paralelo mesmo sem esperar a resposta.

Não deve ser definida, a menos que tenha suporte para isso.

auth_param digest children 20 startup=0 idle=1


"realm" realmstring :: especifica o nome que será comunicado ao clliente para o esquema Digest de autenticação de proxy (parte do texto que o usuário vai ver quando for solicitado seu nome de usuário e senha). Não há padrão.

auth_param digest realm Squid proxy-caching web server


"nonce_garbage_interval" timeinterval :: especifica o intervalo de "nonces" emitidos para checar a validade dos clients_agent's. "Nonce" refere-se a um 'número usado uma vez'.

Geralmente, é um número aleatório (ex.:, autenticação MD5).

"nonce_max_duration" timeinterval :: especifica o tempo máximo que um dado nonce será válido.

"nonce_max_count" number :: especifica o número máximo de vezes que um dado nonce pode ser usado.

"nonce" é um número usado uma vez. Geralmente, é um número pseudo-aleatório, emitido em um protocolo de autenticação para garantir que comunicações antigas não possam ser reutilizadas em 'ataques de repetição'.

"nonce_strictness" on|off :: determina se o Squid3 requer um comportamento estrito de incremento-por-1 para a contagem de nonce, ou apenas incremento (off - para uso quando agentes geram contagem nonce que ocasionalmente decrementam um (isto é, 1,2,4,6)). O padrão é off.

"check_nonce_count" on|off :: esta diretiva, se definida como off, torna possível desativar a verificação da contagem nonce para contornar implementações de buggy digest qop em certas versões de navegadores.

O padrão é on, para verificar a contagem nonce e proteger de ataques de repetição de autenticação.

"post_workaround" on|off :: esta é uma solução para bug de certos navegadores que enviam uma requisição digest incorreta em pedidos POST, quando reutilizam o mesmo nonce que adquiriram antes em uma requisição GET.

Opções de autenticação II

Opções de esquema NTLM

"program" cmdline :: especifica o comando para o autenticador NTLM externo. Este programa lê troca de pacotes NTLMSSP com o navegador via Squid3 até que a autenticação seja concluída.

Se você usar um autenticador NTLM, certifique-se que tem uma ACL do tipo proxy_auth tipo. Por padrão, o NTLM authenticator_program não é utilizado.

auth_param ntlm program /etc/squid3/bin/ntlm_auth


"children" numberofchildren [startup=N] [idle=N] :: número máximo de processos para autenticar (O padrão é 5).

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta,) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=" permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre, acima do máximo das necessidades.

auth_param ntlm children 20 startup=0 idle=1


"keep_alive" on|off :: se você tiver problemas com requisições PUT/POST ao usar o esquema de negociação de autenticação, então, você pode tentar definir isso como off.

Isso fará com que o Squid3 force o fechamento da conexão nas requisições iniciais, onde o navegador solicita os esquemas que são suportados pelo proxy.

auth_param ntlm keep_alive on


Opções de configuração NEGOTIATE

"program" cmdline :: especifica o comando para o autenticador NEGOTIATE externo. Este protocolo é utilizado no Microsoft Active Directory com as configurações habilitadas no Microsoft Internet Explorer ou no Mozilla Firefox.

Seu principal objetivo, é a troca de credenciais com o proxy Squid3 usando os mecanismos Kerberos. Se você usar um autenticador Negotiate, certifique-se de ter pelo menos uma ACL do tipo proxy_auth ativa. Por padrão, o authenticator_program Negotiate não é utilizado.

O único programa suportado para esta regra é o ntlm_auth, programa distribuído como parte do Samba, versão 4 ou superior.

auth_param negotiate program /etc/squid3/bin/ntlm_auth --helper-protocol=gss-spnego


"children" numberofchildren [startup=N] [idle=N] :: número máximo de processos para autenticar (O padrão é 5).

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre, acima do máximo das necessidades.

auth_param negotiate children 20 startup=0 idle=1


"keep_alive" on|off :: se você tiver problemas com requisições PUT/POST ao usar o esquema de negociação de autenticação, então, você pode tentar definir isso como off.

Isso fará com que o Squid3 force o fechamento da conexão nas requisições iniciais, onde o navegador solicita os esquemas que são suportados pelo proxy.

auth_param negotiate keep_alive on


Exemplos:

#Configuração mínima recomendada por esquema:
#auth_param negotiate program < descomente e complete esta linha para ativar >
#auth_param negotiate children 20 startup=0 idle=1
#auth_param negotiate keep_alive on
#
#auth_param ntlm program < descomente e complete esta linha para ativar >
#auth_param ntlm children 20 startup=0 idle=1
#auth_param ntlm keep_alive on
#
#auth_param digest program < descomente e complete esta linha >
#auth_param digest children 20 startup=0 idle=1
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#
#auth_param basic program <descomente e complete esta linha>
#auth_param basic children 5 startup=5 idle=1
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours

Default:
none


TAG: authenticate_cache_garbage_interval :: período de tempo da coleta de lixo em todo o cache do nome de usuário.

Este é um trade-off entre a utilização da memória (intervalos longos - digamos 2 dias) e CPU (intervalos curtos - digamos 1 minuto).

Mude somente se você tiver boas razões para isso.

Default: authenticate_cache_garbage_interval 1 hour

TAG: authenticate_ttl :: tempo que um usuário fica logado com as suas credenciais. Quando o intervalo de coleta de lixo ultrapassa o tempo, todas as credenciais dos usuários passadas pelo TTL são removidas da memória.

Default: authenticate_ttl 1 hour

TAG: authenticate_ip_ttl :: se você usar a autenticação de proxy com uma ACL do tipo "max_user_ip" esta diretiva controla por quanto tempo o Squid3 mantém o endereço IP associado com cada usuário.

Use um pequeno valor (por exemplo, 60 segundos) se os usuários alteram os endereços IP rapidamente, como é o caso de dial-up. Você pode utilizar um valor maior (por exemplo, 2 horas) em uma LAN corporativa com atribuições de endereços IP estáticos.

Default: authenticate_ip_ttl 0 seconds


Controles de acesso

TAG: external_acl_type :: esta opção define ACLs externas usando um programa de ajuda para procurar o status.

external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]


Opções:
  • ttl=n :: TTL em segundos para resultados em cache (o padrão é 3600 para uma hora)
  • negative_ttl=n :: TTL para pesquisas negativas em cache (o padrão é o mesmo que ttl)
  • children-max=n :: número máximo de ACLs externas de processos auxiliares (Default: 20).
  • children-startup=n :: número mínimo de ACLs externas de processos auxiliares que inicializam (Default 0).
  • children-idle=n :: número de ACLs de processos auxiliares para se manter à frente do trafego. O Squid3 usará esta diretiva sempre que os processos existentes ultrapassarem a carga de tráfego. Até o valor máximo de children-max. (default 1)
  • concurrency=n :: nível de concorrência por processo. Deve ser usado apenas quando tiver suporte para processar mais do que uma consulta por vez.
  • cache=n :: limita o tamanho do cache, o padrão é ilimitado.
  • grace=n :: percentual remanescente do TTL quando uma atualização de entrada de cache for iniciada sem a necessidade de espera por uma nova resposta. (o padrão é n).
  • protocol=2.5 :: modo de compatibilidade para ACLs externas do Squid-2.5. Os protocolos utilizados nesta comunicação são o IPv4 e IPv6. O padrão é auto-detectar o IPv6, e usá-lo quando disponível.

Formato das especificações:
  • %LOGIN :: nome de login de usuário autenticado.
  • %EXT_USER :: nome de usuário para uma ACL externa.
  • %EXT_LOG :: detalhes de log para uma ACL externa.
  • %EXT_TAG :: tag de uma ACL externa.
  • %IDENT :: identidade do nome de usuário.
  • %SRC cliente IP.
  • %SRCPORT :: porta de origem do cliente.
  • %URI :: URL requerida.
  • %DST :: HOST requerido.
  • %PROTO :: protocolo requerido.
  • %PORT :: porta requerida.
  • %PATH :: caminho de URL requerido (incluindo string de consulta, se houver.
  • %METHOD :: método requerido.
  • %MYADDR :: endereço da interface do Squid3.
  • %MYPORT :: número da http_port do Squid3.
  • %USER_CERT :: certificado SSL do usuário no formato PEM.
  • %USER_CERTCHAIN :: cadeia de certificados SSL do usuário no formato PEM.
  • %USER_CERT_xx :: usuário certificado SSL com atributo xx de sujeito.
  • %USER_CA_xx :: usuário certificado SSL com atributo xx de emissor.

  • %>{Header} :: HTTP cabeçalho de requisição "Header".
  • %>{Hdr:member} :: HTTP cabeçalho de requisição "Hdr" lista de membros "member".
  • %>{Hdr:;member} :: HTTP cabeçalho de requisição da lista de membros usando ";" como separador; pode ser usado qualquer caractere não-alfanumérico.

  • %<{Header} :: HTTP resposta de cabeçalho "Header".
  • %<{Hdr:member} :: HTTP resposta de cabeçalho "Hdr" da lista de membros "member".
  • %<{Hdr:;member} :: HTTP resposta de cabeçalho da lista de membros usando ";" como separador; pode ser usado qualquer caractere não-alfanumérico.

  • %% :: sinal de percentual. Útil para ajudas que precisam um formato imutável.

Além do acima referido, qualquer string especificada na referenciação ACL, também será incluída na linha de requisição depois dos formatos especificados (veja a diretiva "acl external").

O helper recebe as linhas pela especificação do formato acima, e retorna as linhas começando com OK ou ERR, indicando a validade da requisição e, opcionalmente, seguidas por outras palavras-chave com mais detalhes.

Sintaxe do resultado geral: OK/ERR keyword=value ...

Keywords definidas:
  • user= :: nome do usuário (login).
  • password= :: senha do usuário (para login= cache_peer option).
  • message= :: mensagem descrevendo o motivo. Disponível como %o na página de erros.
  • tag= :: aplica uma tag na requisição (em ambos ERR e OK). Apenas define uma tag semalterar tags existentes.
  • log= :: String registrada no access.log. Disponível como %ea nas especificações do logformat.

Se o protocolo for 3.0 (protocol=3.0, o padrão), então a URL de escape é usada para proteger as requisições e as repostas.

Se usar protocol=2.5, então, todos os valores precisam estar entre aspas se contiver espaços em branco escapados com a barra invertida \.

Quando usar a opção "concurrency=", o protocolo é alterado introduzindo-se uma tag do canal de consulta na frente das requisições/respostas (request/response). A tag do canal de consulta é um número entre 0 e concurrency-1.

Default:
none

TAG: acl :: definido uma lista de acesso.

Toda definição da lista de acesso deve começar com "aclname" e "acltype", seguidos por quaisquer tipos de argumentos específicos, ou o arquivo, ou o caminho de um arquivo que será lido pela ACL.

acl aclname acltype argument ...
acl aclname acltype "file" ...


Quando usar um arquivo, o arquivo deve conter um item por linha.

Por padrão, as expressões regulares são case-sensitive (diferenciam maiúsculas de minúsculas).

Para torná-las insensitives, use a opção "-i". Para voltar para maiúsculas, use a opção "+ i" entre os padrões, ou faça uma nova ACL sem "-i".

Alguns tipos de ACL requerem a suspensão da requisição atual para poder acessar uma fonte de dados externa. Aquelas que são marcadas com a tag [slow] são lentas, aquelas que são marcadas com a tag [fast] são rápidas, e aquelas não marcadas são rápidas.

Para mais informações, veja: SquidFaq/SquidAcl - Squid Web Proxy Wiki

 

Tipos de ACLs disponíveis

acl aclname src ip-address/mask ... :: clients IP address [fast]
acl aclname src addr1-addr2/mask ... :: range of addresses [fast]
acl aclname dst ip-address/mask ... :: URL host's IP address [slow]
acl aclname localip ip-address/mask ... :: IP address the client connected to (endereço IP de cliente conectado a) [fast]

acl aclname arp   mac-address ... (xx:xx:xx:xx:xx:xx notação)

A ACL arp requer a opção "--enable-arp-acl", além disso, ACLs arp não são portáveis para todos os sistemas operacionais.

Funciona em GNU/Linux, Solaris, Windows, FreeBSD e algumas outras variantes do *BSD.
[fast]

* Nota: o Squid3 só pode determinar o endereço MAC para os clientes que estão na mesma sub-rede. Se o cliente estiver em uma sub-rede diferente, então o Squid3 não pode descobrir o endereço MAC.

acl aclname srcdomain .foo.com ... :: reverse lookup, from client IP [slow]
acl aclname dstdomain .foo.com ... :: Destination server from URL [fast]
acl aclname srcdom_regex [-i] \.foo\.com ... :: regex matching client name [slow]
acl aclname dstdom_regex [-i] \.foo\.com ... :: regex matching server [fast]

Para "dstdomain" e "dstdom_regex", uma pesquisa inversa é tentada se o IP baseado na URL não for encontrado. O nome "none" é usado se a pesquisa inversa falhar.

acl aclname src_as number ...
acl aclname dst_as number ... :: [fast]


Exceto para controle de acesso, números AS podem ser usados para encaminhamento das requisições de caches específicos. Abaixo, tem um exemplo para encaminhar todos os pedidos de "AS#1241" e só para aqueles em "mycache.mydomain.net":

# acl asexample dst_as 1241
# cache_peer_access mycache.mydomain.net allow asexample
# cache_peer_access mycache_mydomain.net deny all


acl aclname peername myPeer ... :: [fast] corresponde com a entrada cache_peer setando name= on na linha cache_peer lines para uso confiável.

  • acl aclname time [day-abbrevs] [h1:m1-h2:m2]

  • [fast]
  • day-abbrevs:
  • S - Sunday
  • M - Monday
  • T - Tuesday
  • W - Wednesday
  • H - Thursday
  • F - Friday
  • A - Saturday
  • h1:m1 deve ser menor do que h2:m2

Coloque sempre os dias na ordem, você pode omitir dias, mas coloque na ordem.

acl aclname url_regex [-i] ^http:// ... :: regex (expressão regular) corresponde a todas as URLs [fast]
acl aclname urllogin [-i] [^a-zA-Z0-9] ... :: regex corresponde ao campo de login na URL
acl aclname urlpath_regex [-i] \.gif$ ... :: regex que corresponde ao caminho da URL [fast]

acl aclname port 80 70 21 0-1024... :: porta TCP de destino [fast]. Intervalos são permitidos.
acl aclname localport 3128 ... :: porta TCP de conexão [fast]. NP: para o modo "intercept" é usualmente '80'
acl aclname myportname 3128 ... :: porta http(s)_port (quando usar https coloque uma porta diferente de http_port) [fast]
acl aclname proto HTTP FTP ... :: requisição de protocolo [fast]
acl aclname method GET POST ... :: requisição de método HTTP [fast]
acl aclname http_status 200 301 500- 400-403 ... :: código do status na resposta [fast]
acl aclname browser [-i] regexp ... :: o padrão corresponde ao cabeçalho User_Agent (veja também req_header abaixo) [fast]
acl aclname referer_regex [-i] regexp ... :: o padrão corresponde ao cabeçalho refererr [fast]. referer é pouco confiável, então use com cuidado.

acl aclname ident username ...
acl aclname ident_regex [-i] pattern ... :: a string corresponde à saída ident [slow] use REQUIRED para aceitar qualquer ident não-nulo.

acl aclname proxy_auth [-i] username ...
acl aclname proxy_auth_regex [-i] pattern ... :: autenticação HTTP verifica se o login e a senha digitados conferem com o login e a senha cadastrados [slow] e recebe uma lista de nomes de usuários permitidos.

Use REQUIRED para aceitar qualquer nome de usuário válido. Utilize a autenticação de proxy em cenários forward-proxy e autenticação HTTP simples em cenários reverse-proxy.

NOTAS:
  • Quando um cabeçalho de autenticação de proxy é enviado, mas não é necessário na checagem da ACL, então o nome do usuário NÃO será registrado no access.log.
  • proxy_auth requer um programa de autenticação EXTERNO para checar as combinações de login e senha (veja a diretiva auth_param).
  • proxy_auth não pode ser usado em um proxy transparent/intercep. O navegador precisa ser configurado para usar um proxy e responder à autenticação.

acl aclname snmp_community string ... :: comunhão de strings para limitar o acesso ao agente SNMP [fast]

Exemplo:

acl snmppublic snmp_community public


acl aclname maxconn number :: será correspondido quando o endereço IP do cliente tem mais do que <number> conexões TCP estabelecidas. [fast]

* Nota: só mede conexões TCP diretas, então X-Forwarded-For para clientes indiretos não serão contadas.

acl aclname max_user_ip [-s] number :: corresponde quando o usuário tenta logar mais de uma vez com IPs diferentes. O parâmetro "authenticate_ip_ttl" controla o tempo de espera nas entradas. [fast]

Se "-s" for especificado, o limite é rigoroso, negando a navegação de outros endereços IP até que o TTL expire. Sem "-s", o Squid3 vai irritar o usuário negando requisições aleatoriamente (o contador é zerado cada vez que o limite é atingido e um pedido for negado).

* Nota: no modo de aceleração, ou onde haja um mix de proxies, os clientes podem parecer vir de múltiplos endereços, se forem passando por muitos proxies, então, um limite de 1, nesse caso, pode causar problemas para os usuários.

acl aclname random probability :: corresponde pseudo-aleatoriamente as requisições, com base na probabilidade dada.

A probabilidade pode ser escrita como um decimal (0,333), como fração (1/3) ou como razão de matches:non-matches (3:5).

acl aclname req_mime_type [-i] mime-type ... :: a regex corresponde com o tipo mime da requisição gerada pelo cliente. Pode ser usada para detectar upload de arquivos em alguns tipos de requisições HTTP por tunelamento [fast]

* Nota: NÃO coincide com a resposta. Você não pode usar para saber o tipo de arquivo retornado.

acl aclname req_header header-name [-i] any\.regex\.here :: A regex corresponde com qualquer um dos cabeçalhos de requisição conhecidos. Pode ser vista como um super-conjunto de "browser", "referer" e "mime-type" ACLs [fast]

acl aclname rep_mime_type [-i] mime-type ... :: a regex corresponde com o tipo mime da resposta recebida pelo Squid3. Pode ser usada para detectar download de arquivos em alguns tipos de requisições HTTP por tunelamento [fast]

* Nota: não tem nenhum efeito nas regras http_access. Só tem efeito nas regras que afetam o fluxo de dados de resposta como "http_reply_access".

acl aclname rep_header header-name [-i] any\.regex\.here :: a regex corresponde com qualquer um dos cabeçalhos de resposta conhecidos. Pode ser vista como um super-conjunto de "browser", "referer" e "mime-type" ACLs [fast]

acl aclname external class_name [arguments...] :: ACL externa de pesquisa por meio de uma classe auxiliar definida pela diretiva external_acl_type [slow]

acl aclname user_cert attribute values... :: corresponde com os atributos do usuário no certificado SSL sendo um dos DN/ C/ O/ CN/ L/ ST [fast]

acl aclname ca_cert attribute values... :: corresponde com os atributos do usuário no certificado CA SSL sendo um dos DN/ C/ O/ CN/ L/ ST [fast]

# acl aclname ext_user username ...
# acl aclname ext_user_regex [-i] pattern ...
:: a string corresponde com o nome de usuário retornado pela ACL externa [slow]. Use REQUIRED para aceitar qualquer nome de usuário não-nulo.

acl aclname tag tagvalue ... :: a string corresponde com a tag retornada pela ACL externa.

acl aclname hier_code codename ... :: a string corresponde com o código de hierarquia do Squid3 [fast]. Por exemplo, DIRECT, PARENT_HIT, NONE, etc.

* Nota: não tem nenhum efeito nas regras "http_access". Só tem efeito nas regras que afetam fluxo de dados de resposta, como "http_reply_access".

Exemplos:

acl macaddress arp 09:00:2b:23:45:67
acl myexample dst_as 1241
acl password proxy_auth REQUIRED
acl fileupload req_mime_type -i ^multipart/form-data$
acl javascript rep_mime_type -i ^application/x-javascript$


Default:

ACLs all, manager, localhost, e to_localhost são predefinidas.

Desligar windows remoto no Linux

# net rpc shutdown -C "Mensagem que vai aparecer na tela" -f -I IP_HOST -t 60 -U user%pass

Explicando:
C :: mensagem que aparecerá na tela antes de a máquina desligar.
f :: forçar desligamento da máquina, caso tenha algo aberto.
I :: endereço IP da máquina que queremos desligar.
t :: tempo em segundos para o desligamento.
U :: usuário e senha (separados por %) com permissão de administrador da rede ou do computador.
r :: parâmetro que deve ser utilizado para reiniciar o computaor, ao invés de desligar.

Aprenda como instalar um Servidor Web no Ubuntu para hospedar vários sites

Para instalar um servidor web no Ubuntu e hospedar vários sites é muito fácil, mas requer algumas configurações adicionais que não é preciso fazer se você pretende criar um servidor web para apenas um domínio.
Um servidor web no Ubuntu não tem necessidade de grandes configurações de hardware, claro levando em consideração um site com poucas visitas. Eu recebi algumas duvidas por email e por isso resolvi criar esse post para responder a mais de um leitor.
Perguntas frequentes:
  • Como instalar um servidor web para hospedar o meu site?
  • Como instalar um servidor web completo no Ubuntu?
  • Como hospedar mais de um site no apache?
como criar um servidor web ubuntu rodar varios sites
Coloquei um passo a passo nesse post, para você instalar um servidor web no Ubuntu onde será possível a hospedagem de vários sites com domínios diferentes.
Claro que eu preciso imaginar que você já tem um ou mais domínios registrados e que a configuração DNS desses domínios apontem para o servidor onde será feito essa configuração.
Estarei usando alguns comandos para instalar aplicativos no Ubuntu Linux, se você tiver alguma duvida nesses comandos, eu sugiro a você baixar o EBOOK DO CURSO LINUX UBUNTU, É GRÁTIS.

1) COMO INSTALAR UM SERVIDOR WEB NO UBUNTU

apt-get install php5 php5-mysql mysql-server
Muita calma nesse momento, apesar de não constar no comando acima, o Ubuntu vai instalar por padrão o servidor Web Apache2, fique tranquilo.
Esse comando vai instalar
  • Servidor Web Apache2
  • Módulo php5 para rodar sites criados em php, o CMS WordPress por exemplo.
  • Servidor de banco de dados Mysql, você será questionado sobre a senha do usuário root do mysql.

2) CONFIGURAÇÃO DO APACHE PARA TRABALHAR COM VÁRIOS SITES

A Configuração do apache2, o nosso servidor web, está em /etc/apache2/
Abaixo, um arquivo de template para criação da configuração do apache2, onde será possível hospedar vários sites em um só servidor
vim /etc/apache2/sites-available/seu_site.com
Comece criando o arquivo conforme abaixo:
<VirtualHost *:80>
 ServerName dominio.net
 ServerAdmin webmaster@localhost
ServerAlias dominio.net www.dominio.net
 DocumentRoot /var/www/dominio.net
<Directory />
 Options FollowSymLinks
 AllowOverride None
 </Directory>
<Directory /var/www/dominio.net>
 Options -Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
 </Directory>
ErrorLog /var/log/apache2/error-dominio.net.log
# Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn
CustomLog /var/log/apache2/dominio.net.log combined
</VirtualHost>
Modifique esse arquivo de template conforme sua necessidade, apenas algumas observações.
A opção ServerName dominio.net, é o dominio do seu site, poderia ser um subdominio também, alguma coisa tipo ofertas.dominio.net
A opção DocumentRoot /var/www/dominio.net define o diretório onde será criado os arquivos do seu site, ou seja onde será instado o seu blog WordPress por exemplo.

3) APÓS INSTALAR O SERVIDOR WEB NO UBUNTU, DEVEMOS HABILITAR A NOVA CONFIGURAÇÃO

Esse arquivo de configuração ainda não está em uso, precisamos avisar para o apache que queremos habilitar outro site, para isso vamos usar o comando a2ensite.
cd /etc/apache2/sites-available/
a2ensite seu_site.com

4) HABILITAR O MOD REWRITE NO APACHE

Esse módulo fará a a reescrita das urls, será necessário para trabalhar com o wordpress
E executa o comando abaixo
cd /etc/apache2/mods-available
a2enmod rewrite

5) MUDAR PERMISSÃO DE ACESSO DO DIRETÓRIO DO SITE

Eu não pretendo discutir nada sobre segurança em sites agora, para facilitar nossa vida, vamos usar o usuário padrão do apache para mandar nesse diretório do nosso novo site.
mkdir /var/www/seu_site.com
chown www-data:www-data -R /var/www/seu_site.com

6) INSTALAÇÃO DO PHPMYADMIN

Para acessar nosso servidor de banco de dados Mysql, vamos usar o phpmyadmin, ele é uma aplicação em php que irá facilitar nossa vida na hora de criar um banco de dados, fazer backup, criar comando sql e muito mais.
apt-get install phpmyadmin
Para acessar
http://ip-servidor/phpmyadmin/

7) CONFIGURAÇÃO DA AUTENTICAÇÃO PARA ACESSAR O PHPMYADMIN

Essa configuração é uma questão de segurança para o seu banco de dados, dessa forma para acessar o phpmyadmin será solicitado uma senha de autenticação no navegador.
Configuração no arquivo
vim /etc/phpmyadmin/apache.conf
No arquivo:
Na configuração: <Directory /usr/share/phpmyadmin>
Adicionar o linhas linhas:
<IfModule mod_authn_file.c>
 AuthType Basic
 AuthName "phpMyAdmin Setup"
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 </IfModule>
 Require valid-user
Agora, temos que criar o usuário, para fazer a autenticação, com o comando abaixo.
htpasswd htpasswd.setup seu_usuario
Dessa forma, quando acessar http://ip-servidor/phpmyadmin/ será solicitado a autenticação no navegador.
Depois dessa configuração, temos que reiniciar o apache com o comando abaixo:
/etc/init.d/apache2 restart
Então vamos recapitular o que fizemos até agora.
  • Instalamos o Apache2, o nosso servidor web do Ubuntu.
  • Instalamos também o php5, módulos necessários para rodar scripts em php e principalmente porque no futuro queremos instalar um site em WordPress.
  • Instalar o servidor de banco de dados Mysql
  • Foi instalado também o phpmyadmin, aplicação web para manipular nosso servidor de banco de dados
  • Configuramos o servidor apache2 para trabalhar com vários sites em um único servidor, criando um arquivo de template para esse site que poderá ser replicado para diversos outros.
Sendo assim, temos um servidor Web completo rodando em Linux com a distribuição Ubuntu, capaz de hospedar vários sites em php5, com banco de dados Mysql.
Para mais explicações sobre comando Linux, baixe o  EBOOK DO CURSO LINUX UBUNTU, É GRÁTIS.
E VOCÊ, JÁ CONFIGUROU UM SERVIDOR WEB ? O QUE ACHOU DESSE PEQUENO TUTORIAL. DEIXE UM COMENTARIO.

quarta-feira, 7 de agosto de 2013

Mudando o nome (hostname) do seu dispositivo Android

Antes de qualquer coisa, para esse método você vai precisar de:
Para bom entendedor
Para alterar, digite os comandos:
  • su
  • setprop net.hostname nome-desejado
Para verificar, digite o comando:
  • getprop net.hostname
Para fazer valer:
  • Desconecte e conecte o dispositivo Android de sua rede, basta desligar e ligar o Wi-Fi.
Pronto, simples assim. Se precisa de mais detalhes antes de prosseguir, continue lendo.

terça-feira, 6 de agosto de 2013

Redundância de dois links de internet

Esse script tem por finalidade a redundância de dois links de internet, você usa o link1 com gateway padrão, se o link1 cair o link2 assume, ficando como gateway padrão, assim que o link1 voltar o script faz com que ele assuma novamente e tenha por padrão o link1.

Deve-se criar uma pasta no diretório /var/log ou onde você achar melhor para salvar os logs que serão criados. No meu caso:

# mkdir /var/log/reduncancia

Em seguida criar o arquivo de log:

# touch /var/log/redundancia/redundancia.log

Espero que ajude... Testado com sucesso no CentOS 5.9.

Abraços.

[ Download: 5826.redundancia.sh

#!/bin/bash
# Observacoes
#
# Esse script prove de forma simples e eficiente uma redundancia entre
# dois links de internet (sem load balance), sendo um link principal e o outro de backup.
#
# Crie o arquivo com o nome que quiser, no nosso caso como redundancia.sh
# Torne-o um executavel com o comando chmod +x redundancia.sh
# Adicione a linha abaixo no crontab   crontab -e
# * * * * *   /etc/script/redundancia.sh
 
# Gateway ativo
# Esse comando vefirica qual o link esta como padrao, se o link tiver como padrao o GW1
# ele vai pingar no ip externo e se responde e porque o link esta normal e nao faz mais nada
export LC_ALL=C
export PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
GWUP=`ip route show | grep ^default | cut -d " " -f 3`
 
# Gateway Principal
GW1=192.168.25.1; export GW1 # Substitua pelo gateway do seu link principal
 
# Gateway Slave
GW2=192.168.24.1; export GW2 # Substitua pelo gateway do seu link backup
 
# Etapa 1 = Verifica se o gateway e o principal, ser for ele vai pra etapa 2 se nao for ele vai pra etapa 2.1
if [ $GWUP == $GW1 ]; then
 
# Etapa 2 = Informa com log que a rota principal e o gateway 1 e vai para a etapa 6
   echo "`date` - Rota default e a Principal! Link 35 megas Gateway 192.168.25.1" >> /var/log/redundancia/redundancia.log
 
else
 
# Etapa 2.1 = Informa com log que a rota principal e o gateway 2 e vai para a etapa 3
   echo "`date` - Rota default e a Slave! Link 10 megas Gateway 192.168.24.1" >> /var/log/redundancia/redundancia.log
 
# Etapa 3 = Verifica a disponibilidade do link com gateway 1
   echo "`date` - Verificando a disponibilidade do link principal de 35 megas..." >> /var/log/redundancia/redundancia.log
   route add -net 0.0.0.0 gw $GW1
   ping -I eth1 200.160.2.3 -c 5 -A > /dev/null
   if [ $? -eq 0 ]; then
 
# Epata 4 = Se o gateway principal voltou ele exclui a rota do gateway 2 para manter o gatewy 1 ativo
      echo "`date` - Link pricipal voltou!" >> /var/log/redundancia/redundancia.log
      route del -net 0.0.0.0 gw $GW2
      exit 0
 
   else
# Etapa 5 = Agora se o gatewy principal nao voltou, ele deleta a rota o gatewy 1 e mantem a rota do gateway 2
      echo "`date` - Link principal ainda nao voltou..." >> /var/log/redundancia/redundancia.log
      echo "`date` - Link de backup sera mantido." >> /var/log/redundancia/redundancia.log
      route del -net 0.0.0.0 gw $GW1
      exit 0
 
   fi
 
fi
 
# Etapa 6 = Testando se o link principal com gateway 1 esta normal, se tiver ele vai pra etapa 7
echo "`date` - Testando Link Principal..." >> /var/log/redundancia/redundancia.log
ping -I eth1 200.160.2.3 -c 5 -A > /dev/null
 
if [ $? -eq 0 ]; then
 
# Etapa 7 = Diz que o link principal com gateway 1 esta normal e finaliza
   echo "`date` - Link Principal UP!" >> /var/log/redundancia/redundancia.log
 
else
# Etapa 8 = Diz que o link principal nao esta funcionado e deleta a rota do gateway um e adiciona rota ao gateway 2
   echo "`date` - Link Principal DOWN..." >> /var/log/redundancia/redundancia.log
   echo "`date` - Subindo Link de backup..." >> /var/log/redundancia/redundancia.log
   route del -net 0.0.0.0 gw $GW1
   ip route add default via $GW2
 
fi

Sistema para provedores de VoIP - Projeto Billing Livre

Lançado sistema para provedores de VoIP, único Billing 100% grátis do Brasil.

É com prazer que anunciamos o lançamento do único Billing para provedores VoIP grátis do Brasil. Sistema completo, sem custo e sem limites de simultâneas.

Desenvolvido em MVC, com Ext JS 4 e Yii Framework, respeitando as convenções dos frameworks:

Script de instalação do Magnus billing server:

Dependências:
  • CentOS 5 ou superior;
  • Apache, PHP 5.2 ou superior, MySQL;
  • Asterisk 1.6.2 ou superior com Asterisk-addons, para uso de realtime.

Instalação de dependências:

# yum -y --skip-broken gcc gcc-c++ make openssl-devel newt-devel ncurses-devel libtermcap-devel libxml2-devel perl curl curl-devel bison bison-devel doxygen mlocate lynx nmap mod_ssl crontabs vixie-cron speex speex-devel libtool-ltdl flex screen audiofile-devel libogg-devel perl-DateManip sendmail-cf sox autoconf automake libxml2 libxml2-devel sqlite* subversion php httpd mysql-devel mysql-server unixODBC unixODBC-devel libtool-ltdl-devel mysql-connector-odbc mysql php-cli php-devel php-gd php-mbstring php-mysql php-pdo php-xml php-xmlrpc php-pear python-setuptools.noarch MySQL-python

Obs.: Instale também o Asterisk, Asterisk-addons e DAHDI (instalação padrão).

Instalação do Magnus Billing Server:

# wget --no-check-certificate https://subversion.assembla.com/svn/billing_svn/doc/install.sh
# chmod +x install.sh
# ./install.sh user_mysql senha_mysql


Att. Magnus,
Projeto Billing Livre.

RAID via software no Linux

Esta dica explica detalhadamente o funcionamento do RAID via software no Linux utilizando o programa mdadm.


Particionando

RAID no Linux:

Será usado um exemplo de RAID6 com dois discos de "spares" (reservas).

Distro: Debian Lenny
Ferramentas: mdadm, fdisk e parted

Instalar pacotes:

# apt-get install mdadm parted -y

(Fdisk é o particionador padrão da maioria das distribuições, não precisa ser instalado)

Particionando o(s) disco(s):

# fdisk -l

Para listar as partições e os HDs instalados na máquina. Vai aí um exemplo do resultado:
Disco /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x64c99039
Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1 *          1     16825 135146781      7 HPFS ou NTFS
/dev/sda2         16826      19457    21141540    5 Estendida
/dev/sda5         19209      19457     2000092+ 82 Linux swap / Solaris
/dev/sda6         16826      19207    19133352 83 Linux

# fdisk /dev/sda

Para gerenciar o HD /dev/sda. Escolha opção "n" - para nova partição. Crie seis novas partições lógicas com 1GB cada. Altere o tipo delas para "fd" - Linux RAID auto detection - opção "t" (muda o tipo), depois "fd". Salve alterações - opção "w".

Para escrever alterações no arquivo /proc/partitions:

# partprobe

Só para conferir o serviço:

# fdisk -l

Para verificar se foram lidas as modificações:

# cat /proc/partitions

Vamos supor que as seis novas partições ficaram assim:

/dev/sda7
/dev/sda8
/dev/sda9
/dev/sda10
/dev/sda11
/dev/sda12

Criando o arranjo:

# mdadm -C /dev/md0 -a yes -l 6 -n 4 /dev/sda{7,8,9,10} -x 2 /dev/sda{11,12}

Onde:
  • -C ---criar arranjo
  • -l ----nível do RAID
  • -n ----número de discos envolvidos no arranjo
  • -a yes ----cria automaticamente o dispositivo de bloco md0(que poderia ser md1,2,3...) sem a necessidade de se utilizar o comando mknod
  • -x ---discos de spare (reservas)

Monitorando arranjo:

# watch -n 1 mdadm -D /dev/md0
# watch -n 1 cat /proc/mdstat


Onde "# watch -n 1" deve ser entendido como "repita de 1 em 1 segundo este comando".

Criar ponto de montagem (diretório) ou utilizar um do sistema:

# mkdir -m 755 /meuraid

Criando o sistema de arquivos:

# mkfs -t ext3 /dev/md0

Montando:

# mount /dev/md0 /meuraid -o rw

Obs.: Se deseja que esta montagem seja feita depois de todo boot, inclua este dispositivo de bloco no arquivo /etc/fstab.

Falha em um dos discos:

# mdadm /dev/md0 -f /dev/sda8

("falhando" dispositivo sda8 do arranjo md0).

Como eu tenho dois discos de spare, o primeiro assume automaticamente o lugar do que falhou. Se outro falhar, temos mais um reserva.

Monitorando arranjo:

# watch -n 1 mdadm -D /dev/md0
# watch -n 1 cat /proc/mdstat


Adicionando dispositivos

Em primeiro lugar, crie uma partição com o mesmo tamanho das demais. Então:

# mdadm /dev/md0 -a /dev/sda13

Foi adicionado o disco /dev/sda13 ao arranjo /dev/md0 . Se o arranjo estiver completo, como foi configurado no momento de sua criação, o disco inserido entra como spare automaticamente. Lembre-se de que em RAID 5 a tolerância a falhas é de um disco apenas e em RAID 6, dois discos.

Linux: Feel the power!!!!!!!!!!!!
Linux: RAID via software no Linux

Samba - Configurando grupo de administradores

Samba - Configurando grupo de administradores

Nesta dica, mostrarei como configurar um grupo para que este tenha acessos administrativos em todas as máquinas do domínio, muito útil em lugares onde várias pessoas devem ter acessos de administrador. Além de que, os grupos mostrados aqui desenvolvem um papel importante em uma rede Windows.

Nesta minha primeira dica, mostrarei como criar e configurar grupos que são necessários em uma rede Windows, onde, por padrão, já é configurada em um servidor Active Directory, porém, não é configurada em um servidor Linux/Samba. E um desses grupos é o Domain Admins, que é o grupo de administradores de rede, que também tem acessos administrativos nas máquinas que estão no domínio e é esse grupo que vamos focar neste tutorial.

Obs.: Para o tutorial, será necessário já ter um servidor Samba funcionando como servidor de domínio e logon.

Adicionando grupos no GNU/Linux

O primeiro passo é adicionarmos os grupos no GNU/Linux, uma vez que estes grupos serão mapeados para que o Windows os "enxergue" e um detalhe (não necessário nesta parte, somente para organização), é configurarmos o GID desses grupos conforme o mapeamento, sendo 512 para Domain Admins, 513 para Domain Users e 514 para Domain Guests.

Então, vamos criá-los:

# groupadd -g 512 ntadmins
# groupadd -g 513 ntusers
# groupadd -g 514 ntguests


Acima, estamos criando os grupos ntadmins (Domain Admins, Administradores), ntusers (Domain Users, Usuários) e o ntguests (Domain Guests, Convidados) com os respectivos GID's.

Mapeando grupos no Samba

Depois de criarmos os grupos, devemos mapeá-los no Samba para que o Windows possa enxergá-los, para isso, daremos os seguintes comandos:

# net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d
# net groupmap add ntgroup="Domain Users" unixgroup=ntusers rid=513 type=d
# net groupmap add ntgroup="Domain Guests" unixgroup=ntguests rid=514 type=d


Com os comandos acima, estamos mapeando os grupos unix: ntadmins, ntusers e ntguests, com os grupos de domínio Domain Admins, Domain Users e Domain Guests, utilizando o RID conforme explicado acima (aqui é necessário que seja esta ondem), sendo 512 para Domain Admins, 513 para Domain Users e 514 para Domain Guests.

Configurando o Samba

Finalmente, devemos configurar o Samba para que ele entenda que o grupo Domain Admins será o administrador da rede, podendo acessar todos os compartilhamentos, colocar máquinas no domínio, gerenciar arquivos etc.

Para isso, será necessário adicionar a seguinte linha ao arquivo de configuração do Samba (smb.conf), que fica geralmente em /etc/samba:

admin users = @"SEUDOMINIO\Domain Admins"

Depois de adicionarmos a linha acima no arquivo de configuração, devemos reiniciar o Samba com o comando abaixo:

# /etc/init.d/samba

Adicionando usuários ao grupo

Depois de fazermos todas as configurações necessárias, devemos adicionar os usuários que serão os administradores da rede ao grupo ntadmins, grupo no qual configuramos como Admin.

No exemplo abaixo, colocaremos os usuários "ciclano" e "fulano" ao grupo:

# gpasswd -a ciclano ntadmins
# gpasswd -a fulano ntadmins


Pronto, agora o "ciclano" e "fulano" terão acessos administrativos em todas as máquinas que estiverem no domínio, bastando logar com seus usuários nas máquinas.

Concluindo

Neste tutorial, o objetivo foi criar e configurar o grupo de administradores da rede, por isso não entrei em detalhes sobre os comandos utilizados, pois há vários tutorias bem completos sobre isso.

Testei os comandos acima utilizando Debian 6 rodando o Samba como controlador de domínio.

Caso tenha ficado com alguma dúvida, fico à disposição em meu e-mail (rc.jeferson [at] gmail.com) para ajudar.

Se gostou do tutorial, pode me acompanhar em meu blog, onde posto dicas e soluções relacionados a Infraestrutura em TI.

Instalação, configuração do Samba e utilização de quota


Introdução

Na área de redes de computadores nos encontramos com uma variedade de Sistemas Operacionais, principalmente Windows e Linux, e nesse momento vemos a necessidade de compartilhar arquivos e dados em meio a nossa rede, assim sendo indispensável uma tecnologia como a de um servidor Samba.

Um servidor Samba tem como objetivo facilitar o compartilhamento de arquivos entre sistemas operacionais Windows e Linux, apresentando uma única máquina como ponto central para realizar a tarefa de compartilhamento na rede. Além disso, um servidor Samba pode exercer a função de PDC (Primary Domain Controller) e compartilhamento de impressoras, mas o tópico de PDC e compartilhamento de Impressora não será abordado neste documento.

Objetivo

Criar um servidor Samba a fim de controlar o compartilhamento de arquivos e de dados, além de gerenciar uma quota para limitar o armazenamento máximo de dados por diretórios.

Motivação

Observando a constante necessidade dos professores de compartilhar arquivos e/ou material didático com os alunos de uma forma mais prática e rápida, não esquecendo da necessidade do suporte de armazenar e compartilhar os programas a serem instalados equipamentos.

Justificativa

Utilização dos recursos existentes para melhorar o compartilhamento de arquivos na rede. Dar suporte aos professores para compartilhar com seus alunos os materiais das aulas que terão mais dinâmica e aproveitamento.

Metodologia

Obs.: Usuário criado na instalação do Sistema Operacional:

Ex.:

Id: solar
Passwd: ******

O servidor Samba não necessita de duas placas de rede, ele precisa somente estar conectado à rede interna, como uma máquina normal. Um servidor Samba pode, aliás, ser configurado em um Sistema Operacional comum (Desktop), com interface gráfica e outros adicionais, porém, deve ser uma distribuição Linux.

Primeiramente podemos pressupor que já tenha o Ubuntu instalado, Desktop ou Ubuntu Server. Então se necessário realize o upgrade da versão. Para isso, utilize o seguinte comando via terminal:

# do-release-upgrade -d

Ao executar este comando o sistema não será atualizado diretamente para a última versão, e sim realizará o upgrade para a próxima versão após a atual.

Antes de instalar o Samba, serão criados os usuários que serão utilizados pelo Samba e os diretórios que o servidor irá compartilhar na rede. Em outras etapas do processo poderão ser adicionados novos usuários ou pastas.

Para adicionar um usuário no sistema execute o comando:

# adduser “nome do usuário”

Ex.:

# adduser admin
Id: admin
Passwd: ****

# adduser apoio
Id: apoio
Passwd: ****

# adduser aluno
Id: aluno
Passwd: ****

Após executar o comando entre com a senha para este usuário e depois repita a mesma senha para confirmação. Pronto, o usuário foi criado.

Os diretórios que serão compartilhados pelo Samba estão sendo criados no diretório /home, este é o padrão utilizado pelo Samba. Sendo assim, criamos os diretórios em /home executando o seguinte comando:

# mkdir /home/”nome do diretório a ser compartilhada”

Ex.:
# mkdir /home/aulas
# mkdir /home/instalacao


Os diretórios criados foram:

/home/aulas
/home/instalacao 
 
 

Instalando o Samba e configurando o smb.conf

Para instalar o pacote Samba, execute o seguinte comando:

# apt-get install samba smbclient samba-doc

Após instalar o Samba, editar o arquivo smb.conf, que se encontra no seguinte caminho:

# vi /etc/samba/smb.conf

Abaixo o arquivo como exemplo:

# responsável pelas configurações gerais do Samba
[global]
# nome do grupo de trabalho
workgroup = “nome do grupo”
# nome do servidor
netbios name = samba
# habilita o servidor para suporte WINS
wins support = Yes
# define os usuários que serão administradores
   admin user = admin
#=================== Definições de Pastas ====================
# cria o modo de permissões temporárias para o usuário

local máster = Yes
   os level = 100
   preferred máster = Yes
   create mode = 0755
   directory mode = 0755
   directory mask = 0777
valid users = apoio,aluno,admin
# define os IP’s que terão acesso ao servidor
hosts allow = 192.168.1.0/255.255.255.0 
[instalacao]
    writeable = Yes
    read list = admin
    path = /home/instalacao
    create mask = 0777
    directory mask = 0777
    valid users = admin
[aulas]
#permite a leitura do diretório na rede
          writeable = Yes    
# define a lista de usuários que podem ler dentro do diretório
          read list = aluno
# define a lista de usuários que podem gravar dentro do diretório
write list = apoio,admin
# local do diretório que será compartilhado
      path = /home/aulas
   # permissão para criação
create mask = 0777
directory mask = 0777
# define a lista de usuários que podem acessar o diretório
         valid users = apoio, admin, aluno 
[aluno]
writeable = Yes
       browseable = no
       read list = admin,aluno,apoio
      path = /home/aulas/aluno
       create mask = 0777
     directory mask = 0777
      directory mode = 0755
      valid users = apoio, admin, aluno
# Fim do smb.conf


Adicionando usuários, permissões e grupos

Com o arquivo smb.conf configurado, deverá adicionar os usuários que foram criados no sistema para serem usados também no Samba. O Samba utiliza os usuários existentes no sistema, para definir qual usuário tem acesso a qual diretório. Para adicionar um usuário do sistema no Samba, usamos o comando:

# smbpasswd –a "nome do usuário"

Ex.:

# smbpasswd –a apoio
# smbpasswd –a admin 
# smbpasswd –a aluno
# smbpasswd –a professor


Para excluir um usuário do Samba, execute o comando:

# smbpasswd –x “nome do usuário”

Ex.:

# smbpasswd –x professor

Após executar o comando para adicionar usuário ao Samba, será solicitada uma senha para o usuário, é necessário que essa senha para o usuário Samba seja a mesma senha do usuário no sistema, caso contrário não será possível acessar o compartilhamento usando este usuário.

Com os usuários do sistema inseridos no Samba, deve-se definir no sistema quem é o dono e de qual diretório e seu grupo pertence para ser compartilhado. Para isso, acesse o diretório /home e executamos o comando:

$ cd /home

Listar os diretórios para verificar as permissões:

# ls –la

Será exibida na tela uma lista semelhante a abaixo:
drwxr-xr-x 0 root root 4096 2011-09-23 20:00 aulas
drwxr-xr-x 0 root root 4096 2011-09-23 20:01 instalacao

Criar os grupos para incorporar os usuários e suas permissões. Para adicionar um grupo basta executar o comando:

# addgroup "nome do grupo"

Adicione os grupos a ser utilizados.

Ex.:

# addgroup professores
# addgroup aluno


Agora vamos alterar o dono e o grupo do diretório /home/aulas e /home/instalacao para apoio, executado o seguinte comando:

# chown dono:grupo "nome do diretório"

Ex.:

# chown apoio:professores aulas
# chown aluno:aluno aluno
# chown admin:admin instalacao


Onde, Apoio é dono do grupo professores para o diretório “aulas” e a ordem segue a mesma para as demais linhas de permissões acima.

Por fim, pode restartar o serviço do Samba e testar. Use o comando a seguir:

# cd /etc/init.d

Depois:

# ./smbd restart
 
 

Testando o compartilhamento

Testando através do Windows:

Supondo que as configurações básicas para ter acesso à rede já estejam feitas, o acesso aos diretórios do Samba é simples. Basta ir ao menu iniciar -> executar, digite o IP do Servidor Samba, da seguinte maneira:

\\"numero do IP"

Ex.: \\192.168.1.31

Depois pressione enter.

Será solicitado nome de usuário e senha, é só entrar com o usuário que deseja, tendo em mente que este usuário terá permissões definidas pelo Samba, ou seja, você não irá liberar o usuário e senha de uma conta com permissão total nos diretórios para um aluno ou outra pessoa, essa conta deve ser conhecida apenas pelos administradores do servidor.

Testando através do Ubuntu:

Supondo que as configurações básicas para ter acesso a rede já estejam feitas, o acesso ao diretórios do Samba é simples. Basta abrir o Gerenciador de arquivos do Ubuntu (o Nautilus), na guia de diretório digite:

smb://"IP do servidor Samba"

Ex.: smb://192.168.1.31

Ao tentar acessar um dos diretórios compartilhados pelo servidor Samba, será pedido um usuário e senha. Após acessar um diretório, o mesmo será afixado à área de trabalho (Desktop) do Ubuntu, ficando acessível enquanto o usuário permanecer conectado, sem a necessidade de serem informados os dados de usuário e senha para realizar o acesso novamente.

Quotas para limitar uso de disco

Utilizando Quotas para limitar o uso de disco por usuário ou por grupo de usuários:

Inicie com a instalação do pacote Quota:

# apt-get install quota

Depois edite o arquivo fstab, localizado no diretório /etc:

# vi /etc/fstab

Procure no arquivo a linha que contém as informações referentes ao diretório /home. Nele, será alterado a parte que contem a palavra "default" para "default,usrquota,grpquota"

IMPORTANTE: Não utilizar espaços para separar as palavras, pois isso não é compreendido pelo sistema, pois esta fora dos padrões de sua sintaxe.

O sistema deverá ser reiniciado para as alterações entrarem em vigor:

# shutdown -r now

Após isto, o Quota se encarregará de criar os arquivos “aquota.user” e “aquota.group” no diretório /home. Iremos editar estes arquivos para limitar o uso de um usuário ou grupo.

Para editarmos estes arquivos utilizamos os comandos:

# edquota -u [nome do usuário]

Para editarmos os limites de um usuário do sistema.

E:

# edquota -g [nome do grupo]

Para editarmos os limites de um grupo do sistema.

Tanto o arquivo dos usuários quanto o arquivo dos grupos segue o mesmo padrão:

Soft limit: limite de tamanho dos diretórios a partir do qual o sistema informará ao usuário ou grupo que o tamanho que ele ocupa no disco esta próximo ao seu Hard limit.

Hard limit: limite Máximo de armazenamento nos diretórios. Ao ser atingido, o usuário ou grupo não pode mais adicionar arquivos no servidor.

Inodes: número Máximo de arquivos que o usuário ou grupo pode inserir nos diretórios. Se o Inode for definido como 0, ele ficará como se não estivesse habilitados e não serão aplicados os seus limites.

Editamos os valores desses campos conforme nossa necessidade. Reiniciamos o servidor e assim temos o limite de quota ativo.

Ex.:

# edquota -u admin

Exemplo do arquivo:

Disk quotas for user admin (uid 1008):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda10                        0       4500       5000          0        0        0

Squid configurado como proxy no Ubuntu Server


Passo I: Configuração e Instalação

Configurando as interfaces de rede

Partindo do pressuposto que o sistema operacional, no caso o Ubuntu Server 11, já esteja instalado. Verifique as placas de rede que foram reconhecidas:

$ sudo ifconfig

Exemplo:

eth0    Link encap:Ethernet HWaddr 00:0a:5e:65:a6:af
          inet addr:192.168.x.x Bcast:192.168.x.255 Mask:255.255.255.0
          inet6 addr: fe80::20a:5eff:fe65:a6af/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:288803 errors:0 dropped:0 overruns:0 frame:0
          TX packets:196541 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:325622713 (325.6 MB) TX bytes:28563856 (28.5 MB)
          Interrupt:19

lo       Link encap:Local Loopback
          inet addr:127.0.0.1 Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING MTU:16436 Metric:1
          RX packets:37 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16972 (16.9 KB) TX bytes:16972 (16.9 KB)


Se não reconhecer a outra(s) placa(s) de rede. Use o seguinte comando para cada placa de rede que você instalou e não apareceu.

Exemplo:

$ sudo ifconfig eth1 up

Para verificar, use o ifconfig novamente:

$ sudo ifconfig

eth0    Link encap:Ethernet HWaddr 00:0a:5e:65:a6:af
          inet addr:192.168.x.x Bcast:192.168.x.255 Mask:255.255.255.0
          inet6 addr: fe80::20a:5eff:fe65:a6af/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:288803 errors:0 dropped:0 overruns:0 frame:0
          TX packets:196541 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:325622713 (325.6 MB) TX bytes:28563856 (28.5 MB)
          Interrupt:19

eth1    Link encap:Ethernet HWaddr 00:1e:c9:3e:0a:fe
          inet addr:192.168.y.y Bcast:192.168.y.255 Mask:255.255.255.0
          inet6 addr: fe80::21e:c9ff:fe3e:afe/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:187374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:276611 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:26530616 (26.5 MB) TX bytes:315087701 (315.0 MB)
          Interrupt:18

lo       Link encap:Local Loopback
          inet addr:127.0.0.1 Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING MTU:16436 Metric:1
          RX packets:37 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16972 (16.9 KB) TX bytes:16972 (16.9 KB)


Agora, configure suas interfaces de rede:

$ sudo vi /etc/network/interfaces

Obs.: O arquivo deverá ficar semelhante ao exemplo abaixo:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface
auto eth0 eth1 #para subir as interfaces automaticamente no reboot e não precisar usar o comando sudo ifconfig “placa de rede” up


Exemplo:

iface eth0 inet static # configurar a saída de rede ( Seu IP Interno para um gateway ou IP Público)
address 192.168.x.x #IP de saída
netmask 255.255.255.0 #mascará padrão
network 192.168.x.0 # Inicio da rede
broadcast 192.168.x.255 # Fim da rede
gateway 192.168.x.x #gateway que sua rede aponta
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8 # estou usando o DNS externo da Google

iface eth1 inet static #Placa de rede que irá controlar a rede interna
address 192.168.2.1 # IP desta placa
netmask 255.255.255.0 # Máscara padrão
network 192.168.2.0 # Inicio desta rede
broadcast 192.168.2.255 # Fim desta rede


Inserir DNS de seu Provedor:

$ sudo vi /etc/resolv.conf

Exemplo:

nameserver 8.8.8.8
nameserver 8.8.4.4


Reinicie as interfaces de rede:

$ sudo /etc/init.d/networking restart

Pode ser que dê uma mensagem de falha em uma das interfaces, mas não se preocupe (pelo menos neste momento, não).

Instalações necessárias

Atualize o sistema, antes de prosseguir, com o seguinte comando:

$ sudo apt-get update –y;apt-get upgrade –y

Instale alguns programas e bibliotecas que ajudarão a manipular o GNU/Linux:

$ sudo apt-get install gcc g++ mc openssh-server libnet-ssleay-perl libauthen-pam-perl líbio-pty-perl

Instale o Squid, utilizando o comando:

$ sudo apt-get install squid squid-common bind9

Passo II: mão na massa

Entre no diretório do Squid:

$ cd /etc/squid

Obs.: Você verá um arquivo chamado squid.conf. Antes de editá-lo (ou antes de editar qualquer arquivo no GNU/Linux) crie um backup.

Exemplo:

$ sudo cp squid.conf squid.conf.ori

Onde:
  • O comando cp cria uma cópia;
  • squid.conf é o arquivo a ser copiado;
  • squid.conf.ori foi o nome que dei ao arquivo de backup.

Agora, edite o squid.conf:

Obs.: O mcedite é um editor de textos instalado anteriormente no comando:

# apt-get install mc

$ sudo mcedit squid.conf

Exemplo:

#Inicio
http_port 192.168.2.1:3128 transparent #3128 porta do direcionamento e transparente

visible_hostname nome_do_servidor
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?

cache_mem 400 MB #Quantidade de Cache que deseja permitir
maximum_object_size 512 KB #tamanho Maximo de cache
minimum_object_size 0 KB # arquivo mínimo de uso do HD
cache_swap_low 50 #em porcentagem – quanddo começar a liberar espaço de cache ele manterá até esse valor
cache_swap_high 90 #em porcentagem – começa a liberar o espaço de cachê (apagando cache mais antigos)
cache_access_log /var/log/squid/access.log #armazena os logs
cache_dir ufs /var/spool/squid 2048 16 256 # Cache no HD (espaço em disco para cache das páginas)
#2048 MG de espaço para cachê- 16 pastas e dentro e das 16 temos mais 256 pastas dentro delas.

refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 192.168.2.0/255.255.255.0
#acl – all é o nome da acl – src é o tipo de acl – o IP identifica a rede local/ mascará padrão

acl manager proto cache_object
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 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl bloqueio url_regex -i "/etc/squid/bloqueados" # arquivos de palavras bloqueadas
acl CONNECT method CONNECT
acl redelocal src 192.168.2.0 # rede que se atribui as ACl’s

http_access allow redelocal # libera acesso da rede local
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny bloqueio
http_access allow all


Tecle F2 para salvar o arquivo e F10 para sair do editor.

Crie um arquivo com todas as palavras para bloquear:

$ sudo mcedit bloqueados

E dentro do arquivo insira as palavras. Salve e saia do editor. 
 
 

Passo III: Script do firewall

Entre no init.d:

$ cd /etc/init.d

Crie um arquivo de firewall:

$ sudo mcedit firewall.sh

Exemplo:

iptables_start(){
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X

modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
################################################################
#ATIVA REGRA SQUID


iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" < /proc/sys/net/ipv4/tcp_syncookies
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#################################################################
#LIBERA ACESSO PARA REDE


iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -s 192.168.2.0/255.255.255.0 -j ACCEPT

#################################################################
#Aqui poderão ser inseridas regras para bloqueios Ex: torrents, P2P,...
#################################################################
#FINALIZA ARQUIVO
#################################################################

#################################################################
#REGRAS DE EXCESSÃ(ACESSO LIVRE DO FIREWALL) Permite aceeso sem passar pelas regras
#################################################################

iptables -t nat -I PREROUTING 1 -p tcp -s 192.168.2.100 --dport 1:65334 -j ACCEPT
#################################################################

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

}

iptables_stop(){
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}

case "$1" in
"start")
iptables_start
;;
"stop")
iptables_stop
echo "O iptables esta sendo desativado"
sleep 2
echo "ok"
;;
"restart")
echo "O iptables esta sendo desativado"\e sleep 1
echo "ok"
iptables_stop; iptables_start
;;
*)
iptables -L -n
esac


Salve o arquivo e saia do Editor. Dê prioridade ao root neste arquivo:

$ sudo chown root.root firewall.sh

Mude a permissão do arquivo:

$ sudo chmod 755 firewall.sh

Tornando o script uma tarefa do sistema ao reinicializar:

$ sudo update-rc.d firewall defaults
 
 

Passo IV: Finalizando com BIND

Entre no diretório do BIND:

$ cd /etc/bind

Edite o arquivo named.conf.options:

Obs.: Descomente as linhas e insira os DNS externos (estou usando o do Google, mas você pode usar o DNS de seu provedor):

forwarders {
    8.8.8.8;
           8.8.4.4;
           };


$ sudo mcedite named.conf.options

Exemplo:

options {
            directory "/var/cache/bind";

            // If there is a firewall between you and nameservers you want
            // to talk to, you may need to fix the firewall to allow multiple
            // ports to talk. See http://www.kb.cert.org/vuls/id/800113

            // If your ISP provided one or more IP addresses for stable
            // nameservers, you probably want to use them as forwarders.
            // Uncomment the following block, and insert the addresses replacing
            // the all-0's placeholder.


            forwarders {
                     8.8.8.8;
    8.8.4.4;
            };

            auth-nxdomain no; # conform to RFC1035
            listen-on-v6 { any; };
};


Agora reboot o sistema:

$ sudo reboot

Obs.: Nas máquinas clientes, aponte o Gateway para o IP da rede interna e teste sua rede.