Merhaba arkadaşlar, ben Cem Zengin.

Kurumsal dünyada güvenli uzaktan erişim dendiğinde akla gelen ilk ve en yaygın çözümlerden biri hiç şüphesiz Cisco AnyConnect SSL VPN‘dir. Hem Cisco ASA (Adaptive Security Appliance) hem de yeni nesil Firepower (FTD) cihazlarında çalışan bu VPN çözümü, kullanıcıların internet tarayıcısı veya AnyConnect istemci yazılımı üzerinden kurumsal ağa şifreli bir şekilde bağlanmasını sağlar.

Bu yazıda, Cisco ASA CLI kullanarak sıfırdan AnyConnect SSL VPN yapılandırmasını nasıl gerçekleştireceğimizi adım adım inceleyeceğiz.


1. Hazırlık ve Gereksinimler

Yapılandırmaya başlamadan önce şu bileşenlerin hazır olması gerekir:

  • Cihaz üzerinde geçerli bir AnyConnect APEX veya Plus lisansı.
  • Kullanıcıların dışarıdan bağlanacağı dış arayüz (Örn: outside).
  • VPN istemcilerine dağıtılacak IP adres havuzu (Örn: 192.168.100.10 - 192.168.100.100).
  • Local kullanıcı veritabanı veya kimlik doğrulama için LDAP sunucu entegrasyonu (Bu rehberde basitlik adına local veri tabanı kullanacağız).

2. IP Adres Havuzu ve Kullanıcı Tanımlama

İlk olarak, dışarıdan bağlanan kullanıcıların alacağı IP adres havuzunu (IP Pool) ve kimlik doğrulamada kullanacağımız test kullanıcısını oluşturalım:

! IP Adres Havuzu Oluşturma
ciscoasa(config)# ip local pool AnyConnect-Pool 192.168.100.10-192.168.100.100 mask 255.255.255.0

! Kullanıcı Tanımlama (Şifreli)
ciscoasa(config)# username vpnuser password GucluVpnSifresi123 privilege 15

3. AnyConnect Görüntüsünün (Image) ASA Üzerine Yüklenmesi

AnyConnect istemcilerinin kurulum dosyalarını (PKG paketleri) Cisco Software Portal’dan indirip ASA’nın flash belleğine yüklememiz gerekir. Cihaz, dışarıdan portal üzerinden bağlanan kullanıcılara bu dosyayı otomatik sunacaktır.

! Flash bellek içindeki PKG dosyasını WebVPN için aktif edelim
ciscoasa(config)# webvpn
ciscoasa(config-webvpn)# anyconnect image disk0:/anyconnect-win-4.10.05085-webdeploy-k9.pkg 1
ciscoasa(config-webvpn)# anyconnect enable
ciscoasa(config-webvpn)# enable outside
ciscoasa(config-webvpn)# exit

4. SSL Sertifikası Tanımlama (Self-Signed veya Trusted)

Güvenli bir SSL bağlantısı için dış arayüzde (outside) bir sertifikaya ihtiyacımız var. Gerçek ortamda GoDaddy/DigiCert gibi sağlayıcılardan alınan sertifikalar tercih edilmelidir, ancak test veya hızlı kurulum için self-signed (kendinden imzalı) sertifika üretebiliriz:

! Sertifika Oluşturma (Self-Signed)
ciscoasa(config)# crypto key generate rsa label SSL-KEY modulus 2048
ciscoasa(config)# crypto ca trustpoint SSL-TRUSTPOINT
ciscoasa(config-ca-trustpoint)# enrollment self
ciscoasa(config-ca-trustpoint)# keypair SSL-KEY
ciscoasa(config-ca-trustpoint)# exit
ciscoasa(config)# crypto ca enroll SSL-TRUSTPOINT
ciscoasa(config)# ssl trust-point SSL-TRUSTPOINT outside

5. Grup Politikası (Group Policy) ve Tünel Grubu Yapılandırması

Grup politikaları, kullanıcılara atanacak DNS sunucuları, Split-Tunneling ayarları ve maksimum oturum süresi gibi parametreleri belirler. Tünel Grubu ise bağlantı URL’sini ve kimlik doğrulama metodunu içerir.

! IPsec ve SSL parametrelerini içeren Grup Politikası oluşturma
ciscoasa(config)# group-policy AnyConnect-GP internal
ciscoasa(config)# group-policy AnyConnect-GP attributes
ciscoasa(config-group-policy)# vpn-tunnel-protocol ssl-client
ciscoasa(config-group-policy)# dns-server value 8.8.8.8 8.8.4.4
ciscoasa(config-group-policy)# default-domain value sirket.local
ciscoasa(config-group-policy)# split-tunnel-policy tunnelspecified
ciscoasa(config-group-policy)# split-tunnel-network-list value Local-Networks-ACL
ciscoasa(config-group-policy)# exit

! Tünel Grubu (Connection Profile) Oluşturma
ciscoasa(config)# tunnel-group AnyConnect-TG type remote-access
ciscoasa(config)# tunnel-group AnyConnect-TG general-attributes
ciscoasa(config-tunnel-general)# address-pool AnyConnect-Pool
ciscoasa(config-tunnel-general)# default-group-policy AnyConnect-GP
ciscoasa(config-tunnel-general)# authentication-server-group LOCAL
ciscoasa(config-tunnel-general)# exit
ciscoasa(config)# tunnel-group AnyConnect-TG webvpn-attributes
ciscoasa(config-tunnel-webvpn)# group-alias "Sirket-AnyConnect" enable
ciscoasa(config-tunnel-webvpn)# exit
ciscoasa(config)# webvpn
ciscoasa(config-webvpn)# tunnel-group-list enable
ciscoasa(config-webvpn)# exit

Önemli: Split-Tunneling İçin ACL Tanımlanması

Eğer Split-Tunneling kullanmazsanız (Default), VPN’e bağlanan kullanıcıların tüm internet trafiği de ASA üzerinden geçer. Kullanıcıların sadece şirket yerel ağına (Örn: 192.168.10.0/24) erişmesini, internet çıkışlarının ise kendi ev bağlantılarından devam etmesini sağlamak için Split-Tunnel ACL’ini tanımlamalıyız:

ciscoasa(config)# access-list Local-Networks-ACL standard permit 192.168.10.0 255.255.255.0

6. NAT Muafiyeti (NAT Exemption) Kuralları

VPN üzerinden gelen paketlerin yerel ağa (Inside) erişirken NAT işlemine uğramasını engellemek için NAT Muafiyeti (NAT 0 / Twice NAT) yazmamız gerekir. Aksi takdirde, ASA bu paketleri internete gidiyormuş gibi maskeler ve bağlantı başarısız olur.

ciscoasa(config)# object network OBJ_Local_LAN
ciscoasa(config-network-object)# subnet 192.168.10.0 255.255.255.0
ciscoasa(config-network-object)# exit

ciscoasa(config)# object network OBJ_VPN_Pool
ciscoasa(config-network-object)# subnet 192.168.100.0 255.255.255.0
ciscoasa(config-network-object)# exit

! NAT Muafiyeti Kuralı (Inside to Outside)
ciscoasa(config)# nat (inside,outside) source static OBJ_Local_LAN OBJ_Local_LAN destination static OBJ_VPN_Pool OBJ_VPN_Pool no-proxy-arp route-lookup

7. Bağlantıyı Test Etme ve Sorun Giderme

Her şeyi kaydettikten sonra (write memory), tarayıcınızı açıp https://<ASA_Public_IP> adresine gidin. Karşınıza gelen portaldan AnyConnect web-deploy sihirbazını indirerek kurulumu tamamlayın. Ardından AnyConnect uygulamasını açıp aynı IP ile bağlantı kurabilirsiniz.

Hata Giderme CLI Komutları:

  • Aktif Bağlantıları Görmek:
    show vpn-sessiondb anyconnect
    
  • Detaylı Hata Ayıklama (Debug) Açmak: Herhangi bir bağlantı hatası veya el sıkışma (handshake) problemi durumunda CLI üzerinden logları canlı izleyebilirsiniz:
    debug webvpn anyconnect 255
    debug ssl 255
    

    İşiniz bittiğinde debug modunu kapatmak için undebug all yazmayı unutmayın.

Kurulum aşamasında karşılaştığınız lisans hatalarını veya paket yönlendirme problemlerini yorumlarda paylaşabilirsiniz. Bir sonraki teknik yazıda görüşmek üzere!