Autenticação 802.1x em redes com fio: Estudo de caso do DCC Alison Carmo Arantes CSIRT PoP-MG/RNP - DCC/ICEX/UFMG 30/06/2017
OBJETIVOS DESTA APRESENTAÇÃO Mostrar a motivação para o uso de 802.1x em redes com fio Conceitos de 802.1x Apresentar alguns detalhes de configuração (para referência) e melhor entendimento. Desafios e problemas
PROBLEMA E MOTIVAÇÃO Universidade é um ambiente aberto e público Laboratórios abertos de 07:00h - 22:00h Qualquer um pode acessar Proteção da rede Aumentar a segurança
LABORATÓRIOS HETEROGÊNEOS Diferentes sistemas operacionais macos (Lion e Sierra) Windows (7 e 10) Linux (Ubuntu 14 e 16) Impressora
LABORATÓRIOS HETEROGÊNEOS Diferentes sistemas operacionais macos (Lion e Sierra) Windows (7 e 10) Linux (Ubuntu 14 e 16) Impressora
PADRÃO IEEE 802.1X Padrão IEEE para controle de acesso baseado em porta Mecanismo para autenticação de dispositivos em portas de uma LAN Baseado no protocolo EAPOL (Extensible Authentication Protocol Over Lan) - Encapsula o EAP utilizando segmentos de ethernet Versões: IEEE 802.1x 2001 IEEE 802.1x 2004 (revisão)
802.1X Solução necessita de 3 componentes Supplicant (Windows/Linux/Mac/Impressora) Authenticator (Dispositivo de Rede: Switch ou Wireless Access Point) Authentication Server (FreeRadius)
802.1X Solução necessita de 3 componentes Supplicant (Windows/Linux/Mac/Impressora) Authenticator (Dispositivo de Rede: Switch ou Wireless Access Point) Authentication Server (FreeRadius)
802.1X Solução necessita de 3 componentes Supplicant (Windows/Linux/Mac/Impressora) Authenticator (Dispositivo de Rede: Switch ou Wireless Access Point) Authentication Server (FreeRadius)
802.1X - Comunicação em detalhes
802.1X - Comunicação em detalhes
EAP-TLS (Autenticação utilizando Certificados)
Servidor de Autenticação - FreeRadius Utilizando versão 3.0 Simples de instalar Simples de configurar Criação da CA e certificado do servidor radius Geração de certificados no servidor Radius para os clientes Configuração do mods-enable/eap Configuração do clients.conf Configuração do users
Servidor de Autenticação - FreeRadius Utilizando versão 3.0 Simples de instalar Simples de configurar Criação da CA e certificado do servidor radius Geração de certificados no servidor Radius para os clientes Configuração do mods-enable/eap Configuração do clients.conf Configuração do users The configuration for 3.0 is *largely* compatible with the 2.x.x configuration. However, it is NOT possible to simply use the 2.x.x configuration as-is. Instead, you should re-create it.
Servidor de Autenticação - FreeRadius mods-enable/eap default_eap_type = tls private_key_password = senha private_key_file = ${certdir}/key.pem certificate_file = ${certdir}/cert.pem ca_file = ${cadir}/ca.pem dh_file = ${certdir}/dh ca_path = ${cadir}
Servidor de Autenticação - FreeRadius clients.conf client lab1 { ipaddr = ipv4 netmask = 32 secret = senha shortname = lab1salax } client reuniao1 { ipv6addr = ipv6 secret = senha shortname = reuniao1 }
Servidor de Autenticação - FreeRadius users DEFAULT Suffix == ".lab", Reply-Message := "Hello, %{User-Name}" Tunnel-Type = "VLAN", Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = numerovlan, Extreme-Netlogin-Vlan = nomevlan, Fall-Through = no DEFAULT Ldap-Group == "users" Tunnel-Type = "VLAN", Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = numerovlan, Extreme-Netlogin-Vlan = "nomevlan", Fall-Through = no
Servidor de Autenticação - FreeRadius users DEFAULT Suffix == ".lab", Reply-Message := "Hello, %{User-Name}" Tunnel-Type = "VLAN", Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = numerovlan, Extreme-Netlogin-Vlan = nomevlan, Fall-Through = no DEFAULT Ldap-Group == "users" Fall - Through = Yes Continua seguindo o Tunnel-Type = "VLAN", arquivo até o final Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = numerovlan, Extreme-Netlogin-Vlan = "nomevlan", Fall-Through = no
Autenticador - Switch #create vlan net-guest #configure radius netlogin primary shared-secret senha #configure radius netlogin primary server ip.do.radius numero.porta.radius1 client-ip ip.do.switch vr VR-Default #configure radius-accounting netlogin primary shared-secret "senha" #configure radius-accounting netlogin primary server ip.do.radius numero.porta.radius client-ip ip.do.switch vr VR-Default #enable radius netlogin #enable radius-accounting netlogin
Autenticador - Switch Extreme # # # # # # configure netlogin vlan net-guest enable netlogin dot1x configure netlogin dot1x timers server-timeout 30 configure netlogin dot1x timers supp-resp-timeout 30 configure netlogin dot1x eapol-transmit-version v2 configure netlogin session-refresh 600 # enable netlogin ports portainicial-portafinal dot1x # save
Supplicant - Linux (Ubuntu) Extremamente fácil de configurar Copiar para o supplicant o arquivo de CA e o arquivo de certificado do cliente criado anteriormente Criar o arquivo /etc/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 ap_scan=0 fast_reauth=1 eapol_version=2 network={ ssid="lab" key_mgmt=ieee8021x eap=tls identity="nomedocliente" ca_cert="/caminho/arquivodaca.pem" private_key="/etc/ssl/certs/nomedocliente.p12" private_key_passwd="senhadocertificadodocliente" eapol_flags=0 } Permissões restritivas para os arquivos de CA, certificado e wpa_supplicant
Supplicant - Windows (7 e 10) Mesma ideia: copiar certificado da CA e do cliente e habilitar o serviço de 802.1x
Supplicant - Windows (7 e 10) Mesma ideia: copiar certificado da CA e do cliente e habilitar o serviço de 802.1x Favor não cochilar! Os próximos slides serão chatos mas relevantes.
Supplicant - Windows (7 e 10)
Supplicant - Windows (7 e 10)
Supplicant - Windows (7 e 10)
Supplicant - Windows (7 e 10) Mesmo procedimento para importar o certificado do cliente mas usar a pasta Pessoal
Supplicant - Windows (7 e 10)
Supplicant - Windows (7 e 10) A aba autenticação só aparece se o serviço dot3sv estiver habilitado (services.msc)
Supplicant - Windows (7 e 10) A aba autenticação só aparece se o serviço dot3sv estiver habilitado (services.msc)
Supplicant - Windows (7 e 10)
Supplicant - macos Criação de um profile com os certificados da CA e do cliente
Supplicant - macos Você achou que seria tão fácil? OS X Server com Profile Manager
Supplicant - macos <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/dtds/propertylist-1.0.dtd"> <plist version="1.0"> <dict> <key>payloadcontent</key> <array> <dict> <key>payloadcertificatefilename</key> <string>ca.der</string> <key>payloadcontent</key> <data> DATACABASE64 </data> <key>payloaddescription</key> <string>adds a CA root certificate</string> <key>payloaddisplayname</key> <string>nome</string> <key>payloadidentifier</key> <string>com.apple.security.root.11111111-1111-1111-1111-111111111111</string> <key>payloadtype</key> <string>com.apple.security.root</string> <key>payloaduuid</key> <string>11111111-1111-1111-1111-111111111111</string> <key>payloadversion</key> <integer>1</integer> </dict>
Supplicant - macos <dict> <key>autojoin</key> <true/> <key>eapclientconfiguration</key> <dict> <key>accepteaptypes</key> <array> <integer>13</integer> </array> </dict> <key>encryptiontype</key> <string>wpa</string> <key>hidden_network</key> <false/> <key>interface</key> <string>firstactiveethernet</string> <key>payloaddisplayname</key> <string>ethernet</string> <key>payloadenabled</key> <true/> <key>payloadcertificateuuid</key> <string>22222222-2222-2222-2222-222222222222</string> <key>payloaddescription</key> <string>configures Wi-Fi settings</string> <key>payloadidentifier</key> <string>com.apple.wifi.managed.33333333-3333-3333-3333-333333333333</string> <key>payloadtype</key> <string>com.apple.firstactiveethernet.managed</string> <key>payloaduuid</key> <string>44444444-4444-4444-4444-444444444444</string> <key>payloadversion</key> <real>1</real> <key>proxytype</key> <string>none</string> <key>setupmodes</key> <array> <string>system</string> </array> </dict>
Supplicant - macos <dict> <key>password</key> <string>inserirsenhaaqui</string> <key>payloadcertificatefilename</key> <string>nomecertificado.p12</string> <key>payloadcontent</key> <data> DATABASECERTP1264 </data> <key>payloaddescription</key> <string>adds a PKCS#12-formatted certificate</string> <key>payloaddisplayname</key> <string>cliente.p12</string> <key>payloadidentifier</key> <string>com.apple.security.pkcs12.55555555-5555-5555-5555-555555555555</string> <key>payloadtype</key> <string>com.apple.security.pkcs12</string> <key>payloaduuid</key> <string>55555555-5555-5555-5555-555555555555</string> <key>payloadversion</key> <integer>1</integer> </dict> </array> <key>payloaddisplayname</key> <string>mac8021x</string> <key>payloadidentifier</key> <string>cliente.local</string> <key>payloadorganization</key> <string>organizacao/string> <key>payloadremovaldisallowed</key> <false/> <key>payloadtype</key> <string>configuration</string> <key>payloaduuid</key> <string>66666666-6666-6666-6666-666666666666</string> <key>payloadversion</key> <integer>1</integer> </dict> </plist>
Supplicant - macos <dict> <key>password</key> <string>inserirsenhaaqui</string> <key>payloadcertificatefilename</key> <string>nomecertificado.p12</string> <key>payloadcontent</key> <data> DATABASECERTP1264 </data> <key>payloaddescription</key> <string>adds a PKCS#12-formatted certificate</string> <key>payloaddisplayname</key> <string>cliente.p12</string> <key>payloadidentifier</key> <string>com.apple.security.pkcs12.55555555-5555-5555-5555-555555555555</string> <key>payloadtype</key> <string>com.apple.security.pkcs12</string> <key>payloaduuid</key> <string>55555555-5555-5555-5555-555555555555</string> <key>payloadversion</key> <integer>1</integer> </dict> </array> <key>payloaddisplayname</key> <string>mac8021x</string> <key>payloadidentifier</key> <string>cliente.local</string> <key>payloadorganization</key> <string>organizacao/string> <key>payloadremovaldisallowed</key> <false/> <key>payloadtype</key> <string>configuration</string> <key>payloaduuid</key> <string>66666666-6666-6666-6666-666666666666</string> <key>payloadversion</key> <integer>1</integer> </dict> </plist> Conteúdo dos certificados em Base64 sem as linhas ----- BEGIN CERTIFICATE ----e ----- END CERTIFICATE -----
Supplicant - macos Instalando o profile no mac: sudo Profiles -I -F arquivo.mobileconfig -v Evitando sleep da máquina sudo pmset sleep 0
802.1X para outros locais Utilização de 802.1x em outros ambientes do departamento Salas de Reunião Autenticação por usuário e senha (PEAP MSCHAPv2) Utilização de LDAP
802.1X para outros locais
802.1X para outros locais
Servidor de Autenticação - FreeRadius users DEFAULT Suffix == ".lab", Reply-Message := "Hello, %{User-Name}" Tunnel-Type = "VLAN", Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = numerovlan, Extreme-Netlogin-Vlan = nomevlan, Fall-Through = no DEFAULT Ldap-Group == "grupo" Tunnel-Type = "VLAN", Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = numerovlan, Extreme-Netlogin-Vlan = "nomevlan", Fall-Through = no
Problemas de segurança 802.1x é vulnerável à algum ataque?
Problemas de segurança 802.1x é vulnerável à algum ataque?
Problemas de segurança 802.1x é vulnerável à algum ataque? Em 2005, Steve Riley da Microsoft detalhou um ataque de MITM no protocolo 802.1x. Após autenticação do 802.1x é possível utilizar a porta autenticada
MITM 802.1X
MITM 802.1X
MITM 802.1X
Solução IPSec (VPN) com 802.1x 802.1AE - MACSec Após autenticação, Radius envia MSK (Master Session Key) para o Suplicante e para o Autenticador (Switch) MSK é utilizada para gerar a CAK
Suporte Supplicant Autenticador (Switch) Windows - Cisco Anyconnect Linux - WAP Supplicant Cisco 3650, 3850 Servidor de autenticação Cisco ISE FreeRadius 2.x
OBRIGADO! seguranca at pop-mg.rnp.br