Isso deveria ter sido postado como resposta a uma pergunta. Edite-o para que ele seja uma pergunta e mova o que você postou acima para ser uma resposta. No FAQ : "Também é perfeitamente bom fazer e responder sua própria pergunta, mas finja que você está no Jeopardy: expresse-a na forma de uma pergunta."
Pausado até novo aviso.
Respostas:
27
[Editar] Desde então, testei a versão completa do Ubuntu 10.04 Server (21 / maio / 2010) .
Eu configurei o meu Ubuntu 10.04 Server LTS residente em uma rede Windows para autenticar logins usando o Active Directory e, em seguida, monte um compartilhamento do Windows para servir como diretório inicial.
Aqui está o que eu fiz a partir da instalação inicial do Ubuntu.
Alguns argumentam que você deve "bloquear o sshd" desativando os logins raiz. Eu acho que se você é inteligente o suficiente para hackear uma sessão ssh para obter uma senha root, provavelmente você não será frustrado pela adição de PermitRootLogin nono /etc/ssh/sshd_configarquivo. Se o seu paranóico ou simplesmente não estiver convencido, edite o arquivo ou dê uma olhada:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Faça uma limpeza básica da rede em preparação para as configurações de pacotes específicas que estão por vir.
Determine o nome de domínio do Windows, o nome do servidor DNS e o endereço IP do servidor do Active Directory (para samba). Por conveniência, defino variáveis de ambiente para o domínio do Windows e o servidor DNS. Para mim, era (meu endereço IP do anúncio era 192.168.20.11):
Se você quiser descobrir qual é o seu domínio e servidor DNS (eu era contratado e não conhecia a rede), consulte esta referência útil .
Precisamos batizar a caixa do Linux na nova rede, isso é feito editando o arquivo host (substitua o DNS de pelo FQDN do DNS do Windows): # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Também devemos informar aos serviços instalados futuros onde eles podem encontrar o líder: algumas redes terão serviços de pesquisa de nome netbios, mas, para garantir, adicione uma entrada explícita no seu /etc/hostsarquivo. Na minha configuração, adicionei a entrada no terceiro (3) linha: # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Os processos de autenticação e compartilhamento de arquivos para as caixas Windows e Linux precisam ter seus relógios concordados. Faça isso com um serviço NTP e, na versão de servidor do Ubuntu, o serviço NTP é instalado e configurado com um (1) servidor NTP. Adicione o seu antes do Ubuntu (ou substitua-o totalmente). A rede na qual eu estava ingressando tinha o servidor DNS que também atendia o serviço NTP. # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Reinicie o daemon NTP: # sudo /etc/init.d/ntp restart
Configuração Kerberos.
As instruções a seguir aqui não devem ser tomadas literalmente: os valores MYDOMAIN.LOCALe srv1.mydomain.localprecisam ser substituídos pelos que são apropriados para a sua rede quando você edita os arquivos, mas observe que, onde o UPPERCASE é usado, o UPPERCASE é necessário .
Se, durante o apt-get installKerberos, você teve a percepção de responder corretamente à pergunta "domínio padrão", então, adeus para você, caso contrário, será necessário fazer o seguinte.
Edite o /etc/krb5.confarquivo (instalado anteriormente acima) .
Localize a [libdefaults]seção e altere o par de valores-chave:
Adicione o seguinte à [domain_realm]seção do arquivo: .mydomain.local = MYDOMAIN.LOCAL mydomain.local = MYDOMAIN.LOCAL
Um bom teste neste momento é verificar se o seu controlador do AD emitirá um ticket kerberos. Isso não é necessário, mas pode deixar alguns de vocês tontos: # kinit <some_windows_domain_user>
Depois, para ver o ticket: # klist
você verá informações sobre o cache do ticket e as expirações e renovações. Depois que a tontura desaparecer, você também poderá liberar / destruir o ticket: # kdestroy
Edite o /etc/nsswitch.conf. Consegui executar o seguinte comando para obter o que precisava: # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Aqui está o conteúdo do meu /etc/nsswitch.confarquivo: passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files
Inicie e pare vários serviços. # sudo /etc/init.d/winbind stop # sudo service smbd restart # sudo /etc/init.d/winbind start
Associe o computador ao domínio. Não estou convencido de que isso seja necessário; principalmente por causa da opção de segurança no smb.confarquivo ( security = ads). Talvez alguém possa avaliar isso ... # sudo net ads join -U any_domain_user_account
Você pode receber um erro DNS update failed!, mas ingressará no domínio. Se você receber um erro ao não conseguir encontrar o servidor, seus registros DNS precisam ser modificados. Durante a instalação do Ubuntu, o servidor de nomes geralmente aponta para o seu gateway: a maioria dos roteadores faz um serviço DNS. As práticas recomendadas para administração do servidor Windows são que o ADC também deve executar o DNS. No meu caso, minha /etc/resolve.confaparência é a seguinte: nameserver 192.168.20.11 nameserver 8.8.8.8
O 8.8.8.8DNS do Google é um backup razoavelmente confiável, caso o Windows seja desativado.
Nesse ponto, eu poderia entrar (talvez após uma reinicialização), os diretórios pessoais não existiam, mas eu poderia entrar.
Montagem do CIFS no login
Este próximo passo foi a cereja para mim; Eu não queria a responsabilidade de fazer backup dos diretórios de trabalho de todos, e a caixa que o Ubuntu estava executando era suspeita em termos de confiabilidade. Ao fazer o seguinte, os usuários podem fazer login e ver o diretório de usuários do Windows automaticamente .
Faça o download do pam_mountmódulo: # sudo apt-get install libpam-mount
Eu queria que o ponto de montagem aponte no /home/<user>local tradicional : esta parte é configurada pelo /etc/samba/smb.confarquivo ( template homedir = /home/%U). Mas eu precisava dele para detalhar o compartilhamento e apontar para o próprio diretório do Windows. Isso é feito editando o /etc/security/pam_mount.conf.xmlarquivo (que, apesar de sua intenção, XML não é legível por humanos):
Adicione o seguinte /etc/security/pam_mount.conf.xmle altere para se adequar: <volume user="*" server="srv1.mydomain.local" path="UserShares" mountpoint="home" fstype="cifs" />
Por causa do meu ponto de montagem pateta, eu tive que adicionar esta linha também:
<umount>umount %(MNTPT)/%(USER)</umount>
E para que os diretórios do usuário (para o ponto de montagem) sejam criados, localize automaticamente a linha e faça assim:
<mkmountpoint enable="1" remove="false" />
O remove="false"bit é muito importante: se estiver definido como true, pam_mount.sotenta excluir o ponto de montagem do diretório, o que não pode ser feito se um usuário tiver efetuado login várias vezes. O que você acaba fazendo nesse caso são muitas montagens perdidas no seu sistema.
pam_mount.soainda não cumpre as promessas. Em sua forma atual, as montagens continuam se acumulando e os diretórios pessoais não estão sendo criados. Em algum lugar entre aqui e a versão Beta 2 anterior do servidor 10.04, ele estava funcionando. Não posso recriar isso embora.
Enquanto isso, para a criação do diretório em que estou confiando pam_mkhomedir.so, coloquei uma linha imediatamente antes da pam_mount.solinha para acomodar.
Ainda não resolvi o problema de montagem múltipla. Mas até que pam_mount.soseja corrigido, é isso que eu tenho no meu /etc/pam.d/common-sessionarquivo:
É isso aí. Funcionou para mim e espero que você ache útil.
Inúmeros recursos foram considerados para que eu pudesse descobrir isso. Aqui está uma pequena lista (vários desses links apontam para minhas próprias perguntas sobre o tópico):
Desativar o login ssh raiz remoto é uma obrigação. Às vezes, ataques de força bruta / dicionário são bem-sucedidos. Se a raiz estiver comprometida, diga adeus a qualquer coisa em que você confie na máquina.
JR Lawhorne
11
O ubuntu não ativa a conta root ... tudo está sudod, ou estou faltando alguma coisa?
Jamie
'tudo é sudo' - e isso é melhor ... de que maneira? (Se qualquer conta de usuário com direito ao sudo estiver comprometida, é basicamente a mesma coisa. E é basicamente igualmente simples [ou não] criar bruteforce contas de usuário ou raiz. O melhor é configurar o logon apenas com a chave de publicação e desativar todas as senhas. )
Kurt Pfeifle
Entendi isso, mas considero: "O melhor é configurar o logon apenas com pub-key" , o que anularia completamente o objetivo deste post.
Respostas:
[Editar] Desde então, testei a versão completa do Ubuntu 10.04 Server (21 / maio / 2010) .
Eu configurei o meu Ubuntu 10.04 Server LTS residente em uma rede Windows para autenticar logins usando o Active Directory e, em seguida, monte um compartilhamento do Windows para servir como diretório inicial.
Aqui está o que eu fiz a partir da instalação inicial do Ubuntu.
Obter atualizações
# sudo apt-get update && sudo apt-get upgrade
Instale um servidor SSH (
sshd
)# sudo apt-get install openssh-server
Alguns argumentam que você deve "bloquear o sshd" desativando os logins raiz. Eu acho que se você é inteligente o suficiente para hackear uma sessão ssh para obter uma senha root, provavelmente você não será frustrado pela adição de
PermitRootLogin no
no/etc/ssh/sshd_config
arquivo. Se o seu paranóico ou simplesmente não estiver convencido, edite o arquivo ou dê uma olhada:# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Instale os pacotes necessários
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
Faça uma limpeza básica da rede em preparação para as configurações de pacotes específicas que estão por vir.
Determine o nome de domínio do Windows, o nome do servidor DNS e o endereço IP do servidor do Active Directory (para samba). Por conveniência, defino variáveis de ambiente para o domínio do Windows e o servidor DNS. Para mim, era (meu endereço IP do anúncio era 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
Se você quiser descobrir qual é o seu domínio e servidor DNS (eu era contratado e não conhecia a rede), consulte esta referência útil .
Precisamos batizar a caixa do Linux na nova rede, isso é feito editando o arquivo host (substitua o DNS de pelo FQDN do DNS do Windows):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Também devemos informar aos serviços instalados futuros onde eles podem encontrar o líder: algumas redes terão serviços de pesquisa de nome netbios, mas, para garantir, adicione uma entrada explícita no seu
/etc/hosts
arquivo. Na minha configuração, adicionei a entrada no terceiro (3) linha:# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Os processos de autenticação e compartilhamento de arquivos para as caixas Windows e Linux precisam ter seus relógios concordados. Faça isso com um serviço NTP e, na versão de servidor do Ubuntu, o serviço NTP é instalado e configurado com um (1) servidor NTP. Adicione o seu antes do Ubuntu (ou substitua-o totalmente). A rede na qual eu estava ingressando tinha o servidor DNS que também atendia o serviço NTP.
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Reinicie o daemon NTP:
# sudo /etc/init.d/ntp restart
Configuração Kerberos.
As instruções a seguir aqui não devem ser tomadas literalmente: os valores
MYDOMAIN.LOCAL
esrv1.mydomain.local
precisam ser substituídos pelos que são apropriados para a sua rede quando você edita os arquivos, mas observe que, onde o UPPERCASE é usado, o UPPERCASE é necessário .Se, durante o
apt-get install
Kerberos, você teve a percepção de responder corretamente à pergunta "domínio padrão", então, adeus para você, caso contrário, será necessário fazer o seguinte.Edite o
/etc/krb5.conf
arquivo (instalado anteriormente acima) .Localize a
[libdefaults]
seção e altere o par de valores-chave:[libdefaults]
default_realm = MYDOMAIN.LOCAL
Adicione o seguinte à
[realms]
seção do arquivo:MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
Adicione o seguinte à
[domain_realm]
seção do arquivo:.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
Um bom teste neste momento é verificar se o seu controlador do AD emitirá um ticket kerberos. Isso não é necessário, mas pode deixar alguns de vocês tontos:
# kinit <some_windows_domain_user>
Depois, para ver o ticket:
# klist
você verá informações sobre o cache do ticket e as expirações e renovações. Depois que a tontura desaparecer, você também poderá liberar / destruir o ticket:
# kdestroy
Configure o samba.
De acordo com o seguinte: Há momentos em que o CIFS não pode ser usado ou outra opção de sistema de arquivos de rede é melhor. Se o suporte à autenticação kerberos (krb5 / SPNEGO) for necessário para aumentar a segurança, o smbclient ou smbfs do Samba deve ser usado em vez do cifs
Infelizmente, o
cifs
suporte no kernel para o ubuntu 10.04 (baseado na versão 2.6.32.9) está na versão 1.61 e de acordo com a documentação do kernel, a implementação experimental do kerberos existe desde a versão 1.54.Então aí está você. Eu não tenho idéia se
cifs
funcionaria, então eu lhe dou a configuração do samba:Substitua
/etc/samba/smb.conf
(lembre-se de que eu estava trabalhando em uma distribuição limpa do Ubuntu, então não estava preocupado em quebrar nada):[global]
security = ads
realm = MYDOMAIN.LOCAL
password server = 192.168.20.11
workgroup = MYDOMAIN
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
winbind use default domain = yes
restrict anonymous = 2
Inicie e pare vários serviços.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Configure a autenticação.
Edite o
/etc/nsswitch.conf
. Consegui executar o seguinte comando para obter o que precisava:# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Aqui está o conteúdo do meu
/etc/nsswitch.conf
arquivo:passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
Inicie e pare vários serviços.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Associe o computador ao domínio. Não estou convencido de que isso seja necessário; principalmente por causa da opção de segurança no
smb.conf
arquivo (security = ads
). Talvez alguém possa avaliar isso ...# sudo net ads join -U any_domain_user_account
Você pode receber um erro
DNS update failed!
, mas ingressará no domínio. Se você receber um erro ao não conseguir encontrar o servidor, seus registros DNS precisam ser modificados. Durante a instalação do Ubuntu, o servidor de nomes geralmente aponta para o seu gateway: a maioria dos roteadores faz um serviço DNS. As práticas recomendadas para administração do servidor Windows são que o ADC também deve executar o DNS. No meu caso, minha/etc/resolve.conf
aparência é a seguinte:nameserver 192.168.20.11
nameserver 8.8.8.8
O
8.8.8.8
DNS do Google é um backup razoavelmente confiável, caso o Windows seja desativado.Nesse ponto, eu poderia entrar (talvez após uma reinicialização), os diretórios pessoais não existiam, mas eu poderia entrar.
Montagem do CIFS no login
Este próximo passo foi a cereja para mim; Eu não queria a responsabilidade de fazer backup dos diretórios de trabalho de todos, e a caixa que o Ubuntu estava executando era suspeita em termos de confiabilidade. Ao fazer o seguinte, os usuários podem fazer login e ver o diretório de usuários do Windows automaticamente .
Faça o download do
pam_mount
módulo:# sudo apt-get install libpam-mount
Eu queria que o ponto de montagem aponte no
/home/<user>
local tradicional : esta parte é configurada pelo/etc/samba/smb.conf
arquivo (template homedir = /home/%U
). Mas eu precisava dele para detalhar o compartilhamento e apontar para o próprio diretório do Windows. Isso é feito editando o/etc/security/pam_mount.conf.xml
arquivo (que, apesar de sua intenção, XML não é legível por humanos):Adicione o seguinte
/etc/security/pam_mount.conf.xml
e altere para se adequar:<volume
user="*"
server="srv1.mydomain.local"
path="UserShares"
mountpoint="home"
fstype="cifs"
/>
<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>
Por causa do meu ponto de montagem pateta, eu tive que adicionar esta linha também:
<umount>umount %(MNTPT)/%(USER)</umount>
E para que os diretórios do usuário (para o ponto de montagem) sejam criados, localize automaticamente a linha e faça assim:
<mkmountpoint enable="1" remove="false" />
O
remove="false"
bit é muito importante: se estiver definido como true,pam_mount.so
tenta excluir o ponto de montagem do diretório, o que não pode ser feito se um usuário tiver efetuado login várias vezes. O que você acaba fazendo nesse caso são muitas montagens perdidas no seu sistema.pam_mount.so
ainda não cumpre as promessas. Em sua forma atual, as montagens continuam se acumulando e os diretórios pessoais não estão sendo criados. Em algum lugar entre aqui e a versão Beta 2 anterior do servidor 10.04, ele estava funcionando. Não posso recriar isso embora.Enquanto isso, para a criação do diretório em que estou confiando
pam_mkhomedir.so
, coloquei uma linha imediatamente antes dapam_mount.so
linha para acomodar.Ainda não resolvi o problema de montagem múltipla. Mas até que
pam_mount.so
seja corrigido, é isso que eu tenho no meu/etc/pam.d/common-session
arquivo:É isso aí. Funcionou para mim e espero que você ache útil.
Inúmeros recursos foram considerados para que eu pudesse descobrir isso. Aqui está uma pequena lista (vários desses links apontam para minhas próprias perguntas sobre o tópico):
fonte
sudo
d, ou estou faltando alguma coisa?sudo
' - e isso é melhor ... de que maneira? (Se qualquer conta de usuário com direito ao sudo estiver comprometida, é basicamente a mesma coisa. E é basicamente igualmente simples [ou não] criar bruteforce contas de usuário ou raiz. O melhor é configurar o logon apenas com a chave de publicação e desativar todas as senhas. )