Wednesday, July 25, 2012

Cisco Yönlendiricilerde IPSec VPN Konfigürasyonu

Selamlar bu yaızmızda Cisco marka yönlendiricilerde IPSec VPN konfigürasyonunun nasıl yapılacağını anlatmaya çalışacağız.

Konfigürasyonları aşağıdaki topolojiye göre yapacağız:

Amacımız ANKARA yönlendiricisine bağlı olan 172.30.4.0/24 ağından TRABZON yönlendiricisine bağlı olan 192.168.1.0/24 ağına yapılacak erişimlerin şifreli gitmesi. Bunu da Cisco marka yönlendiriciler üzerinde IPSec VPN yaparak sağlamaya çalışacağız.

IPSec VPN konfigürasyonu dört adımda gerçekleştirilir:

1) IKE (Internet Key Exchange) 1. Faz parametrelerinin belirlenmesi
2) IKE (Internet Key Exchange) 2. Faz parametrelerinin belirlenmesi
3) "interesting traffic" tanımının yapılması
4) "crypto map" oluşturulması ve bunun yönlendiricide bir ara yüze uygulanması.

Yukarıdaki adımlar IPSec VPN yapacak olan her iki yönlendiricide aynı şekilde tanımlandığı takdirde IPSec VPN tüneli kurulmuş olur. Şifreli iletişimin gerçekleştirilebilmesi için her iki yönlendiricinin VPN ayarlarının bire bir aynı olması gerekir.

Önce ANKARA yönlendiricisinde IKE 1. Faz için gerekli olan parametreleri girmekle konfigürasyona başlayalım. Bunun için ANKARA yönlendiricisinde bir politika tanımlamakla işe başlıyoruz. Politikamıza 61 numarasını veriyoruz:

ANKARA(config)#crypto isakmp policy 61

Şimdi hangi kimlik doğrulama mekanizmasını kullanacağımızı politikamızın içine yazıyoruz. Bu konfigürasyonda her iki tarafın bileceği statik bir şifre kullanılacak şekilde konfigürasyonumuzu yapıyoruz:

ANKARA(config-isakmp)#authentication pre-share

Sonraki adımda hangi "hash" fonksiyonunu kullanacağımızı politikanın içerisinde yazıyoruz.

ANKARA(config-isakmp)#hash sha

Yukarıdaki örnekte "sha" algoritmasını kullanacağımızı belirttik. Buna alternatif olarak "md5" algoritmasınıda kullanabilirdik.

Bir sonraki adımda kullanacağımız şifreleme algoritmasını seçeceğiz.

ANKARA(config-isakmp)#encryption 3des

Yukarıdaki örnekte "3des" şifreleme algoritmasını tercih ettik. Buradaki alternatiflerimiz "aes" ya da "des" olabilirdi.

IKE 1. Faz'ın son adımı olarak Diffie-Hellman grubunu seçeceğiz ve şifrelerin geçerlilik süresini tanımlayacağız.

ANKARA(config-isakmp)#group 2
ANKARA(config-isakmp)#lifetime 28800  (24 saat)

Buna göre IKE 1. Faz konfigürasyonumuz aşağıdaki gibi oldu:
ANKARA(config)#crypto isakmp policy 61
ANKARA(config-isakmp)#authentication pre-share
ANKARA(config-isakmp)#hash sha
ANKARA(config-isakmp)#encryption 3des
ANKARA(config-isakmp)#group 2
ANKARA(config-isakmp)#lifetime 28800 

Burada yaptığımız işi şöyle özetleyelim: ANKARA yönlendiricisine bir adet VPN politikası tanımı yaptık. Bu politika kullanıldığı zaman geçerli olacak olan kimlik doğrulama ve "hash" alma yöntemlerini, şifreleme algoritmasını ve Diffie-Hellman gruplarını tanımladık. (pre-shared key, SHA, 3DES ve Grup 2)

Kimlik doğrulama mekanizması olarak "preshared key" seçeneğini seçmiştik. Bu da her iki yönlendiriciye ortak bir şifre tanımı yapmamızı gerektiriyor. IKE 1. Faz'ın son adımında konfigürasyona ortak bir şifre gireceğiz.


ANKARA(config)#crypto isakmp key mytooStrongKEy!* address 130.13.140.130

Konfigürasyonun show run çıktısı aşağıdaki gibi olacaktır:
crypto isakmp policy 61
       encr 3des
       authentication pre-share
      group 2

Bu konfigürasyon satırına yazmış olduğumuz adres IPSec VPN yapacağımız yönlendiricinin adresidir.

Böylece IKE 1. Faz'da ISAKMP politikasını tanımlayarak konfigürasyonu tamamlanmış olduk. Şimdi IKE 2. Faz'ın parametrelerini gireceğiz.

IKE 2. Faz'a "IPSec negotiation" fazı da denir. Bu fazda "IPSec transform set"i tanımlayacağız.

ANKARA(config)#crypto ipsec transform-set MY_TRANSFORM_SET esp-aes 128 esp-sha-mac

Burada IPSec için hangi şifreleme ve "hash" algoritmasını kullandığımız tanımladık. Yukarıdaki satırda IPSec için 128-bitlik AES şifreleme algoritmasını ve ESP-SHA-HMAC "hash" algoritmasını kullanacağımızı tanımladık.

IKE 2. Faz verinin nasıl şifreleneceğini ve "hash"inin nasıl alınacağını tanımlar. IKE 1. Faz'daki tanımlar da yönetim trafiğinin nasıl şifreleneceğini ve "hash"inin nasıl alınacağına dairdir.

IKE 2. Faz tanımı bu kadardır.

Şimdi de "interesting traffic" tanımını yapmamız gerekiyor. Bunun için bir erişim kontrol listesi (ACL: access control list) kullanacağız. "interesting traffic" IPSec VPN tünelinin kurulması için gerekli olan trafiktir. Bu senaryoda ANKARA yönlendiricisi için 172.30.1.0/24 ağından 192.168.1.0/24 ağına giden trafik "interesting traffic" olarak tanımlanacaktır. (TRABZON yönlendiricisi için tam tersi olacak.) Yani ANKARA yönlendiricisi 172.30.1.0/24 ağından 192.168.1.0/24 ağına giden bir trafikle karşılaştığı zaman bu trafiği IPSec VPN tüneline sokacaktır.

Şimdi bu tanımı yapalım:

ANKARA(config)#ip access-list INTERESTING_TRAFFIC
ANKARA(config-ext-nacl)#permit ip 172.30.1.0 0.0.0.255 192.168.1.0 0.0.0.255

Bu tanıma göre ANKARA yönlendiricisi 172.30.1.0/24 ağından 192.168.1.0/24 ağına bir trafik yakaladığı takdirde bu trafiği IPSec VPN tüneline sokacaktır.

Bu IPSec VPN politikalarının yönlendiricinin bir ara yüzüne uygulanması gerekmektedir. Fakat bundan önce yönlendiriciye bir "crypto map" tanımı girmemiz gerekiyor. Bu tanımda IPSec VPN yaparken hangi IP adresiyle VPN tüneli kurulacağı, hangi trafiğin tüneli tetikleyeceği ve hangi "transform set"inin kullanılacağı yer alacak.


ANKARA(config)#crypto map ANKARA_to_TRABZON 61 ipsec-isakmp
ANKARA(config-crypto-mapl)#set peer 130.13.140.130 (IPSec VPN yapılacak yönlendiricinin IP adresi)
ANKARA(config-crypto-mapl)#match address INTERETSING_TRAFFIC (VPN tünelini tetikleyecek trafik)
ANKARA(config-crypto-mapl)#transform-set MY_TRANSFORM_SET (VPN tünelinde kullanılacak şifreleme ve "hash" algoritması)

Tüm bu tanımlardan sonra yukarıdaki "crypto map"i ANKARA yönlendiricisinin bir ara yüzüne (tercihen internete çıkan ara yüzüne) uygulamamız gerekiyor.


ANKARA(config)#interface serial 0/1
ANKARA(config-if)#crypto map ANKARA_to_TRABZON

Böylece ANKARA yönlendiricisi üzerindeki IPSec VPN tanımlarını tamamlamış olduk. Tanımlarda yer alan IPSec VPN parametreleri aynı olacak şekilde TRABZON yönlendiricisine de benzer tanımların girilmesi gerekmektedir.

Aşağıda IPSec VPN tünelinin kurulabilmesi için TRABZON yönlendiricisinde olması gereken konfigürasyon satırları yer almaktadır. (Bu yazının konusu olmadığı için bu konfigürasyonda her iki yönlendiriciye yön (routing) tanımlarının nasıl girileceğini göstermedik. Yön tanımları doğru olmadığı takdirde iki yönlendirici arasında herhangi bir tünel kurulması mümkün olmayacaktır.)


TRABZON(config)#crypto isakmp policy 61
TRABZON(config-isakmp)#authentication pre-share
TRABZON(config-isakmp)#hash sha
TRABZON(config-isakmp)#encryption 3des
TRABZON(config-isakmp)#group 2
TRABZON(config-isakmp)#lifetime 28800
TRABZON(config-isakmp)#exit
TRABZON(config)#crypto isakmp key mytooStrongKEy!* address 130.13.140.129
TRABZON(config)#ip access-list INTERESTING_TRAFFIC
TRABZON(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 172.30.1.0 0.0.0.255
TRABZON(config-isakmp)#exit
TRABZON(config)#crypto map TRABZON_to_ANKARA 61 ipsec-isakmp
TRABZON(config-crypto-mapl)#set peer 130.13.140.129
TRABZON(config-crypto-mapl)#match address INTERETSING_TRAFFIC 
TRABZON(config-crypto-mapl)#transform-set MY_TRANSFORM_SET 
TRABZON(config-isakmp)#exit
TRABZON(config)#interface serial 0/1
TRABZON(config-if)#crypto map TRABZON_to_ANKARA

Thursday, June 28, 2012

Policy Map NAT

Bu yazımızda yine bir NAT konfigürasyonu yapmaya çalışacağız. Ama NAT konfigürasyonunu "route-map" kullanarak yapmaya çalışacağız.

Ağ toplojimiz aşağıdaki gibi olacak:


Buradaki senaryodaki amacımız; ANKARA yönlendiricisine bağlı olan 112.1.1.0/24 ağından TRABZON yönlendiricisine bağlı olan 88.90.76.0/24 ağına giden paketlerin 61.61.61.57 ve 61.61.61.58 adreslerinden birisine dönüşmelerini sağlamak olacaktır.

NAT ayarlarımızı ANKARA yönlendiricisi üzerinde yapacağız.

Öncelikle hangi IP adreslerine NAT dönüşümü yapılacağını bir erişim kontrol listesi (access-list) yazarak belirleyeceğiz:

ANKARA(config)#access-list 161 permit ip 112.1.1.0 0.0.0.255 88.90.76.0 0.0.0.255

Bu erişim kontrol listesi 112.1.1.0/24 ağından 88.90.76.0/24 ağına gidecek paketleri kapsamaktadır.

Bundan sonra bu erişim kontrol listesini kullanacak olan "route-map"i yazacağız:

ANKARA(config)#route-map NAT_WITH_ROUTE_MAP permit 10

ANKARA(config-route-map)#match ip address 161


Yukarıdaki konfigürasyon satırlarında NAT_WITH_ROUTE_MAP adını verdiğimiz "route-map"i 161 numaralı erişim kontrol listesiyle ilişkilendirmiş olduk.

Şimdi de NAT havuzumuzu tanımlayacağız. Yani NAT dönüşümü yapmayı planladığımız IP adreslerinin hangi IP adreslerine dönüşeceklerini belirleyeceğiz:

ANKARA(config)#ip nat pool NAT-HAVUZU_1 61.61.61.57 61.61.61.58


Şimdi de NAT dönüşümü yapılacak IP adreslerini bu havuzla ilişkilendireceğiz:

ANKARA(config#ip nat inside source route-map NAT_WITH_ROUTE_MAP pool NAT_HAVUZU_1


Bu konfigürasyon satırında denilmek istenen şudur: NAT_WITH_ROUTE_MAP "route-map"ine bak ve bu "route-map" ile ilişkilendirilen IP adreslerine NAT_HAVUZU_1 diye isimlendirilen IP adresi havuzundan IP adresi vererek NAT dönüşümünü sağla.

Şimdi tersten giderek ne denmek istendiğini biraz daha açıklamaya çalışalım: NAT_WITH_ROUTE_MAP diye isimlendirdiğimiz "route-map" 161 numaralı erişim kontrol listesiyle ilişkilendirilmiştir. Yani kaynak adresinde 112.1.1.0/24 ağı ve hedef adresine de 88.90.76.0/24 adresi olan IP paketlerine NAT_HAVUZU_1'de tanımlanan 61.61.61.57 ya da 61.61.61.58 IP adreslerinden birisi verilecektir. Yukarıdaki konfigürasyonlarla anlatılmak istenen budur.

Şimdi NAT tanımlarımız hazır fakat bunu yönlendiriciye de anlatmak gerekiyor. Bunun için yönlendiricinin hangi ara yüzüne NAT dönüşümü yapılacağı ve bunların da hangi ara yüzden dönüşerek çıkacaklarını tanımlayacağız.

NAT dönüşümünün yapılacağı ağa bağlı olan arayüze "inside" denir. Burada ANKARA yönlendiricisine bağlı olan FastEthernet0/1 (Fa0/1) ara yüzü "inside" olacaktır. Çünkü bu ara yüze bağlı olan 112.1.1.0/24 ağındaki IP adreslerini değiştirmeyi hedefliyoruz.

ANKARA(config)#interface FastEthernet 0/1
ANKARA(config-if)#ip nat inside


Paketlerin IP dönüşümü (NAT) yapılarak çıkaacğı arayüzü de "outside" olarak tanımlayacağız. Burada ANKARA yönlendiricisine bağlı olan Serial 0/1/0 arayüzü "outside" arayüzü olacaktır.

ANKARA(config)#interface Serial 0/1/0
ANKARA(config-if)#ip nat outside

ANKARA yönlendiricisine bağlı olan 112.1.1.0/24 ağının 88.90.76.0/24 ağına erişebilmesi için gerekli olan statik yönlendirme tanımları aşağıdaki gibi olacaktır:

ANKARA(config#ip route 88.90.76.0 255.255.255.0 61.61.61.62


Paketlerin geri dönebilmeleri için de TRABZON yönlendiricisine aşağıdaki yönlendirme tanımının yapılması gerekecektir:

TRABZON(config#ip route 112.1.1.0 255.255.255.0 61.61.61.61


ANKARA yönlendiricisinin konfigürasyonu aşağıdaki gibi olacaktır:

ANKARA Yönlendiricisi


ip nat pool NAT-HAVUZU_1 61.61.61.57 61.61.61.58
ip nat inside source route-map NAT_WITH_ROUTE_MAP pool NAT_HAVUZU_1
!
interface FastEthernet 0/1
ip address 112.1.1.1 255.255.255.0
ip nat inside
!
interface Serial 0/1/0
ip address 61.61.61.611 255.255.255.248
ip nat outside
!
access-list 161 permit ip 112.1.1.0 0.0.0.255 88.90.76.0 0.0.0.255
!
route-map NAT_WITH_ROUTE_MAP permit 10
       match ip address 161


Bu şekilde "route-map" kullanarak NAT dönüşümü yapmış olduk.