diff --git a/documentation/content/pt-br/articles/ldap-auth/_index.adoc b/documentation/content/pt-br/articles/ldap-auth/_index.adoc index 3faef208d1..bafccd4ffd 100644 --- a/documentation/content/pt-br/articles/ldap-auth/_index.adoc +++ b/documentation/content/pt-br/articles/ldap-auth/_index.adoc @@ -1,699 +1,705 @@ --- -title: Autenticação LDAP authors: - - author: Toby Burress + - + author: 'Toby Burress' email: kurin@causa-sui.net -copyright: 2007-2008 Projeto de Documentação do FreeBSD +copyright: '2007-2008 The FreeBSD Documentation Project' +description: 'Guia para a configuração de um servidor LDAP para autenticação no FreeBSD' +tags: ["LDAP", "Authentication", "OpenLDAP", "configuration", "guide", "tutorial", "FreeBSD"] +title: 'Autenticação LDAP' trademarks: ["freebsd", "general"] --- = Autenticação LDAP :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/ldap-auth/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Resumo Este documento pretende ser um guia para a configuração de um servidor LDAP (principalmente um servidor OpenLDAP) para autenticação no FreeBSD. Isso é útil para situações em que muitos servidores precisam das mesmas contas de usuário, por exemplo, como substituto do NIS. ''' toc::[] [[preface]] == Prefácio Este documento destina-se a fornecer ao leitor uma compreensão suficiente do LDAP para configurar um servidor LDAP. Este documento tentará fornecer uma explicação de package:net/nss_ldap[] e package:security/pam_ldap[] para uso com serviços de máquinas cliente para uso com o servidor LDAP. Quando terminar, o leitor deve ser capaz de configurar e implantar um servidor FreeBSD que possa hospedar um diretório LDAP e configurar e implantar um servidor FreeBSD que possa autenticar em um diretório LDAP. Este artigo não pretende ser um relato exaustivo da segurança, robustez ou considerações sobre práticas recomendadas para configurar o LDAP ou os outros serviços discutidos aqui. Embora o autor tenha o cuidado de fazer tudo corretamente, ele não aborda problemas de segurança além do escopo geral. Este artigo deve ser considerado para estabelecer as bases teóricas somente, e qualquer implementação real deve ser acompanhada por uma análise cuidadosa dos requisitos. [[ldap]] == Configurando o LDAP -LDAP significa "Lightweight Directory Access Protocol" e é um subconjunto do X.500 Directory Access Protocol. Suas especificações mais recentes estão na http://www.ietf.org/rfc/rfc4510.txt[RFC4510] e documentos amigaveis. Essencialmente, é um banco de dados que espera ser lido com mais frequência do que é escrito. +LDAP significa "Lightweight Directory Access Protocol" e é um subconjunto do X.500 Directory Access Protocol. Suas especificações mais recentes estão na http://www.ietf.org/rfc/rfc4510.txt[RFC4510] e documentos amigáveis. Essencialmente, é um banco de dados que espera ser lido com mais frequência do que é escrito. -O servidor LDAP http://www.openldap.org/[OpenLDAP] será usado nos exemplos deste documento; embora os princípios aqui devam ser geralmente aplicáveis ​​a muitos servidores diferentes, a maior parte da administração concreta é especificamente para OpenLDAP. Existem várias versões de servidor nos ports, por exemplo package:net/openldap24-server[]. Os servidores clientes precisarão das bibliotecas package:net/openldap24-client[] correspondentes. +O servidor LDAP http://www.openldap.org/[OpenLDAP] será usado nos exemplos deste documento; embora os princípios aqui devam ser geralmente aplicáveis a muitos servidores diferentes, a maior parte da administração concreta é especificamente para OpenLDAP. Existem várias versões de servidor nos ports, por exemplo package:net/openldap24-server[]. Os servidores clientes precisarão das bibliotecas package:net/openldap24-client[] correspondentes. Existem (basicamente) duas áreas do serviço LDAP que precisam de configuração. A primeira é a configuração de um servidor para receber as conexões corretamente, e o segundo é adicionar entradas ao diretório do servidor para que as ferramentas do FreeBSD saibam como interagir com ele. [[ldap-connect]] === Configurando o servidor para conexões [NOTE] ==== Esta seção é específica do OpenLDAP. Se você estiver usando outro servidor, precisará consultar a documentação desse servidor. ==== [[ldap-connect-install]] ==== Instalando o OpenLDAP Primeiro, instale o OpenLDAP: [[oldap-install]] .Instalando o OpenLDAP [example] ==== -[source,shell] +[source, shell] .... # cd /usr/ports/net/openldap24-server # make install clean .... ==== Isso instala os binários `slapd` e `slurpd`, juntamente com as bibliotecas OpenLDAP requeridas. [[ldap-connect-config]] ==== Configurando o OpenLDAP Em seguida, devemos configurar o OpenLDAP. Você desejará exigir criptografia em suas conexões com o servidor LDAP; caso contrário, as senhas de seus usuários serão transferidas em texto simples, o que é considerado inseguro. As ferramentas que usaremos suportam dois tipos muito semelhantes de criptografia, SSL e TLS. TLS significa "Segurança da Camada de Transporte". Serviços que empregam TLS tendem a se conectar nas _mesmas_ portas que os mesmos serviços sem TLS; assim, um servidor SMTP que suporte o TLS escutará as conexões na porta 25 e um servidor LDAP escutará no 389. SSL significa "Secure Sockets Layer", e serviços que implementam SSL _não_ escutam nas mesmas portas que seus equivalentes não-SSL. Assim, o SMTPS atende na porta 465 (não 25), HTTPS escuta na 443 e LDAPS na 636. A razão pela qual o SSL usa uma porta diferente do TLS é porque uma conexão TLS começa como texto simples e alterna para o tráfego criptografado após a diretiva `STARTTLS`. As conexões SSL são criptografadas desde o início. Além disso, não há diferenças substanciais entre os dois. [NOTE] ==== Ajustaremos o OpenLDAP para usar o TLS, já que o SSL é considerado obsoleto. ==== Uma vez que o OpenLDAP esteja instalado via ports, os seguintes parâmetros de configuração em [.filename]#/usr/local/etc/openldap/slapd.conf# irão ativar o TLS: [.programlisting] .... security ssf=128 -TLSCertificateFile /caminho/para/seu/cert.crt -TLSCertificateKeyFile /caminho/para/sua/cert.key -TLSCACertificateFile /caminho/para/seu/cacert.crt +TLSCertificateFile /path/to/your/cert.crt +TLSCertificateKeyFile /path/to/your/cert.key +TLSCACertificateFile /path/to/your/cacert.crt .... Aqui, `ssf=128` diz ao OpenLDAP para exigir criptografia de 128 bits para todas as conexões, tanto de pesquisa quanto de atualização. Esse parâmetro pode ser configurado com base nas necessidades de segurança do seu site, mas raramente é necessário enfraquecê-la, pois a maioria das bibliotecas de clientes LDAP oferece suporte à criptografia forte. -Os arquivos [.filename]#cert.crt#, [.filename]#cert.key# e [.filename]#cacert.crt# são necessários para que os clientes autentiquem _você_ como o servidor LDAP válido. Se você simplesmente quiser um servidor que seja executado, poderá criar um certificado autoassinado com o OpenSSL: +Os arquivos [.filename]#cert.crt#, [.filename]#cert.key# e [.filename]#cacert.crt# são necessários para que os clientes autentiquem _você_ como o servidor LDAP válido. Se você simplesmente quiser um servidor que seja executado, poderá criar um certificado auto-assinado com o OpenSSL: [[genrsa]] .Gerando uma chave RSA [example] ==== -[source,shell] +[source, shell] .... % openssl genrsa -out cert.key 1024 Generating RSA private key, 1024 bit long modulus ....................++++++ ...++++++ e is 65537 (0x10001) % openssl req -new -key cert.key -out cert.csr .... ==== Neste ponto, você deve ser solicitado para digitar alguns valores. Você pode inserir os valores que quiser; no entanto, é importante que o valor "Common Name" seja o nome de domínio totalmente qualificado do servidor OpenLDAP. No nosso caso, e os exemplos aqui, o servidor é _server.example.org_. Definir incorretamente esse valor fará com que os clientes falhem ao fazer conexões. Isso pode causar uma grande frustração, portanto, certifique-se de seguir atentamente estas etapas. Por fim, a requisição de assinatura de certificado precisa ser assinada: [[self-sign]] .Auto-assinando o certificado [example] ==== -[source,shell] +[source, shell] .... % openssl x509 -req -in cert.csr -days 365 -signkey cert.key -out cert.crt Signature ok subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd Getting Private key .... ==== Isso criará um certificado auto-assinado que pode ser usado para as diretivas em [.filename]#slapd.conf#, onde [.filename]#cert.crt# e [.filename]#cacert.crt# são o mesmo arquivo. Se você for usar muitos servidores OpenLDAP (para replicação via `slurpd`), você vai querer ver <> para gerar uma chave CA e usá-la para assinar certificados de servidor individuais. Feito isso, coloque o seguinte em [.filename]#/etc/rc.conf#: [.programlisting] .... slapd_enable="YES" .... Em seguida, execute `/usr/local/etc/rc.d/slapd start`. Isso deve iniciar o OpenLDAP. Confirme que está escutando em 389 com -[source,shell] +[source, shell] .... % sockstat -4 -p 389 ldap slapd 3261 7 tcp4 *:389 *:* .... [[ldap-connect-client]] ==== Configurando o Cliente Instale o port package:net/openldap24-client[] para as bibliotecas do OpenLDAP. As máquinas cliente sempre terão bibliotecas OpenLDAP, já que é todo o suporte a package:security/pam_ldap[] e package:net/nss_ldap[], pelo menos por enquanto. O arquivo de configuração para as bibliotecas OpenLDAP é [.filename]#/usr/local/etc/openldap/ldap.conf#. Edite este arquivo para conter os seguintes valores: [.programlisting] .... base dc=example,dc=org uri ldap://server.example.org/ ssl start_tls tls_cacert /path/to/your/cacert.crt .... [NOTE] ==== É importante que seus clientes tenham acesso ao [.filename]#cacert.crt#, caso contrário, eles não poderão se conectar. ==== [NOTE] ==== Existem dois arquivos chamados [.filename]#ldap.conf#. O primeiro é este arquivo, que é para as bibliotecas OpenLDAP e define como falar com o servidor. O segundo é [.filename]#/usr/local/etc/ldap.conf# e é para pam_ldap. ==== Neste ponto, você deve conseguir executar `ldapsearch -Z` na máquina cliente; `-Z` significa "usar o TLS". Se você encontrar um erro, então algo está configurado errado; muito provavelmente são seus certificados. Use os comandos `s_client` e `s_server` do man:openssl[1] para assegurar que você os tenha configurado e assinado corretamente. [[ldap-database]] === Entradas no banco de dados A autenticação em um diretório LDAP geralmente é realizada pela tentativa de vincular ao diretório como o usuário de conexão. Isso é feito estabelecendo um vinculo "simples" no diretório com o nome de usuário fornecido. Se houver uma entrada com o `uid` igual ao nome do usuário e o atributo `userPassword` da entrada corresponder à senha fornecida, o vinculo será bem-sucedido. A primeira coisa que temos que fazer é descobrir onde no diretório os nossos usuários irão estar. A entrada de base para nosso banco de dados é `dc=example,dc=org`. O local padrão para usuários que a maioria dos clientes parece esperar é algo como `ou=people, _base_`, então é isso que será usado aqui. No entanto, tenha em mente que isso é configurável. Assim, a entrada ldif para a unidade organizacional `people` será semelhante a: [.programlisting] .... dn: ou=people,dc=example,dc=org objectClass: top objectClass: organizationalUnit ou: people .... Todos os usuários serão criados como subentradas dessa unidade organizacional. Alguma consideração pode ser dada à classe de objeto a que seus usuários pertencerão. A maioria das ferramentas, por padrão, usará `people`, o que é bom se você quiser simplesmente fornecer entradas para autenticar. No entanto, se você for armazenar informações do usuário no banco de dados LDAP, provavelmente usará `inetOrgPerson`, que possui muitos atributos úteis. Em ambos os casos, os esquemas relevantes precisam ser carregados em [.filename]#slapd.conf#. Para este exemplo, usaremos a classe de objeto `person`. Se você estiver usando `inetOrgPerson`, as etapas são basicamente idênticas, exceto que o atributo `sn` é necessário. -Para adicionar um usuário `testuser`, o ldif seria: +Para adicionar um usuário de teste chamado `tuser`, o ldif seria: [.programlisting] .... dn: uid=tuser,ou=people,dc=example,dc=org objectClass: person objectClass: posixAccount objectClass: shadowAccount objectClass: top uidNumber: 10000 gidNumber: 10000 homeDirectory: /home/tuser loginShell: /bin/csh uid: tuser cn: tuser .... Eu inicio os UIDs dos meus usuários LDAP em 10000 para evitar colisões com contas do sistema; você pode configurar o número que desejar aqui, desde que seja menor que 65536. -Também precisamos de entradas de grupo. Eles são configuráveis ​​como entradas do usuário, mas usaremos os padrões abaixo: +Também precisamos de entradas de grupo. Eles são configuráveis como entradas do usuário, mas usaremos os padrões abaixo: [.programlisting] .... -dn: ou=groups,dc=example,dc=org +dn: ou=people,dc=example,dc=org objectClass: top objectClass: organizationalUnit -ou: groups +ou: people dn: cn=tuser,ou=groups,dc=example,dc=org objectClass: posixGroup objectClass: top gidNumber: 10000 cn: tuser .... Para inseri-los em seu banco de dados, você pode usar `slapadd` ou `ldapadd` em um arquivo contendo essas entradas. Alternativamente, você pode usar o package:sysutils/ldapvi[]. O utilitário `ldapsearch` na máquina cliente deve agora retornar essas entradas. Em caso afirmativo, o banco de dados está configurado corretamente para ser usado como um servidor de autenticação LDAP. [[client]] == Configuração do Cliente O cliente já deve ter bibliotecas do OpenLDAP do <>, mas se você estiver instalando várias máquinas clientes, precisará instalar o package:net/openldap24-client[] em cada um deles. O FreeBSD requer que dois ports sejam instalados para autenticação em um servidor LDAP, package:security/pam_ldap[] e package:net/nss_ldap[]. [[client-auth]] === Autenticação O package:security/pam_ldap[] é configurado através do [.filename]#/usr/local/etc/ldap.conf#. [NOTE] ==== Este é um _arquivo diferente_ que o arquivo de configuração das funções da biblioteca OpenLDAP, [.filename]#/usr/local/etc/openldap/ldap.conf#; no entanto, são necessárias muitas das mesmas opções; na verdade, é um superconjunto desse arquivo. Para o resto desta seção, referências a [.filename]#ldap.conf# irão significar o arquivo [.filename]#/usr/local/etc/ldap.conf#. ==== Assim, vamos querer copiar todos os nossos parâmetros de configuração originais do [.filename]#openldap/ldap.conf# para o novo [.filename]#ldap.conf#. Feito isso, queremos informar ao package:security/pam_ldap[] o que procurar no servidor de diretório. Estamos identificando nossos usuários com o atributo `uid`. Para configurar isso (embora seja o padrão), defina a diretiva `pam_login_attribute` no [.filename]#ldap.conf#: [[set-pam-login-attr]] .Definindo `pam_login_attribute` [example] ==== [.programlisting] .... pam_login_attribute uid .... ==== Com esta definição, o package:security/pam_ldap[] pesquisará todo o diretório LDAP na `base` para o valor `uid=_username_`. Se encontrar uma e apenas uma entrada, ela tentará se vincular como aquele usuário com a senha que foi fornecida. Se vincular corretamente, então permitirá o acesso. Caso contrário, falhará. Os usuários cujo shell não está em [.filename]#/etc/shells# não poderão efetuar login. Isto é particularmente importante quando o Bash é definido como o shell do usuário no servidor LDAP. O Bash não está incluído em uma instalação padrão do FreeBSD. Quando instalado a partir de um pacote ou port, ele está localizado em [.filename]#/usr/local/bin/bash#. Verifique se o caminho para o shell no servidor está definido corretamente: -[source,shell] +[source, shell] .... % getent passwd username .... Existem duas opções quando a saída mostra `/bin/bash` na última coluna. A primeira é alterar a entrada do usuário no servidor LDAP para [.filename]#/usr/local/bin/bash#. A segunda opção é criar um link simbólico no computador cliente LDAP para que o Bash seja encontrado no local correto: -[source,shell] +[source, shell] .... # ln -s /usr/local/bin/bash /bin/bash .... Certifique-se de que [.filename]#/etc/shells# contenha entradas para ambos `/usr/local/bin/bash` e `/bin/bash`. O usuário poderá então efetuar login no sistema com Bash como seu shell. [[client-auth-pam]] ==== PAM PAM, que significa "Pluggable Authentication Modules", é o método pelo qual o FreeBSD autentica a maioria de suas sessões. Para dizer ao FreeBSD que desejamos usar um servidor LDAP, teremos que adicionar uma linha ao arquivo PAM apropriado. Na maioria das vezes o arquivo PAM apropriado é [.filename]#/etc/pam.d/sshd#, se você quiser usar SSH (lembre-se de definir as opções relevantes em [.filename]#/etc/ssh/sshd_config#, caso contrário o SSH não usará o PAM). Para usar o PAM para autenticação, adicione a linha [.programlisting] .... -auth suficiente /usr/local/lib/pam_ldap.so no_warn +auth sufficient /usr/local/lib/pam_ldap.so no_warn .... Exatamente onde essa linha aparece no arquivo e quais opções aparecem na quarta coluna, determine o comportamento exato do mecanismo de autenticação; veja man:pam.d[5] Com essa configuração, você deve conseguir autenticar um usuário em um diretório LDAP. O PAM executará uma ligação com suas credenciais e, se for bem-sucedido, informará ao SSH para permitir o acesso. No entanto, não é uma boa idéia permitir que _todo_ usuário no diretório dentro de _todo_ computador cliente. Com a configuração atual, tudo o que um usuário precisa para efetuar login em uma máquina é uma entrada LDAP. Felizmente, existem algumas maneiras de restringir o acesso do usuário. O [.filename]#ldap.conf# suporta uma diretiva `pam_groupdn`; Cada conta que se conecta a essa máquina precisa ser membro do grupo especificado aqui. Por exemplo, se você tem [.programlisting] .... pam_groupdn cn=servername,ou=accessgroups,dc=example,dc=org .... em [.filename]#ldap.conf#, somente os membros desse grupo poderão efetuar login. Entretanto, há algumas coisas a serem lembradas. Os membros desse grupo são especificados em um ou mais atributos `memberUid` e cada atributo deve ter o nome distinto completo do membro. Então `memberUid:someuser` não funcionará; deve ser: [.programlisting] .... -memberUid: uid=algum usuário, ou=pessoas, dc=exemplo, dc=org +memberUid: uid=someuser,ou=people,dc=example,dc=org .... Além disso, essa diretiva não é verificada no PAM durante a autenticação, ela é verificada durante o gerenciamento de contas, portanto, você precisará de uma segunda linha em seus arquivos PAM sob `account`. Isso exigirá, por sua vez, que _todo_ usuário seja listado no grupo, o que não é necessariamente o que queremos. Para evitar o bloqueio de usuários que não estão no LDAP, você deve ativar o atributo `ignore_unknown_user`. Finalmente, você deve definir a opção `ignore_authinfo_unavail` para que você não fique bloqueado em todos os computadores quando o servidor LDAP estiver indisponível. Seu [.filename]#pam.d/sshd# pode acabar ficando assim: [[pam]] .Exemplo [.filename]#pam.d/sshd# [example] ==== [.programlisting] .... auth required pam_nologin.so no_warn auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local auth sufficient /usr/local/lib/pam_ldap.so no_warn auth required pam_unix.so no_warn try_first_pass account required pam_login_access.so account required /usr/local/lib/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user .... ==== [NOTE] ==== Como estamos adicionando essas linhas especificamente para [.filename]#pam.d/sshd#, isso só terá um efeito nas sessões SSH. Os usuários LDAP não poderão efetuar login no console. Para mudar este comportamento, examine os outros arquivos em [.filename]#/etc/pam.d# e modifique-os de acordo. ==== [[client-nss]] === Switch de serviço de nome NSS é o serviço que mapeia atributos para nomes. Assim, por exemplo, se um arquivo é de propriedade do usuário `1001`, um aplicativo consultará o NSS para o nome de `1001`, e ele pode obter `bob` ou `ted` ou qualquer que seja o nome do usuário. Agora que nossas informações sobre o usuário são mantidas no LDAP, precisamos dizer ao NSS para procurar lá quando perguntado. O port package:net/nss_ldap[] faz isso. Ele usa o mesmo arquivo de configuração como package:security/pam_ldap[] e não deve precisar de nenhum parâmetro extra depois de instalado. Em vez disso, o que resta é simplesmente editar é [.filename]#/etc/nsswitch.conf# para aproveitar o diretório. Simplesmente substitua as seguintes linhas: [.programlisting] .... group: compat passwd: compat .... com [.programlisting] .... group: files ldap passwd: files ldap .... Isso permitirá que você mapeie nomes de usuários para UIDs e UIDs para nomes de usuários. Parabéns! Agora você deve ter autenticação LDAP em funcionamento. [[caveats]] === Ressalvas Infelizmente, a partir do momento em que isso foi escrito, o FreeBSD não suportava a mudança de senhas de usuário com man:passwd[1]. Por causa disso, a maioria dos administradores estão deixando para implementar uma solução por conta própria. Eu forneço alguns exemplos aqui. Observe que, se você escrever seu próprio script de alteração de senha, há alguns problemas de segurança dos quais você deve estar ciente; veja <> [[chpw-shell]] .Script de shell para alteração de senhas [example] ==== [.programlisting] .... #!/bin/sh stty -echo read -p "Old Password: " oldp; echo read -p "New Password: " np1; echo read -p "Retype New Password: " np2; echo stty echo if [ "$np1" != "$np2" ]; then echo "Passwords do not match." exit 1 fi ldappasswd -D uid="$USER",ou=people,dc=example,dc=org \ -w "$oldp" \ -a "$oldp" \ -s "$np1" .... ==== [CAUTION] ==== + Esse script dificilmente faz qualquer verificação de erros, mas, o mais importante, é muito indiferente sobre como ele armazena suas senhas. Se você fizer algo assim, ajuste pelo menos o valor de sysctl `security.bsd.see_other_uids`: -[source,shell] +[source, shell] .... # sysctl security.bsd.see_other_uids=0 .... ==== Uma abordagem mais flexível (e provavelmente mais segura) pode ser usada escrevendo um programa personalizado, ou até mesmo uma interface web. A seguir, parte de uma biblioteca Ruby que pode alterar senhas LDAP. Ele vê o uso na linha de comando e na web. [[chpw-ruby]] .Script Ruby para Alterar Senhas [example] ==== [.programlisting] .... require 'ldap' require 'base64' require 'digest' require 'password' # ruby-password ldap_server = "ldap.example.org" luser = "uid=#{ENV['USER']},ou=people,dc=example,dc=org" # get the new password, check it, and create a salted hash from it def get_password pwd1 = Password.get("New Password: ") pwd2 = Password.get("Retype New Password: ") raise if pwd1 != pwd2 pwd1.check # check password strength salt = rand.to_s.gsub(/0\./, '') pass = pwd1.to_s hash = "{SSHA}"+Base64.encode64(Digest::SHA1.digest("#{pass}#{salt}")+salt).chomp! return hash end oldp = Password.get("Old Password: ") newp = get_password # We'll just replace it. That we can bind proves that we either know # the old password or are an admin. replace = LDAP::Mod.new(LDAP::LDAP_MOD_REPLACE | LDAP::LDAP_MOD_BVALUES, "userPassword", [newp]) conn = LDAP::SSLConn.new(ldap_server, 389, true) conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3) conn.bind(luser, oldp) conn.modify(luser, [replace]) .... ==== Apesar de não ter a garantia de estar livre de falhas de segurança (a senha é mantida na memória, por exemplo), isso é mais limpo e mais flexível do que um simples script `sh`. [[secure]] == Considerações de segurança Agora que suas máquinas (e possivelmente outros serviços) estão autenticando em seu servidor LDAP, este servidor precisa ser protegido pelo menos tão bem quanto [.filename]#/etc/master.passwd# seria em um servidor regular, e possivelmente mais ainda, uma vez que um servidor LDAP corrompido quebraria todos os serviços do cliente. Lembre-se, esta seção não é exaustiva. Você deve revisar continuamente sua configuração e procedimentos para melhorias. [[secure-readonly]] === Definindo atributos somente leitura Vários atributos no LDAP devem ser somente leitura. Se deixado gravável pelo usuário, por exemplo, um usuário poderia alterar seu atributo `uidNumber` para `0` e obter acesso ao `root`! Para começar, o atributo `userPassword` não deve ser legível por todos. Por padrão, qualquer pessoa que possa se conectar ao servidor LDAP pode ler esse atributo. Para desabilitar isso, coloque o seguinte em [.filename]#slapd.conf#: [[hide-userpass]] .Ocultar senhas [example] ==== [.programlisting] .... access to dn.subtree="ou=people,dc=example,dc=org" attrs=userPassword by self write by anonymous auth by * none access to * by self write by * read .... ==== Isso não permitirá a leitura do atributo `userPassword`, enquanto ainda permite que os usuários alterem suas próprias senhas. Além disso, você desejará impedir que os usuários alterem alguns de seus próprios atributos. Por padrão, os usuários podem alterar qualquer atributo (exceto aqueles que os próprios esquemas LDAP negam alterações), como `uidNumber`. Para fechar este buraco, modifique o acima para [[attrib-readonly]] .Atributos somente leitura [example] ==== [.programlisting] .... access to dn.subtree="ou=people,dc=example,dc=org" attrs=userPassword by self write by anonymous auth by * none access to attrs=homeDirectory,uidNumber,gidNumber by * read access to * by self write by * read .... ==== Isso impedirá que os usuários se disfarçam como outros usuários. [[secure-root]] === Definição da conta `root` Geralmente, a conta `root` ou a conta de administrador para o serviço LDAP será definida no arquivo de configuração. O OpenLDAP suporta isso, por exemplo, e funciona, mas pode causar problemas se o [.filename]#slapd.conf# estiver comprometido. Pode ser melhor usar isto apenas para se autoinicializar no LDAP, e então definir uma conta `root`. Melhor ainda é definir contas com permissões limitadas e omitir totalmente uma conta `root`. Por exemplo, os usuários que podem adicionar ou remover contas de usuário são adicionados a um grupo, mas não podem alterar a participação desse grupo. Essa política de segurança ajudaria a mitigar os efeitos de uma senha perdida. [[manager-acct]] ==== Criando um grupo de gerenciamento Digamos que você queira que seu departamento de TI possa alterar os diretórios pessoais dos usuários, mas não deseja que todos eles possam adicionar ou remover usuários. A maneira de fazer isso é adicionar um grupo para esses administradores: [[manager-acct-dn]] .Criando um grupo de gerenciamento [example] ==== [.programlisting] .... dn: cn=homemanagement,dc=example,dc=org objectClass: top objectClass: posixGroup cn: homemanagement gidNumber: 121 # required for posixGroup memberUid: uid=tuser,ou=people,dc=example,dc=org memberUid: uid=user2,ou=people,dc=example,dc=org .... ==== E então mude os atributos de permissões em [.filename]#slapd.conf#: [[management-acct-acl]] .ACLs para um grupo de gerenciamento de diretório inicial [example] ==== [.programlisting] .... access to dn.subtree="ou=people,dc=example,dc=org" attr=homeDirectory by dn="cn=homemanagement,dc=example,dc=org" dnattr=memberUid write .... ==== Agora `tuser` e `user2` podem alterar os diretórios home de outros usuários. Neste exemplo, demos um subconjunto de poder administrativo a certos usuários sem dar a eles poder em outros domínios. A idéia é que em breve nenhuma conta de usuário tenha o poder de uma conta `root`, mas todo poder que root tem seja tido por pelo menos um usuário. A conta `root` torna-se desnecessária e pode ser removida. [[security-passwd]] === Armazenamento de Senha Por padrão, OpenLDAP armazenará o valor do atributo `userPassword` conforme ele armazena quaisquer outros dados: puro texto. Na maioria das vezes, ele é codificado na base 64, o que fornece proteção suficiente para impedir que um administrador honesto conheça sua senha, mas pouco ainda. É uma boa idéia, então, armazenar senhas em um formato mais seguro, como o SSHA (salted SHA). Isso é feito por qualquer programa que você use para alterar as senhas dos usuários. :sectnums!: [appendix] [[useful]] == Ajudas Úteis Existem alguns outros programas que podem ser úteis, especialmente se você tiver muitos usuários e não quiser configurar tudo manualmente. O package:security/pam_mkhomedir[] é um módulo PAM que sempre é bem-sucedido; Sua finalidade é criar diretórios pessoais para usuários que não os possuem. Se você tiver dezenas de servidores clientes e centenas de usuários, é muito mais fácil usar isso e configurar diretórios esqueletos do que preparar cada diretório inicial. O package:sysutils/cpu[] é um utilitário do tipo man:pw[8] que pode ser usado para gerenciar usuários no diretório LDAP. Você pode chamá-lo diretamente ou encapsular os scripts em torno dele. Ele pode manipular tanto o TLS (com o sinalizador `-x`) quanto o SSL (diretamente). O package:sysutils/ldapvi[] é um ótimo utilitário para editar valores LDAP em uma sintaxe semelhante a LDIF. O diretório (ou subseção do diretório) é apresentado no editor escolhido pela variável de ambiente `EDITOR`. Isso facilita a ativação de alterações em grande escala no diretório sem a necessidade de escrever uma ferramenta personalizada. O package:security/openssh-portable[] tem a capacidade de contatar um servidor LDAP para verificar as chaves SSH. Isso é extremamente bom se você tiver muitos servidores e não quiser copiar suas chaves públicas em todos eles. :sectnums!: [appendix] [[ssl-ca]] -== Certificados do OpenSSL para LDAP +== Certificados OpenSSL para o LDAP -Se você estiver hospedando dois ou mais servidores LDAP, provavelmente não desejará usar certificados autoassinados, já que cada cliente precisará ser configurado para trabalhar com cada certificado. Embora isso seja possível, não é tão simples quanto criar sua própria autoridade de certificação e assinar os certificados de seus servidores com isso. +Se você estiver hospedando dois ou mais servidores LDAP, provavelmente não desejará usar certificados auto-assinados, já que cada cliente precisará ser configurado para trabalhar com cada certificado. Embora isso seja possível, não é tão simples quanto criar sua própria autoridade de certificação e assinar os certificados de seus servidores com isso. Os passos aqui são apresentados como eles são, com muito pouca tentativa de explicar o que está acontecendo - mais explicações podem ser encontradas em man:openssl[1] e aplicações iguais. -Para criar uma autoridade de certificação, simplesmente precisamos de um certificado e chave autoassinados. As etapas para isso novamente são +Para criar uma autoridade de certificação, simplesmente precisamos de um certificado e chave auto-assinados. As etapas para isso novamente são [[make-cert]] .Criando um Certificado [example] ==== -[source,shell] +[source, shell] .... % openssl genrsa -out root.key 1024 % openssl req -new -key root.key -out root.csr % openssl x509 -req -days 1024 -in root.csr -signkey root.key -out root.crt .... + ==== Estas serão sua chave e certificado de CA raiz. Você provavelmente desejará criptografar a chave e armazená-la em um local seguro; qualquer pessoa com acesso a ele pode se passar por um dos seus servidores LDAP. Em seguida, usando as duas primeiras etapas acima, crie uma chave [.filename]#ldap-server-one.key# e a solicitação de assinatura de certificado [.filename]#ldap-server-one.csr#. Depois de assinar o pedido de assinatura com [.filename]#root.key#, você poderá usar o [.filename]#ldap-server-one.*# nos servidores LDAP. [NOTE] ==== Não se esqueça de usar o nome de domínio totalmente qualificado para o atributo "common name" ao gerar a solicitação de assinatura de certificado; caso contrário, os clientes rejeitarão uma conexão com você e poderá ser muito complicado diagnosticar. ==== Para assinar a chave, use `-CA` e `-CAkey` em vez de `-signkey`: [[ca-sign]] .Assinando como uma autoridade de certificação [example] ==== -[source,shell] +[source, shell] .... -% openssl x509 -req -dias 1024 \ --em servidor ldap-one.csr -CA root.crt -CAkey root.key \ +% openssl x509 -req -days 1024 \ +-in ldap-server-one.csr -CA root.crt -CAkey root.key \ -out ldap-server-one.crt .... + ==== O arquivo resultante será o certificado que você pode usar em seus servidores LDAP. -Finalmente, para os clientes confiarem em todos os seus servidores, distribua [.filename]#root.crt# (o _certificado_, não a chave!) Para cada cliente, e especifique-o na directiva `TLSCACertificateFile` no [.filename]#ldap.conf#. +Finalmente, para os clientes confiarem em todos os seus servidores, distribua [.filename]#root.crt# (o _certificado_, não a chave!) para cada cliente, e especifique-o na directiva `TLSCACertificateFile` no [.filename]#ldap.conf#. diff --git a/documentation/content/pt-br/articles/ldap-auth/_index.po b/documentation/content/pt-br/articles/ldap-auth/_index.po new file mode 100644 index 0000000000..ed9d1c7e98 --- /dev/null +++ b/documentation/content/pt-br/articles/ldap-auth/_index.po @@ -0,0 +1,1906 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# Danilo G. Baio , 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2022-02-01 09:21-0300\n" +"PO-Revision-Date: 2022-02-07 02:21+0000\n" +"Last-Translator: Danilo G. Baio \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#. type: YAML Front Matter: description +#: documentation/content/en/articles/ldap-auth/_index.adoc:1 +#, no-wrap +msgid "Guide for the configuration of an LDAP server for authentication on FreeBSD" +msgstr "" +"Guia para a configuração de um servidor LDAP para autenticação no FreeBSD" + +#. type: Title = +#: documentation/content/en/articles/ldap-auth/_index.adoc:1 +#: documentation/content/en/articles/ldap-auth/_index.adoc:12 +#, no-wrap +msgid "LDAP Authentication" +msgstr "Autenticação LDAP" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:45 +msgid "Abstract" +msgstr "Resumo" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:48 +msgid "" +"This document is intended as a guide for the configuration of an LDAP server " +"(principally an OpenLDAP server) for authentication on FreeBSD. This is " +"useful for situations where many servers need the same user accounts, for " +"example as a replacement for NIS." +msgstr "" +"Este documento pretende ser um guia para a configuração de um servidor LDAP (" +"principalmente um servidor OpenLDAP) para autenticação no FreeBSD. Isso é " +"útil para situações em que muitos servidores precisam das mesmas contas de " +"usuário, por exemplo, como substituto do NIS." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:50 +msgid "'''" +msgstr "'''" + +#. type: Title == +#: documentation/content/en/articles/ldap-auth/_index.adoc:54 +#, no-wrap +msgid "Preface" +msgstr "Prefácio" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:58 +msgid "" +"This document is intended to give the reader enough of an understanding of " +"LDAP to configure an LDAP server. This document will attempt to provide an " +"explanation of package:net/nss_ldap[] and package:security/pam_ldap[] for " +"use with client machines services for use with the LDAP server." +msgstr "" +"Este documento destina-se a fornecer ao leitor uma compreensão suficiente do " +"LDAP para configurar um servidor LDAP. Este documento tentará fornecer uma " +"explicação de package:net/nss_ldap[] e package:security/pam_ldap[] para uso " +"com serviços de máquinas cliente para uso com o servidor LDAP." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:60 +msgid "" +"When finished, the reader should be able to configure and deploy a FreeBSD " +"server that can host an LDAP directory, and to configure and deploy a " +"FreeBSD server which can authenticate against an LDAP directory." +msgstr "" +"Quando terminar, o leitor deve ser capaz de configurar e implantar um " +"servidor FreeBSD que possa hospedar um diretório LDAP e configurar e " +"implantar um servidor FreeBSD que possa autenticar em um diretório LDAP." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:64 +msgid "" +"This article is not intended to be an exhaustive account of the security, " +"robustness, or best practice considerations for configuring LDAP or the " +"other services discussed herein. While the author takes care to do " +"everything correctly, they do not address security issues beyond a general " +"scope. This article should be considered to lay the theoretical groundwork " +"only, and any actual implementation should be accompanied by careful " +"requirement analysis." +msgstr "" +"Este artigo não pretende ser um relato exaustivo da segurança, robustez ou " +"considerações sobre práticas recomendadas para configurar o LDAP ou os " +"outros serviços discutidos aqui. Embora o autor tenha o cuidado de fazer " +"tudo corretamente, ele não aborda problemas de segurança além do escopo " +"geral. Este artigo deve ser considerado para estabelecer as bases teóricas " +"somente, e qualquer implementação real deve ser acompanhada por uma análise " +"cuidadosa dos requisitos." + +#. type: Title == +#: documentation/content/en/articles/ldap-auth/_index.adoc:66 +#, no-wrap +msgid "Configuring LDAP" +msgstr "Configurando o LDAP" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:71 +msgid "" +"LDAP stands for \"Lightweight Directory Access Protocol\" and is a subset of " +"the X.500 Directory Access Protocol. Its most recent specifications are in " +"http://www.ietf.org/rfc/rfc4510.txt[RFC4510] and friends. Essentially it is " +"a database that expects to be read from more often than it is written to." +msgstr "" +"LDAP significa \"Lightweight Directory Access Protocol\" e é um subconjunto " +"do X.500 Directory Access Protocol. Suas especificações mais recentes estão " +"na http://www.ietf.org/rfc/rfc4510.txt[RFC4510] e documentos amigáveis. " +"Essencialmente, é um banco de dados que espera ser lido com mais frequência " +"do que é escrito." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:75 +msgid "" +"The LDAP server http://www.openldap.org/[OpenLDAP] will be used in the " +"examples in this document; while the principles here should be generally " +"applicable to many different servers, most of the concrete administration is " +"OpenLDAP-specific. There are several server versions in ports, for example " +"package:net/openldap24-server[]. Client servers will need the corresponding " +"package:net/openldap24-client[] libraries." +msgstr "" +"O servidor LDAP http://www.openldap.org/[OpenLDAP] será usado nos exemplos " +"deste documento; embora os princípios aqui devam ser geralmente aplicáveis a " +"muitos servidores diferentes, a maior parte da administração concreta é " +"especificamente para OpenLDAP. Existem várias versões de servidor nos ports, " +"por exemplo package:net/openldap24-server[]. Os servidores clientes " +"precisarão das bibliotecas package:net/openldap24-client[] correspondentes." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:78 +msgid "" +"There are (basically) two areas of the LDAP service which need " +"configuration. The first is setting up a server to receive connections " +"properly, and the second is adding entries to the server's directory so that " +"FreeBSD tools know how to interact with it." +msgstr "" +"Existem (basicamente) duas áreas do serviço LDAP que precisam de " +"configuração. A primeira é a configuração de um servidor para receber as " +"conexões corretamente, e o segundo é adicionar entradas ao diretório do " +"servidor para que as ferramentas do FreeBSD saibam como interagir com ele." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:80 +#, no-wrap +msgid "Setting Up the Server for Connections" +msgstr "Configurando o servidor para conexões" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:86 +msgid "" +"This section is specific to OpenLDAP. If you are using another server, you " +"will need to consult that server's documentation." +msgstr "" +"Esta seção é específica do OpenLDAP. Se você estiver usando outro servidor, " +"precisará consultar a documentação desse servidor." + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:89 +#: documentation/content/en/articles/ldap-auth/_index.adoc:94 +#, no-wrap +msgid "Installing OpenLDAP" +msgstr "Instalando o OpenLDAP" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:92 +msgid "First, install OpenLDAP:" +msgstr "Primeiro, instale o OpenLDAP:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:102 +#, no-wrap +msgid "" +"# cd /usr/ports/net/openldap24-server\n" +"# make install clean\n" +msgstr "" +"# cd /usr/ports/net/openldap24-server\n" +"# make install clean\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:107 +msgid "" +"This installs the `slapd` and `slurpd` binaries, along with the required " +"OpenLDAP libraries." +msgstr "" +"Isso instala os binários `slapd` e `slurpd`, juntamente com as bibliotecas " +"OpenLDAP requeridas." + +#. type: Title ==== +#: documentation/content/en/articles/ldap-auth/_index.adoc:109 +#, no-wrap +msgid "Configuring OpenLDAP" +msgstr "Configurando o OpenLDAP" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:112 +msgid "Next we must configure OpenLDAP." +msgstr "Em seguida, devemos configurar o OpenLDAP." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:115 +msgid "" +"You will want to require encryption in your connections to the LDAP server; " +"otherwise your users' passwords will be transferred in plain text, which is " +"considered insecure. The tools we will be using support two very similar " +"kinds of encryption, SSL and TLS." +msgstr "" +"Você desejará exigir criptografia em suas conexões com o servidor LDAP; caso " +"contrário, as senhas de seus usuários serão transferidas em texto simples, o " +"que é considerado inseguro. As ferramentas que usaremos suportam dois tipos " +"muito semelhantes de criptografia, SSL e TLS." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:118 +msgid "" +"TLS stands for \"Transportation Layer Security\". Services that employ TLS " +"tend to connect on the _same_ ports as the same services without TLS; thus " +"an SMTP server which supports TLS will listen for connections on port 25, " +"and an LDAP server will listen on 389." +msgstr "" +"TLS significa \"Segurança da Camada de Transporte\". Serviços que empregam " +"TLS tendem a se conectar nas _mesmas_ portas que os mesmos serviços sem TLS; " +"assim, um servidor SMTP que suporte o TLS escutará as conexões na porta 25 e " +"um servidor LDAP escutará no 389." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:121 +msgid "" +"SSL stands for \"Secure Sockets Layer\", and services that implement SSL do " +"_not_ listen on the same ports as their non-SSL counterparts. Thus SMTPS " +"listens on port 465 (not 25), HTTPS listens on 443, and LDAPS on 636." +msgstr "" +"SSL significa \"Secure Sockets Layer\", e serviços que implementam SSL _não_ " +"escutam nas mesmas portas que seus equivalentes não-SSL. Assim, o SMTPS " +"atende na porta 465 (não 25), HTTPS escuta na 443 e LDAPS na 636." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:125 +msgid "" +"The reason SSL uses a different port than TLS is because a TLS connection " +"begins as plain text, and switches to encrypted traffic after the `STARTTLS` " +"directive. SSL connections are encrypted from the beginning. Other than " +"that there are no substantial differences between the two." +msgstr "" +"A razão pela qual o SSL usa uma porta diferente do TLS é porque uma conexão " +"TLS começa como texto simples e alterna para o tráfego criptografado após a " +"diretiva `STARTTLS`. As conexões SSL são criptografadas desde o início. Além " +"disso, não há diferenças substanciais entre os dois." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:129 +msgid "We will adjust OpenLDAP to use TLS, as SSL is considered deprecated." +msgstr "" +"Ajustaremos o OpenLDAP para usar o TLS, já que o SSL é considerado obsoleto." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:132 +msgid "" +"Once OpenLDAP is installed via ports, the following configuration parameters " +"in [.filename]#/usr/local/etc/openldap/slapd.conf# will enable TLS:" +msgstr "" +"Uma vez que o OpenLDAP esteja instalado via ports, os seguintes parâmetros " +"de configuração em [.filename]#/usr/local/etc/openldap/slapd.conf# irão " +"ativar o TLS:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:136 +#, no-wrap +msgid "security ssf=128\n" +msgstr "security ssf=128\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:140 +#, no-wrap +msgid "" +"TLSCertificateFile /path/to/your/cert.crt\n" +"TLSCertificateKeyFile /path/to/your/cert.key\n" +"TLSCACertificateFile /path/to/your/cacert.crt\n" +msgstr "" +"TLSCertificateFile /path/to/your/cert.crt\n" +"TLSCertificateKeyFile /path/to/your/cert.key\n" +"TLSCACertificateFile /path/to/your/cacert.crt\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:144 +msgid "" +"Here, `ssf=128` tells OpenLDAP to require 128-bit encryption for all " +"connections, both search and update. This parameter may be configured based " +"on the security needs of your site, but rarely you need to weaken it, as " +"most LDAP client libraries support strong encryption." +msgstr "" +"Aqui, `ssf=128` diz ao OpenLDAP para exigir criptografia de 128 bits para " +"todas as conexões, tanto de pesquisa quanto de atualização. Esse parâmetro " +"pode ser configurado com base nas necessidades de segurança do seu site, mas " +"raramente é necessário enfraquecê-la, pois a maioria das bibliotecas de " +"clientes LDAP oferece suporte à criptografia forte." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:147 +msgid "" +"The [.filename]#cert.crt#, [.filename]#cert.key#, and [.filename]#cacert." +"crt# files are necessary for clients to authenticate _you_ as the valid LDAP " +"server. If you simply want a server that runs, you can create a self-signed " +"certificate with OpenSSL:" +msgstr "" +"Os arquivos [.filename]#cert.crt#, [.filename]#cert.key# e [.filename]#cacert" +".crt# são necessários para que os clientes autentiquem _você_ como o " +"servidor LDAP válido. Se você simplesmente quiser um servidor que seja " +"executado, poderá criar um certificado auto-assinado com o OpenSSL:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:149 +#, no-wrap +msgid "Generating an RSA Key" +msgstr "Gerando uma chave RSA" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:160 +#, no-wrap +msgid "" +"% openssl genrsa -out cert.key 1024\n" +"Generating RSA private key, 1024 bit long modulus\n" +"....................++++++\n" +"...++++++\n" +"e is 65537 (0x10001)\n" +msgstr "" +"% openssl genrsa -out cert.key 1024\n" +"Generating RSA private key, 1024 bit long modulus\n" +"....................++++++\n" +"...++++++\n" +"e is 65537 (0x10001)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:162 +#, no-wrap +msgid "% openssl req -new -key cert.key -out cert.csr\n" +msgstr "% openssl req -new -key cert.key -out cert.csr\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:171 +msgid "" +"At this point you should be prompted for some values. You may enter " +"whatever values you like; however, it is important the \"Common Name\" value " +"be the fully qualified domain name of the OpenLDAP server. In our case, and " +"the examples here, the server is _server.example.org_. Incorrectly setting " +"this value will cause clients to fail when making connections. This can the " +"cause of great frustration, so ensure that you follow these steps closely." +msgstr "" +"Neste ponto, você deve ser solicitado para digitar alguns valores. Você pode " +"inserir os valores que quiser; no entanto, é importante que o valor \"Common " +"Name\" seja o nome de domínio totalmente qualificado do servidor OpenLDAP. " +"No nosso caso, e os exemplos aqui, o servidor é _server.example.org_. " +"Definir incorretamente esse valor fará com que os clientes falhem ao fazer " +"conexões. Isso pode causar uma grande frustração, portanto, certifique-se de " +"seguir atentamente estas etapas." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:173 +msgid "Finally, the certificate signing request needs to be signed:" +msgstr "" +"Por fim, a requisição de assinatura de certificado precisa ser assinada:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:175 +#, no-wrap +msgid "Self-signing the Certificate" +msgstr "Auto-assinando o certificado" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:185 +#, no-wrap +msgid "" +"% openssl x509 -req -in cert.csr -days 365 -signkey cert.key -out cert.crt\n" +"Signature ok\n" +"subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd\n" +"Getting Private key\n" +msgstr "" +"% openssl x509 -req -in cert.csr -days 365 -signkey cert.key -out cert.crt\n" +"Signature ok\n" +"subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd\n" +"Getting Private key\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:191 +msgid "" +"This will create a self-signed certificate that can be used for the " +"directives in [.filename]#slapd.conf#, where [.filename]#cert.crt# and [." +"filename]#cacert.crt# are the same file. If you are going to use many " +"OpenLDAP servers (for replication via `slurpd`) you will want to see <> to generate a CA key and use it to sign individual server certificates." +msgstr "" +"Isso criará um certificado auto-assinado que pode ser usado para as " +"diretivas em [.filename]#slapd.conf#, onde [.filename]#cert.crt# e [." +"filename]#cacert.crt# são o mesmo arquivo. Se você for usar muitos " +"servidores OpenLDAP (para replicação via `slurpd`), você vai querer ver " +"<> para gerar uma chave CA e usá-la para assinar certificados de " +"servidor individuais." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:193 +msgid "Once this is done, put the following in [.filename]#/etc/rc.conf#:" +msgstr "Feito isso, coloque o seguinte em [.filename]#/etc/rc.conf#:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:197 +#, no-wrap +msgid "slapd_enable=\"YES\"\n" +msgstr "slapd_enable=\"YES\"\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:202 +msgid "" +"Then run `/usr/local/etc/rc.d/slapd start`. This should start OpenLDAP. " +"Confirm that it is listening on 389 with" +msgstr "" +"Em seguida, execute `/usr/local/etc/rc.d/slapd start`. Isso deve iniciar o " +"OpenLDAP. Confirme que está escutando em 389 com" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:207 +#, no-wrap +msgid "" +"% sockstat -4 -p 389\n" +"ldap slapd 3261 7 tcp4 *:389 *:*\n" +msgstr "" +"% sockstat -4 -p 389\n" +"ldap slapd 3261 7 tcp4 *:389 *:*\n" + +#. type: Title ==== +#: documentation/content/en/articles/ldap-auth/_index.adoc:210 +#, no-wrap +msgid "Configuring the Client" +msgstr "Configurando o Cliente" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:214 +msgid "" +"Install the package:net/openldap24-client[] port for the OpenLDAP " +"libraries. The client machines will always have OpenLDAP libraries since " +"that is all package:security/pam_ldap[] and package:net/nss_ldap[] support, " +"at least for the moment." +msgstr "" +"Instale o port package:net/openldap24-client[] para as bibliotecas do " +"OpenLDAP. As máquinas cliente sempre terão bibliotecas OpenLDAP, já que é " +"todo o suporte a package:security/pam_ldap[] e package:net/nss_ldap[], pelo " +"menos por enquanto." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:217 +msgid "" +"The configuration file for the OpenLDAP libraries is [.filename]#/usr/local/" +"etc/openldap/ldap.conf#. Edit this file to contain the following values:" +msgstr "" +"O arquivo de configuração para as bibliotecas OpenLDAP é [.filename]#/usr/" +"local/etc/openldap/ldap.conf#. Edite este arquivo para conter os seguintes " +"valores:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:224 +#, no-wrap +msgid "" +"base dc=example,dc=org\n" +"uri ldap://server.example.org/\n" +"ssl start_tls\n" +"tls_cacert /path/to/your/cacert.crt\n" +msgstr "" +"base dc=example,dc=org\n" +"uri ldap://server.example.org/\n" +"ssl start_tls\n" +"tls_cacert /path/to/your/cacert.crt\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:229 +msgid "" +"It is important that your clients have access to [.filename]#cacert.crt#, " +"otherwise they will not be able to connect." +msgstr "" +"É importante que seus clientes tenham acesso ao [.filename]#cacert.crt#, " +"caso contrário, eles não poderão se conectar." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:236 +msgid "" +"There are two files called [.filename]#ldap.conf#. The first is this file, " +"which is for the OpenLDAP libraries and defines how to talk to the server. " +"The second is [.filename]#/usr/local/etc/ldap.conf#, and is for pam_ldap." +msgstr "" +"Existem dois arquivos chamados [.filename]#ldap.conf#. O primeiro é este " +"arquivo, que é para as bibliotecas OpenLDAP e define como falar com o " +"servidor. O segundo é [.filename]#/usr/local/etc/ldap.conf# e é para " +"pam_ldap." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:241 +msgid "" +"At this point you should be able to run `ldapsearch -Z` on the client " +"machine; `-Z` means \"use TLS\". If you encounter an error, then something " +"is configured wrong; most likely it is your certificates. Use man:" +"openssl[1]'s `s_client` and `s_server` to ensure you have them configured " +"and signed properly." +msgstr "" +"Neste ponto, você deve conseguir executar `ldapsearch -Z` na máquina cliente;" +" `-Z` significa \"usar o TLS\". Se você encontrar um erro, então algo está " +"configurado errado; muito provavelmente são seus certificados. Use os " +"comandos `s_client` e `s_server` do man:openssl[1] para assegurar que você " +"os tenha configurado e assinado corretamente." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:243 +#, no-wrap +msgid "Entries in the Database" +msgstr "Entradas no banco de dados" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:248 +msgid "" +"Authentication against an LDAP directory is generally accomplished by " +"attempting to bind to the directory as the connecting user. This is done by " +"establishing a \"simple\" bind on the directory with the user name " +"supplied. If there is an entry with the `uid` equal to the user name and " +"that entry's `userPassword` attribute matches the password supplied, then " +"the bind is successful." +msgstr "" +"A autenticação em um diretório LDAP geralmente é realizada pela tentativa de " +"vincular ao diretório como o usuário de conexão. Isso é feito estabelecendo " +"um vinculo \"simples\" no diretório com o nome de usuário fornecido. Se " +"houver uma entrada com o `uid` igual ao nome do usuário e o atributo " +"`userPassword` da entrada corresponder à senha fornecida, o vinculo será bem-" +"sucedido." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:250 +msgid "" +"The first thing we have to do is figure out is where in the directory our " +"users will live." +msgstr "" +"A primeira coisa que temos que fazer é descobrir onde no diretório os nossos " +"usuários irão estar." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:254 +msgid "" +"The base entry for our database is `dc=example,dc=org`. The default " +"location for users that most clients seem to expect is something like " +"`ou=people,_base_`, so that is what will be used here. However keep in mind " +"that this is configurable." +msgstr "" +"A entrada de base para nosso banco de dados é `dc=example,dc=org`. O local " +"padrão para usuários que a maioria dos clientes parece esperar é algo como `" +"ou=people, _base_`, então é isso que será usado aqui. No entanto, tenha em " +"mente que isso é configurável." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:256 +msgid "So the ldif entry for the `people` organizational unit will look like:" +msgstr "" +"Assim, a entrada ldif para a unidade organizacional `people` será semelhante " +"a:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:263 +#, no-wrap +msgid "" +"dn: ou=people,dc=example,dc=org\n" +"objectClass: top\n" +"objectClass: organizationalUnit\n" +"ou: people\n" +msgstr "" +"dn: ou=people,dc=example,dc=org\n" +"objectClass: top\n" +"objectClass: organizationalUnit\n" +"ou: people\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:266 +msgid "All users will be created as subentries of this organizational unit." +msgstr "" +"Todos os usuários serão criados como subentradas dessa unidade " +"organizacional." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:271 +msgid "" +"Some thought might be given to the object class your users will belong to. " +"Most tools by default will use `people`, which is fine if you simply want to " +"provide entries against which to authenticate. However, if you are going to " +"store user information in the LDAP database as well, you will probably want " +"to use `inetOrgPerson`, which has many useful attributes. In either case, " +"the relevant schemas need to be loaded in [.filename]#slapd.conf#." +msgstr "" +"Alguma consideração pode ser dada à classe de objeto a que seus usuários " +"pertencerão. A maioria das ferramentas, por padrão, usará `people`, o que é " +"bom se você quiser simplesmente fornecer entradas para autenticar. No " +"entanto, se você for armazenar informações do usuário no banco de dados " +"LDAP, provavelmente usará `inetOrgPerson`, que possui muitos atributos " +"úteis. Em ambos os casos, os esquemas relevantes precisam ser carregados em [" +".filename]#slapd.conf#." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:274 +msgid "" +"For this example we will use the `person` object class. If you are using " +"`inetOrgPerson`, the steps are basically identical, except that the `sn` " +"attribute is required." +msgstr "" +"Para este exemplo, usaremos a classe de objeto `person`. Se você estiver " +"usando `inetOrgPerson`, as etapas são basicamente idênticas, exceto que o " +"atributo `sn` é necessário." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:276 +msgid "To add a test-user named `tuser`, the ldif would be:" +msgstr "Para adicionar um usuário de teste chamado `tuser`, o ldif seria:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:290 +#, no-wrap +msgid "" +"dn: uid=tuser,ou=people,dc=example,dc=org\n" +"objectClass: person\n" +"objectClass: posixAccount\n" +"objectClass: shadowAccount\n" +"objectClass: top\n" +"uidNumber: 10000\n" +"gidNumber: 10000\n" +"homeDirectory: /home/tuser\n" +"loginShell: /bin/csh\n" +"uid: tuser\n" +"cn: tuser\n" +msgstr "" +"dn: uid=tuser,ou=people,dc=example,dc=org\n" +"objectClass: person\n" +"objectClass: posixAccount\n" +"objectClass: shadowAccount\n" +"objectClass: top\n" +"uidNumber: 10000\n" +"gidNumber: 10000\n" +"homeDirectory: /home/tuser\n" +"loginShell: /bin/csh\n" +"uid: tuser\n" +"cn: tuser\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:293 +msgid "" +"I start my LDAP users' UIDs at 10000 to avoid collisions with system " +"accounts; you can configure whatever number you wish here, as long as it is " +"less than 65536." +msgstr "" +"Eu inicio os UIDs dos meus usuários LDAP em 10000 para evitar colisões com " +"contas do sistema; você pode configurar o número que desejar aqui, desde que " +"seja menor que 65536." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:296 +msgid "" +"We also need group entries. They are as configurable as user entries, but " +"we will use the defaults below:" +msgstr "" +"Também precisamos de entradas de grupo. Eles são configuráveis como entradas " +"do usuário, mas usaremos os padrões abaixo:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:303 +#, no-wrap +msgid "" +"dn: ou=groups,dc=example,dc=org\n" +"objectClass: top\n" +"objectClass: organizationalUnit\n" +"ou: groups\n" +msgstr "" +"dn: ou=people,dc=example,dc=org\n" +"objectClass: top\n" +"objectClass: organizationalUnit\n" +"ou: people\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:309 +#, no-wrap +msgid "" +"dn: cn=tuser,ou=groups,dc=example,dc=org\n" +"objectClass: posixGroup\n" +"objectClass: top\n" +"gidNumber: 10000\n" +"cn: tuser\n" +msgstr "" +"dn: cn=tuser,ou=groups,dc=example,dc=org\n" +"objectClass: posixGroup\n" +"objectClass: top\n" +"gidNumber: 10000\n" +"cn: tuser\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:313 +msgid "" +"To enter these into your database, you can use `slapadd` or `ldapadd` on a " +"file containing these entries. Alternatively, you can use package:sysutils/" +"ldapvi[]." +msgstr "" +"Para inseri-los em seu banco de dados, você pode usar `slapadd` ou `ldapadd` " +"em um arquivo contendo essas entradas. Alternativamente, você pode usar o " +"package:sysutils/ldapvi[]." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:316 +msgid "" +"The `ldapsearch` utility on the client machine should now return these " +"entries. If it does, your database is properly configured to be used as an " +"LDAP authentication server." +msgstr "" +"O utilitário `ldapsearch` na máquina cliente deve agora retornar essas " +"entradas. Em caso afirmativo, o banco de dados está configurado corretamente " +"para ser usado como um servidor de autenticação LDAP." + +#. type: Title == +#: documentation/content/en/articles/ldap-auth/_index.adoc:318 +#, no-wrap +msgid "Client Configuration" +msgstr "Configuração do Cliente" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:321 +msgid "" +"The client should already have OpenLDAP libraries from <>, but if you are installing several client machines you will need to " +"install package:net/openldap24-client[] on each of them." +msgstr "" +"O cliente já deve ter bibliotecas do OpenLDAP do <>, " +"mas se você estiver instalando várias máquinas clientes, precisará instalar " +"o package:net/openldap24-client[] em cada um deles." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:323 +msgid "" +"FreeBSD requires two ports to be installed to authenticate against an LDAP " +"server, package:security/pam_ldap[] and package:net/nss_ldap[]." +msgstr "" +"O FreeBSD requer que dois ports sejam instalados para autenticação em um " +"servidor LDAP, package:security/pam_ldap[] e package:net/nss_ldap[]." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:325 +#, no-wrap +msgid "Authentication" +msgstr "Autenticação" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:328 +msgid "" +"package:security/pam_ldap[] is configured via [.filename]#/usr/local/etc/" +"ldap.conf#." +msgstr "" +"O package:security/pam_ldap[] é configurado através do [.filename]#/usr/" +"local/etc/ldap.conf#." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:333 +msgid "" +"This is a _different file_ than the OpenLDAP library functions' " +"configuration file, [.filename]#/usr/local/etc/openldap/ldap.conf#; however, " +"it takes many of the same options; in fact it is a superset of that file. " +"For the rest of this section, references to [.filename]#ldap.conf# will mean " +"[.filename]#/usr/local/etc/ldap.conf#." +msgstr "" +"Este é um _arquivo diferente_ que o arquivo de configuração das funções da " +"biblioteca OpenLDAP, [.filename]#/usr/local/etc/openldap/ldap.conf#; no " +"entanto, são necessárias muitas das mesmas opções; na verdade, é um " +"superconjunto desse arquivo. Para o resto desta seção, referências a [." +"filename]#ldap.conf# irão significar o arquivo [.filename]#/usr/local/etc/" +"ldap.conf#." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:337 +msgid "" +"Thus, we will want to copy all of our original configuration parameters from " +"[.filename]#openldap/ldap.conf# to the new [.filename]#ldap.conf#. Once " +"this is done, we want to tell package:security/pam_ldap[] what to look for " +"on the directory server." +msgstr "" +"Assim, vamos querer copiar todos os nossos parâmetros de configuração " +"originais do [.filename]#openldap/ldap.conf# para o novo [.filename]#ldap." +"conf#. Feito isso, queremos informar ao package:security/pam_ldap[] o que " +"procurar no servidor de diretório." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:340 +msgid "" +"We are identifying our users with the `uid` attribute. To configure this " +"(though it is the default), set the `pam_login_attribute` directive in [." +"filename]#ldap.conf#:" +msgstr "" +"Estamos identificando nossos usuários com o atributo `uid`. Para configurar " +"isso (embora seja o padrão), defina a diretiva `pam_login_attribute` no [." +"filename]#ldap.conf#:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:342 +#, no-wrap +msgid "Setting `pam_login_attribute`" +msgstr "Definindo `pam_login_attribute`" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:349 +#, no-wrap +msgid "pam_login_attribute uid\n" +msgstr "pam_login_attribute uid\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:357 +msgid "" +"With this set, package:security/pam_ldap[] will search the entire LDAP " +"directory under `base` for the value `uid=_username_`. If it finds one and " +"only one entry, it will attempt to bind as that user with the password it " +"was given. If it binds correctly, then it will allow access. Otherwise it " +"will fail." +msgstr "" +"Com esta definição, o package:security/pam_ldap[] pesquisará todo o " +"diretório LDAP na `base` para o valor `uid=_username_`. Se encontrar uma e " +"apenas uma entrada, ela tentará se vincular como aquele usuário com a senha " +"que foi fornecida. Se vincular corretamente, então permitirá o acesso. Caso " +"contrário, falhará." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:363 +msgid "" +"Users whose shell is not in [.filename]#/etc/shells# will not be able to log " +"in. This is particularly important when Bash is set as the user shell on " +"the LDAP server. Bash is not included with a default installation of " +"FreeBSD. When installed from a package or port, it is located at [." +"filename]#/usr/local/bin/bash#. Verify that the path to the shell on the " +"server is set correctly:" +msgstr "" +"Os usuários cujo shell não está em [.filename]#/etc/shells# não poderão " +"efetuar login. Isto é particularmente importante quando o Bash é definido " +"como o shell do usuário no servidor LDAP. O Bash não está incluído em uma " +"instalação padrão do FreeBSD. Quando instalado a partir de um pacote ou " +"port, ele está localizado em [.filename]#/usr/local/bin/bash#. Verifique se " +"o caminho para o shell no servidor está definido corretamente:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:367 +#, no-wrap +msgid "% getent passwd username\n" +msgstr "% getent passwd username\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:372 +msgid "" +"There are two choices when the output shows `/bin/bash` in the last column. " +"The first is to change the user's entry on the LDAP server to [.filename]#/" +"usr/local/bin/bash#. The second option is to create a symlink on the LDAP " +"client computer so Bash is found at the correct location:" +msgstr "" +"Existem duas opções quando a saída mostra `/bin/bash` na última coluna. A " +"primeira é alterar a entrada do usuário no servidor LDAP para [.filename]#/" +"usr/local/bin/bash#. A segunda opção é criar um link simbólico no computador " +"cliente LDAP para que o Bash seja encontrado no local correto:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:376 +#, no-wrap +msgid "# ln -s /usr/local/bin/bash /bin/bash\n" +msgstr "# ln -s /usr/local/bin/bash /bin/bash\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:380 +msgid "" +"Make sure that [.filename]#/etc/shells# contains entries for both `/usr/" +"local/bin/bash` and `/bin/bash`. The user will then be able to log in to " +"the system with Bash as their shell." +msgstr "" +"Certifique-se de que [.filename]#/etc/shells# contenha entradas para ambos `/" +"usr/local/bin/bash` e `/bin/bash`. O usuário poderá então efetuar login no " +"sistema com Bash como seu shell." + +#. type: Title ==== +#: documentation/content/en/articles/ldap-auth/_index.adoc:382 +#, no-wrap +msgid "PAM" +msgstr "PAM" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:386 +msgid "" +"PAM, which stands for \"Pluggable Authentication Modules\", is the method by " +"which FreeBSD authenticates most of its sessions. To tell FreeBSD we wish " +"to use an LDAP server, we will have to add a line to the appropriate PAM " +"file." +msgstr "" +"PAM, que significa \"Pluggable Authentication Modules\", é o método pelo " +"qual o FreeBSD autentica a maioria de suas sessões. Para dizer ao FreeBSD " +"que desejamos usar um servidor LDAP, teremos que adicionar uma linha ao " +"arquivo PAM apropriado." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:388 +msgid "" +"Most of the time the appropriate PAM file is [.filename]#/etc/pam.d/sshd#, " +"if you want to use SSH (remember to set the relevant options in [.filename]#/" +"etc/ssh/sshd_config#, otherwise SSH will not use PAM)." +msgstr "" +"Na maioria das vezes o arquivo PAM apropriado é [.filename]#/etc/pam.d/sshd#" +", se você quiser usar SSH (lembre-se de definir as opções relevantes em [." +"filename]#/etc/ssh/sshd_config#, caso contrário o SSH não usará o PAM)." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:390 +msgid "To use PAM for authentication, add the line" +msgstr "Para usar o PAM para autenticação, adicione a linha" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:394 +#, no-wrap +msgid "auth sufficient /usr/local/lib/pam_ldap.so no_warn\n" +msgstr "auth sufficient /usr/local/lib/pam_ldap.so no_warn\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:397 +msgid "" +"Exactly where this line shows up in the file and which options appear in the " +"fourth column determine the exact behavior of the authentication mechanism; " +"see man:pam[d]" +msgstr "" +"Exatamente onde essa linha aparece no arquivo e quais opções aparecem na " +"quarta coluna, determine o comportamento exato do mecanismo de autenticação; " +"veja man:pam.d[5]" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:400 +msgid "" +"With this configuration you should be able to authenticate a user against an " +"LDAP directory. PAM will perform a bind with your credentials, and if " +"successful will tell SSH to allow access." +msgstr "" +"Com essa configuração, você deve conseguir autenticar um usuário em um " +"diretório LDAP. O PAM executará uma ligação com suas credenciais e, se for " +"bem-sucedido, informará ao SSH para permitir o acesso." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:404 +msgid "" +"However it is not a good idea to allow _every_ user in the directory into " +"_every_ client machine. With the current configuration, all that a user " +"needs to log into a machine is an LDAP entry. Fortunately there are a few " +"ways to restrict user access." +msgstr "" +"No entanto, não é uma boa idéia permitir que _todo_ usuário no diretório " +"dentro de _todo_ computador cliente. Com a configuração atual, tudo o que um " +"usuário precisa para efetuar login em uma máquina é uma entrada LDAP. " +"Felizmente, existem algumas maneiras de restringir o acesso do usuário." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:407 +msgid "" +"[.filename]#ldap.conf# supports a `pam_groupdn` directive; every account " +"that connects to this machine needs to be a member of the group specified " +"here. For example, if you have" +msgstr "" +"O [.filename]#ldap.conf# suporta uma diretiva `pam_groupdn`; Cada conta que " +"se conecta a essa máquina precisa ser membro do grupo especificado aqui. Por " +"exemplo, se você tem" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:411 +#, no-wrap +msgid "pam_groupdn cn=servername,ou=accessgroups,dc=example,dc=org\n" +msgstr "pam_groupdn cn=servername,ou=accessgroups,dc=example,dc=org\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:415 +msgid "" +"in [.filename]#ldap.conf#, then only members of that group will be able to " +"log in. There are a few things to bear in mind, however." +msgstr "" +"em [.filename]#ldap.conf#, somente os membros desse grupo poderão efetuar " +"login. Entretanto, há algumas coisas a serem lembradas." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:418 +msgid "" +"Members of this group are specified in one or more `memberUid` attributes, " +"and each attribute must have the full distinguished name of the member. So " +"`memberUid: someuser` will not work; it must be:" +msgstr "" +"Os membros desse grupo são especificados em um ou mais atributos `memberUid` " +"e cada atributo deve ter o nome distinto completo do membro. Então " +"`memberUid:someuser` não funcionará; deve ser:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:422 +#, no-wrap +msgid "memberUid: uid=someuser,ou=people,dc=example,dc=org\n" +msgstr "memberUid: uid=someuser,ou=people,dc=example,dc=org\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:428 +msgid "" +"Additionally, this directive is not checked in PAM during authentication, it " +"is checked during account management, so you will need a second line in your " +"PAM files under `account`. This will require, in turn, _every_ user to be " +"listed in the group, which is not necessarily what we want. To avoid " +"blocking users that are not in LDAP, you should enable the " +"`ignore_unknown_user` attribute. Finally, you should set the " +"`ignore_authinfo_unavail` option so that you are not locked out of every " +"computer when the LDAP server is unavailable." +msgstr "" +"Além disso, essa diretiva não é verificada no PAM durante a autenticação, " +"ela é verificada durante o gerenciamento de contas, portanto, você precisará " +"de uma segunda linha em seus arquivos PAM sob `account`. Isso exigirá, por " +"sua vez, que _todo_ usuário seja listado no grupo, o que não é " +"necessariamente o que queremos. Para evitar o bloqueio de usuários que não " +"estão no LDAP, você deve ativar o atributo `ignore_unknown_user`. " +"Finalmente, você deve definir a opção `ignore_authinfo_unavail` para que " +"você não fique bloqueado em todos os computadores quando o servidor LDAP " +"estiver indisponível." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:430 +msgid "Your [.filename]#pam.d/sshd# might then end up looking like this:" +msgstr "Seu [.filename]#pam.d/sshd# pode acabar ficando assim:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:432 +#, no-wrap +msgid "Sample [.filename]#pam.d/sshd#" +msgstr "Exemplo [.filename]#pam.d/sshd#" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:443 +#, no-wrap +msgid "" +"auth required pam_nologin.so no_warn\n" +"auth sufficient pam_opie.so no_warn no_fake_prompts\n" +"auth requisite pam_opieaccess.so no_warn allow_local\n" +"auth sufficient /usr/local/lib/pam_ldap.so no_warn\n" +"auth required pam_unix.so no_warn try_first_pass\n" +msgstr "" +"auth required pam_nologin.so no_warn\n" +"auth sufficient pam_opie.so no_warn " +"no_fake_prompts\n" +"auth requisite pam_opieaccess.so no_warn allow_local\n" +"auth sufficient /usr/local/lib/pam_ldap.so no_warn\n" +"auth required pam_unix.so no_warn " +"try_first_pass\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:446 +#, no-wrap +msgid "" +"account required pam_login_access.so\n" +"account required /usr/local/lib/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user\n" +msgstr "" +"account required pam_login_access.so\n" +"account required /usr/local/lib/pam_ldap.so no_warn " +"ignore_authinfo_unavail ignore_unknown_user\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:455 +msgid "" +"Since we are adding these lines specifically to [.filename]#pam.d/sshd#, " +"this will only have an effect on SSH sessions. LDAP users will be unable to " +"log in at the console. To change this behavior, examine the other files in " +"[.filename]#/etc/pam.d# and modify them accordingly." +msgstr "" +"Como estamos adicionando essas linhas especificamente para [.filename]#pam.d/" +"sshd#, isso só terá um efeito nas sessões SSH. Os usuários LDAP não poderão " +"efetuar login no console. Para mudar este comportamento, examine os outros " +"arquivos em [.filename]#/etc/pam.d# e modifique-os de acordo." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:458 +#, no-wrap +msgid "Name Service Switch" +msgstr "Switch de serviço de nome" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:462 +msgid "" +"NSS is the service that maps attributes to names. So, for example, if a " +"file is owned by user `1001`, an application will query NSS for the name of " +"`1001`, and it might get `bob` or `ted` or whatever the user's name is." +msgstr "" +"NSS é o serviço que mapeia atributos para nomes. Assim, por exemplo, se um " +"arquivo é de propriedade do usuário `1001`, um aplicativo consultará o NSS " +"para o nome de `1001`, e ele pode obter `bob` ou `ted` ou qualquer que seja " +"o nome do usuário." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:464 +msgid "" +"Now that our user information is kept in LDAP, we need to tell NSS to look " +"there when queried." +msgstr "" +"Agora que nossas informações sobre o usuário são mantidas no LDAP, " +"precisamos dizer ao NSS para procurar lá quando perguntado." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:469 +msgid "" +"The package:net/nss_ldap[] port does this. It uses the same configuration " +"file as package:security/pam_ldap[], and should not need any extra " +"parameters once it is installed. Instead, what is left is simply to edit [." +"filename]#/etc/nsswitch.conf# to take advantage of the directory. Simply " +"replace the following lines:" +msgstr "" +"O port package:net/nss_ldap[] faz isso. Ele usa o mesmo arquivo de " +"configuração como package:security/pam_ldap[] e não deve precisar de nenhum " +"parâmetro extra depois de instalado. Em vez disso, o que resta é " +"simplesmente editar é [.filename]#/etc/nsswitch.conf# para aproveitar o " +"diretório. Simplesmente substitua as seguintes linhas:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:474 +#, no-wrap +msgid "" +"group: compat\n" +"passwd: compat\n" +msgstr "" +"group: compat\n" +"passwd: compat\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:477 +msgid "with" +msgstr "com" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:482 +#, no-wrap +msgid "" +"group: files ldap\n" +"passwd: files ldap\n" +msgstr "" +"group: files ldap\n" +"passwd: files ldap\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:485 +msgid "This will allow you to map usernames to UIDs and UIDs to usernames." +msgstr "" +"Isso permitirá que você mapeie nomes de usuários para UIDs e UIDs para nomes " +"de usuários." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:487 +msgid "Congratulations! You should now have working LDAP authentication." +msgstr "Parabéns! Agora você deve ter autenticação LDAP em funcionamento." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:489 +#, no-wrap +msgid "Caveats" +msgstr "Ressalvas" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:495 +msgid "" +"Unfortunately, as of the time this was written FreeBSD did not support " +"changing user passwords with man:passwd[1]. As a result of this, most " +"administrators are left to implement a solution themselves. I provide some " +"examples here. Note that if you write your own password change script, " +"there are some security issues you should be made aware of; see <>" +msgstr "" +"Infelizmente, a partir do momento em que isso foi escrito, o FreeBSD não " +"suportava a mudança de senhas de usuário com man:passwd[1]. Por causa disso, " +"a maioria dos administradores estão deixando para implementar uma solução " +"por conta própria. Eu forneço alguns exemplos aqui. Observe que, se você " +"escrever seu próprio script de alteração de senha, há alguns problemas de " +"segurança dos quais você deve estar ciente; veja <>" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:497 +#, no-wrap +msgid "Shell Script for Changing Passwords" +msgstr "Script de shell para alteração de senhas" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:504 +#, no-wrap +msgid "#!/bin/sh\n" +msgstr "#!/bin/sh\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:510 +#, no-wrap +msgid "" +"stty -echo\n" +"read -p \"Old Password: \" oldp; echo\n" +"read -p \"New Password: \" np1; echo\n" +"read -p \"Retype New Password: \" np2; echo\n" +"stty echo\n" +msgstr "" +"stty -echo\n" +"read -p \"Old Password: \" oldp; echo\n" +"read -p \"New Password: \" np1; echo\n" +"read -p \"Retype New Password: \" np2; echo\n" +"stty echo\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:515 +#, no-wrap +msgid "" +"if [ \"$np1\" != \"$np2\" ]; then\n" +" echo \"Passwords do not match.\"\n" +" exit 1\n" +"fi\n" +msgstr "" +"if [ \"$np1\" != \"$np2\" ]; then\n" +" echo \"Passwords do not match.\"\n" +" exit 1\n" +"fi\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:520 +#, no-wrap +msgid "" +"ldappasswd -D uid=\"$USER\",ou=people,dc=example,dc=org \\\n" +" -w \"$oldp\" \\\n" +" -a \"$oldp\" \\\n" +" -s \"$np1\"\n" +msgstr "" +"ldappasswd -D uid=\"$USER\",ou=people,dc=example,dc=org \\\n" +" -w \"$oldp\" \\\n" +" -a \"$oldp\" \\\n" +" -s \"$np1\"\n" + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:529 +msgid "" +"This script does hardly any error checking, but more important it is very " +"cavalier about how it stores your passwords. If you do anything like this, " +"at least adjust the `security.bsd.see_other_uids` sysctl value:" +msgstr "" +"Esse script dificilmente faz qualquer verificação de erros, mas, o mais " +"importante, é muito indiferente sobre como ele armazena suas senhas. Se você " +"fizer algo assim, ajuste pelo menos o valor de sysctl `security.bsd." +"see_other_uids`:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:533 +#, no-wrap +msgid "# sysctl security.bsd.see_other_uids=0\n" +msgstr "# sysctl security.bsd.see_other_uids=0\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:540 +msgid "" +"A more flexible (and probably more secure) approach can be used by writing a " +"custom program, or even a web interface. The following is part of a Ruby " +"library that can change LDAP passwords. It sees use both on the command " +"line, and on the web." +msgstr "" +"Uma abordagem mais flexível (e provavelmente mais segura) pode ser usada " +"escrevendo um programa personalizado, ou até mesmo uma interface web. A " +"seguir, parte de uma biblioteca Ruby que pode alterar senhas LDAP. Ele vê o " +"uso na linha de comando e na web." + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:542 +#, no-wrap +msgid "Ruby Script for Changing Passwords" +msgstr "Script Ruby para Alterar Senhas" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:552 +#, no-wrap +msgid "" +"require 'ldap'\n" +"require 'base64'\n" +"require 'digest'\n" +"require 'password' # ruby-password\n" +msgstr "" +"require 'ldap'\n" +"require 'base64'\n" +"require 'digest'\n" +"require 'password' # ruby-password\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:555 +#, no-wrap +msgid "" +"ldap_server = \"ldap.example.org\"\n" +"luser = \"uid=#{ENV['USER']},ou=people,dc=example,dc=org\"\n" +msgstr "" +"ldap_server = \"ldap.example.org\"\n" +"luser = \"uid=#{ENV['USER']},ou=people,dc=example,dc=org\"\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:560 +#, no-wrap +msgid "" +"# get the new password, check it, and create a salted hash from it\n" +"def get_password\n" +" pwd1 = Password.get(\"New Password: \")\n" +" pwd2 = Password.get(\"Retype New Password: \")\n" +msgstr "" +"# get the new password, check it, and create a salted hash from it\n" +"def get_password\n" +" pwd1 = Password.get(\"New Password: \")\n" +" pwd2 = Password.get(\"Retype New Password: \")\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:563 +#, no-wrap +msgid "" +" raise if pwd1 != pwd2\n" +" pwd1.check # check password strength\n" +msgstr "" +" raise if pwd1 != pwd2\n" +" pwd1.check # check password strength\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:569 +#, no-wrap +msgid "" +" salt = rand.to_s.gsub(/0\\./, '')\n" +" pass = pwd1.to_s\n" +" hash = \"{SSHA}\"+Base64.encode64(Digest::SHA1.digest(\"#{pass}#{salt}\")+salt).chomp!\n" +" return hash\n" +"end\n" +msgstr "" +" salt = rand.to_s.gsub(/0\\./, '')\n" +" pass = pwd1.to_s\n" +" hash = \"{SSHA}\"+Base64.encode64(Digest::SHA1.digest(\"#{pass}#{salt}\"" +")+salt).chomp!\n" +" return hash\n" +"end\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:572 +#, no-wrap +msgid "" +"oldp = Password.get(\"Old Password: \")\n" +"newp = get_password\n" +msgstr "" +"oldp = Password.get(\"Old Password: \")\n" +"newp = get_password\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:575 +#, no-wrap +msgid "" +"# We'll just replace it. That we can bind proves that we either know\n" +"# the old password or are an admin.\n" +msgstr "" +"# We'll just replace it. That we can bind proves that we either know\n" +"# the old password or are an admin.\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:579 +#, no-wrap +msgid "" +"replace = LDAP::Mod.new(LDAP::LDAP_MOD_REPLACE | LDAP::LDAP_MOD_BVALUES,\n" +" \"userPassword\",\n" +" [newp])\n" +msgstr "" +"replace = LDAP::Mod.new(LDAP::LDAP_MOD_REPLACE | LDAP::LDAP_MOD_BVALUES,\n" +" \"userPassword\",\n" +" [newp])\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:584 +#, no-wrap +msgid "" +"conn = LDAP::SSLConn.new(ldap_server, 389, true)\n" +"conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)\n" +"conn.bind(luser, oldp)\n" +"conn.modify(luser, [replace])\n" +msgstr "" +"conn = LDAP::SSLConn.new(ldap_server, 389, true)\n" +"conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)\n" +"conn.bind(luser, oldp)\n" +"conn.modify(luser, [replace])\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:589 +msgid "" +"Although not guaranteed to be free of security holes (the password is kept " +"in memory, for example) this is cleaner and more flexible than a simple `sh` " +"script." +msgstr "" +"Apesar de não ter a garantia de estar livre de falhas de segurança (a senha " +"é mantida na memória, por exemplo), isso é mais limpo e mais flexível do que " +"um simples script `sh`." + +#. type: Title == +#: documentation/content/en/articles/ldap-auth/_index.adoc:591 +#, no-wrap +msgid "Security Considerations" +msgstr "Considerações de segurança" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:594 +msgid "" +"Now that your machines (and possibly other services) are authenticating " +"against your LDAP server, this server needs to be protected at least as well " +"as [.filename]#/etc/master.passwd# would be on a regular server, and " +"possibly even more so since a broken or cracked LDAP server would break " +"every client service." +msgstr "" +"Agora que suas máquinas (e possivelmente outros serviços) estão autenticando " +"em seu servidor LDAP, este servidor precisa ser protegido pelo menos tão bem " +"quanto [.filename]#/etc/master.passwd# seria em um servidor regular, e " +"possivelmente mais ainda, uma vez que um servidor LDAP corrompido quebraria " +"todos os serviços do cliente." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:597 +msgid "" +"Remember, this section is not exhaustive. You should continually review " +"your configuration and procedures for improvements." +msgstr "" +"Lembre-se, esta seção não é exaustiva. Você deve revisar continuamente sua " +"configuração e procedimentos para melhorias." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:599 +#, no-wrap +msgid "Setting Attributes Read-only" +msgstr "Definindo atributos somente leitura" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:603 +msgid "" +"Several attributes in LDAP should be read-only. If left writable by the " +"user, for example, a user could change his `uidNumber` attribute to `0` and " +"get `root` access!" +msgstr "" +"Vários atributos no LDAP devem ser somente leitura. Se deixado gravável pelo " +"usuário, por exemplo, um usuário poderia alterar seu atributo `uidNumber` " +"para `0` e obter acesso ao `root`!" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:607 +msgid "" +"To begin with, the `userPassword` attribute should not be world-readable. " +"By default, anyone who can connect to the LDAP server can read this " +"attribute. To disable this, put the following in [.filename]#slapd.conf#:" +msgstr "" +"Para começar, o atributo `userPassword` não deve ser legível por todos. Por " +"padrão, qualquer pessoa que possa se conectar ao servidor LDAP pode ler esse " +"atributo. Para desabilitar isso, coloque o seguinte em [.filename]#slapd." +"conf#:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:609 +#, no-wrap +msgid "Hide Passwords" +msgstr "Ocultar senhas" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:620 +#: documentation/content/en/articles/ldap-auth/_index.adoc:646 +#, no-wrap +msgid "" +"access to dn.subtree=\"ou=people,dc=example,dc=org\"\n" +" attrs=userPassword\n" +" by self write\n" +" by anonymous auth\n" +" by * none\n" +msgstr "" +"access to dn.subtree=\"ou=people,dc=example,dc=org\"\n" +" attrs=userPassword\n" +" by self write\n" +" by anonymous auth\n" +" by * none\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:624 +#: documentation/content/en/articles/ldap-auth/_index.adoc:653 +#, no-wrap +msgid "" +"access to *\n" +" by self write\n" +" by * read\n" +msgstr "" +"access to *\n" +" by self write\n" +" by * read\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:629 +msgid "" +"This will disallow reading of the `userPassword` attribute, while still " +"allowing users to change their own passwords." +msgstr "" +"Isso não permitirá a leitura do atributo `userPassword`, enquanto ainda " +"permite que os usuários alterem suas próprias senhas." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:633 +msgid "" +"Additionally, you'll want to keep users from changing some of their own " +"attributes. By default, users can change any attribute (except for those " +"which the LDAP schemas themselves deny changes), such as `uidNumber`. To " +"close this hole, modify the above to" +msgstr "" +"Além disso, você desejará impedir que os usuários alterem alguns de seus " +"próprios atributos. Por padrão, os usuários podem alterar qualquer atributo (" +"exceto aqueles que os próprios esquemas LDAP negam alterações), como " +"`uidNumber`. Para fechar este buraco, modifique o acima para" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:635 +#, no-wrap +msgid "Read-only Attributes" +msgstr "Atributos somente leitura" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:649 +#, no-wrap +msgid "" +"access to attrs=homeDirectory,uidNumber,gidNumber\n" +" by * read\n" +msgstr "" +"access to attrs=homeDirectory,uidNumber,gidNumber\n" +" by * read\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:658 +msgid "This will stop users from being able to masquerade as other users." +msgstr "Isso impedirá que os usuários se disfarçam como outros usuários." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:660 +#, no-wrap +msgid "`root` Account Definition" +msgstr "Definição da conta `root`" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:665 +msgid "" +"Often the `root` or manager account for the LDAP service will be defined in " +"the configuration file. OpenLDAP supports this, for example, and it works, " +"but it can lead to trouble if [.filename]#slapd.conf# is compromised. It " +"may be better to use this only to bootstrap yourself into LDAP, and then " +"define a `root` account there." +msgstr "" +"Geralmente, a conta `root` ou a conta de administrador para o serviço LDAP " +"será definida no arquivo de configuração. O OpenLDAP suporta isso, por " +"exemplo, e funciona, mas pode causar problemas se o [.filename]#slapd.conf# " +"estiver comprometido. Pode ser melhor usar isto apenas para se " +"autoinicializar no LDAP, e então definir uma conta `root`." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:669 +msgid "" +"Even better is to define accounts that have limited permissions, and omit a " +"`root` account entirely. For example, users that can add or remove user " +"accounts are added to one group, but they cannot themselves change the " +"membership of this group. Such a security policy would help mitigate the " +"effects of a leaked password." +msgstr "" +"Melhor ainda é definir contas com permissões limitadas e omitir totalmente " +"uma conta `root`. Por exemplo, os usuários que podem adicionar ou remover " +"contas de usuário são adicionados a um grupo, mas não podem alterar a " +"participação desse grupo. Essa política de segurança ajudaria a mitigar os " +"efeitos de uma senha perdida." + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:671 +#: documentation/content/en/articles/ldap-auth/_index.adoc:677 +#, no-wrap +msgid "Creating a Management Group" +msgstr "Criando um grupo de gerenciamento" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:675 +msgid "" +"Say you want your IT department to be able to change home directories for " +"users, but you do not want all of them to be able to add or remove users. " +"The way to do this is to add a group for these admins:" +msgstr "" +"Digamos que você queira que seu departamento de TI possa alterar os " +"diretórios pessoais dos usuários, mas não deseja que todos eles possam " +"adicionar ou remover usuários. A maneira de fazer isso é adicionar um grupo " +"para esses administradores:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:690 +#, no-wrap +msgid "" +"dn: cn=homemanagement,dc=example,dc=org\n" +"objectClass: top\n" +"objectClass: posixGroup\n" +"cn: homemanagement\n" +"gidNumber: 121 # required for posixGroup\n" +"memberUid: uid=tuser,ou=people,dc=example,dc=org\n" +"memberUid: uid=user2,ou=people,dc=example,dc=org\n" +msgstr "" +"dn: cn=homemanagement,dc=example,dc=org\n" +"objectClass: top\n" +"objectClass: posixGroup\n" +"cn: homemanagement\n" +"gidNumber: 121 # required for posixGroup\n" +"memberUid: uid=tuser,ou=people,dc=example,dc=org\n" +"memberUid: uid=user2,ou=people,dc=example,dc=org\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:695 +msgid "And then change the permissions attributes in [.filename]#slapd.conf#:" +msgstr "E então mude os atributos de permissões em [.filename]#slapd.conf#:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:697 +#, no-wrap +msgid "ACLs for a Home Directory Management Group" +msgstr "ACLs para um grupo de gerenciamento de diretório inicial" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:707 +#, no-wrap +msgid "" +"access to dn.subtree=\"ou=people,dc=example,dc=org\"\n" +" attr=homeDirectory\n" +" by dn=\"cn=homemanagement,dc=example,dc=org\"\n" +" dnattr=memberUid write\n" +msgstr "" +"access to dn.subtree=\"ou=people,dc=example,dc=org\"\n" +" attr=homeDirectory\n" +" by dn=\"cn=homemanagement,dc=example,dc=org\"\n" +" dnattr=memberUid write\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:712 +msgid "Now `tuser` and `user2` can change other users' home directories." +msgstr "" +"Agora `tuser` e `user2` podem alterar os diretórios home de outros usuários." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:716 +msgid "" +"In this example we have given a subset of administrative power to certain " +"users without giving them power in other domains. The idea is that soon no " +"single user account has the power of a `root` account, but every power root " +"had is had by at least one user. The `root` account then becomes " +"unnecessary and can be removed." +msgstr "" +"Neste exemplo, demos um subconjunto de poder administrativo a certos " +"usuários sem dar a eles poder em outros domínios. A idéia é que em breve " +"nenhuma conta de usuário tenha o poder de uma conta `root`, mas todo poder " +"que root tem seja tido por pelo menos um usuário. A conta `root` torna-se " +"desnecessária e pode ser removida." + +#. type: Title === +#: documentation/content/en/articles/ldap-auth/_index.adoc:718 +#, no-wrap +msgid "Password Storage" +msgstr "Armazenamento de Senha" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:722 +msgid "" +"By default OpenLDAP will store the value of the `userPassword` attribute as " +"it stores any other data: in the clear. Most of the time it is base 64 " +"encoded, which provides enough protection to keep an honest administrator " +"from knowing your password, but little else." +msgstr "" +"Por padrão, OpenLDAP armazenará o valor do atributo `userPassword` conforme " +"ele armazena quaisquer outros dados: puro texto. Na maioria das vezes, ele é " +"codificado na base 64, o que fornece proteção suficiente para impedir que um " +"administrador honesto conheça sua senha, mas pouco ainda." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:725 +msgid "" +"It is a good idea, then, to store passwords in a more secure format, such as " +"SSHA (salted SHA). This is done by whatever program you use to change " +"users' passwords." +msgstr "" +"É uma boa idéia, então, armazenar senhas em um formato mais seguro, como o " +"SSHA (salted SHA). Isso é feito por qualquer programa que você use para " +"alterar as senhas dos usuários." + +#. type: Title == +#: documentation/content/en/articles/ldap-auth/_index.adoc:730 +#, no-wrap +msgid "Useful Aids" +msgstr "Ajudas Úteis" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:733 +msgid "" +"There are a few other programs that might be useful, particularly if you " +"have many users and do not want to configure everything manually." +msgstr "" +"Existem alguns outros programas que podem ser úteis, especialmente se você " +"tiver muitos usuários e não quiser configurar tudo manualmente." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:736 +msgid "" +"package:security/pam_mkhomedir[] is a PAM module that always succeeds; its " +"purpose is to create home directories for users which do not have them. If " +"you have dozens of client servers and hundreds of users, it is much easier " +"to use this and set up skeleton directories than to prepare every home " +"directory." +msgstr "" +"O package:security/pam_mkhomedir[] é um módulo PAM que sempre é bem-sucedido;" +" Sua finalidade é criar diretórios pessoais para usuários que não os " +"possuem. Se você tiver dezenas de servidores clientes e centenas de " +"usuários, é muito mais fácil usar isso e configurar diretórios esqueletos do " +"que preparar cada diretório inicial." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:740 +msgid "" +"package:sysutils/cpu[] is a man:pw[8]-like utility that can be used to " +"manage users in the LDAP directory. You can call it directly, or wrap " +"scripts around it. It can handle both TLS (with the `-x` flag) and SSL " +"(directly)." +msgstr "" +"O package:sysutils/cpu[] é um utilitário do tipo man:pw[8] que pode ser " +"usado para gerenciar usuários no diretório LDAP. Você pode chamá-lo " +"diretamente ou encapsular os scripts em torno dele. Ele pode manipular tanto " +"o TLS (com o sinalizador `-x`) quanto o SSL (diretamente)." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:744 +msgid "" +"package:sysutils/ldapvi[] is a great utility for editing LDAP values in an " +"LDIF-like syntax. The directory (or subsection of the directory) is " +"presented in the editor chosen by the `EDITOR` environment variable. This " +"makes it easy to enable large-scale changes in the directory without having " +"to write a custom tool." +msgstr "" +"O package:sysutils/ldapvi[] é um ótimo utilitário para editar valores LDAP " +"em uma sintaxe semelhante a LDIF. O diretório (ou subseção do diretório) é " +"apresentado no editor escolhido pela variável de ambiente `EDITOR`. Isso " +"facilita a ativação de alterações em grande escala no diretório sem a " +"necessidade de escrever uma ferramenta personalizada." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:747 +msgid "" +"package:security/openssh-portable[] has the ability to contact an LDAP " +"server to verify SSH keys. This is extremely nice if you have many servers " +"and do not want to copy your public keys across all of them." +msgstr "" +"O package:security/openssh-portable[] tem a capacidade de contatar um " +"servidor LDAP para verificar as chaves SSH. Isso é extremamente bom se você " +"tiver muitos servidores e não quiser copiar suas chaves públicas em todos " +"eles." + +#. type: Title == +#: documentation/content/en/articles/ldap-auth/_index.adoc:752 +#, no-wrap +msgid "OpenSSL Certificates for LDAP" +msgstr "Certificados OpenSSL para o LDAP" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:756 +msgid "" +"If you are hosting two or more LDAP servers, you will probably not want to " +"use self-signed certificates, since each client will have to be configured " +"to work with each certificate. While this is possible, it is not nearly as " +"simple as creating your own certificate authority, and signing your servers' " +"certificates with that." +msgstr "" +"Se você estiver hospedando dois ou mais servidores LDAP, provavelmente não " +"desejará usar certificados auto-assinados, já que cada cliente precisará ser " +"configurado para trabalhar com cada certificado. Embora isso seja possível, " +"não é tão simples quanto criar sua própria autoridade de certificação e " +"assinar os certificados de seus servidores com isso." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:758 +msgid "" +"The steps here are presented as they are with very little attempt at " +"explaining what is going on-further explanation can be found in man:" +"openssl[1] and its friends." +msgstr "" +"Os passos aqui são apresentados como eles são, com muito pouca tentativa de " +"explicar o que está acontecendo - mais explicações podem ser encontradas em " +"man:openssl[1] e aplicações iguais." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:761 +msgid "" +"To create a certificate authority, we simply need a self-signed certificate " +"and key. The steps for this again are" +msgstr "" +"Para criar uma autoridade de certificação, simplesmente precisamos de um " +"certificado e chave auto-assinados. As etapas para isso novamente são" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:763 +#, no-wrap +msgid "Creating a Certificate" +msgstr "Criando um Certificado" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:772 +#, no-wrap +msgid "" +"% openssl genrsa -out root.key 1024\n" +"% openssl req -new -key root.key -out root.csr\n" +"% openssl x509 -req -days 1024 -in root.csr -signkey root.key -out root.crt\n" +msgstr "" +"% openssl genrsa -out root.key 1024\n" +"% openssl req -new -key root.key -out root.csr\n" +"% openssl x509 -req -days 1024 -in root.csr -signkey root.key -out root.crt\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:778 +msgid "" +"These will be your root CA key and certificate. You will probably want to " +"encrypt the key and store it in a cool, dry place; anyone with access to it " +"can masquerade as one of your LDAP servers." +msgstr "" +"Estas serão sua chave e certificado de CA raiz. Você provavelmente desejará " +"criptografar a chave e armazená-la em um local seguro; qualquer pessoa com " +"acesso a ele pode se passar por um dos seus servidores LDAP." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:781 +msgid "" +"Next, using the first two steps above create a key [.filename]#ldap-server-" +"one.key# and certificate signing request [.filename]#ldap-server-one.csr#. " +"Once you sign the signing request with [.filename]#root.key#, you will be " +"able to use [.filename]#ldap-server-one.*# on your LDAP servers." +msgstr "" +"Em seguida, usando as duas primeiras etapas acima, crie uma chave [.filename" +"]#ldap-server-one.key# e a solicitação de assinatura de certificado [." +"filename]#ldap-server-one.csr#. Depois de assinar o pedido de assinatura com " +"[.filename]#root.key#, você poderá usar o [.filename]#ldap-server-one.*# nos " +"servidores LDAP." + +#. type: Plain text +#: documentation/content/en/articles/ldap-auth/_index.adoc:785 +msgid "" +"Do not forget to use the fully qualified domain name for the \"common name\" " +"attribute when generating the certificate signing request; otherwise clients " +"will reject a connection with you, and it can be very tricky to diagnose." +msgstr "" +"Não se esqueça de usar o nome de domínio totalmente qualificado para o " +"atributo \"common name\" ao gerar a solicitação de assinatura de certificado;" +" caso contrário, os clientes rejeitarão uma conexão com você e poderá ser " +"muito complicado diagnosticar." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:788 +msgid "To sign the key, use `-CA` and `-CAkey` instead of `-signkey`:" +msgstr "Para assinar a chave, use `-CA` e `-CAkey` em vez de `-signkey`:" + +#. type: Block title +#: documentation/content/en/articles/ldap-auth/_index.adoc:790 +#, no-wrap +msgid "Signing as a Certificate Authority" +msgstr "Assinando como uma autoridade de certificação" + +#. type: delimited block . 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:799 +#, no-wrap +msgid "" +"% openssl x509 -req -days 1024 \\\n" +"-in ldap-server-one.csr -CA root.crt -CAkey root.key \\\n" +"-out ldap-server-one.crt\n" +msgstr "" +"% openssl x509 -req -days 1024 \\\n" +"-in ldap-server-one.csr -CA root.crt -CAkey root.key \\\n" +"-out ldap-server-one.crt\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:804 +msgid "" +"The resulting file will be the certificate that you can use on your LDAP " +"servers." +msgstr "" +"O arquivo resultante será o certificado que você pode usar em seus " +"servidores LDAP." + +#. type: delimited block = 4 +#: documentation/content/en/articles/ldap-auth/_index.adoc:805 +msgid "" +"Finally, for clients to trust all your servers, distribute [.filename]#root." +"crt# (the __certificate__, not the key!) to each client, and specify it in " +"the `TLSCACertificateFile` directive in [.filename]#ldap.conf#." +msgstr "" +"Finalmente, para os clientes confiarem em todos os seus servidores, " +"distribua [.filename]#root.crt# (o _certificado_, não a chave!) para cada " +"cliente, e especifique-o na directiva `TLSCACertificateFile` no [." +"filename]#ldap.conf#." + +#~ msgid "" +#~ "include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/" +#~ "{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists." +#~ "adoc[] include::shared/{{% lang %}}/urls.adoc[]" +#~ msgstr "" +#~ "include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/" +#~ "{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists." +#~ "adoc[] include::shared/{{% lang %}}/urls.adoc[]"