İçeriğe geç
NetDevOps
6 dk okuma Ağ Yönetimi

FreeRADIUS ve 802.1X ile Ag Erisim Kontrolu Kurulumu

Bir switch portuna fiziksel olarak takılan her cihaz, port up olduğunda ağa dahil olur. 802.1X bu varsayımı ortadan kaldırır: port, arkasındaki cihaz kimliğini kanıtlayana kadar yalnızca EAPOL paketlerini geçirir, DHCP, ARP, HTTP gibi trafiği geçirmez. Kimlik kanıtı RADIUS sunucusunda doğrulanır ve port açılır. Yani erişim kontrolü artık VLAN ataması değil, port seviyesinde, kimliğe bağlı hale gelir.

Kim Kimi Doğruluyor

Üç aktör var. Supplicant, cihaz üzerindeki kimlik doğrulama istemcisi; Windows tarafında Wired AutoConfig servisi, Linux tarafında wpa_supplicant bu rolü üstlenir. Authenticator, switch ya da access point. Kendi başına hiçbir karar vermez, EAP mesajlarını RADIUS paketlerinin içine sararak sunucuya taşır. Authentication server ise FreeRADIUS. Supplicant ile authenticator arasındaki protokol EAPOL, authenticator ile sunucu arasındaki protokol RADIUS. Switchin bu ikisi arasında köprü kurması dışında bir iş yapmaması, mimarinin en sık gözden kaçan detayı.

Kurulum ve Yol Farkı

Debian ve Ubuntu tarafında paket adı freeradius, yapılandırma /etc/freeradius/3.0/ altında durur. RHEL türevlerinde paket aynı isimli olur ama konfigürasyon dizini /etc/raddb olur. Dağıtımdan bağımsız olarak iki komut elinizin altında olmalı:

freeradius -XC
freeradius -X

İlki yapılandırmayı sözdizimi düzeyinde test eder, sorun varsa satır numarasıyla söyler. İkincisi sunucuyu ön planda, tam detaylı log ile başlatır. 802.1X kurulumunun yarısı bu debug çıktısını okumaktan geçer.

Switchi Sunucuya Tanıtmak

FreeRADIUS, kendisine RADIUS paketi gönderebilecek her istemciyi clients.conf içinde tanımlanmış ister. Tanımsız bir IP adresinden gelen paket sessizce reddedilir ve switch tarafında cevap gelmiyormuş gibi görünür. Kaynak IP adresi belge amaçlı örneklere ait, kendi ortamınıza göre değiştirin:

client lab-switch {
    ipaddr = 192.0.2.10
    secret = GucluBirSifre123
    shortname = labsw01
}

secret, switch ile sunucu arasında paylaşılan anahtar. İki tarafta birebir aynı olmalı; debug çıktısında signature mismatch benzeri hatalar genelde bu yüzden çıkar. Sunucu firewall arkasındaysa switch adreslerinden 1812/udp portuna izin gerekir. 1813/udp ise accounting içindir, 802.1X için zorunlu değil ama açık tutmak akıllıca.

EAP Türü ve Sertifikalar

FreeRADIUS 3.x kurulumda EAP modülü mods-enabled/eap dosyasındadır ve default_eap_type değeri stok haliyle md5 gelir. MD5, test dışında kullanılmaması gereken eski bir tür. Gerçek kurulumda bunu tls ya da peap yapmanız gerekir.

Her iki tür de sunucu tarafında sertifika ister. Debian altında /etc/freeradius/3.0/certs/ dizininde yer alan bootstrap betiği, ilk çalıştırmada kendi kendine imzalı bir CA zinciri ve sunucu sertifikası üretir:

cd /etc/freeradius/3.0/certs
./bootstrap

Üretilen ca.pem istemcilere dağıtılmalıdır; özellikle Windows makineler PEAP sırasında sunucu sertifikasını imzalayan CA yı güvenilir kökler arasında görmezse bağlantıyı reddeder. Üretim ortamında bootstrap çıktısını olduğu gibi kullanmayın, kendi CA nızla imzalanmış sertifika takın. Stok sertifikaların ömrü kısadır ve süre dolduğunda PEAP sessizce bozulur; sebep her zaman son kullanma tarihidir, logda buna benzer bir cümle görmek kolaydır.

EAP-TLS mi PEAP mı

EAP-TLS istemciden de sertifika ister, çift yönlü kimlik doğrulama sağlar ve özellikle Windows tabanlı büyük filolarda makine sertifikalarıyla ölçeklenir. PEAP, dış tünel TLS ile kurulur, iç tarafta kullanıcı adı ve parola doğrulanır; iç tür neredeyse her zaman MSCHAPv2 olur. Parola tabanlı, hızlı devreye alınabilir bir yol arıyorsanız PEAP, sertifikayı her iki tarafa da taşıyabiliyorsanız EAP-TLS tercih edin.

Kullanıcı Kaydı ve İlk Test

Dosya tabanlı yetkilendirme Debian altında mods-config/files/authorize dosyasından yürür. Basit bir PEAP kullanıcısı:

ahmet    Cleartext-Password := "parola123"

Sunucuyu durdurup freeradius -X ile başlatın, ardından başka bir terminalden:

radtest ahmet parola123 127.0.0.1 0 testing123

Burada testing123, kurulumda localhost için clients.conf içine yazılan stok secret değeridir. Access-Accept görüyorsanız kimlik doğrulama zinciri dosya tarafında çalışıyor demektir. PEAP ve EAP-TLS gibi tünelli türleri gerçek istemciyle test etmek için wpa_supplicant kaynaklarından derlenebilen eapol_test aracı kullanılır; radtest tüneli taklit etmez. Kullanıcı kaynağı olarak LDAP ya da Active Directory gerekirse mods-available/ldap üzerinden bağlanılır, ancak dosya ile çalışan bir yapı kurup sonraki adımda dizine geçmek hata ayıklamayı ciddi kolaylaştırır.

Cisco Tarafında Gerekenler

Authenticator rolündeki switch üzerinde AAA ve dot1x yapılandırması gerekir. IOS sözdizimi kabaca şöyle:

aaa new-model
aaa authentication dot1x default group radius
radius-server host 192.0.2.20 key GucluBirSifre123
dot1x system-auth-control
!
interface GigabitEthernet0/5
 switchport mode access
 dot1x pae authenticator
 authentication port-control auto

Eski IOS sürümlerinde dot1x port-control auto satırı aynı işi görür. Port üzerinde show authentication sessions çıktısı, oturumun hangi yöntemle, hangi sonuçla açıldığını gösterir. Yazıcı, kamera gibi supplicant barındırmayan cihazlar için MAB, kimliği doğrulanamayan cihazları kısıtlı bir misafir VLAN aına yönlendirmek için guest VLAN anahtar kelimesi switch tarafında aramanız gereken iki özellik.

Kimliğe Göre VLAN

FreeRADIUS, onay yanıtıyla birlikte switchin portunu atayacağı VLAN ı da söyleyebilir. users dosyasında yanıt nitelikleri olarak şunlar eklenir:

ahmet    Cleartext-Password := "parola123"
         Tunnel-Type = VLAN,
         Tunnel-Medium-Type = IEEE-802,
         Tunnel-Private-Group-Id = "20"

Switchin dinamik VLAN atamasını desteklemesi şart. Dinamik VLAN sayesinde yazıcı mühendis departmanına taşındığında port yapılandırmasına dokunmanız gerekmez, kimlik zaten doğru ağa düşürür.

Bozan Küçük Şeyler

En sık karşılaşılan üç hata: clients.conf tarafındaki secret ile switch tarafindeki anahtarın uyuşmaması, süresi dolmuş sunucu sertifikası ve sunucunun test aracıyla değil gerçek supplicant ile denenmemiş olması. Üçünün teşhisi de freeradius -X çıktısında görünür; EAP yönlendirme zinciri adım adım loglanır, kırıldığı nokta ekrana yazılır.

Yapı çalışır hale geldiğinde port güvenliği, MAC filtreleme gibi geçici çözümlere olan ihtiyaç kendiliğinden kalkar. Kullanıcı adı ve parolayı dizin servisine bağladığınızda ağ erişimi, kurumsal kimliğin doğal bir uzantısı olur. FreeRADIUS tarafında değişen tek şey yetkilendirme kaynağı olur, switch yapılandırması aynen kalır.

wireguard-server-panel

WireGuard VPN sunucu paneli - İstemci yönetimi, QR kodları ve trafik istatistikleri için kendi sunucunuzda barındırılan web kullanıcı arayüzü (fork, aktif olarak geliştirilmekte)

Go

Laravel-NDFirewall

Rota Kapsamlı Laravel WAF - RCE, SQLi, XSS ve SSRF algılama özelliklerine sahip hafif bir Web Uygulaması Güvenlik Duvarı

PHP

Trustsslroot

Tek komutla çalışan özel PKI oluşturucu - Kendi kendine imzalanmış kök CA ve sertifikaları anında oluşturun

Go

node_exporter

Hafif sistem metrikleri aktarıcısı - Güvenli erişim kontrolüne sahip, Linux için durum bilgisi barındırmayan tek dosya tabanlı izleme hizmeti

Rust

ipReconary

IP keşif ve alt ağ analiz aracı - Hızlı ağ taraması ve IP istihbarat toplama

Rust

Cloudfiltred

Cloudflare IP beyaz liste güvenlik duvarı - 80/443 numaralı bağlantı noktalarını yalnızca Cloudflare IP'leriyle sınırlayarak kaynak sunucunuzu doğrudan saldırılara karşı koruyun

Rust

LoadAlertTracker

Hafif sistem yükü izleme arka plan programı - Eşik değerleri aşıldığında Telegram, Discord ve Mattermost üzerinden gerçek zamanlı uyarılar

Rust

ctCertWatch

Sertifika Şeffaflığı günlüğü izleyicisi - Kimlik avı alan adlarını, marka taklitçiliğini ve yetkisiz SSL sertifikalarını gerçek zamanlı olarak tespit edin

Rust

DDNS-FW

Dinamik DNS Güvenlik Duvarı - DDNS aracılığıyla değişen IP adreslerini takip edin ve güvenli erişim kontrolü için güvenlik duvarı kurallarını otomatik olarak güncelleyin

Rust