๊ธฐ์
WiFi๋ฅผ ๊ตฌ์ฑํ๋ ๋ช ๊ฐ์ง ์๋ ์ด๋ฏธ ์ค๋ช
๋์์ต๋๋ค. ์ฌ๊ธฐ์์๋ ์ ์ฌํ ์๋ฃจ์
์ ๊ตฌํํ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅธ ์ฅ์น์ ์ฐ๊ฒฐํ ๋ ์ง๋ฉดํด์ผ ํ๋ ๋ฌธ์ ์ ๋ํด ์ค๋ช
ํฉ๋๋ค. ๋ฑ๋ก๋ ์ฌ์ฉ์์ ํจ๊ป ๊ธฐ์กด LDAP๋ฅผ ์ฌ์ฉํ๊ณ FreeRadius๋ฅผ ๋์ด๊ณ Ubnt ์ปจํธ๋กค๋ฌ์์ WPA2-Enterprise๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํ ๊ฒ ๊ฐ์ต๋๋ค. ๋ณด์โฆ
EAP ๋ฐฉ๋ฒ์ ๋ํด ์กฐ๊ธ
์์ ์ ์งํํ๊ธฐ ์ ์ ์๋ฃจ์ ์์ ์ฌ์ฉํ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
์ํค ํผ ๋์ ์ถ์ :
EAP๋ ๋ฌด์ ๋คํธ์ํฌ ๋ฐ ์ง์ ๊ฐ ์ฐ๊ฒฐ์ ์์ฃผ ์ฌ์ฉ๋๋ ์ธ์ฆ ํ๋ ์์ํฌ์ ๋๋ค. ํ์์ RFC 3748์์ ์ฒ์ ์ค๋ช ๋์๊ณ RFC 5247์์ ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
EAP๋ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ ํํ๊ณ , ํค๋ฅผ ์ ๋ฌํ๊ณ , EAP ๋ฐฉ๋ฒ์ด๋ผ๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ํด๋น ํค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. EAP ์์ฒด๋ก ์ ์๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ณ ๊ณต๊ธ์ ์ฒด์์ ์ถ์ํ ๋ฐฉ๋ฒ ๋ชจ๋ ๋ค์ํ EAP ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. EAP๋ ๋งํฌ ๊ณ์ธต์ ์ ์ํ์ง ์๊ณ ๋ฉ์์ง ํ์๋ง ์ ์ํฉ๋๋ค. EAP๋ฅผ ์ฌ์ฉํ๋ ๊ฐ ํ๋กํ ์ฝ์๋ ๊ณ ์ ํ EAP ๋ฉ์์ง ์บก์ํ ํ๋กํ ์ฝ์ด ์์ต๋๋ค.
๋ฉ์๋ ์์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- LEAP์ CISCO์์ ๊ฐ๋ฐํ ๋ ์ ํ๋กํ ์ฝ์ ๋๋ค. ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค. ํ์ฌ๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
- EAP-TLS๋ ๋ฌด์ ๊ณต๊ธ์ ์ฒด์์ ์ ์ง์๋ฉ๋๋ค. SSL ํ์ค์ ํ์ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ์์ ํ ํ๋กํ ์ฝ์ ๋๋ค. ํด๋ผ์ด์ธํธ ์ค์ ์ ๊ฝค ๋ณต์กํฉ๋๋ค. ๋น๋ฐ๋ฒํธ ์ธ์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๊ฐ ํ์ํฉ๋๋ค. ๋ง์ ์์คํ ์์ ์ง์๋จ
- EAP-TTLS - ๋ง์ ์์คํ ์์ ๋๋ฆฌ ์ง์๋๋ฉฐ ์ธ์ฆ ์๋ฒ์์๋ง PKI ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ํ ๋ณด์์ ์ ๊ณตํฉ๋๋ค.
- EAP-MD5๋ ๋ ๋ค๋ฅธ ๊ฐ๋ฐฉํ ํ์ค์ ๋๋ค. ์ต์ํ์ ๋ณด์์ ์ ๊ณตํฉ๋๋ค. ์ทจ์ฝํ๋ฉฐ ์ํธ ์ธ์ฆ ๋ฐ ํค ์์ฑ์ ์ง์ํ์ง ์์ต๋๋ค.
- EAP-IKEv2 - ์ธํฐ๋ท ํค ๊ตํ ํ๋กํ ์ฝ(Internet Key Exchange Protocol) ๋ฒ์ 2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ํธ ์ธ์ฆ ๋ฐ ์ธ์ ํค ์ค์ ์ ์ ๊ณตํฉ๋๋ค.
- PEAP๋ ๊ฐ๋ฐฉํ ํ์ค์ธ CISCO, Microsoft ๋ฐ RSA Security์ ๊ณต๋ ์๋ฃจ์ ์ ๋๋ค. ์ ํ์์ ๋๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๋งค์ฐ ์ฐ์ํ ๋ณด์์ ์ ๊ณตํฉ๋๋ค. EAP-TTLS์ ์ ์ฌํ๋ฉฐ ์๋ฒ ์ธก ์ธ์ฆ์๋ง ํ์
- PEAPv0/EAP-MSCHAPv2 - EAP-TLS ๋ค์์ผ๋ก ์ธ๊ณ์์ ๋ ๋ฒ์งธ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์ค์ ๋๋ค. Microsoft, Cisco, Apple, Linux์์ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ด๊ณ ์ฌ์ฉ
- PEAPv1/EAP-GTC - PEAPv0/EAP-MSCHAPv2์ ๋์์ผ๋ก Cisco์์ ๋ง๋ค์์ต๋๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ธ์ฆ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ์ง ์์ต๋๋ค. Windows OS์์๋ ์ง์๋์ง ์์ต๋๋ค.
- EAP-FAST๋ LEAP์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด Cisco์์ ๊ฐ๋ฐํ ๊ธฐ์ ์ ๋๋ค. PAC(๋ณดํธ ์ก์ธ์ค ์๊ฒฉ ์ฆ๋ช )๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ ํ ๋ฏธ์์ฑ
์ด ๋ชจ๋ ๋ค์์ฑ ์ค์์ ์ ํ์ ์ฌ์ง๊ฐ ์ฌ์ ํ ํฌ์ง ์์ต๋๋ค. ์ธ์ฆ ๋ฐฉ๋ฒ์ด ํ์ํ์ต๋๋ค. ์ฐ์ํ ๋ณด์, ๋ชจ๋ ์ฅ์น(Windows 10, macOS, Linux, Android, iOS) ์ง์, ์ค์ ๋ก ๊ฐ๋จํ ์๋ก ์ข์ต๋๋ค. ๋ฐ๋ผ์ PAP ํ๋กํ ์ฝ๊ณผ ํจ๊ป EAP-TTLS๋ฅผ ์ ํํ์ต๋๋ค.
์ง๋ฌธ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ PAP๋ฅผ ์ฌ์ฉํฉ๋๊น? ๊ทธ๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ถ๋ช
ํ๊ฒ ์ ์กํ๊ธฐ ๋๋ฌธ์?
๋ค ๋ง์ต๋๋ค. FreeRadius์ FreeIPA ๊ฐ์ ํต์ ์ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ๋๋ฒ๊ทธ ๋ชจ๋์์๋ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ์ด๋ป๊ฒ ์ ์ก๋๋์ง ์ถ์ ํ ์ ์์ต๋๋ค. ์, ๊ทธ๋๋ก ๋๋์ญ์์ค. ๊ทํ๋ง์ด FreeRadius ์๋ฒ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
EAP-TTLS ์์
์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
FreeRADIUS
FreeRadius๋ CentOS 7.6์์ ์ฆ๊ฐํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ณต์กํ ๊ฒ์ด ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ์ค์ ํฉ๋๋ค.
yum install freeradius freeradius-utils freeradius-ldap -y
๋ฒ์ 3.0.13์ด ํจํค์ง์์ ์ค์น๋ฉ๋๋ค. ํ์๋ฅผ ํํ ์ ์๋ค
๊ทธ ํ FreeRadius๋ ์ด๋ฏธ ์๋ ์ค์ ๋๋ค. /etc/raddb/users์์ ํด๋น ์ค์ ์ฃผ์ ์ฒ๋ฆฌ๋ฅผ ํด์ ํ ์ ์์ต๋๋ค.
steve Cleartext-Password := "testing"
๋๋ฒ๊ทธ ๋ชจ๋์์ ์๋ฒ ์์
freeradius -X
๊ทธ๋ฆฌ๊ณ localhost์์ ํ ์คํธ ์ฐ๊ฒฐ์ ๋ง๋ญ๋๋ค.
radtest steve testing 127.0.0.1 1812 testing123
๋ต๋ณ์ ๋ฐ์์ต๋๋ค 115:127.0.0.1์์ 1812:127.0.0.1 ๊ธธ์ด 56081๊น์ง ์ก์ธ์ค ํ์ฉ ID 20๋ฅผ ๋ฐ์์ต๋๋ค., ๊ทธ๊ฒ์ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ณ์ํ์ธ์.
๋ชจ๋์ ์ฐ๊ฒฐํฉ๋๋ค LDAP.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฆ์ ๋ฐ๊ฟ ๊ฒ์ ๋๋ค. FreeIPA์ ์ก์ธ์คํ๋ ค๋ฉด FreeRadius๊ฐ ํ์ํฉ๋๋ค.
๋ชจ๋ ํ์ฑํ/ldap
ldap {
server="ldap://ldap.server.com"
port=636
start_tls=yes
identity="uid=admin,cn=users,dc=server,dc=com"
password=**********
base_dn="cn=users,dc=server,dc=com"
set_auth_type=yes
...
user {
base_dn="${..base_dn}"
filter="(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
}
...
Radius ์๋ฒ๋ฅผ ๋ค์ ์์ํ๊ณ LDAP ์ฌ์ฉ์์ ๋๊ธฐํ๋ฅผ ํ์ธํ์ญ์์ค.
radtest user_ldap password_ldap localhost 1812 testing123
๋ค์์์ ํธ์ง ์ค ๋ชจ๋ ํ์ฑํ/EAP
์ฌ๊ธฐ์ ๋ ๊ฐ์ eap ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ธ์ฆ์์ ํค๋ง ๋ค๋ฆ
๋๋ค. ์๋์์ ๊ทธ ์ด์ ๋ฅผ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
๋ชจ๋ ํ์ฑํ/EAP
eap eap-client { default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests}
tls-config tls-common {
private_key_file = ${certdir}/fisrt.key
certificate_file = ${certdir}/first.crt
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "HIGH"
cipher_server_preference = no
ecdh_curve = "prime256v1"
check_crl = no
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
}
eap eap-guest {
default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests}
tls-config tls-common {
private_key_passwotd=blablabla
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.crt
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "HIGH"
cipher_server_preference = no
ecdh_curve = "prime256v1"
check_crl = no
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
}
์ถ๊ฐ ํธ์ง ์ฌ์ดํธ ํ์ฑํ/๊ธฐ๋ณธ. ์น์ธ ๋ฐ ์ธ์ฆ ์น์ ์ด ์ค์ํฉ๋๋ค.
์ฌ์ดํธ ํ์ฑํ/๊ธฐ๋ณธ
authorize {
filter_username
preprocess
if (&User-Name == "guest") {
eap-guest {
ok = return
}
}
elsif (&User-Name == "client") {
eap-client {
ok = return
}
}
else {
eap-guest {
ok = return
}
}
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
expiration
logintime
pap
}
authenticate {
Auth-Type LDAP {
ldap
}
Auth-Type eap-guest {
eap-guest
}
Auth-Type eap-client {
eap-client
}
pap
}
์น์ธ ์น์ ์์๋ ํ์ํ์ง ์์ ๋ชจ๋ ๋ชจ๋์ ์ ๊ฑฐํฉ๋๋ค. LDAP๋ง ๋จ๊ฒจ๋ก๋๋ค. ์ฌ์ฉ์ ์ด๋ฆ์ผ๋ก ํด๋ผ์ด์ธํธ ํ์ธ์ ์ถ๊ฐํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์์์ eap ์ธ์คํด์ค ๋ ๊ฐ๋ฅผ ์ถ๊ฐํ ์ด์ ์ ๋๋ค.
๋ฉํฐ EAP์ฌ์ค ์ผ๋ถ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ ๋ ์์คํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ๋๋ฉ์ธ์ ์ง์ ํฉ๋๋ค. ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๊ธฐ๊ด์ ์ธ์ฆ์์ ํค๊ฐ ์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ด๋ฌํ ์ฐ๊ฒฐ ์ ์ฐจ๋ ๊ฐ ์ฅ์น์ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๊ฐ ์์ด๋ ์ฌ์ ํ ์๋ํ์ง ์์์ต๋๋ค. ์ผ์ฑ ๊ธฐ๊ธฐ ๋ฐ Android =< 6 ๋ฒ์ ์์๋ ์์คํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋์ eap-guest ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์ฅ์น์ ๊ฒฝ์ฐ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์์ ํจ๊ป eap-client๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ์ ์ด๋ฆ์ ์ฅ์น๊ฐ ์ฐ๊ฒฐ๋ ๋ ์ต๋ช ํ๋์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๊ฒ์คํธ, ํด๋ผ์ด์ธํธ ๋ฐ ๋น ํ๋์ 3๊ฐ์ง ๊ฐ๋ง ํ์ฉ๋ฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ํ๊ธฐ๋ฉ๋๋ค. ์ ์น์ธ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ ์ ํ์ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์น์ธ ๋ฐ ์ธ์ฆ ์น์ ์ ํธ์งํด ๋ณด๊ฒ ์ต๋๋ค. ์ฌ์ดํธ ์ง์/๋ด๋ถ ํฐ๋
์ฌ์ดํธ ์ง์/๋ด๋ถ ํฐ๋
authorize {
filter_username
filter_inner_identity
update control {
&Proxy-To-Realm := LOCAL
}
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
expiration
digest
logintime
pap
}
authenticate {
Auth-Type eap-guest {
eap-guest
}
Auth-Type eap-client {
eap-client
}
Auth-Type PAP {
pap
}
ldap
}
๋ค์์ผ๋ก, ์ต๋ช ๋ก๊ทธ์ธ์ ์ฌ์ฉํ ์ ์๋ ์ด๋ฆ์ ์ ์ฑ ์ ์ง์ ํด์ผ ํฉ๋๋ค. ํธ์ง ์ ์ฑ .d/ํํฐ.
๋ค์๊ณผ ์ ์ฌํ ์ค์ ์ฐพ์์ผ ํฉ๋๋ค.
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
๊ทธ๋ฆฌ๊ณ ์๋ elsif์ ์ํ๋ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
์ด์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด์ผ ํฉ๋๋ค. ์ฆ๋ช ์. ์ฌ๊ธฐ์๋ ์ด๋ฏธ ๋ณด์ ํ๊ณ ์๊ณ eap-guest์ ๋ํ ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๊ธฐ๊ด์ ํค์ ์ธ์ฆ์๋ฅผ ๋ฃ์ด์ผ ํฉ๋๋ค.
ํ์ผ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํ์ธ์. ca.cnf.
ca.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = [email protected]
commonName = "CA FreeRadius"
ํ์ผ์ ๋์ผํ ๊ฐ์ ์๋๋ค. ์๋ฒ.cnf. ์ฐ๋ฆฌ๋ง ๋ณํด์
์ผ๋ฐ ์ด๋ฆ:
์๋ฒ.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = [email protected]
commonName = "Server Certificate FreeRadius"
๋ง๋ค๋ค:
make
์ค๋น๊ฐ ๋. ๋ฐ์๋ค ์๋ฒ.crt ะธ ์๋ฒ ํค ์ฐ๋ฆฌ๋ ์ด๋ฏธ eap-guest์ ์์์ ๋ฑ๋กํ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ์ผ์ ์ก์ธ์ค ํฌ์ธํธ๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ํด๋ผ์ด์ธํธ.conf. ๊ทธ ์ค 7๊ฐ๊ฐ ์์ต๋๋ค. ๊ฐ ํฌ์ธํธ๋ฅผ ๋ณ๋๋ก ์ถ๊ฐํ์ง ์๊ธฐ ์ํด ํด๋น ํฌ์ธํธ๊ฐ ์๋ ๋คํธ์ํฌ๋ง ์์ฑํ๊ฒ ์ต๋๋ค(๋ด ์ก์ธ์ค ํฌ์ธํธ๋ ๋ณ๋์ VLAN์ ์์).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
์ ๋น์ฟผํฐ์ค ์ปจํธ๋กค๋ฌ
์ปจํธ๋กค๋ฌ์์ ๋ณ๋์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํฉ๋๋ค. 192.168.2.0/24๋ก ๋๋์ธ์
์ค์ -> ํ๋กํ๋ก ์ด๋ํ์ธ์. ์ฐ๋ฆฌ๋ ์๋ก์ด ๊ฒ์ ๋ง๋ญ๋๋ค:
Radius ์๋ฒ์ ์ฃผ์์ ํฌํธ, ๊ทธ๋ฆฌ๊ณ ํ์ผ์ ์ ํ์๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ด์ค๋๋ค ํด๋ผ์ด์ธํธ.conf:
์ ๋ฌด์ ๋คํธ์ํฌ ์ด๋ฆ์ ๋ง๋ญ๋๋ค. ์ธ์ฆ ๋ฐฉ๋ฒ์ผ๋ก WPA-EAP(Enterprise)๋ฅผ ์ ํํ๊ณ ์์ฑ๋ ๋ฐ๊ฒฝ ํ๋กํ์ ์ง์ ํฉ๋๋ค.
๋ชจ๋ ๊ฒ์ ์ ์ฅํ๊ณ ์ ์ฉํ๊ณ ๊ณ์ ์งํํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ค์
๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ๋ถํฐ ์์ํฉ์๋ค!
์๋์ฐ 10
๋ฌธ์ ๋ Windows๊ฐ ๋๋ฉ์ธ์ ํตํด ํ์ฌ WiFi์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชจ๋ฅธ๋ค๋ ์ฌ์ค๋ก ๊ท๊ฒฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์ ์ ์ฅ์์ ์๋์ผ๋ก ์ ๋ก๋ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ์์ฒด ์๋ช ๋ ์ธ์ฆ์์ ์ธ์ฆ ๊ธฐ๊ด์ ์ธ์ฆ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ ๋ ๋ฒ์งธ ๊ฒ์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
๋ค์์ผ๋ก ์ ์ฐ๊ฒฐ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋คํธ์ํฌ ๋ฐ ์ธํฐ๋ท ์ค์ -> ๋คํธ์ํฌ ๋ฐ ๊ณต์ ์ผํฐ -> ์ ์ฐ๊ฒฐ ๋๋ ๋คํธ์ํฌ ๋ง๋ค๊ธฐ ๋ฐ ๊ตฌ์ฑ์ผ๋ก ์ด๋ํ์ธ์.
๋คํธ์ํฌ ์ด๋ฆ์ ์๋์ผ๋ก ์
๋ ฅํ๊ณ ๋ณด์ ์ ํ์ ๋ณ๊ฒฝํ์ธ์. ํด๋ฆญํ ํ ์ฐ๊ฒฐ ์ค์ ๋ณ๊ฒฝ ๋ณด์ ํญ์์ ๋คํธ์ํฌ ์ธ์ฆ - EAP-TTLS๋ฅผ ์ ํํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋งค๊ฐ๋ณ์๋ก ๋ค์ด๊ฐ์ ์ธ์ฆ์ ๊ธฐ๋ฐ์ฑ์ ๊ท์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ. ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๊ธฐ๊ด์ผ๋ก์ ์ถ๊ฐํ ์ธ์ฆ์๋ฅผ ์ ํํ๊ณ "์๋ฒ๋ฅผ ์ธ์ฆํ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ์ด๋๋ฅผ ๋ฐํํ์ง ์์" ์์๋ฅผ ์ ํํ ๋ค์ ์ธ์ฆ ๋ฐฉ๋ฒ - ์ํธํ๋์ง ์์ ๋น๋ฐ๋ฒํธ(PAP)๋ฅผ ์ ํํฉ๋๋ค.
๋ค์์ผ๋ก ๊ณ ๊ธ ์ค์ ์ผ๋ก ์ด๋ํ์ฌ "์ธ์ฆ ๋ชจ๋ ์ง์ "์ ์ ํํ์ธ์. "์ฌ์ฉ์ ์ธ์ฆ"์ ์ ํํ๊ณ ํด๋ฆญํ์ธ์. ์๊ฒฉ ์ฆ๋ช
์ ์ฅ. ์ฌ๊ธฐ์ ์ฌ์ฉ์ ์ด๋ฆ_ldap ๋ฐ ๋น๋ฐ๋ฒํธ_ldap์ ์
๋ ฅํด์ผ ํฉ๋๋ค.
๋ชจ๋ ๊ฒ์ ์ ์ฅํ๊ณ ์ ์ฉํ๊ณ ๋ซ์ต๋๋ค. ์๋ก์ด ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
Linux
Ubuntu 18.04, 18.10, Fedora 29, 30์์ ํ ์คํธํ์ต๋๋ค.
๋จผ์ ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํด ๋ณด๊ฒ ์ต๋๋ค. Linux์์ ์์คํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์๋์ง, ๊ทธ๋ฌํ ์ ์ฅ์๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
๋๋ฉ์ธ์ ์ ์ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ์๋ฅผ ๊ตฌ๋งคํ ์ธ์ฆ ๊ธฐ๊ด์ ์ธ์ฆ์๊ฐ ํ์ํฉ๋๋ค.
๋ชจ๋ ์ฐ๊ฒฐ์ ํ๋์ ์ฐฝ์์ ์ด๋ฃจ์ด์ง๋๋ค. ๋คํธ์ํฌ ์ ํ:
์ต๋ช
ํด๋ผ์ด์ธํธ
domain - ์ธ์ฆ์๊ฐ ๋ฐ๊ธ๋๋ ๋๋ฉ์ธ
Android
์ผ์ฑ ์ด์ธ์ ์ ํ
๋ฒ์ 7๋ถํฐ๋ WiFi ์ฐ๊ฒฐ ์ ๋๋ฉ์ธ๋ง ์ง์ ํ์ฌ ์์คํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
domain - ์ธ์ฆ์๊ฐ ๋ฐ๊ธ๋๋ ๋๋ฉ์ธ
์ต๋ช
ํด๋ผ์ด์ธํธ
์ผ์ฑ
์์์ ์ด ๊ฒ์ฒ๋ผ ์ผ์ฑ ๊ธฐ๊ธฐ๋ WiFi์ ์ฐ๊ฒฐํ ๋ ์์คํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ณ ๋๋ฉ์ธ์ ํตํด ์ฐ๊ฒฐํ ์ ์๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ ๊ธฐ๊ด์ ๋ฃจํธ ์ธ์ฆ์(ca.pem, Radius ์๋ฒ์์ ๊ฐ์ ธ์ด)๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ฒด ์๋ช ์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ธ์ฆ์๋ฅผ ์ฅ์น์ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ์ญ์์ค.
์ธ์ฆ์ ์ค์น
๋์์ ํ๋ฉด ์ ๊ธ ํด์ ํจํด, ํ ์ฝ๋ ๋๋ ๋น๋ฐ๋ฒํธ๊ฐ ์์ง ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
์ธ์ฆ์ ์ค์น์ ๋ณต์กํ ๋ฒ์ ์ ๋ณด์ฌ๋๋ ธ์ต๋๋ค. ๋๋ถ๋ถ์ ์ฅ์น์์๋ ๋ค์ด๋ก๋ํ ์ธ์ฆ์๋ฅผ ํด๋ฆญํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ธ์ฆ์๊ฐ ์ค์น๋๋ฉด ์ฐ๊ฒฐ์ ์งํํ ์ ์์ต๋๋ค.
์ธ์ฆ์ - ์ค์น๋ ์ธ์ฆ์๋ฅผ ๋ํ๋
๋๋ค.
์ต๋ช
์ฌ์ฉ์ - ์๋
macOS
๊ธฐ๋ณธ์ ์ผ๋ก Apple ์ฅ์น๋ EAP-TLS์๋ง ์ฐ๊ฒฐํ ์ ์์ง๋ง ์ฌ์ ํ ์ธ์ฆ์๋ฅผ ์ ์ถํด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ค๋ฉด Apple Configurator 2๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋จผ์ ์ด๋ฅผ Mac์ ๋ค์ด๋ก๋ํ๊ณ ์ ํ๋กํ์ ์์ฑํ ํ ํ์ํ ๋ชจ๋ WiFi ์ค์ ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
Apple Configurator
์ฌ๊ธฐ์ ๋คํธ์ํฌ ์ด๋ฆ์ ์
๋ ฅํ์ธ์.
๋ณด์ ์ ํ - WPA2 ๊ธฐ์
ํ์ฉ๋๋ EAP ์ ํ - TTLS
์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ - ๋น์๋์ธ์
๋ด๋ถ ์ธ์ฆ - PAP
์ธ๋ถ ID ํด๋ผ์ด์ธํธ
์ ๋ขฐ ํญ. ์ฌ๊ธฐ์์ ๋๋ฉ์ธ์ ์ง์ ํฉ๋๋ค.
๋ชจ๋. ํ๋กํ์ ์ ์ฅํ๊ณ ์๋ช ํ๊ณ ์ฅ์น์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
ํ๋กํ์ด ์ค๋น๋๋ฉด Poppy์ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํด์ผ ํฉ๋๋ค. ์ค์น ํ๋ก์ธ์ค ์ค์ ์ฌ์ฉ์์ usernmae_ldap ๋ฐ ๋น๋ฐ๋ฒํธ_ldap์ ์ง์ ํด์ผ ํฉ๋๋ค.
iOS
ํ๋ก์ธ์ค๋ macOS์ ์ ์ฌํฉ๋๋ค. ํ๋กํ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค(macOS์ ๋์ผํ ํ๋กํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Apple Configurator์์ ํ๋กํ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ์ฐธ์กฐ).
ํ๋กํ ๋ค์ด๋ก๋, ์ค์น, ์๊ฒฉ ์ฆ๋ช ์ ๋ ฅ, ์ฐ๊ฒฐ:
๊ทธ๊ฒ ๋ค์ผ. Radius ์๋ฒ๋ฅผ ์ค์ ํ๊ณ FreeIPA์ ๋๊ธฐํํ ํ Ubiquiti AP์ WPA2-EAP๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์ํ์ต๋๋ค.
๊ฐ๋ฅํ ์ง๋ฌธ
์์ : ํ๋กํ/์ธ์ฆ์๋ฅผ ์ง์์๊ฒ ์ด๋ป๊ฒ ์ ์กํ๋์?
ํ์ฌ ์๊ฐ : ์น ์ก์ธ์ค๋ฅผ ํตํด FTP์ ๋ชจ๋ ์ธ์ฆ์/ํ๋กํ์ ์ ์ฅํฉ๋๋ค. ์๋ ์ ํ์ด ์๊ณ FTP๋ฅผ ์ ์ธํ๊ณ ์ธํฐ๋ท์๋ง ์ก์ธ์คํ ์ ์๋ ๊ฒ์คํธ ๋คํธ์ํฌ๋ฅผ ๋์์ต๋๋ค.
์ธ์ฆ์ 2์ผ ๋์ ์ง์๋๋ฉฐ ๊ทธ ์ดํ์๋ ์ฌ์ค์ ๋๊ณ ํด๋ผ์ด์ธํธ๋ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค. ์ ๊ฒ. ์ง์์ด WiFi์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋จผ์ ๊ฒ์คํธ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๊ณ FTP์ ์ก์ธ์คํ์ฌ ํ์ํ ์ธ์ฆ์๋ ํ๋กํ์ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ ๋ค์ ํ์ฌ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์์ : MSCHAPv2์ ํจ๊ป ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ ๋ ๋ ์์ ํฉ๋๋ค!
ํ์ฌ ์๊ฐ : ์ฒซ์งธ, ์ด๋ฌํ ์ฒด๊ณ๋ NPS(Windows ๋คํธ์ํฌ ์ ์ฑ ์์คํ )์์ ์ ์๋ํฉ๋๋ค. ๊ตฌํ ์ LDAP(FreeIpa)๋ฅผ ์ถ๊ฐ๋ก ๊ตฌ์ฑํ๊ณ ์๋ฒ์ ๋น๋ฐ๋ฒํธ ํด์๋ฅผ ์ ์ฅํด์ผ ํฉ๋๋ค. ์ถ๊ฐํ๋ค. ์๋ํ๋ฉด ์ค์ ์ ํ๋ ๊ฒ์ ๋ฐ๋์งํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด ์ด์ํ ๋๊ธฐํ์ ๋ค์ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์งธ, ํด์๋ MD4์ด๋ฏ๋ก ๋ณด์์ด ๋ง์ด ์ถ๊ฐ๋์ง ์์ต๋๋ค.
์์ : Mac ์ฃผ์๋ก ์ฅ์น๋ฅผ ์ธ์ฆํ ์ ์๋์?
ํ์ฌ ์๊ฐ : ์๋์, ์ด๋ ์์ ํ์ง ์์ต๋๋ค. ๊ณต๊ฒฉ์๊ฐ MAC ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๋์ฑ์ด MAC ์ฃผ์์ ์ํ ์ธ์ฆ์ ๋ง์ ์ฅ์น์์ ์ง์๋์ง ์์ต๋๋ค.
์์ : ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๋ชจ๋ ์ธ์ฆ์๋ ๋ฌด์์ ์ฌ์ฉํฉ๋๊น? ๊ทธ๋ค ์์ด๋ ์ฐธ์ฌํ ์ ์๋์?
ํ์ฌ ์๊ฐ : ์ธ์ฆ์๋ ์๋ฒ๋ฅผ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ ๊ฒ๋ค. ์ฐ๊ฒฐ ์ ์ฅ์น๋ ์ ๋ขฐํ ์ ์๋ ์๋ฒ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ธ์ฆ์ด ๊ณ์๋๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋ฉ๋๋ค. ์ธ์ฆ์ ์์ด ์ฐ๊ฒฐํ ์ ์์ง๋ง ๊ณต๊ฒฉ์๋ ์ด์์ด ์ง์ ์ฐ๋ฆฌ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ฐ๊ฒฝ ์๋ฒ์ ์ก์ธ์ค ํฌ์ธํธ๋ฅผ ์ค์ ํ๋ฉด ์ฌ์ฉ์์ ์๊ฒฉ ์ฆ๋ช ์ ์ฝ๊ฒ ๊ฐ๋ก์ฑ ์ ์์ต๋๋ค(์ผ๋ฐ ํ ์คํธ๋ก ์ ์ก๋๋ค๋ ์ ์ ์์ง ๋ง์ธ์). ๊ทธ๋ฆฌ๊ณ ์ธ์ฆ์๊ฐ ์ฌ์ฉ๋๋ฉด ์ ์ ๋ก๊ทธ์๋ ๊ฐ์์ ์ฌ์ฉ์ ์ด๋ฆ(๊ฒ์คํธ ๋๋ ํด๋ผ์ด์ธํธ)๊ณผ ์ ํ ์ค๋ฅ(์ ์ ์๋ CA ์ธ์ฆ์)๋ง ํ์๋ฉ๋๋ค.
macOS์ ๋ํด ์กฐ๊ธ ๋์ผ๋ฐ์ ์ผ๋ก macOS์์๋ ์์คํ ์ฌ์ค์น๊ฐ ์ธํฐ๋ท์ ํตํด ์ํ๋ฉ๋๋ค. ๋ณต๊ตฌ ๋ชจ๋์์๋ Mac์ด Wi-Fi์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํ๋ฉฐ ํ์ฌ Wi-Fi๋ ๊ฒ์คํธ ๋คํธ์ํฌ๋ ์ฌ๊ธฐ์ ์๋ํ์ง ์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ ๋ ๊ธฐ์ ์์ ์ ์ํด์๋ง ์จ๊ฒจ์ง ์ผ๋ฐ์ ์ธ WPA2-PSK๋ผ๋ ๋ ๋ค๋ฅธ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. ๋๋ ์์คํ ์ผ๋ก ๋ฏธ๋ฆฌ ๋ถํ ๊ฐ๋ฅํ USB ํ๋์ ๋๋ผ์ด๋ธ๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ํ์ง๋ง ์๊ท๋น๊ฐ 2015๋ ์ดํ์ธ ๊ฒฝ์ฐ์๋ ์ด ํ๋์ ๋๋ผ์ด๋ธ์ฉ ์ด๋ํฐ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค.)
์ถ์ฒ : habr.com