Para configurar o OpenLDAP, crie um diretório para armazenar os arquivos de configuração e dados. Em seguida, execute o contêiner Docker com as variáveis de ambiente necessárias.
# Criação do diretório para dados e configurações do LDAP
mkdir -p /srv/ldap/{dados,config}
docker run -d --name openldap-server \
-p 389:389 -p 636:636 \
-e LDAP_TLS_VERIFY_CLIENT="allow" \
-e LDAP_ORGANISATION="meudominio" \
-e LDAP_DOMAIN="exemplo.com.br" \
-e LDAP_ADMIN_PASSWORD="senha_forte_aqui" \
-v /srv/ldap/dados:/var/lib/ldap \
-v /srv/ldap/config:/etc/ldap/slapd.d \
osixia/openldap:1.5.0
Parâmetros principais:
LDAP_TLS_VERIFY_CLIENT: Define a verificação de clientes TLS.LDAP_ORGANISATION: Nome da organização no diretório LDAP.LDAP_DOMAIN: Domínio base do LDAP.LDAP_ADMIN_PASSWORD: Senha para o administrador (padrão: admin).
1.2 Instalação da Interface de Gerenciamento Web
Para facilitar a administração, instale o phpLDAPadmin em um contêiner separado, apontando para o servidor LDAP configurado.
docker run -d --name ldap-admin \
-p 8080:80 \
-e PHPLDAPADMIN_HTTPS="false" \
-e PHPLDAPADMIN_LDAP_HOSTS="192.168.1.10" \
osixia/phpldapadmin:0.9.0
Parâmetros essenciais:
PHPLDAPADMIN_HTTPS: Ativa ou desativa o acesso HTTPS.PHPLDAPADMIN_LDAP_HOSTS: Endereço IP ou hostname do servidor OpenLDAP.
2.1 Implantação do Servidor Radius
Utilize o Docker Compose para configurar o FreeRADIUS. Salve a definição abaixo em um arquivo radius-compose.yml.
version: "3"
services:
radius-server:
image: freeradius/freeradius-server:3.2.3
container_name: radius-server
restart: unless-stopped
ports:
- "1812:1812/udp"
- "1813:1813/udp"
- "1814:1814/udp"
Inicie o serviço com o comando:
docker-compose -f radius-compose.yml up -d
2.2 Integração do Radius com o OpenLDAP
Copie o módulo LDAP padrão do contêiner Radius para o host para personalização.
docker cp radius-server:/etc/raddb/mods-available/ldap ./ldap-mod
Edite o arquivo de configuração com os seguintes ajustes para conectar ao servidor LDAP:
ldap {
server = "ldap://192.168.1.10"
port = 389
identity = "cn=admin,dc=exemplo,dc=com"
password = "senha_forte_aqui"
base_dn = "ou=Usuarios,dc=exemplo,dc=com"
user {
base_dn = "${..base_dn}"
filter = "(&(objectClass=inetOrgPerson)(cn=%{%{Stripped-User-Name}:-%{User-Name}}))"
}
group {
base_dn = "${..base_dn}"
filter = "(objectClass=groupOfNames)"
membership_attribute = "member"
}
profile {
}
client {
base_dn = "${..base_dn}"
filter = "(objectClass=radiusClient)"
template {
}
attribute {
ipaddr = "radiusClientIdentifier"
secret = "radiusClientSecret"
}
}
}
Após as alterações, copie o arquivo modificado de volta para o contêiner e crie links simbólicos para ativar o módulo.
docker cp ./ldap-mod radius-server:/etc/raddb/mods-available/ldap
docker exec radius-server ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/
docker restart radius-server
2.3 Configuração de Sites e Clientes no Radius
Crie um arquivo de site específico para autenticação LDAP, por exemplo site-ldap.conf, com o conteúdo abaixo:
server site_ldap {
listen {
ipaddr = 0.0.0.0
port = 1814
type = auth
}
authorize {
update {
control:Auth-Type := ldap
}
}
authenticate {
Auth-Type ldap {
ldap
}
}
post-auth {
Post-Auth-Type Reject {
}
}
}
Copie este arquivo para o diretório de sites disponíveis no contêiner e crie um link simbólico.
docker cp site-ldap.conf radius-server:/etc/raddb/sites-available/ldap
docker exec radius-server ln -s /etc/raddb/sites-available/ldap /etc/raddb/sites-enabled/
Modifique o arquivo clients.conf para permitir que os firewalls USG se conectem. Ataulize a seção do cliente para aceitar conexões de qulaquer IP ou da rede específica.
client rede_local {
ipaddr = 192.168.1.0/24
secret = "segredo_para_firewall"
require_message_authenticator = no
}
Aplique as alterações reiniciando o serviço Radius.
docker cp ./clients-mod.conf radius-server:/etc/raddb/clients.conf
docker restart radius-server
Com esta configuração completa, o Radius utilizará o OpenLDAP como backend de autenticação. O próximo passo é configurar o firewall USG para apontar para o servidor Radius e importar os usuários no diretório LDAP.