2008 FortiGate Client-to-Site IPSec VPN with Certificates [Bu dökümanda Fortigate sisteminlerinde sertifikalı Client-to-Site IPSec VPN uygulaması ve ne şekilde uygulanabildiği anlatılmıştır.] v300-build0670-rev.01 RZK Mühendislik ve Bilgisayar Sistemleri 0
FortiGate (IPSec VPN) with Certificates Datasheet VPN Hakkında Genel Bilgi VPN (Virtual Private Network Sanal Özel Ağ) : Internet gibi halka açık telekomünikasyon altyapılarını kullanarak kullanıcıları veya uzak ofisleri organizasyonun local bilgisayar ağına güvenli bir şekilde eriştirmeyi sağlamak için geliştirilmiş sanal bilgisayar ağı yapısıdır. Yapı genel olarak, uzak ofisler içi noktadan noktaya hatlar (lease line vb.) yerine standart bağlantılar üzerinden daha düşük sahip olma maliyetleri ile aynı hizmeti sağlar, tekil kullanıcılar için ise uzaktan (herhangi bir yerden) sanki fiziksel olarak ofis içerisindeymiş gibi çalışma imkanı sağlar. VPN aynı özel ağda bulunmayan, bir veya daha fazla network cihazı arasında güvenli bir şifreleme metodu kullanılarak kapsüllenmiş veri transferi yapar. Güvenli şifreleme metodunun kullanım amacı verinin özel yada kamusal alandaki diğer netwrok cihazlarından gizlenmesidir. Sanal özel ağ (VPN), komşu ağlar arasında gizli ve özel bir bilgi akışını sağlamaya yönelik kurulur. Paketler internet üzerinden gitse dahi, tünelleme ve kullanılan güvenlik yazılımları sayesinde ağ dinlense bile şifrelenmiş paketlere saldıran kişiye elde ettiği bilgiler hiçbir anlam ifade etmeyecektir. Buradan, büyük şirketlerin kendi aralarında internetten faydalanmaksızın, özel ağ kurmalarının çoğu yerde gereksiz olduğunu düşünebilirsiniz. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 1
IPSec VPN Nedir? TCP/IP protokolü geliştirilirken güvenlik üzerinde pek fazla durulmamıştı. Çünkü TCP/IP protokolünün bu denli yoğun ve standart olarak kabul edilip kullanılacağı düşünülmemişti. Bu nedenle verilerimiz ağ üzerinde savunmasız olarak ilerler ve birçok tehlikeyle karşılaşabilirler. Bu tehlikeler verilerimizin değiştirilmesi, verilerimizin kaybolması ve verilerimizin istenilen hedeflere ulaştırılmaması olabilir. IPsec protokolü sayesinde verilerimiz ağ üzerinde güvenli bir şekilde ulaşmak istedikleri hedeflere ulaştırılır. IPsec protokolü IP protokollerinin güvenlik ihtiyaçlarını karşılamak için geliştirilmiş olan bir güvenlik protokolüdür. IP kimlik doğrulaması ve veri akışı her IP paket şifreleme ile iletişim Internet Protokolü güvenlik protokolleri bir takımdır. IPsec da oturumu sırasında kullanılmak üzere ajanları arasında oturum ve şifreleme anahtarlarının müzakere başında karşılıklı doğrulama kurmak için protokolleri içerir. IPsec barındıran bir çift arasında veri akışını korumak için kullanılan, güvenlik kapı bir çift arasında bilgisayar kullanıcıları veya sunucu gibi, yönlendiriciler veya güvenlik duvarları gibi veya bir güvenlik ağ geçidi ve ev sahibi arasında. IPSec in güvenlik mimarisini oluşturan üç temel unsur vardır: 1.Bütünlük (integrity); hedefe ulaşan verinin kaynaktan gelen veri ile aynı olup olmadığı kontrol edilir. Ağ üzerinden gönderilen mesajın gerçekten gönderilen mesaj olup olmadığını anlamak için, mesajı alan bilgisayarın hesapladığı mesaj özeti (message digest) değeri ile mesajı gönderinin ilettiği mesaj özeti değerleri karşılaştırılır. Sonuç farklıysa iletilen mesaja iletim sırasında müdahale edildiği anlaşılır. Mesajları özetlemek için MD5 ve SHA-1 algoritmaları kullanılır. 2.Kimlik doğrulama (Authentication); iletişimde bulunan her iki tarafın da birbirlerinin kimliklerinin doğrulanması için kullanılır. İletişimde bulunan bilgisayarların birbirlerinin kimliklerini doğrulamaları için aynı kimlik doğrulama metodunu kullanması gerekir. IPSec protokolünü kullanarak iletişim kuracak bilgisayarlar, kimlik doğrulama işlemi için çeşitli yöntemler kullanabilirler. Bunları şöyle sıralayabiliriz: Önpaylaşımlı anahtar (preshared key) (MS-CHAP) Kerberos (Windows tabanlı ağlar için) Sertifika yetkilisi (certificate authority) 3.Gizlilik (Confidentiality); gönderilen verinin ağ üzerinden şifrelenmiş bir şekilde iletilmesini belirtmek için kullanılır. Bu durumda, ağdaki paketler bir izleyici (sniffer) aracılığıyla yakalansalar bile içerikleri şifrelenmiş olduğu için taşınan verilerin üçüncü şahıslar tarafından okunması engellenmiş olur. Şifreleme işleminde en çok kullanılan yöntemler DES ve 3DES yöntemleridir. Bu işlemler yapılırken veri paketi farklı algoritmalarla şifrelenir. Bu işleme Encrypiton denir. Veri paketi hedefe ulaştığında şifrelenen veri paketi açılır ve kullanılabilir hale getirilir. Bu işlemede Decryption denir. IPsec çift mod end-to-end ise, İnternet Katmanı Internet Protokolü Suite Yaklaşık Katmanı 3 OSI modelde olduğu güvenlik düzeni işletim. SSL, TLS ve SSH gibi yaygın kullanımı, bazı diğer Internet güvenlik sistemleri, bu modellerin alt katmanlara faaliyet, SSL VPN bir örnek olmaktır. Çünkü trafiği korumak için kullanılabilir. Çünkü uygulama kullanımı ise IPsec kullanmak için tasarlanmış olması gerekmez. IPsec daha yığıtın bir alt düzey olarak bir at çalışma, esnek TLS / SSL veya diğer yüksek katman protokolleri bu düzeyde uygulamaların tasarım dahil olmalıdır. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 2
Microsoft CA Server IPSec VPN bağlantısında kullanacağımız sertifikaların oluşturulması ve yönetilebilmesi için öncelikle Windows 2003 Server üzerinde Microsoft CA Server kurulumunu yapmanız gerekir. Bunun için Windows 2003 Serverda aşağıdaki adımları izleyin : Start Settings Control Panel Add or Remove Programs Add\Remove Windows Components bölümüne girin. Açılan sihirbaz penceresinde listede Certificate Services seçeneğini işaretleyip Next butonuna tıklayın. Gelen ekranda Stand-alone root CA seçeneğini seçip Next butonuna tıklayın. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 3
Gelen ekranda alanları yukarıdaki örnek gibi doldurun. Certificate Database Settings penceresini de Next butonuna basarak geçiniz. Kurulum bittikten sonra gelen son pencerede Finish butonuyla kurulumu tamamlayın. Internet Explorer ile http://localhost/certsrv adresine giriniz. Bu sayfada Download a CA certificate, certificate chain, or CRL linkine tıklayın. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 4
Açılan sayfada Base64 seçeneğini seçip Download CA certificate linkine tıklayın. rootca.cer dosya ismiyle sertifikayı bilgisayarınıza kaydedin. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 5
Fortigate Ayarları System Certificates menüsünden CA Certificates bölümünde, bilgisayarınıza kaydettiğiniz rootca.cer dosyasını Import edin. Import işleminden sonra sertifika yukarıdaki gibi görünecektir. (CA_Cert_1) Local Certificates menüsünden Generate butonuna basarak alanları yukarıdaki gibi doldurun. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 6
İşlem sonrası Generate ettiğiniz sertifika PENDING olarak bekliyor olmalıdır. Bu yaratılan sertifika anahtarını FortiLocal.csr isimli dosya olarak download edin. Şimdi Microsoft CA Server sitesine http://localhost/certsrv girin. Gelen sayfada Request a certificate linkine tıklayın. Gelen sayfadan advanced certificate request linkine tıklayın. Son gelen pencerede ise Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file. linkine tıklayın. Yukarıdaki görüntüde olduğu gibi FortiLocal.csr dosyasındaki key değerini (tüm satırları) kopyalayın ve web sayfasındaki forma yapıştırın. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 7
Key satırlarını forma yapıştırdıktan sonra Submit butonuna tıklayın. Gelen sayfa yukarıdaki gibi olmalıdır. Windows 2003 Server da Start Run bölümüne mmc yazıp Enter a basın. Menüden Add/Remove Snap-in seçeneğini seçin. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 8
Açılan pencerede aşağıda Add butonua tıklayın, sağda açılan listeden Certificate Authority seçin ve Add ile sol taraf ekleyin ve Close butonuna basın. Listeden Pending Requests bölümünde az önce yarattığımız sertifika isteği bekler durumda göreceksiniz. Bunu Issue komutu ile onaylamamız gerekiyor. Sertifikaya sağ tıklayıp Issue seçiyorsunuz. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 9
Issue ettikten sonra Issued Certificates bölümünde hazır olduğunu görmelisiniz. Daha sonra http://localhost/certsrv adresine giderek View the status of a pending certificate request linkine tıklayarak, yeni sayfada oluşturulan sertifika linkini tıklayın. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 10
Gelen pencerede Base 64 encoded seçerek sertifikayı FortiLocal.cer adıyla bilgisayarınıza kaydedin. Fortigate cihazında System Certificates Local Certificates bölümünde Import butonuna basarak FortiLocal.cer dosyasını PENDING durumda olan tanımınıza yükleyin. İşlem sonrası lokal sertifika yukarıdaki gibi görünmelidir. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 11
User PKI menüsü altından PKI User tanımlamalısınız. Daha sonra bu kullanıcıyı bir User Group tanımı altında tanımlamalısınız. VPN menüsü altından IPSEC Phase1 yukarıdaki gibi olmalıdır. Buna uygun olarak ta Phase2 oluşturmalısınız. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 12
Firewall Policy menüsünden VPN kuralını yukarıdaki gibi yazmalısınız. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 13
Forticlient Ayarları VPN menüsünden CA Certificates bölümünde rootca.cer doyasını Import edin. Gelen soruya No cevabını verin. My Certificates bölümünden yeni bir sertifika key dosyası Generate edin. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 14
Generate edilen bu keyi Export ederek FortiClient.csr adıyla bilgisayarınıza kaydedin. Fortigate bölümünde anlatılan 7-11 sayfalarındaki adımları FortiLocal.csr yerine FortiClient.csr için tekrarlayın. Elde ettiğiniz FortiClient.cer dosyasını My Certificates bölümünden Import ederek sertifika işlemlerini tamamlayın. Connections menüsünden Advanced butonuna basarak Add seçeneğiyle aşağıdaki gibi yeni bir VPN Connection kurun. FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 15
Fortigate CLI Commands PKI User Commands config user peer edit "pki_user" set ca "CA_Cert_1" set subject "81.215.13.140" next end User Group Commands config user group edit "pki_group" set profile "scan" set member "pki_user" next end IPSEC Phase1 Commands config vpn ipsec phase1 edit "dialup" set type dynamic set interface "wan1" set nattraversal enable set proposal 3des-sha1 3des-md5 set authmethod rsa-signature set peertype peer set rsa-certificate "FortiLocal" set peer "pki_user" next end Firewall Policy Commands config firewall policy edit 33 set srcintf "internal" set dstintf "wan1" set srcaddr "all" set dstaddr "all" set action ipsec set schedule "always" set service "ANY" set inbound enable set outbound enable set vpntunnel "dialup" next end FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 16
Debug Commands diag debug enable diag debug application ike 255 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=identity Protection id=c7bb87a79e54e9eb/0000000000000000 len=284 0:IPSEC: new connection. 0:IPSEC:6: responder: main mode get 1st message... 0:IPSEC:6: VID DPD 0:IPSEC:6: DPD negotiated 0:IPSEC:6: unknown VID (16): AFCA071368A1F1C96B8696FC77570100 0:IPSEC:6: unknown VID (16): 6EF67E6852CF311713E50B8B005DB7B8 0:IPSEC:6: VID draft-ietf-ipsec-nat-t-ike-03 0:IPSEC:6: VID draft-ietf-ipsec-nat-t-ike-00 0:IPSEC:6: negotiation result 0:IPSEC:6: proposal id = 1: 0:IPSEC:6: protocol id = ISAKMP: 0:IPSEC:6: trans_id = KEY_IKE. 0:IPSEC:6: encapsulation = IKE/none 0:IPSEC:6: type=oakley_encrypt_alg, val=3des_cbc. 0:IPSEC:6: type=oakley_hash_alg, val=md5. 0:IPSEC:6: type=auth_method, val=rsa_sig. 0:IPSEC:6: type=oakley_group, val=1536. 0:IPSEC:6: ISKAMP SA lifetime=28800 0:IPSEC:6: selected NAT-T version: draft-ietf-ipsec-nat-t-ike-03 0:IPSEC:6: cookie c7bb87a79e54e9eb/412205af461df8cd 0:IPSEC:6: sent IKE msg (ident_r1send): 85.75.122.13:500->77.45.121.33:500, len=120 IPSEC: Responder: sent 77.45.121.33 main mode message #1 (OK) 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=identity Protection id=c7bb87a79e54e9eb/412205af461df8cd len=284 0: found IPSEC 85.75.122.13 3 -> 77.45.121.33:500 0:IPSEC:6: responder:main mode get 2nd message... 0:IPSEC:6: NAT not detected 0:IPSEC:6: sent IKE msg (ident_r2send): 85.75.122.13:500->77.45.121.33:500, len=289 0:IPSEC:6: put connection to natt list...ip=77.45.121.33. IPSEC: Responder: sent 77.45.121.33 main mode message #2 (OK) 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=identity Protection id=c7bb87a79e54e9eb/412205af461df8cd len=1516 0:IPSEC:6: responder: main mode get 3rd message... 0:IPSEC:6: building fnbam peer candidate list 0:IPSEC:6: FNBAM_GROUP_ANY candidate '' 0:IPSEC:6: fnbam reply '' 0:IPSEC:6: fnbam matched peer type any 0:IPSEC:6: certificate validation succeeded 0:IPSEC:6: signature verification succeeded 0:IPSEC:6: authentication OK 0:IPSEC: adding new dialup tunnel for 77.45.121.33:500 0:IPSEC_0: added new dialup tunnel for 77.45.121.33:500 IPSEC_0: Responder: parsed 77.45.121.33 main mode message #3 (DONE) 0:IPSEC_0:6: sent IKE msg (ident_r3send): 85.75.122.13:500->77.45.121.33:500, len=1708 IPSEC_0: Responder: sent 77.45.121.33 main mode message #3 (DONE) 0:IPSEC_0:6: ISAKMP SA established 0:IPSEC_0:6: no pending Quick-Mode negotiations 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=quick id=c7bb87a79e54e9eb/412205af461df8cd:9afeec93 len=476 0: found IPSEC_0 85.75.122.13 3 -> 77.45.121.33:500 0:IPSEC_0:6::241: responder received first quick-mode message 0:IPSEC_0:6:241: peer proposal is: peer:10.177.0.200-10.177.0.200, me:0.0.0.0-255.255.255.255, ports=0/0, protocol=0/0 0:IPSEC_0:6:241: trying Phase2 0:IPSEC_0:6:Phase2:241: matched phase2 0:IPSEC_0:6:Phase2:241: dialup 0:IPSEC_0:6:Phase2:241: negotiation result 0:IPSEC_0:6:Phase2:241: proposal id = 1: 0:IPSEC_0:6:Phase2:241: protocol id = IPSEC_ESP: 0:IPSEC_0:6:Phase2:241: trans_id = ESP_3DES 0:IPSEC_0:6:Phase2:241: encapsulation = ENCAPSULATION_MODE_TUNNEL 0:IPSEC_0:6:Phase2:241: type = AUTH_ALG, val=md5 0:IPSEC_0:6:Phase2:241: set pfs=1536 0:IPSEC_0:6:Phase2:241: using tunnel mode. 0:IPSEC_0:6: sent IKE msg (quick_r1send): 85.75.122.13:500->77.45.121.33:500, len=348 IPSEC_0: Responder: sent 77.45.121.33 quick mode message #1 (OK) 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 17
0: exchange=quick id=c7bb87a79e54e9eb/412205af461df8cd:9afeec93 len=52 0: found IPSEC_0 85.75.122.13 3 -> 77.45.121.33:500 0:IPSEC_0:6:Phase2:241: replay protection enabled 0:IPSEC_0:6:Phase2:241: set sa life soft seconds=1789. 0:IPSEC_0:6:Phase2:241: set sa life hard seconds=1800. 0:IPSEC_0:241: enable proxy ARP for 10.177.0.200 on 2 0:IPSEC_0:241: add route 10.177.0.200/255.255.255.255 oif port2(3) metric 1 priority 0 0:IPSEC_0:6:Phase2:241: add SA #src=1 #dst=1 0:IPSEC_0:6:Phase2:241: src 0 7 0.0.0.0-255.255.255.255 0:IPSEC_0:6:Phase2:241: dst 0 7 10.177.0.200-10.177.0.200 0:0:IPSEC_0: link is idle 3 85.75.122.13->77.45.121.33:500 dpd=2 seqno=1 0:IPSEC_0: link is idle 3 85.75.122.13->77.45.121.33:500 dpd=2 seqno=2 0:IPSEC_0: send DPD probe, seqno 2 0:IPSEC_0:6: sent IKE msg (R-U-THERE): 85.75.122.13:500->77.45.121.33:500, len=84 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=informational id=c7bb87a79e54e9eb/412205af461df8cd:b959fd30 len=84 0: found IPSEC_0 85.75.122.13 3 -> 77.45.121.33:500 0:IPSEC_0:6: notify msg received: R-U-THERE-ACK 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=informational id=c7bb87a79e54e9eb/412205af461df8cd:08abe115 len=68 0: found IPSEC_0 85.75.122.13 3 -> 77.45.121.33:500 0:IPSEC_0:6: recv IPsec SA delete, spi count 2 0:IPSEC_0: deleting SA with SPI 7df3023d 0:IPSEC_0: deleted SA with SPI 7df3023d, Phase2 has 0 SAs left 0:IPSEC_0: sending SNMP tunnel DOWN trap for Phase2 0:IPSEC: found phase2 Phase2 0:IPSEC_0: delete routes for Phase2 0:IPSEC_0:241: disable proxy ARP for 10.177.0.200 on 2 0:IPSEC_0:241: del route 10.177.0.200/255.255.255.255 oif port2(3) metric 1 priority 0 0:IPSEC_0: delete Phase2 0:IPSEC_0:6: send IPsec SA delete, spi 5f81371f 0:IPSEC_0:6: sent IKE msg (IPsec SA_DELETE-NOTIFY): 85.75.122.13:500->77.45.121.33:500, len=68 0:IPSEC_0: deleting SA with SPI 5f81371f 0:IPSEC_0: SA with SPI 5f81371f does not exist 0: comes 77.45.121.33:500->85.75.122.13:500,ifindex=3... 0: exchange=informational id=c7bb87a79e54e9eb/412205af461df8cd:d48e0477 len=76 0: found IPSEC_0 85.75.122.13 3 -> 77.45.121.33:500 0:IPSEC_0:6: recv ISAKMP SA delete c7bb87a79e54e9eb/412205af461df8cd 0:IPSEC_0: deleting 0:IPSEC_0: flushing 0:IPSEC_0: sending SNMP tunnel DOWN trap 0:IPSEC_0: flushed 0:IPSEC_0: delete dynamic 0:IPSEC_0: deleted 0: edit phase1 IPSEC Ek Kaynaklar : http://docs.fortinet.com/fgt/archives/3.0/techdocs/fortigate_administration_guide_01-30006-0203-20080313.pdf http://docs.fortinet.com/fgt/archives/3.0/techdocs/fortigate_cli_reference_01-30006-0015-20080311.pdf http://docs.fortinet.com/fgt/archives/3.0/techdocs/fortigate_user_authentication_user_guide_01-30006-0347-20080501.pdf RZK Mühendislik ve Bilgisayar Sistemleri 1326. Sokak (Eski 71. Sk.) No:5 / 2 06460 Öveçler Ankara / Türkiye Tel:+90 (312) 472 15 30 Fax:+90 (312) 472 15 40 FortiGate (IPSec VPN with Certificates) v300-build0670-rev.01 18