Şimdi yükleniyor

Fortigate IPSec Tunnel Kurulumu ve Troubleshooting

fortigate-site-to-site

IPSec (Internet Protocol Security), farklı ağlar arasında internet üzerinden güvenli iletişim kurulmasını sağlayan en yaygın VPN teknolojilerinden biridir. Verilerin şifrelenerek iletilmesini, kimlik doğrulamasını ve veri bütünlüğünün korunmasını sağlayan IPSec, özellikle şube ofisler arasında Site-to-Site VPN bağlantıları ve uzaktan erişim senaryolarında kritik bir rol üstlenir. Günümüzde güvenli veri paylaşımı ve ağ kaynaklarına güvenilir erişim sağlamak amacıyla IPSec tünellerini yaygın olarak kullanıyoruz. Bu makalede, IPSec VPN kurulumunu, kullanılan protokolleri ve sorun anında log takibini nasıl yapacağımız gibi konuları anlatacağım.

IPSec Tunel Kurulumu

İstanbul ve Ankara’da bulunan iki ayrı şubemizin olduğunu düşünelim. Burada çalışan blokların birbiri ile haberleşmesine ihtiyaç duyduğumuz bir senaryoda IPSec tunel’den yararlanabiliriz. IPSec tuneli, MPLS çalışma mantığında düşünebiliriz.

Firewall üzerinde VPN > IPSec Tunnels > Create New > Ipsec Tunnel ile tünel kurulumuna başlıyoruz.

Açılan pencerede bizi IPSec kurulum sihirbazı karşılıyor. Burada kullanacağımız IPSec türüne göre uygun olanı seçip kurulum sihirbazı üzerinden devam edebilirsiniz. Site-to-site vpn kurulumu için karşı uçtaki cihaz Fortigate ya da Cisco ise kurulum sihirbazından ilerleyebilirsiniz. Kişisel olarak karşı uçtan bağımsız, tüm özelliklerin listelendiği alan olan Custom özelliğinden devam edeceğim. Kurulumlar için bu alanı kullanmanızı tavsiye ederim. Ipsec tünelimize isim verdikten sonra next diyoruz.

Açılan ekranda IPSec tunelimize ait network, authentication, phase1 ve phase2 özelliklerimizi giriyoruz. IP Address ve Interface alanları haricinde bu özellikler karşı uçta da aynı olmalıdır. Önemli alanları işaretledim. Özellikler hakkında bilgi vermek gerekirse;

IP Address: Bağlantı kuracağımız uçtaki cihazın internet çıkış ip’sini girdiğimiz alandır.
Interface: Internet çıkış bacağımızın hangi interface olduğunu belirttiğimiz alandır.
Nat Traversal: Bu özelliği default olarak enable bırakmanızı öneririm. Eğer yapınızda firewall önünde router gibi bir cihaz bulunuyorsa internete çıkışlarınız natlanacağından ipsec paketlerinin sağlıklı iletişimi için bu özellik açık bulunmalıdır. Normalde ipsec paketleri UDP 500 portu üzerinden iletilir. Nat bulunduğu durumlarda paketler encapsulation ile UDP 4500 içine kapsüllenir.
Method ve Pre-shared Key: Güvenliği sağlamak için bir anahtar değeri belirliyoruz. Karmaşık bir şifre belirlemeniz güvenlik için önemli.
IKE: Yine güvenlik için versiyon 2 seçebilirsiniz.

Phase1 ayarları için encryption metodunu minimum AES256-SHA256 olarak girmenizi öneririm. Diffie-Hellman Grubu da 14 olarak ayarlayabilirsiniz. IKEv2 için seçtiğimiz için uyumlu olarak çalışacaktır. Burada yaptığımız işlemlerle ipsec üzerinden iletilen trafiklerin güvenliğini sağlıyoruz. Basit olarak anlatmam gerekirse Diffie-Hellman ile bir anahtar değeri ve encryption ile trafikleri şifreleyecek metodu belirliyoruz. Key Lifetime ile de Diffie-Hellman ile oluşturduğumuz anahtarın ne kadar süre kullanılacağını belirliyoruz. Yaygın olarak kullanılan değer 28800’dür. Belirtilen süreden sonra otomatik yeni anahtar oluşturularak iletişime devam edilecektir.

Phase2 tarafını inceleyecek olursak şifreleme olarak phase1 ile mantığı aynıdır. Burada ek olarak blok bazlı erişimleri kısıtlayabiliyoruz. Default olarak 0.0.0.0 olarak bırakırsanız tüm bloklar tunelden geçerek iletişim kurabilirler. Sadece belirli blokların haberleşmesini istiyorsak local ve remote adress alanlarını düzenlememiz gerekiyor. Tercih tamamen size kalmış.
Not: Local adres alanına ipseci kurduğunuz firewall üzerindeki adresleri girmelisiniz. Remote adres ise karşı uçta bulunan blokları belirlediğimiz alandır.

Default için;

Blok bazlı;

Haberleşecek yeni bir blok daha eklemek isterseniz onayladıktan sonra phase2 üzerinde add butonu gelecektir. Buradan aynı şekilde yeni bloklarınızı ekleyebilirsiniz.

Eğer çok sayıda blok mevcutsa phase2 alanına tek tek eklemek yerine firewall üzerinde local ve remote adresler için bir adres grubu oluşturarak düzenleme sağlayabilirsiniz. Örnek bir kullanımı aşağıda paylaşıyorum. Grubu kullanmak için subnet yerine named addresses seçeneğini kullanıyoruz.

Tüm ayarlarımızı düzenledikten sonra onaylayarak ipsec kurulumunu tamamlıyoruz.

Troubleshooting

Oluşturduğumuz tünelin ayağa kalkması için kesinlikle dikkat etmemiz gereken iki özellik bulunuyor. Bu özellikler;

  • IPSec üzerinde bulunan tüm algoritma ve ayarlar karşılıklı olarak aynı girilmelidir.
  • Firewall üzerinde kurulan tünel için gerekli route ve firewall kuralları tanımlı olmalıdır. Örneğin 10.2.2.0/24 networküne erişmek istiyorsanız bu network için ipsec’e doğru route ve firewall kuralı yazılmalıdır.

IPSec tünel durumumuzu Dashboard ekranında bulunan IPSec sayfası üzerinden takip edebilirsiniz. Eğer bu ekran mevcut değilse Dashboard > + > IPSec > Add Monitor seçeneği ile ekleyebiliyoruz.

Ekledikten sonra phase1 ve phase2 bağlantı durumunu aşağıdaki gibi görebilirsiniz. Örnek olarak burada ISTANBUL-IPSEC2 isimli phase2 bağlantımız down durumda. Bu durumda karşılıklı olarak bu phase2 için ayarları kontrol etmek gerekiyor. Bazı durumlarda ayarlar aynı olmasına rağmen up olmamakta. Bu durumunda tuneli seçerek Bring Up seçeneği ile manuel olarak tetikleyebilirsiniz.
Not: Tünel komşuluğu için önemli olan parametre phase 1’dir. Phase 1’in up olmadığı durumda phase2 ayarlarının bir önemi kalmıyor. Bu sebeple tünel kurulumlarında öncelikli amacımız phase 1 komşuluğunu düzgün bir şekilde kurmaktır.

Dashboard ekranına ek olarak tünelin down olduğu durumlarda sorunun neden kaynaklandığına dair fikir sahibi olabileceğimiz cli komutları bulunmaktadır. Firewall üzerinde sniff ya da debug açarak sorunu tespit edebiliriz. Örnek kullanımlarını aşağıda paylaşıyorum.

diagnose sniffer packet any “host 95.140.59.61 and port 500” 4 0 1

Sniff ile karşı uçta bulunan firewall ile ipsec haberleşmesi için kullanılan udp 500 paketlerinin trafik durumunu kontrol edebiliriz. Burada 95.140.59.61’in karşı uç olduğunu düşünelim. Çıktıda göründüğü gibi udp 500 paketi gönderip cevap alabiliyoruz. Dönüş paketlerinin gelmediği durumlarda sorunun karşı uçta incelenmesi gerekmektedir.

diagnose debug flow filter addr 95.140.59.61
diagnose debug flow trace start 1500
diagnose debug enable

diagnose debug reset
diagnose debug console timestamp enable
diagnose vpn ike log-filter clear
diagnose vpn ike log-filter dst-addr4 95.140.59.61
diagnose debug application ike -1
diagnose debug enable

Yukarıda paylaştığım iki farklı debug komutları ile paketlerin detaylı durumunu inceleyebilirsiniz. Burada karşılıklı olarak UDP500 paketlerini, tunel üzerinde bulunan phase1 ve phase2 ayarlarını görebiliyoruz. Debug üzerinde işaretli bölümlerden de görüleceği üzere bağlantı başarılı durumdadır.

Bağlantının başarısız olduğu örneğe ait çıktı aşağıdaki gibidir. Burada logda gördüğümüz üzere firewall üzerinde policy bulunmadığı için negotiation failure alınmaktadır.

Vakit ayırdığınız için teşekkürler.

Yorum gönder