Se esse título ficou confuso por conter siglas AD DC então veja esse post que preparei: Qual Diferença Entre DC e AD em Informática?
No artigo anterior vimos sobre logs e hoje iremos estender esse assunto. Vamos ver sobre logs de autenticação e autorização no samba e para isso iremos continuar a configurar(editar) o arquivo smb.conf.
Os logs relatados abaixo poderão ser vistos olhando o arquivo log.samba. Em meu caso, que compilei o samba, ele fica em /usr/local/samba/var/log.samba
Será possível saber, por exemplo, quem logou no sistema e quando logou.
Diferença Entre Autenticação e Autorização
- Autenticação: a autenticação ocorre quando o Samba verifica uma combinação de nome de usuário e senha.
- Autorização: a autorização ocorre quando a sessão é iniciada. Quando você loga com seu usuário e senha num pc qualquer ligado(membro do domínio) ao samba.
Como exemplos de quando ocorre Autorização, a página do samba cita:
ao abrir um pipe de ambiente de computação distribuída/chamadas de procedimento remoto (DCE/RPC), retornar de uma configuração de sessão no protocolo SMB (servidor message block) ou concluir o vínculo de camada de segurança e autenticação simples (SASL) no LDAP.
wiki.samba
Não se preocupe se os termos citados no exemplo acima são confusos. 🙂
Há mais exemplos dentro do site do samba:
# O centro de distribuição de chaves Kerberos (KDC) em um controlador de domínio (DC) do Active Directory (AD) registra um evento de autenticação quando um usuário faz login no domínio. Em um ambiente de controlador de vários domínios(DC), uma solicitação de autenticação é registrada apenas no DC para o qual a solicitação foi enviada.
# Se você se conectar a um compartilhamento em um membro do domínio:
# O membro do domínio registra um evento de autorização,
# O KDC no Samba DC registra um evento de autenticação ao usar a autenticação Kerberos. Ao usar a autenticação Kerberos, o KDC é responsável pela autenticação. Portanto, o Samba em um membro do domínio AD não pode registrar o evento de autenticação.
# O membro do domínio registra um evento de autenticação ao usar a autenticação NT LAN Manager (NTLM).
wiki.samba
Nesse momento em que digito, o Samba oferece suporte ao log de eventos de autorização bem-sucedidos, mas não de eventos de autorização malsucedidos. Mas pode registrar eventos de autenticação bem-sucedidos e malsucedidos.
Log de Auditoria no Samba
Podemos auditar(analisar criteriosamente) os eventos(logs) gerados no samba. Sim, damos a isso o nome de auditoria, visto que poderemos ver detalhes sobre tudo que ocorre internamente no samba.
O Samba 4.7 e posterior oferece suporte ao registro de eventos de autenticação e autorização, e o Samba 4.9 oferece suporte ao registro de alterações no banco de dados AD DC. Isso permite que você registre, por exemplo, solicitações de autenticação com falha ou redefinições de senha.
O log de auditoria é uma configuração local, isso quer dizer que você deve habilitar esse recurso em cada servidor Samba individualmente, pois os eventos são registrados no servidor Samba no qual o evento foi realizado.
- Dica: Para armazenar todos os logs em um servidor centralizado, configure um servidor syslog centralizado, configure o Samba para registrar no daemon syslog e configure o daemon syslog para enviar os logs ao servidor centralizado. Para mais detalhes, veja:
- As descrições dos parâmetros logging, syslog e syslog only na página do manual smb.conf(5)
- A documentação do syslog da distribuição Linux que estiver usando. Geralmente o arquivo de configuração de log está em /etc/rsyslog.conf ou /etc/syslog.conf
- Além disso, você pode usar utilitários, como Fail2Ban, para monitorar os arquivos de log e desabilitar uma conta de usuário em logins sucessivos com falha.
Formato de Log Padrão e o JSON do Samba
O recurso de log samba suporta o formato padrão e JSON. Você pode habilitar cada formato individualmente ou ambos juntos.
Para saber se seu samba suporta exibir no formato JSON execute o comando abaixo:
smbd -b | grep HAVE_JSON_OBJECT
ou
/usr/local/samba/sbin/smbd -b | grep HAVE_JSON_OBJECT
A resposta deverá ser: HAVE_JSON_OBJECT
Se não aparecer nada é porque o samba não foi instalado/compilado com esse suporte. Para construir o Samba com suporte JSON, instale os arquivos de cabeçalho jansson e reconstrua o Samba.
O formato padrão de exibição é esse:
[2017/07/04 21:07:41.410381, 4, pid=21757] ../auth/auth_log.c:848(log_successful_authz_event_human_readable) Successful AuthZ: [SMB2,krb5] user [SAMDOM]\[Administrator] [S-1-5-21-469703510-2364959079-1506205053-500] at [Di, 04 Jul 2017 21:07:41.410364 CEST] Remote host [ipv4:10.99.0.81:58828] local host [ipv4:10.99.0.1:445]
O formato usando JSON de exibição é esse:
[2017/07/04 21:07:41.410434, 4, pid=21757] ../auth/auth_log.c:220(log_json) {"type": "Authorization", "timestamp": "2017-07-04T21:07:41.410408+0200", "Authorization": {"version": {"major": 1, "minor": 0}, "sid": "S-1-5-21-469703510-2364959079-1506205053-500", "serviceDescription": "SMB2", "localAddress": "ipv4:10.99.0.1:445", "remoteAddress": "ipv4:10.99.0.81:58828", "transportProtection": "SMB", "authType": "krb5", "domain": "SAMDOM", "account": "Administrator", "logonServer": "DC1", "accountFlags": "0x00000210"}}
Configurando smb.conf para Ativar Auditoria de Log de Autorização e Autenticação do Samba
No artigo anterior, vimos gerar logs no samba, mas não logs de autenticação, autorização ou do Banco de Dados. Mas é um continuação, já que a opção usada do smb.conf será a mesma: log level.
Veja lista com os níveis de log para auth_audit e auth_audit_json:
- 2: Falha de Autenticação
- 3: sucesso da autenticação
- 4: Sucesso da Autorização
- 5: Autenticação anônima e sucesso da autorização
PRATICANDO
Edite seu smb.conf assim:
#1 para habilitar logs de autenticação com falha e bem-sucedidas usando somente o formato/exibição padrão
log level = 1 auth_audit:3
O 3 em auth_audit:3 significa solicitações. Se quiser registrar também logs de autenticação mal-sucedido deixe assim,
log level = 1 auth_audit:2 auth_audit:3
#2 para habilitar logs de autenticação com falha e bem-sucedidas usando somente o formato/exibição JSON
log level = 1 auth_audit:3 auth_json_audit:3
#3 reinicie o samba com uma das opções abaixo
systemctl restart samba
ou
systemctl restart smbdm nmbd
ou ainda
killall samba
/usr/local/samba/sbin/samba
Ativando o log de auditoria do banco de dados AD DC
Vamos ver como definir o nível de registro padrão como 1 e ativar o registro de alterações no banco de dados como JSON.
#1 Defina na seção [global] no arquivo smb.conf:
log level = 1 dsdb_json_audit:5 dsdb_password_json_audit:5 dsdb_group_json_audit:5 dsdb_transaction_json_audit:5
#2 Reinicie o Samba
Comment on “Samba: Configurando smb.conf para Gerar Logs de Autenticação, Autorização e do Banco de Dados do AD DC”