Estou usando o Ubuntu 10.04 Server.
Estou usando o Ubuntu 10.04 Server.
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
e srv1.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 da pam_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:
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_mount.so
É 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):
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. )