Pesquisar este blog

terça-feira, 24 de novembro de 2015

Squid com autenticação simples


Autor: Robinson Czelusniak
Data: 25/09/2006


Instalação e configuração


Instalação do Squid:

# apt-get install squid

Se você não usa distribuição baseada em apt, baixe o pacote do Squid pelo site:
Verifique a distribuição que você está usando e baixe o pacote. Feito isso instale o pacote que baixou com o comando:

# rpm -ivh squid-2.5.STABLE*.rpm
(nome do pacote que foi baixado)

Configuração do Squid


Depois de instalado, o Squid cria o diretório /etc/squid com os arquivos de configuração e são eles que vamos usar, digite:

# cd /etc/squid

Faça uma cópia do squid.conf:

# cp squid.conf squid.conf.old

Agora vamos editar o arquivo squid.conf:

# vi squid.conf

Procure a linha:

#http_port 3128

E descomente ela, deixando assim:

# porta pela qual o Squid libera o acesso
http_port 3128

Localize a linha:

#auth_param basic program /usr/libexec/ncsa_auth /usr/etc/passwd

E descomente ela também, deixando assim:

auth_param basic program /usr/bin/ncsa_auth /etc/squid/passwd

Descomente as seguinte linhas também:

auth_param basic children 5
auth_param basic realm Digite sua senha
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

Feito isso é só salvar e fechar o arquivo.

Vamos localizar o arquivo ncsa_auth:

# find / -name ncsa_auth

Depois de localizá-lo, copie-o para o diretório /usr/bin:

# cp /usr/sbin/ncsa_auth /usr/bin/ncsa_auth

(no meu caso o arquivo estava neste diretório, mas pode variar de distribuição para distribuição)


Criando usuários do Squid



Está quase pronto! Agora vamos criar o arquivo onde ficarão os usuários e senhas.

No arquivo de configuração especificamos que o arquivo onde ficarão os usuários e senha é /etc/squid/passwd. Então vamos criá-lo, digite:

# cd /etc/squid
# htpasswd -c passwd rcz


Onde:
  • htpasswd - comando para criar o arquivo de senhas;
  • -c - parâmetro para criar o arquivo;
  • passwd - nome do arquivo;
  • rcz - usuário.

Isto se faz só na primeira vez para criar o arquivo, depois é só digitar (sem o "-c"):

# htpasswd passwd outro_usuário

Cada vez que você criar um usuário ele vai pedir para que você digite a senha dele.

Agora vamos iniciar o Squid:

# /etc/rc.d/squid start

E pronto, seu Squid já estará autenticando os usuários, agora basta configurar no navegador das estações para que usem proxy.




sexta-feira, 20 de novembro de 2015

VBA - Como contar as linhas cadastradas mesmo apresentando linhas em Branco

Retirado de: http://tudosobrevba.blogspot.com.br/2012/02/como-contar-as-linhas-cadastradas-mesmo.html


Como criar uma macro para contar as linhas cadastradas, mesmo apresentando linhas em Branco.

Sub contagem()

Dim total as variant

range("a1").select
total = (cells(rows.count,1).end(xlup).row)-1
Msgbox "O total de registros é de: " & total

end sub

Agora atribua a macro em um botão na sua planilha e verifique quantas linhas foram preenchidas no seu cadastro.

domingo, 15 de novembro de 2015

Manual traduzido do Squid


Autor: Buckminster
Data: 01/07/2013 -    Retirado de: http://www.vivaolinux.com.br/artigo/Manual-traduzido-do-Squid 
 

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
    ... 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.
  • = :: 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
#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 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.




Squid autenticando no Windows utilizando grupos do AD


Autor: Robinson Czelusniak
Data: 05/04/2010
Retirado de: http://www.vivaolinux.com.br/artigo/Squid-autenticando-no-Windows-utilizando-grupos-do-AD

Configuração no Windows


Vamos precisar saber algumas informações e vamos precisar criar um usuário no Windows.
Precisamos saber qual é domínio do AD (Active Directory).
Clique no iniciar, depois em executar, digite dsa.msc e pressione ENTER.
Com este comando ele vai abrir o gerenciamento de usuários e grupos do AD, verifique qual é o nome do domínio. Exemplo: dominio.local.

Criar usuário:
Vamos criar um usuário para autenticar o Squid onde você cria seus usuários.
Crie um usuário com o nome "squid" e defina um senha para ele.

Vamos criar também 3 grupos.
  • PROXY_ADM
  • PROXY_MSN
  • PROXY_USERS

Porque os grupos?
  • O usuário do AD que estiver dentro do grupo PROXY_ADM terá acesso total as páginas;
  • O usuário do AD que estiver dentro do grupo PROXY_USERS terá acesso as páginas, mas com o bloqueios determinados;
  • O usuário do AD que estiver dentro do grupo PROXY_MSN terá acesso ao MSN.

IMPORTANTE: Se o usuário não estiver no grupo PROXY_USERS ou PROXY_ADM ele não navegará.

Instalando e configurando o Squid

A distribuição utilizada para este artigo foi o SUSE Linux 10.2.

Instalação do Squid:
# yast -i squid
Depois de instalado o Squid cria o diretório /etc/squid com os arquivos de configuração e são eles que vamos usar, digite:
# cd /etc/squid
Faça uma cópia do squid.conf:

# cp squid.conf squid.conf.old

Agora vamos editar o arquivo squid.conf:

# vi squid.conf

Procure a linha:

#http_port 3128

E descomente-a, deixando assim:

# porta pela qual o Squid libera o acesso
http_port 3128

Salve e saia:

:wq

Pesquise pelo binário squid_ldap_auth:

# find / -iname squid_ldap_auth

Você deve obter o caminho completo do binário:

/usr/sbin/squid_ldap_auth

Agora vamos editar o arquivo squid.conf novamente:

# vi squid.conf

Localize a linha:

#auth_param basic program /usr/libexec/ncsa_auth /usr/etc/passwd

E adicione abaixo dela a seguinte linha:

auth_param basic program /usr/sbin/squid_ldap_auth -R -b dc=dominio,dc=local -f sAMAccountName=%s -h 192.168.0.254 -D cn=squid,cn=users,dc=dominio,dc=local -w password

Explicação:
  • dc=dominio,dc=local = domínio do AD ( meu exemplo no início, dominio.local)
  • 192.168.0.254 = Endereço IP do servidor AD
  • cn=squid,cn=users,dc=dominio,dc=local = Caminho completo de onde está o usuário
  • password = A senha que foi definida no AD

Descomente as seguinte linhas também:

auth_param basic children 5
auth_param basic realm Digite sua senha
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

:wq

Pesquise pelo binário squid_ldap_group:

# find / -iname squid_ldap_group

Você deve obter o caminho completo do binário:

/usr/sbin/squid_ldap_group

Agora vamos editar o arquivo squid.conf novamente:

# vi squid.conf

Localize no arquivo que trata sobre external_acl_type logo abaixo do que alteramos a pouco e adicione a seguinte linha:

external_acl_type ldap_group %LOGIN /usr/sbin/squid_ldap_group -R -b "dc=dominio,dc=local" -D cn=squid,cn=users,dc=dominio,dc=local -w password -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=groups,dc=dominio,dc=local))" -h 192.168.0.254

Explicação:
  • dc=dominio,dc=local = domínio do AD ( meu exemplo no início, dominio.local);
  • 192.168.0.254 = Endereço IP do servidor AD;
  • cn=squid,cn=users,dc=dominio,dc=local = Caminho completo de onde está o usuário;
  • password = A senha que foi definida no AD;
  • memberof=cn=%a,ou=groups,dc=dominio,dc=local = Local onde foi criado os 3 grupos no AD;

:wq


Configurações das regras do Squid

Digite:
# vi /etc/squid/squid.conf

Vamos criar as ACLs.
Procure a linha:
#acl password proxy_auth REQUIRED

Descomente-a:

acl password proxy_auth REQUIRED

Crie ACLs com as seguintes informações:

# Administradores - Acesso total liberado
acl proxyadmins external ldap_group PROXY_ADM

# Grupo para acesso a Internet
acl proxyusers external ldap_group PROXY_USERS

# Grupo para acesso ao MSN
acl proxymsn external ldap_group PROXY_MSN

# Regras de bloqueio/desbloqueio de conteudo

# Controle de downloads

# Sites que nao precisam de autenticacao
acl sites_sem_autenticacao dstdom_regex -i "/etc/squid/rules/sites_sem_autenticacao"

# Controle de uso do MSN
acl msn_urls urlpath_regex -i "/etc/squid/rules/msn_urls"
#acl msn_ips dst -i "/etc/squid/rules/msn_ips"

# Controle de downloads
acl downloads_proibidos urlpath_regex -i "/etc/squid/rules/downloads_proibidos"
acl downloads_permitidos urlpath_regex -i "/etc/squid/rules/downloads_permitidos"

# Controle de palavras
acl palavras_proibidas url_regex -i "/etc/squid/rules/palavras_proibidas"
acl palavras_permitidas url_regex -i "/etc/squid/rules/palavras_permitidas"

# Controle de dominios
acl sites_proibidos dstdom_regex -i "/etc
/squid/rules/sites_proibidos"
acl sites_permitidos dstdom_regex -i "/etc/squid/rules/sites_permitidos"

# Controle de URL's
acl urls_proibidas url_regex -i "/etc/squid/rules/urls_proibidas"
acl urls_permitidas url_regex -i "/etc/squid/rules/urls_permitidas"

#Configuracao das regras:

# Libera sites sem autenticacao
http_access allow sites_sem_autenticacao

# Libera acesso total para administradores
http_access allow proxyadmins

# Controle de uso do MSN
http_access deny msn_urls !proxymsn
#http_access deny msn_ips !proxymsn

# Controle de downloads
http_access deny downloads_proibidos !downloads_permitidos !sites_permitidos !urls_permitidas

# Controle de palavras
http_access deny palavras_proibidas !sites_permitidos !urls_permitidas

# Controle de sites
http_access deny sites_proibidos

# Controle de URL's
http_access deny urls_proibidas !urls_permitidas

# Libera acesso para usuarios autenticados
http_access allow password proxyusers


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

# And finally deny all other access to this proxy
http_access deny all

Feito isso salve e feche o arquivo.

:wq


Criando arquivos e iniciando o Squid

Para finalizar as configurações vamos criar os arquivos onde ficarão as regras:

# mkdir /etc/squid/rules
# touch /etc/squid/rules/sites_sem_autenticacao
# touch /etc/squid/rules/msn_urls
# touch /etc/squid/rules/msn_ips
# touch /etc/squid/rules/downloads_proibidos
# touch /etc/squid/rules/downloads_permitidos
# touch /etc/squid/rules/palavras_proibidas
# touch /etc/squid/rules/palavras_permitidas
# touch /etc/squid/rules/sites_proibidos
# touch /etc/squid/rules/sites_permitidos
# touch /etc/squid/rules/urls_proibidas
# touch /etc/squid/rules/urls_permitidas


E dentro de cada arquivo adicionar as URLs ou palavras a serem bloqueadas ou liberadas de acordo com o nome de cada arquivo.

Vamos criar o cache para o Squid:

# squid -z

Agora vamos iniciar o Squid:

# /etc/rc.d/squid start
ou
# rcsquid restart

Para garantir que o serviço irá iniciar caso seja feito reboot no servidor digite:

# chkconfig squid on

E pronto, seu Squid já estará autenticando os usuários, agora basta configurar no navegador das estações para que usem proxy. Lembre-se para que o usuário possa navegar ele tem que estar em dos grupos do AD (PROXY_ADM ou PROXY_USERS).




terça-feira, 3 de novembro de 2015

Usando linhas de comando para gerenciar objetos no Active Directory


Comando DSADD
Com o comando dsadd é possível criar objetos como unidades organizacionais, grupos, usuários, computadores, contatos e quotas de partições de diretório.
Sua sintaxe é bem simples, conforme exemplos abaixo:
dsadd {objeto} "Caminho DN" {–atributos}
Exemplo de criação de uma OU chamada Servidores na raiz do domínio:
dsadd ou “ou=Servidores,dc=Frango,dc=com”
Depois do comando é necessário informar ao prompt o tipo de objeto. No caso do segundo exemplo foi usado o valor OU: (dsadd ou..) seguido do caminho LDAP do objeto. Para acesso a base do Active Directory é preciso usar a linguagem LDAP entre aspas duplas chamado Nome Distinto, ou Distinguished name (Caminho DN) em inglês: “ou=OU Teste,dc=frango,dc=com”.
No prompt o comando ficaria desta forma:

Figura 1 – OU Servidores

Figura 2 – OU criada
Em outro exemplo, numa empresa que tivesse o nome de domínio Company.com.br, o comando para criar a OU Servidores na raiz ficaria da seguinte forma:
dsadd ou “ou=Servidores,dc=Company,dc=com,dc=br”
Entre aspas é usada a estrutura do objeto de trás para frente: O Distinguished name. No próximo exemplo será criada uma unidade organizacional dentro da OU Servidores:
dsadd ou "ou=Servidores de arquivos,ou=Servidores,dc=frango,dc=com"

Figura 3 – OU Servidores de arquivos dentro da OU Servidores
É possível criar objetos com valores dos atributos também. Na criação de um usuário, por exemplo, é possível informar a senha, o primeiro nome, descrição, etc, conforme figura 4 onde é criado um usuário Leandro Carvalho com o primeiro nome Leandro (-fn Leandro), o ultimo nome Carvalho (-ln Carvalho), User Principal Name leandroc@frango.com (-upn leandroc@frango.com) e senha Pa$$w0rd (-pwd Pa$$w0rd):

Figura 4 – Usuário com atributos criados
Observe que para especificar o objeto User é usada a sintaxe CN=Leandro Carvalho. Para grupo, usuário, computador e contato é usado o mesmo atributo CN. Somente a OU ficaria com o atributo OU.
O intuito de todos os comandos abortados aqui é facilitar o cotidiano de gerenciamento de objetos. Com eles é possível criarmos, por exemplo, OUs em massa ou facilitar a criação de usuários.
No próximo exemplo foi criado um arquivo com extensão bat para criação de várias OUs. Poderia ser usado inclusive como modelo.

Figura 5 – Criação em massa de OUs
Com a opção replace do próprio bloco de notas foi trocado o nome OU=SÃO PAULO para OU=RIO DE JANEIRO, criando assim toda a estrutura de OUs de uma empresa em questão de segundos.

Figura 6 – OUs criadas
Para criação facilitada de usuários foi usado o comando abaixo com variáveis, salvando-o no bloco de notas com a mesma extensão bat. A variável %1 seria o primeiro valor depois do arquivo no prompt, seguida da variável %2.

Figura 7 – Modelo de criação de usuário com variáveis
O arquivo foi salvo no C:\criauser.bat. Quando ele é chamado pelo DOS e colocado o valor Eduardo (%1) Carvalho (%2) é criado o usuário Eduardo Carvalho com os atributos configurados, conforme figura 8:

Figura 8 – Usuário criado a partir do arquivo .bat
Comando DSMOD
Com o comando dsmod é possível modificarmos qualquer objeto do Active Directory usando os atributos relacionados a cada um deles. Na tabela abaixo existem alguns exemplo de atributos do objeto usuário:
Valor
Descrição
-upn              
Valor do UPN
-fn         
Primeiro nome do usuário
-ln          
Último nome do usuário
-pwd { | *}  
Senha do usuário. Se o valor for * é preciso colocar uma senha para o usuário durante a criação do objeto
-desc     
Descrição do usuário
-tel           
Telefone do usuário
-email          
E-mail do usuário
-mobile    
telefone celular do usuário
-dept      
Departamento do usuário
-mustchpwd {yes | no}  
Especifica se o usuário precisará trocar a senha no próximo logon
-disabled {yes | no}   
Valor de conta desabilitada. O padrão é no.
Tabela 1 –Atributos de usuários
Obs: Se houverem espaços nos valores dos atributos, os mesmo devem estar entre aspas duplas.
A sintaxe para a modificação de objetos é conforme o exemplo abaixo:
 Dsmod {objeto} “Caminho DN” {–atributos} “valor dos atributos”
No exemplo abaixo vários atributos do usuário Leandro são modificados

Figura 9 – Trocando os atributos do usuário Leandro Carvalho
Comando DSMOVE
Com o comando dsmove é possível mover ou renomear um objeto.
A sintaxe do comando para renomear é conforme o exemplo abaixo:
Dsmove {objeto} “Caminho DN” –newname “Novo nome”
No exemplo da figura a seguir é renomeado o usuário Leandro Carvalho para Leandro Cavalcante.

Figura 10 – Renomeando um objeto
A sintaxe para mover um objeto é conforme o exemplo abaixo:
Dsmove {objeto} “Caminho DN” –newparent caminhoDNDestino
Nesta próxima figura o usuário Leandro Cavalcante é movido para a OU Suporte.

Figura 11 – Movendo um objeto
Comando DSQUERY
Para procurar objetos no Active Directory é preciso usar o comando dsquery com a seguinte sintaxe.
Dsquery {objeto} {-atributos} “Valor do atributo”
Neste exemplo é feita uma pesquisa de usuários que comecem com a letra L:

Figura 12 – Procura de usuários que comecem com a letra L
No exemplo da figura 13 é pesquisado os computadores que não fazem logon a n semanas, onde n é o numero de semanas do atributo -inactive. É um ótimo comando para procurar contas de computadores que não estão sendo utilizadas no seu ambiente.

Figura 13 – Computadores inativos
Comando DSGET
O comando dsget é utilizado para exibir as propriedades de um objeto do Active Directory.
A sintaxe do comando é conforme o exemplo abaixo:
Dsget {objeto} “caminho DN”
Na figura abaixo são exibido os atributos do usuário Leandro Carvalho:

Figura 14 – Atributos exibidos com o dsget
Comando DSRM
Para exclusão de qualquer objeto é usado o comando dsrm.
A sintaxe do comando é conforme o exemplo abaixo:
Dsrm “caminho DN”
Neste comando não é necessário colocar o tipo de objeto, somente o caminho DN.

Figura 15 – Exclusão de objetos com o dsrm

domingo, 1 de novembro de 2015

CSV - Adicionar dados no Active Directory

Exemplo
 como seu arquivo CSV esta configurado, lembrando que as virgulas separam as colunas. e eu coloquei 1º e 2º linha apenas para vc se localizar. nao deve ser incluso isto do CSV.

1ºlinha>DN,objectClass,sAMAccountNAme,sn,givenName,userPrincipalName


2ºlinha>"cn=LISA Andrews,ou=People,DC=contoso,DC=com" ,user,lisa.andrews,Lisa,Andrews,lisa.andrews@contoso.com

3º linha "cn=Enderson Valente,ou=People,DC=contoso,DC=com" ,user,e.valente,Enderson,Valente,enderson.valente@contoso.com


Após feito o arquivo
entre no CMD
cd "localdoarquivo"
csvde -i -f nomearquivo -k
se tudo estiver ok. no prompt informara quandos registros foram adicionados




Autor:Enderson Valente Teixeira - Coordenador de Informática

Importar e exportar dados para o Active Directory

Step-by-Step Guide to Bulk Import and Export to Active Directory

This guide introduces batch administration of the Active DirectoryTM service, using both the LDAP Data Interchange Format (LDIF) utility and a simple program you can write using the Visual Basic® Scripting Edition (VBScript) development system. Using these tools, you can export, import, and modify objects such as users, contacts, groups, servers, printers, and shared folders.
On This Page
Introduction
Using the LDIFDE Utility
Using VBScript and ADSI
Important Notes

Introduction

In this guide, you will perform the following tasks:
  • Perform batch operations using the LDIFDE utility. Export users from the Marketing organizational unit (OU) in the Reskit domain into a file format compatible with the LDIF standard format. Perform a batch modification of all the users in the Marketing OU. Use LDIF to create a new user and delete a user.
  • Perform batch operations using ADSI and VBScript. Export users from the Marketing OU in the Reskit domain into a text file, using a script written with ADSI and VBScript. Use VBScript to perform a batch modification of all the users in the Marketing OU. Use VBScript to create a new user and delete a user.

Requirements and Prerequisites

You must install the Windows 2000 Server operating system, including Active Directory, on a server in your network. You can then run the Administration Tools from the server or from a workstation running the Windows 2000 Professional operating system.
This step-by-step guide assumes that you have run the procedures in A Common Infrastructure for Windows 2000 Server Deployment Step-by-Step Part 1.
The common infrastructure documents specify a particular hardware and software configuration. If you are not using the common infrastructure, you need to make the appropriate changes to this document. For the latest information about hardware requirements and compatibility for servers, clients, and peripherals, see the Windows 2000 Product Compatibility search page (http://www.microsoft.com/windows2000/server/howtobuy/upgrading/compat/default.asp).
The Administration Tools are installed by default on all Windows 2000-based domain controllers. The LDIFDE utility described in this guide is installed by default on servers, and can be copied to any Windows 2000-based workstation. The VBScript programs that you create can be run from either servers or workstations.
For all procedures in this guide, you must be logged on as an administrator. If you log on using an account that does not have administrative privileges, you may not be able to perform export and import operations in Active Directory.

Using the LDIFDE Utility

The LDAP Data Interchange Format (LDIF) is an Internet draft standard for a file format that can be used for performing batch operations on directories that conform to the LDAP standards. LDIF can be used to export and import data, allowing batch operations such as Add, Modify, and Delete to be performed in Active Directory. A utility called LDIFDE is included in the Windows 2000 operating system to support batch operations based on the LDIF standard.

Using LDIF to Export All Objects in the Marketing OU

You can use LDIFDE to export all objects in the Marketing organizational unit (OU), created in " Step-by-Step Guide to Common Infrastructure Part 1". This example searches the organizational unit for certain objects and creates a file containing the names of those objects.
To export all objects in the Marketing OU
  1. Click Start, point to Programs, then point to Accessories, and click Command Prompt.
  2. At the command prompt, type:
    ldifde -f marketing.ldf -s hq-res-dc-01-d"ou=Marketing,dc= reskit,dc=com"-psubtree–r"(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=reskit,DC=com)"
This creates a LDIF file named Marketing.ldf, by connecting to the server named HQ-RES-DC-01 and executing a subtree search of the Marketing OU for all objects of the category Person. (See Figure 1 below.)
Note that objectCategory is an indexed attribute designed to enhance search performance.
Bb727091.bulkst01(en-us,TechNet.10).gif
Figure 1: Creating an LDF file
You can use this LDIF file to perform a batch import of all the objects from the Marketing OU into any other LDAP-compatible directory. Some attributes may not be applicable to other implementations of LDAP. In particular, if you use this mechanism to import the objects into another Active Directory, some attributes must be omitted because they are automatically generated during object creation. (If they are not specifically omitted, the operation will fail.)
For example, the LDIFDE command that is used to omit these attributes is:
ldifde -f marketing.ldf -s hq-res-dc-01 d
"ou=Marketing,dc= reskit,dc=com"–r
>"(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=reskit,DC=com)" –m

Using LDIF to Modify All Objects in the Marketing OU

In this example, the entire Marketing organization has moved to a new office address. You use LDIF to perform a batch modification for all user objects in the Marketing organization by altering the state, street, locality, and postal code attributes.
To modify all objects in the Marketing OU
  1. Click Start, point to Programs, then point to Accessories, and click Command Prompt.
  2. At the command prompt, type the following command to extract the required entries:
    ldifde -f marketing.ldf -s hq-res-dc-01-d"ou=Marketing,dc= reskit,dc=com"-psubtree–r"(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=reskit,DC=com)" –l "l,st,streetAddress, postalCode"
  3. Use a text editor such as Notepad to edit the LDIF file, Marketing.ldf. (Save the file as an .ldf file.) Modify each entry so that it is similar to that shown in Figure 2 below.
    Bb727091.bulkst02(en-us,TechNet.10).gif
    Figure 2: Editing attributes for a move
  4. Run LDIFDE to import the modifications into Active Directory. At the command prompt, type the following command, and then press > Enter. (See Figure 3 below.)
    ldifde –i -f marketing.ldf -s hq-res-dc-01
    Bb727091.bulkst03(en-us,TechNet.10).gif
    Figure 3: Importing modifications into the Active Directory
  5. To confirm that the entries have been modified, check the Active Directory Users and Computers snap-in. (For help with using this snap-in, see the Step-by-Step Guide to Managing the Active Directory. )
For further information on using LDIFDE, type LDIFDE /? at the command prompt.
Note: Another utility called CSVDE performs the same export functions as LDIFDE, but uses a comma-separated file format. Import operations with CSVDE are "add" only, and CSVDE does not offer the ability to modify or delete objects. The CSV file format is supported by applications such as Microsoft Excel.

Using LDIF to Create a New User

In this example, you use LDIF to add a new user named James Smith to the Marketing organizational unit.
  1. Start a text editor, such as Notepad, and create a new text file named Newuser.ldf. (Save the file as an ldif file, not as a text file.)
  2. Edit the LDIF file Newuser.ldf, and add the following text (see Figure 4 below):
    dn: CN=JamesSmith,OU=Marketing,DC=reskit,DC=com
    changetype: add
    cn: James Smith
    objectClass: user
    samAccountName: James
    > givenName: James
    > sn: Smith
  3. Save and close the LDIF file.
  4. Run LDIFDE to import the new user into Active Directory. On the Start menu, point to Programs, then point to Accessories, and click Command Prompt. Type the following command, and then press Enter.
    ldifde –i -f newuser.ldf -s hq-res-dc-01
  5. To confirm that the new user has been created, check the Active Directory Users and Computers snap-in.
    Bb727091.bulkst04(en-us,TechNet.10).gif
    Figure 4: Adding a new user to the Marketing OU

Using LDIF to Delete a User

In this example, you use LDIF to remove the user named James Smith from the Marketing OU.
  1. Start a text editor such as Notepad, and create a new file named Deluser.ldf.
  2. Edit the LDIF file Deluser.ldf, and add the following text.
    dn: CN=JamesSmith,OU=Marketing,DC=reskit,DC=com
    changetype: delete
    Figure 5: Remove James Smith from OU
    Figure 5: Remove James Smith from OU
  3. Run LDIFDE to delete the user from Active Directory. At the command prompt, type the following command, and then press Enter.
    ldifde –i -f deluser.ldf -s hq-res-dc-01
  4. To confirm that the user has been deleted, check the Active Directory Users and Computers snap-in.

Using VBScript and ADSI

Active Directory Services Interfaces (ADSI) makes it easy to develop directory-enabled applications. In conjunction with the Windows Script Host, batch directory operations can be scripted using VBScript or Jscript® development software. In this guide, the procedures that were described in the previous section (which used LDIF) are performed using simple applications written in VBScript.
Please note that these scripts do not include any error checking, nor are they meant to provide a programmer's reference to VBScript and ADSI. All of the examples included here assume you are logged on with the proper credentials on a machine that is a member of the target domain. It is possible in ADSI to explicitly specify credentials and a target domain. For more information on this, see the documentation on ADSI's OpenDSObject in the Platform SDK (http://msdn.microsoft.com/downloads/sdks/platform/platform.asp).
After each procedure, confirm that the entries have been modified by checking the Active Directory Users and Computers snap-in.

Using VBScript to Export All Objects in the Marketing OU

In this example, you use a text editor such as Notepad to create a VBScript program. The script searches the Marketing OU and creates a text file that lists all of the user objects and a subset of their attributes.
To create the export script
  1. Copy the following text into your text editor:
    'Global variables
     Dim oContainer
     Dim OutPutFile
     Dim FileSystem
     'Initialize global variables
     Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
     Set OutPutFile = FileSystem.CreateTextFile("marketing.txt", True)
     SetoContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com")
     'Enumerate Container
     EnumerateUsers oContainer
     'Clean up
     OutPutFile.Close
     Set FileSystem = Nothing
     Set oContainer = Nothing
     WScript.Echo "Finished"
     WScript.Quit(0)
     Sub EnumerateUsers(oCont)
     Dim oUser
     For Each oUser In oCont
     Select Case LCase(oUser.Class)
     Case "user"
     If Not IsEmpty(oUser.distinguishedName) Then
     OutPutFile.WriteLine "dn: " & oUser.distinguishedName
     End If 
     If Not IsEmpty(oUser.name) Then 
     OutPutFile.WriteLine "name: " & oUser.Get ("name")
     End If
     'need to do this because oUser.name would get back the Relative 
     Distinguished name (i.e. CN=Jo Brown)
     If Not IsEmpty(oUser.st) Then 
     OutPutFile.WriteLine "st: " & oUser.st
     End If
     If Not IsEmpty(oUser.streetAddress) Then 
     OutPutFile.WriteLine "streetAddress: " & oUser.streetAddress
     End If
     Case "organizationalunit" , "container"
     EnumerateUsers oUser
     End Select
     OutPutFile.WriteLine 
     Next
     End Sub
    
  2. Save the file as Export.vbs.
  3. At the command prompt type export.vbs and press Enter. This creates a file named Marketing.txt, which contains a list of users and some of their attributes, such as distinguished name, name, state, and street address.
With appropriate modification, this script can be used with any application that supports COM and Visual Basic technologies. Such applications include Microsoft Visual Basic, Microsoft Excel, and Microsoft Access. Scripting can also be hosted by Internet Explorer and Internet Information Services 5.0, which is part of Windows 2000 Server.

Using VBScript to Modify All Objects in the Marketing OU

In this example, the Marketing organization has moved to a new office address. A simple VBScript program is used to perform a batch modification for all user objects in the Marketing organization. The script alters the state, street, locality, and postal code attributes.
  1. Copy the following text into your text editor:
    Dim
     oContainer Set  oContainer=GetObject("LDAP://
     OU=marketing,DC=reskit,DC=com")
     ModifyUsers oContainer
     'cleanup
     Set oContainer = Nothing
     WScript.Echo "Finished"
     Sub ModifyUsers(oObject)
     Dim oUser
    oObject.Filter = Array("user")
    For Each oUser in oObject
    oUser.Put "st","New York"
    oUser.Put "streetAddress","825 Eighth Avenue"
    oUser.Put "postalCode","10019"
    oUser.Put "l","New York"
    oUser.SetInfo
    Next
     End Sub
    
  2. Save the file as Modify.vbs.
  3. At the command prompt, type modify.vbs and press Enter. This processes all objects in the Marketing organizational unit and modifies all users, altering the state, street address, postal code, and locality attributes.

Using VBScript to Create a User Object in the Marketing OU

In this example, you use VBScript to add a new user to the Marketing organization. This example illustrates how easy it is to use ADSI and VBScript to programmatically access the directory. Note that in this example, only a limited set of attributes are configured during the user creation.
To create the script and add the user
  1. Copy the following text into your text editor:
    Dim oContainer 'Parent container
     of new   user Dim
     oUser 'Created user
     'Get parentcontainerSetoContainer=GetObject("LDAP://OU=marketing,
     DC=reskit,DC=com")
     'Create user
     Set oUser = oContainer.Create("User","CN=Jo Brown")
     'Assign properties values to user
     oUser.Put "samAccountName","Jo"
     oUser.Put "givenName","Jo"
     oUser.Put "sn","Brown"
     oUser.Put "userPrincipalName","jo@reskit.com"
     oUser.SetInfo
     'Clean up
     Set oUser = Nothing
     Set oContainer = Nothing
     WScript.Echo "Finished"
    
  2. Save the file as Adduser.vbs.
  3. At the command prompt, type adduser.vbs and press Enter. This creates a new user named Jo Brown in the Marketing OU.

Using VBScript to Delete a User

In this example, you use VBScript to delete a user from the Marketing organization.
  1. Copy the following text into your text editor:
    Dim oContainer 'Parent container of object to be
     deleted 'Get parent
     container Set  oContainer=GetObject("LDAP://OU=marketing,
     DC=reskit,DC=com")
     'Delete user
     oContainer.Delete "user","CN=Jo Brown"
     'Clean up
     Set oContainer = Nothing
     WScript.Echo "Finished"
    
  2. Save the file as Deluser.vbs.
  3. At the command prompt, type deluser.vbs and press Enter. This deletes the user Jo Brown from the Marketing OU.

Important Notes

The example company, organization, products, people, and events depicted in these step-by-step guides are fictitious. No association with any real company, organization, product, person, or event is intended or should be inferred.
This common infrastructure is designed for use on a private network. The fictitious company name and DNS name used in the common infrastructure are not registered for use on the Internet. Please do not use this name on a public network or Internet.
The Active Directory service structure for this common infrastructure is designed to show how Windows 2000 features work and function with the Active Directory. It was not designed as a model for configuring an Active Directory for any organization–for such information see the Active Directory documentation.