Lokasyonlar arasında ya da kullanıcılar arasında güvensiz bir ortamdan verilerinizi transfer edilirken bizim için bir tünel oluşturulmasına ve tünel içerisinden authentication,integrity ve confidentialty nin sağlandığı birer ağdır. VPN sayesinde sanal ağa bağlanan bir cihaz fiziki olarak o konumda bulunuyormuş gibi o ağın fonksiyonel, güvenlik ve yönetim özelliklerini kullanır.
Merkez sitemiz ve bunun şubeleri var ya da partnerleri var. O şube ya da partnerler üzerinden bir trafiği iletmek ve erişim sağlamak istersek internet üzerinden erişiyoruz. İnternet üzerinden erişim ise güvenli değildir. İnternet üzerinden güvenli bir şekilde iletişim kurmaya yarayan bir yapıdır.
Faydaları ise şu şekilde, Güvenirlik,Ölçeklenebilirlik,Yaygın olarak kullanılabiliyor. ve Maliyet tasarrufu da sağlıyor.
Topolojiler olarak baktığımızda site-to-site VPN diye bir Vpn var. Yani sol tarafta bir router sağ tarafda ise VPN gateway cihazımız var. Bu bir routerda olabilir. Sol tarafdaki şubeyi, sağ tarafdaki şubeye yani Site'ı diğer site'a bağlayan teknoloji olabilir.
Bu tüneller genellikle border routerlarda yapılır. Ya da resimdeki gibi vpn gateway ile
Bu router'ın arkasında olanlar işin farkında farkında değillerdir. Yani burada vpn mi gerçekleşiyor gerçekleşmiyor mu bilmiyorlardır. Çünkü olaylar tamamen bu sınır cihazlar üzerinde yapılır.
Diğer bir VPN türü ise Remote Access orada da yine biz kurumsal mobil çalışanız,evimizden çalışıyoruz veya iş itibari ile lokasyon değiştirdik. Güvensiz ortamlardan, güvenli olan ağımıza bağlanma ihtiyacı isteriz. Dolayısıyla bir router konfigurasyonu yapamazsınız. Client üzerinden işlem yapmamız gerekiyor. Yani Client bu VPN bağlantısını başlatır.
Remote Acces VPN'lerde genel itibariyle 2 tür vardır. Clientless yani herhangi bir client yazılımın kurmadığı. Bir browser üzerinden yapabildiğimiz SSL üzerinden yaptığımız VPN türüdür.
Bir diğeride yazılım üzerinden merkezimize bağlandığımız ve bizim için bir VPN tüneli oluşturulduğu transferimizin,veri akışımızın bu tünel içerisinden gerçekleştirdiğimiz kısmı ifade ediyor.
SSL VPN, Authentication süreçleri dijital sertifikalar ile yapıldığı bir mantık diğer bir yapı ise IPsec, IP'nin güvenliğini sağlayan bir mimari bir framework
Site-to-Site Vpnlerde IPsec tüneli burada oluşturuluyor. IPsec tüneli üzerinden bizim sınır cihazımızda yapılandırmalardan arka taraftaki kullanıcılar habersizdir. Kaynak ile hedef arasında VPN tünelleri kurabiliriz.
IP yapı itibari ile güvensizdir. Onu güvenli hale getirmişler IPSec de buradan geliyor. IPnin güvenliğini sağlayan bir framework.
IPsec çerçevesini kullanan IPsec, şu temel güvenlik işlevlerini sağlar:
•Gizlilik - IPsec, siber suçluların önlemek amacıyla paket içeriğini okumasını önlemek için şifreleme algoritmaları kullanır. DES, 3DES,AES,SEAL
•Bütünlük - IPsec, paketlerin kaynak ve hedef arasında değiştirilmediğinden emin olmak için hashing algoritmaları kullanır. MD5,SHA
•Kimlik doğrulaması - IPsec, kaynak ve hedefin kimliğini doğrulamak için İnternet Anahtar Değişimi (IKE) protokolünü kullanır.
Pre-Shared Key(passwords), dijital sertifikalar veya RSA sertifikaları dahil olmak üzere kimlik doğrulama yöntemleri.
•Diffie-Hellman - Tipik olarak çeşitli DH algoritması gruplarını kullanarak güvenli anahtar değişimi.
IPsec de karşımıza 2 tane protokol çıkıyor birisi AH ve diğeri ise ESP bunların birbirlerine göre şöyle farklılıkları var. AH, Confidentially desteklemiyor. Yani AH protokolünü kullanacaksanız eğer Kriptolama yapamazsınız. ESP kullanacaksanız o zaman kriptolama yapabiliyorsunuz .İkisinin beraber kullanımı çok yaygın değil.
Authentication Header
AH (Authentication Header) Bütün paketlere uygulanırken, paketin başlık bilgisi ile ilgili herhangi bir değişiklik yapmıyor. Paketin başlık bilgisi aynı kalıyor. ESP ise bütün paketi komple şifrelemiş oluyor. Başına tekrardan IP header eklenmiş oluyor. Tıpkı GRE tünelleri gibi.
ISP(config)#int se0/3/0
ISP(config-if)#ip add 78.1.1.2 255.255.255.0
ISP(config-if)#no shutdown
%LINK-5-CHANGED: Interface Serial0/3/0, changed state to down
ISP(config-if)#int se0/3/1
ISP(config-if)#ip add 88.1.1.2 255.255.255.0
ISP(config-if)#no shutdown
%LINK-5-CHANGED: Interface Serial0/3/1, changed state to down
R1(config)#int se0/1/0
R1(config-if)#ip add 78.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#int gig0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#ip dhcp pool R1
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
R1(dhcp-config)#default-router 192.168.1.1
//Benim için herkes 78.1.1.2 üzerinden erişilebilirdir.
R1(config)#ip route 0.0.0.0 0.0.0.0 78.1.1.2
R2(config)#int se0/3/0
R2(config-if)#ip add 88.1.1.1 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#ip add 192.168.2.1 255.255.255.0
R2(config-if)#no shutdown
R2(config)#ip dhcp pool R2
R2(dhcp-config)#network 192.168.2.0 255.255.255.0
R2(dhcp-config)#default-router 192.168.2.1
R2(dhcp-config)#exit
R2(config)#ip route 0.0.0.0 0.0.0.0 88.1.1.2 //herkes erişebilir.
ISP'de routing olmadığı için PCler birbirleri ile haberleşemiyecek. ISP router'ı 1.0 ve 2.0 ağını tanımıyor. Buraya tünek yaparak bunu geçebiliriz. GRE tüneli (Generic Routing Encapsulation) denilen bir tünel. Yani sanki R1 router ile R2 router arasında bir bağlantı varmış gibi düşüneceğiz ve tünel kuracağız.
//Sanal bir interface açtım.
R1(config)#interface tunnel 0
//Tünelin Modu Gre Ip
//Ip başlık yapısının başına tekrardan bir IP başlık paketi eklemektir. GRE
R1(config-if)#tunnel mode gre ?
ip over IP
R1(config-if)#tunnel mode gre ip
R1(config-if)#tunnel source serial 0/1/0
//Tünelin kaynağı bu interface
R1(config-if)#tunnel destination 88.1.1.1
//Tünelin biteceği yer 88.1.1.1 ip adresine sahip yer.
Ardından ip adresi vereceğim.
R1(config-if)#ip add 10.1.2.1 255.255.255.0
// Yani tünele bir interface varmış gibi ip adresi verdim
Aynı şeyleri R2'de de yapacağım.
R2(config)#int tunnel 0
R2(config-if)#ip add 10.1.2.2 255.255.255.0
R2(config-if)#tunnel mode gre ip
R2(config-if)#tunnel source serial 0/3/0
R2(config-if)#tunnel destination 78.1.1.1
C:\>ping 192.168.2.2
Pinging 192.168.2.2 with 32 bytes of data:
Request timed out.
Yine ping atamıyoruz. Çünkü bizim Routerımız ISP üzerinden ama bizim rotamız
tünnel üzerinden dememiz gerekiyor.
R1(config)#ip route 192.168.2.0 255.255.255.0 10.1.2.2
//192.168.2.0 ağa erişmenin yolu 10.1.2.2 üzerinden gitmekterdir diyip tünele
yönlendirirsek R2'ye de aynı mantıkla yazarsak
R2(config)#ip route 192.168.1.0 255.255.255.0 10.1.2.1
Hedef ip adresimi 192.168.2.2 ve eşleştiği yere neresiyse oraya gönderecek. 10.1.2.2'ye.
Routera girersek ve çıkarken ip adresleri şu şekilde.
Aslında header başına bir tane daha header eklemiş oluyorum. Aslında 192.168.1.2den 2.2 ye gidiyor.
Yani ip headerına yeni bir ip header eklemiş oluyorum. Bu paket ISP'ye geldiğinde ISP 78.1.1.1den gelip 88.1.1.1' e giden paket görür. ISP 88'li networke yönlendirebilir bunda bir sakınca yoktur. Çünkü bildiği bir networktür.
Dolayısıyla karşı tarafa gelir. Karşı tarafa geldiğinde, karşı taraf paketi açtığında aslında paketin içerisinde bir GRE başlık bilgisi olduğunu görüp , bir header içerisinde başka bir header olduğunu görüp 192.168.1.2 den 2.2 ye giden bir mesaj olduğunu görür.
R2 dış başlık bilgisini söker atar ve paketi doğru yere yönlendirmiş olur. Paket ISP'de 1 defa açılıyor Routerda 2 defa açılmış oluyor.
Buradaki risk GRE paketlerinin kriptolanmadan gitmesidir.
IKE Protokol
IPSec'e bir takım özellikler ekleyen ve konfigurasyonu basitleştiren bir protokol aslında. ISAKMP (Internet Security Association Key Management ) denilen yapıyı kullanıyor. UDP 500 nolu portu kullanıyor. Site-to-Site yapıda soldaki router ile sağdaki router arasında uzlaşı sağlıyor. Sağdaki router ne destekliyor soldaki router ne destekliyor bunlar arasında negotation sağlıyor.
Site-To-Site VPN Konfigurasyonu
R1 router üzerinde
R1#sh run
Building configuration...
Current configuration : 1262 bytes
!
version 15.1
no service timestamps log datetime msec
no service timestamps debug datetime msec
service password-encryption
!
hostname R1
!
!
!
enable secret 5 $1$mERr$TfFTxE.mmb5O5BVC56ndL0 //ciscoenpa55
!
!
!
!
!
!
no ip cef
no ipv6 cef
!
!
!
username SSHadmin privilege 15 secret 5 $1$mERr$OBJ1/J.XbT5.JhwNHVc7p/
!
!
license udi pid CISCO1941/K9 sn FTX1524F8G8
!
!
!
!
!
!
!
!
!
ip ssh version 2
ip domain-name ccnasecurity.com
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface GigabitEthernet0/0
no ip address
duplex auto
speed auto
shutdown
!
interface GigabitEthernet0/1
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface Serial0/0/0
ip address 10.1.1.2 255.255.255.252
clock rate 128000
!
interface Serial0/0/1
no ip address
clock rate 2000000
shutdown
!
interface Vlan1
no ip address
shutdown
!
router ospf 101
log-adjacency-changes
network 10.1.1.0 0.0.0.3 area 0
network 192.168.1.0 0.0.0.255 area 0
!
ip classless
!
ip flow-export version 9
!
!
!
banner motd ^C
************ AUTHORIZED ACCESS ONLY *************
UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED.
^C
!
!
!
!
!
logging trap debugging
line con 0
password 7 0822455D0A1606181C1B0D517F //ciscoconpa55
login
!
line aux 0
!
line vty 0 4
login local
transport input ssh
!
!
!
end
Bu kısımlara göre Phase 1-2 oluşturacağım.
//Lisansı aktif ettik.
R1(config)#license boot module c1900 technology-package securityk9
R1(config)#wr
R1(config)#do reload
//Ipsec yapacagımız trafik tanımladık
R1(config)#access-list 110 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
R1(config)#crypto isakmp policy 10
R1(config-isakmp)#encryption aes 256
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group ?
1 Diffie-Hellman group 1
2 Diffie-Hellman group 2
5 Diffie-Hellman group 5
R1(config-isakmp)#group 5
R1(config-isakmp)#exit
R1(config)#crypto ?
dynamic-map Specify a dynamic crypto map template
ipsec Configure IPSEC policy
isakmp Configure ISAKMP policy
key Long term key operations
map Enter a crypto map
R1(config)#crypto isakmp key vpnpa55 address 10.2.2.2
Phase 1 ile ilgili ayarları yaptım eğer policy destekliyorsa Phase 2 ile ilgi
ayarlar yapacağım.
Phase 2 aşamasında da biz Ipsec ile ilgili kısımları yazacaktık.
R1(config)#crypto ipsec transform-set VPN-SET ?
ah-md5-hmac AH-HMAC-MD5 transform
ah-sha-hmac AH-HMAC-SHA transform
esp-3des ESP transform using 3DES(EDE) cipher (168 bits)
esp-aes ESP transform using AES cipher
esp-des ESP transform using DES cipher (56 bits)
esp-md5-hmac ESP transform using HMAC-MD5 auth
esp-sha-hmac ESP transform using HMAC-SHA auth
R1(config)#crypto ipsec transform-set VPN-SET esp-aes esp-sha-hmac
R1(config)#crypto map VPN-MAP 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R1(config-crypto-map)#description VPN connection to R3
R1(config-crypto-map)#set peer 10.2.2.2
R1(config-crypto-map)#set transform-set VPN-SET
R1(config-crypto-map)#match address 110
R1(config-crypto-map)#exit
R1(config)#int s0/0/0
R1(config-if)#crypto map VPN-MAP
*Jan 3 07:16:26.785: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R3#conf t
R3(config)#access-list 110 permit ip 192.168.3.0 0.0.0.255 192.168.1.0 0.0.0.255
R3(config)#crypto isakmp policy 10
R3(config-isakmp)#encryption aes 256
R3(config-isakmp)#authentication pre-share
R3(config-isakmp)#group 5
R3(config-isakmp)#exit
R3(config)#crypto isakmp key vpnpa55 address 10.1.1.2
R3(config)#crypto map VPN-MAP 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R3(config-crypto-map)#description VPN connection to R1
R3(config-crypto-map)#set peer 10.1.1.2
R3(config-crypto-map)#set transform-set VPN-SET
ERROR: transform set with tag VPN-SET does not exist.
R3(config-crypto-map)#match address 110
R3(config-crypto-map)#exit
R3(config)#int s0/0/1
R3(config-if)#crypto map VPN-MAP
*Jan 3 07:16:26.785: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R3(config-if)#
NAT söyle çalışır. Senin private ip adresin var. Eriştiğin sunucunun Real ip adresi var. Hedef ip adresi Real ip adresi olacak. Ama iki taraf da private adresi ise haberleşemezler. 2 private ip adresinin internet üzerinden haberleşmesi için tünel yapmamız gerekiyor.