Autenticação Integrada com Radius, OpenLDAP e Firewall USG

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.

Tags: OpenLDAP FreeRADIUS USG Firewall Docker Autenticação LDAP

Publicado em 5-30 08:53 por Thomas