Fase 1 - Configs básicas


  1. instalar linux-rpm-based (testes com RockyLinux 8. A versão 9 não foi compatível ainda com google-auth)
  2. yum update
  3. install net-tools
  4. install vim
  5. editar /etc/hosts e adcionar o host do ad



Fase 2 - Entrando no AD (opcional: facilitar login dos usuários para pegar o google-auth) - oficial RockyLinux 


  1. ajustar /etc/resolv.conf para o dns interno
  2. se não funcionar, usar nmcli: nmcli con mod ipv4.dns 10.19.87.200
  3. evitar o networkmanager fuçar no resolv.conf: sudo chattr +i /etc/resolv.conf
  4. ajustar horário: timedatectl set-time 13:27 (opcional: ajustar ntpclient)
  5. instalar pacotes para conexão com AD: dnf install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
  6. testar conectividade com ad utilizando realm discover ap701.com.br
  7. entrar no domínio: realm join ap701.com.br
  8. teste de conexão utilizando o próprio host: ssh -l x950125sanepar.com.br@caracu
  9. configurar para não precisar usar o domínio no login: vi /etc/sssd/sssd.conf no final da sessão [sssd], adicionar a linha default_domain_suffix = ad.company.local
  10. para a configuração acima fazer efeito, reinicie o sssd: systemctl restart sssd



Fase 3 - RadiusLDAP - instalar os pacotes freeradius-ldap, epel-release, google-authenticator (incluso após epel), libtool, qrencode-libs.x86_64 - https://habr.com/ru/post/516362/


  1. editar /etc/raddb/radiusd.conf - na versão Rocky 8, são as linhas503 e 504: alterar user = root e user = root, respectivamente
  2. criar o link do módulo ldap para o radius: ln -sf /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
  3. criar o link do módulo pam para o radius:  ln -sf /etc/raddb/mods-available/pam /etc/raddb/mods-enabled/pam
  4. editar o arquivo /etc/raddb/mods-enabled/ldap conforme exemplo anexo (arquivo ldapDEB: renomear apenas para ldap, ou apenas copiar todo o conteúdo e substiuir no arquivo original)
  5. editar o arquivo /etc/raddb/sites-enabled/default (linha 520 descomentar pam) e /etc/raddb/sites-enabled/inner-tunnel (linha 228 descomentar pam e também linhas 533. 534 e 535, referente a ldap ),
  6. editar o arquivo /etc/raddb/clients.conf e adicionar no final do arquivo o seguinte conteúdo:


#################################

client vs-fw_vpn {

    ipaddr = 10.2022.22 ###IP do cluster/gateway

    secret = password    ###senha a ser configurada no cliente

    require_message_authenticator = no

    nas_type = other

}

#################################


  • criar um grupo "radius-disabled"
  • groupadd radius-disabled
  • editar o arquivo /etc/raddb/users nas linhas que seguem abaixo. Serve para adicionar usuários que não podem autenticar no Radius:

#################################

 DEFAULT Group == "radius-disabled", Auth-Type := Reject

                 Reply-Message = "Your account has been disabled."

 DEFAULT Auth-Type := PAM

#################################


  • editar arquivo /etc/pam.d/radiusd e substituir pelo seguinte conteúdo:

#################################

auth required pam_google_authenticator.so

account required pam_unix.so audit

account required pam_permit.so

#################################


  • Para debugs do radiusd após as configurações acima:
    • radiusd -XXX
Considerações:
  • Desligamos o SELinux. Motivo: estava rodando corretamente no modo debug, mas no modo normal apresentava erro por falta de permissão do radiusd. Para evitar problemas, desativamos o SELinux:
  • Editar o arquivo /etc/selinux/config
  • Alterar SELINUX=enforcing para SELINUX=disabled
  • reboot ou então ajustar on-the-fly: setenforce 0 (para apenas consultar o status do SELinux, pode dar o comando getenforce)
  • Cuidar o firewall nativo do RedHat!!
  • Acabamos criando regras específicas no servidor radius: 
    • firewall-cmd --add-service radius --permanent
    • firewall-cmd --reload
    • firewall-cmd --list-all


Importante:


  • Após os debugs e ajustes, habilite o radiusd para iniciar direto com o sistema:
    • systemctl enable radiusd
    • systemctl start radiusd



Fase 4 - Configurar CheckPoint como cliente Radius - Aqui, post do Sandeep_sharma


  1. tudo agora é via smartconsole
  2. criar um objeto tipo host com o ip do servidor radius
  3. criar um objeto tipo RADIUS (more / server / RADIUS): host criado acima; service  new-radius; shared secret é a senha criada no arquivo clients.conf; version 2
  4. editar o objeto que representa o servidor de vpn client: vpn client / authentication. Crie um perfil com autenticação de usuario e senha, aponte para a base ldap. como segundo fator, crie autenticação tipo radius e aponte para o servidor criado na etapa anterior.
  5. instale regras



Fase 5 - Configurar VPN Client para usar o perfil


  • aqui vai depender de como quer utilizar. se quiser utilizar um perfil único e obrigar todos a usarem google-auth, terá que remover todos os perfis. caso contrário, apenas acrescente um perfil novo e selecione nas propriedades do cliente de vpn o perfil criado acima



Fase 6 - Configurar o Google-Authenticator para o usuário final


  • sugestão1 utilizar o próprio servidor radius para login e configurar o google-auth de forma individual/ssh:
    • logar com o usuário de domínio na estação e executar o comando google-authenticator e seguir as instruções na tela
    • Se não quiser utilizar os comandos interativos, pode usar o "google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30" e seguir com a configuração no celular
  • sugestão2 é utilizar o acesso a estação radius via web com o shellinabox - https://help.ubuntu.com/commu para acessar o servidor via web



Ajustes gerais para deploy de usuários existentes e novos:


  • É possível fazer um script para criar um perfil existente (criar somente a pasta home do usuário):
    • #mkhomedir_helper user@dominio.com.br 0077 ### aqui fazemos um clone da home sem o usuário precisar logar, já ajustando o perfil corretamente, a próxima etapa é o comando abaixo:
    • #su j011463 -c "echo -1 | google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30"  ### Será criado o arquivo .google-authenticator com o conteúdo da validação da chave e os códigos emergenciais



ERROS ENCONTRADOS




Thu Aug  4 03:30:15 2022 : Error: Failed binding to auth address 127.0.0.1 port 18120 bound to server inner-tunnel: Address already in use

Thu Aug  4 03:30:15 2022 : Error: /etc/freeradius/3.0/sites-enabled/inner-tunnel[33]: Error binding to port for 127.0.0.1 port 18120

root@freer:/etc/freeradius/3.0# netstat -tulp | grep "18120"

udp        0      0 localhost:18120         0.0.0.0:*                           18621/freeradius

root@freer:/etc/freeradius/3.0# kill 18621

root@freer:/etc/freeradius/3.0# netstat -tulp | grep "18120"





No Auth-Type found: rejecting the user via Post-Auth-Type = Reject

- Havia faltado a etapa de configurar o arquivo /etc/raddb/users




Wed Aug 10 10:51:38 2022 : Error: Unable to check file "/etc/raddb/certs/server.pem": No such file or directory

Wed Aug 10 10:51:38 2022 : Error: /etc/raddb/mods-enabled/eap[183]: Failed parsing configuration item "private_key_file"

Wed Aug 10 10:51:38 2022 : Error: rlm_eap_tls: Failed initializing SSL context

Wed Aug 10 10:51:38 2022 : Error: rlm_eap (EAP): Failed to initialise rlm_eap_tls

Wed Aug 10 10:51:38 2022 : Error: /etc/raddb/mods-enabled/eap[14]: Instantiation failed for module "eap"

- Faltou rodar os certificados iniciais para o radius:

cd  /etc/raddb/certs

./bootstrap

https://stackoverflow.com/questions/37906897/error-in-creating-certificates-for-eap-in-freeradius




POSSÍVEIS AJUSTES FUTUROS




Ajustar o SELinux para permitir o radiusd rodar:

https://freeradius-users.freeradius.narkive.com/HabpmFxq/selinux-blocks-radius-but-not-when-using-radiusd-x-debug





Exemplo caso precise liberara alguma outra porta no firewall local:

firewall-cmd --permanent --zone=public --add-port=4200/tcp




Comandos para o google-auth:

https://www.vultr.com/pt/docs/how-to-use-two-factor-authentication-with-sudo-and-ssh-on-linux-with-google-authenticator/




COISAS QUE NÃO DERAM CERTO



Fase 2 - Entrando no AD (opcional:facilitar login dos usuários para pegar o google-auth) - https://www.vivaolinux.com.br/artigo/Integrando-Servidores-Linux-no-Active-Directory-com-Samba#:~:text=Ingressar%20M%C3%A1quina%20no%20ACTIVE%20DIRECTORY,um%20usu%C3%A1rio%20administrador%20da%20rede.&text=Digite%20a%20senha%20do%20usu%C3%A1rio,ser%C3%A1%20adicionado%20no%20Active%20Directory.

- yum install samba

- yum install sssd

- yum install epel-release

- yum install pam_krb5.x86_64

- adicionar dns do domínio no arquivo /etc/resolv.conf

############


############

shellinabox: funciona bem, mas não foi necessário ajustes e instalação 

Caso seja necessário novamente, basta realizar o procedimento abaixo:

https://www.jvmhost.com/articles/directadmin-shellinabox-plugin/

############