IPsec که مخفف عبارت Internet Protocol Security است، یک مجموعه پروتکل برای ایمن کردن ارتباطات پروتکل اینترنت (IP) میباشد که برای این منظور از احراز هویت و همچنین رمزنگاری بستههایIP مربوط به یک نشست استفاده میکند.
این سرویس شامل تعدادی پروتکل برای احراز هویت دو طرفه بین سیستم ها در زمان شروع ارتباط، و انتقال کلیدهای رمزنگاری که در طی ارتباط استفاده میشوند، میباشد.
برای راهاندازیVPN بین دو سیستم از IPsec استفاده میکنیم.
برای ایجاد ارتباط امن در یک شبکه میتوان از ابزارهای مختلفی نظیرSSL ، TLS و یاSSH استفاده نمود، ولی از آنجاییکه این ابزارها در مدل TCP/IP در لایه بالاتر عمل میکنند، لازم است نرم افزاری که میخواهد از این ابزارها استفاده کند، برای این منظور طراحی شده باشد. بر خلاف این موارد، IPsec از تمام ترافیک عبوری بر روی شبکه IP محافظت میکند و نیازی نیست که برنامه کاربردی که نیاز به ارتباط ایمن دارد، برای این منظور طراحی مجدد شود.
IPsec برای انجام عملیات مختلف از پروتکلهای زیر استفاده میکند:
- AH – Authentication Headers : وظیفه این پروتکل تضمین درستی دادهها در یک اتصال بدون ارتباط (Connectionless) و احراز هویت منبع داده برای IP datagram و همچنین محافظت در برابر pمله Replay میباشد.
- ESP – Encapsulating Security Payloads : وظیفه این پروتکل تضمین محرمانه بودن، احراز هویت منبع داده، درستی اتصال در حالت بدون ارتباط (connectionless) و سرویسanti-replay میباشد.
- SA – Security Associations : وظیفه این پروتکل تدارک مجموعه ای از الگوریتم ها و داده است که پارامتر های مورد نیاز برای انجام عملیات AH و ESP را شامل میشود. این پروتکل از ISAKMP – Internet Security Association and Key Management Protocol که شامل یک چارچوب برای تصدیق هویت و تبادل کلید است استفاده میکند.
1-8-5. راه اندازی سرویس IPSec بین دو مسیریاب
برای راه اندازی سرویس IPsec بین دو مسیریاب، باید در هر کدام از این دو مسیریاب، تنظیماتی اعمال شود. تنظیم پارامترهای ارتباطی IPsec در سطح پیکربندی سراسری انجام میشود.
در زیر دستورات مربوط به راه اندازی سرویس IPsec توضیح داده شده است.
تعریف ISAKMP Policy :
1 |
ZHARF(config)# crypto isakmp policy number |
در این دستور شماره ای که درج میشود در واقع مقدار اولویت protection suite است که میتواند عددی بین 1 تا 10000 باشد
با اعمال این دستور روتر وارد سطح پیکربندی isakmp policy شده و آماده دریافت دستورات کاربر میباشد
1 |
ZHARF(config-isakmp)# |
دستورات مهم در سطح پیکربندی isakmp Policy:
- authentication
با استفاده از این دستور می توان نوع احراز هویت IPSec را تعیین کرد. در حال حاضر مسیریاب ژرف فقط از یک روش پشتیبانی می کند.
1 |
ZHARF(config-isakmp)# authentication pre-share |
- Encryption
الگوریتم رمزنگاری در فاز اول IPsec یا همان تبادل اطلاعات کلیدها مشخص می نماید.
1 |
ZHARF(config-isakmp)# encryption { 3des | aes | blowfish | camellia | des } |
- group
تنظیم گروه Diffie-Hellman برای policy مورد نظر
1 |
ZHARF(config-isakmp)# group { 1 | 2 | 5 } |
- hash
الگوریتم احراز هویت را در فاز اول IPsec یا همان تبادل اطلاعات کلیدها مشخص می نماید.
1 |
ZHARF(config-isakmp)# hash { MD5 | sha1 | sha256 | sha382 | sha512 } |
- lifetime
تعیین زمان بر حسب ثانیه انقضا برای ISAKMP-SA
1 |
ZHARF(config-isakmp)# lifetime <60-86400> |
تعریف ISAKMP key
با استفاده از این دستور میتوانیم pre-share key مورد نظر را برای مسیریاب راه دور مشخص کرد
1 |
ZHARF(config)# crypto isakmp key password address ip-address |
در این دستور مقدار کلید یا همان رمزعبور برای احراز هویت مسیریاب راه دور تعیین میشود. این کلید توسط هر دو مسیریاب در IPsec باید استفاده و تعریف شود. در ادامه دستور آدرس IP مسیریاب راه دور درج میشود
تعریف IPsec transform-set
1 |
ZHARF(config)# crypto ipsec transform-set name { ah-md5-hmac | ah-sha-hmac | ah-sha256-hmac | ah-sha284-hmac | ah-sha512-hmac | esp-3des | esp-aes | esp-blowfish | esp-camellia | esp-des | esp-md5-hmac |esp-sha-hmac | esp-sha256-hamc | esp-sha384-hamc | esp-sha512-hmac } [ transform-set-2 ] [ transform-set-3 ] |
name :نامی انتخابی برای transform-set تعریف شده
با استفاده از این دستور می Transform set ها را برای IPSec مشخص میکنیم. همچنین در این مرحله الگوریتم رمز نگاری و الگوریتم احراز هویت در فاز دوم IPSec مشخص می شود
با اجرای این دستور خط فرمان وارد سطح پیکربندی جدید می شود:
1 |
ZHARF(cfg-crypto-trans)# |
دستوراتی که در این سطح قرار دارند عبارتند از:
mode: با استفاده از این دستور می توان نوع تبادل اطلاعات را مشخصی کرد.
1 |
ZHARF(cfg-crypto-trans)#mode { tunnel | transport } |
تعریف IPsec Profile
1 |
ZHARF(config)# crypto ipsec profile name |
با اجرای دستور بالا روتر وارد سطح پیکربندی ipsec profile شده و آماده ثبت تعریف کاربر از ipsec profile می باشد.
دستوراتی که در این سطح پیکربندی وجود دارند عبارتند از:
set pfs :ثبت گروه Diffie-Hellman برای profile مورد نظر
1 |
ZHARF(config-ipsec)# set pfs{ group1 | group2 | group5 } |
set security-association : تعیین زمان انقضا برای IPsec-SA
1 |
ZHARF(config-ipsec)# set security-association lifetime seconds <120-86400> |
set transform-set : به وسیله ی این دستور می توانید transform-set که قبلا پیکربندی شده است را به پروفایل جاری ضمیمه کنید.
1 |
ZHARF(config-ipsec)# set transform-set name |
و در نهایت با اعمال پروفایل IPsec ساخت شده در Tunnel، ترافیک های Tunnel مورد نظر با استفاده از Ipsec محافظت و رمز نگاری می شود.
برای اینکار نیاز است وارد سطح پیکربندی اینترفیس tunnel شده و دستور زیر را اجرا کنید:
1 |
ZHARF(config-if)# tunnel protection ipsec profile name |
name :نام پروفایل IPSec
1-4-4. راه اندازی سرویس IPSec Site-to-Site بین دو مسیریاب
برای راه اندازی سرویس IPsec بین دو مسیریاب، باید در هر کدام از این دو مسیریاب، تنظیماتی اعمال شود.
برای تنظیم پارامترهای ارتباطی IPsec، از طریق سطح پیکربندی سراسری استفاده میشود.
در زیر دستورات مربوط به راه اندازی سرویس IPsec توضیح داده شده است.
تعریف ISAKMP Policy :
1 |
ZHARF(config)#crypto isakmp policy number |
number: شماره policy تعریف شده
با اجرای این دستور روتر وارد سطح پیکربندی isakmp policy شده و آماده دریافت دستورات کاربر میباشد
دستورات مهم در سطح پیکربندی Isakmp Policy:
authentication : با استفاده از این دستور می توانیم نوع احراز هویت IPSec را تعیین کنیم. در حال حاضر مسیریاب ژرف فقط از یک متد پشتیبانی می کند.
1 |
ZHARF(config-isakmp)#authentication pre-share |
Encryption: الگوریتم رمزنگاری در فاز اول IPsec یا همان تبادل اطلاعات کلیدها را مشخص می نماید.
1 |
ZHARF(config-isakmp)#encryption { 3des | aes | blowfish | camellia | des } |
group: تنظیم گروه Diffie-Hellman برای policy مورد نظر
1 |
ZHARF(config-isakmp)#group { 1 | 2 | 5 } |
hash: الگوریتم Hash را در فاز اول IPsec یا همان تبادل اطلاعات کلیدها مشخص می نماید.
1 |
ZHARF(config-isakmp)#hash { MD5 | sha1 } |
lifetime: تعیین زمان انقضا برای ISAKMP-SA
1 |
ZHARF(config-isakmp)#lifetime <60-86400> |
تعریف ISAKMP key
با استفاده از این دستور میتوانیم pre-share key مورد نظر را برای مسیریاب راه دور مشخصی کرد
1 |
ZHARF(config)# crypto isakmp key Key address ip-address |
key : کلیدی که برای احراز هویت برای طرف مسیریاب راه دور، توسط هر یک از طرفین تبادل، ارائه می شود.
ip-address: آدرس IP مسیریاب راه دور
تعریف crypto map :
1 |
Zharf(config)# crypto map name <1-65535> ipsec-isakmp |
name : نامی انتخابی برای crypto map تعریف شده
<1-65535> : شماره خط crypto map تعریف شده برای اعمال دستورات
با اجرای این دستور ، مسیریاب وارد سطح config-crypto-map شده و آماده دریافت دستورات کاربر میباشد
دستوراتی که در این سطح قرار دارند عبارتند از:
1 |
Zharf(config-crypto-map)# set peer { ip-address | hostname } |
ip-address: آدرس IP طرف مقابل برای برقراری IPsec
hostname: Hostname طرف مقابل برای برقراری IPsec
1 |
Zharf(config-crypto-map)# set transform-set name |
name :نام انتخاب شده برای transform-set در تنظیمات قبلی
1 |
Zharf(config-crypto-map)# match address acl-number |
2-4-4. نمونه ای از پیکربندی سرویس IPSec
در زیر نمونه ای از تنظیمات سرویس IPSec در مسیریاب ژرف آورده شده است.
تنظیمات لازم روی Router-1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ZHARF1(config)#interface gbeth0 ZHARF1(config-if)#ip address 192.168.2.1 255.255.255.0 ZHARF1(config)#interface gbeth1 ZHARF1(config-if)#ip address 192.192.192.1 255.255.255.0 ZHARF1(config)#ip route 10.0.0.0/24 1.1.1.2 ZHARF1(config)#crypto isakmp policy 1 ZHARF1(config-isakmp)#authentication pre-share ZHARF1(config-isakmp)#encryption aes ZHARF1(config-isakmp)# hash md5 ZHARF1(config-isakmp)# exit ZHARF1(config)#crypto isakmp key test address 192.168.2.2 ZHARF1(config)#crypto ipsec transform-set t1 esp-aes esp-md5-hmac ZHARF1(config)#crypto ipsec profile p1 ZHARF1(config-ipsec)# set transform-set t1 ZHARF1(config-if)# interface tunnel1 ZHARF1(config-if)# ip address source 1.1.1.1 destination 1.1.1.2 netmask 255.255.255.0 ZHARF1(config-if)# tunnel source 192.168.2.1 ZHARF1(config-if)# tunnel destination 192.168.2.2 ZHARF1(config-if)# tunnel protection ipsec profile p1 |
تنظیمات لازم روی Router-2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ZHARF2(config)#interface gbeth0 ZHARF2(config-if)#ip address 192.168.2.2 255.255.255.0 ZHARF2(config)#interface gbeth1 ZHARF2(config-if)#ip address 10.0.0.1 255.0.0.0 ZHARF2(config)#ip route 192.192.192.0/24 1.1.1.1 ZHARF2(config)#crypto isakmp policy 1 ZHARF2(config-isakmp)#authentication pre-share ZHARF2(config-isakmp)# encryption aes ZHARF2(config-isakmp)# hash md5 ZHARF2(config-isakmp)# exit ZHARF2(config)#crypto isakmp key test address 192.168.2.1 ZHARF2(config)#crypto ipsec transform-set t1 esp-aes esp-md5-hmac ZHARF2(config)#crypto ipsec profile p1 ZHARF2(config-ipsec)# set transform-set t1 ZHARF2(config-if)# interface tunnel1 ZHARF2(config-if)# ip address source 1.1.1.2 destination 1.1.1.1 netmask 255.255.255.0 ZHARF2(config-if)# tunnel source 192.168.2.1 ZHARF2(config-if)# tunnel destination 192.168.2.2 ZHARF2(config-if)# tunnel protection ipsec profile p1 |
تنظیمات لازم بر روی سیستم های مجاور مسیریاب ها:
تنظیم مسیریابی ایستا (تنظیم default gateway) بر روی هر سیستم مجاور مسیریاب
پس از اعمال تنظیمات ذکر شده باید آدرس 10.0.0.2 از Router-1 قابل دسترس باشد (Ping برقرار باشد)
2-8-5. پیکربندی سرویس IPSec میان سیسکو و ژرف
یکی از ویژگی های مسیریاب ژرف ، توانایی برقراری ارتباط IPsec با مسیریاب سیسکو می باشد. این ارتباط می تواند در حالت tunnel برقرار شود که در مثال زیر این موضوع نشان داده شده است
پیکربندی مسیریاب ژرف:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
ZHARF(config)# interface gbeth 0 ZHARF(config-if)# ip address 192.168.1.1/24 ZHARF(config-if)# no shutdown ZHARF(config-if)# exit ZHARF(config)#crypto isakmp policy 1 ZHARF(config-isakmp)#authentication pre-share ZHARF(config-isakmp)# encryption aes ZHARF(config-isakmp)# hash md5 ZHARF (config-isakmp)# exit ZHARF(config)#crypto isakmp key test address 192.168.1.2 ZHARF(config)#crypto ipsec transform-set t1 esp-aes esp-md5-hmac ZHARF(config)#crypto ipsec profile p1 ZHARF(config-ipsec)# set transform-set t1 ZHARF(config-if)# interface tunnel1 ZHARF(config-if)# ip address source 1.1.1.1 destination 1.1.1.2 netmask 255.255.255.0 ZHARF(config-if)# tunnel source 192.168.1.1 ZHARF(config-if)# tunnel destination 192.168.1.2 ZHARF(config-if)# tunnel protection ipsec profile p1 |
پیکربندی مسیریاب سیسکو :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
CISCO(config)# Interface gigabitEthernet 0/0 CISCO(config-if)# ip address 192.168.1.2 255.255.255.0 CISCO(config-if)# no shutdown CISCO(config-if)# exit CISCO(config)# crypto isakmp policy 1 CISCO(config-isakmp)#encryption aes CISCO(config-isakmp)#hash md5 CISCO(config-isakmp)#authentication pre-share CISCO(config-isakmp)#exit CISCO(config)# crypto isakmp key test address 192.168.1.1 CISCO(config)# crypto ipsec transform-set AES_MD5 esp-aes esp-md5-hmac CISCO(cfg-crypto-trans)#exit CISCO(config)#crypto ipsec profile prf1 CISCO(ipsec-profile)#set transform-set AES_MD5 CISCO(ipsec-profile)#exit CISCO(config)#interface Tunnel 1 CISCO(config-if)#ip address 1.1.1.2 255.255.255.0 CISCO(config-if)#tunnel source 192.168.1.2 CISCO(config-if)#tunnel destination 192.168.1.1 CISCO(config-if)#tunnel protection ipsec profile prf1 |
برای اطمینان از صحت ارتباط IPsec و انتقال بسته ها با تگ esp مراحل زیر انجام میشود:
- فعال کردن ip protocol-discovery روی اینترفیس gbeth0 مسیریاب ژرف
1 2 |
ZHARF(config)#interface gbeth0 ZHARF(config-if)# ip protocol-discovery |
- بررسی در دسترس بودن آدرس 1.1.1 از مسیریاب سیسکو ( تعداد 100 بسته ارسال میکنیم)
1 |
CISCO#ping 1.1.1.1 re 100 |
- اعمال دستور show ip protocol–discovery در مسیریاب ژرف و مشاهده بسته های esp
1 |
ZHARF# show ip protocol-discovery protocol esp |
3-8-5. پیکربندی سرویس IPSec میان سیسکو و ژرف (site-to-site)
تنظیمات روتر Zharf1
1 2 3 4 5 6 7 8 9 10 11 |
Zharf1(config)#interface gbeth 1 Zharf1 (config-if)#ip address 192.168.40.1/24 Zharf1 (config-if)#no shutdown Zharf1 (config-if)#exit Zharf1 (config)#interface gbeth 0 Zharf1 (config-if)#ip address 192.168.30.1/24 Zharf1 (config-if)#no shutdown Zharf1 (config-if)#exit Zharf1 (config)# router ospf Zharf1 (config-router)# network 192.168.40.0 255.255.255.0 area 0 Zharf1 (config-router)# network 192.168.30.0 255.255.255.0 area 0 |
تنظیمات روتر Zharf2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Zharf2(config)# crypto isakmp policy 1 Zharf2 (config-isakmp)# authentication pre-share Zharf2 (config-isakmp)# encryption aes Zharf2 (config-isakmp)# hash md5 Zharf2 (config-isakmp)# exit Zharf2 (config)# crypto isakmp key test address 192.168.40.2 Zharf2 (config)# crypto ipsec transform-set t1 esp-aes esp-md5-hmac Zharf2 (config)# crypto map test 10 ipsec-isakmp Zharf2 (config-crypto-map)# set transform-set t1 Zharf2 (config-crypto-map)# set peer 192.168.40.2 Zharf2 (config-crypto-map)# match address 110 Zharf2 (config-crypto-map)# exit Zharf2 (config)# interface gbeth 2 Zharf2 (config-if)# ip address 192.168.20.2/24 Zharf2 (config-if)# no shutdown Zharf2 (config)# interface gbeth 0 Zharf2 (config-if)# ip address 192.168.30.2/24 Zharf2 (config-if)# no shutdown Zharf2 (config-if)# crypto map test Zharf2 (config)# access-list 110 permit ip host 192.168.20.1 host 192.168.10.1 Zharf2 (config)# router ospf Zharf2 (config-router)# network 192.168.20.0 255.255.255.0 area 0 Zharf2 (config-router)# network 192.168.30.0 255.255.255.0 area 0 |
تنظیمات سیسکو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
cisco(config)# crypto isakmp policy 1 cisco (config-isakmp)# encryption aes cisco (config-isakmp)# hash md5 cisco (config-isakmp)# authentication pre-share cisco (config-isakmp)# exit cisco (config)# crypto isakmp key test address 192.168.30.2 cisco (config)# crypto ipsec transform-set AES_MD5 esp-aes esp-md5-hmac cisco (config)# crypto map test 10 ipsec-isakmp cisco (config-crypto-map)#set transform-set AES_MD5 cisco (config-crypto-map)#set peer 192.168.30.2 cisco (config-crypto-map)#match address 110 cisco (config-crypto-map)#exit cisco (config)# interface gigabitEthernet 0/1 cisco (config-if)# ip address 192.168.40.2 255.255.255.0 cisco (config-if)# no shutdown cisco (config-if)# crypto map test cisco (config-if)#exit cisco (config)# interface gigabitEthernet 0/2 cisco (config-if)# ip address 192.168.10.2 255.255.255.0 cisco (config-if)# no shutdown cisco (config-if)# exit cisco (config)# access-list 110 permit ip host 192.168.10.1 host 192.168.20.1 cisco (config)# router ospf 1 cisco (config-router)# network 192.168.40.0 0.0.0.255 area 0 cisco (config-router)# network 192.168.10.0 0.0.0.255 area 0 |
تنظیمات لازم بر روی سیستم های مجاور مسیریاب ها:
تنظیم مسیریابی ایستا (تنظیم default gateway) بر روی هر سیستم مجاور مسیریاب
پس از اعمال تنظیمات ذکر شده باید آدرس 1.1.1.2 از pc(192.168.20.1) قابل دسترس باشد.
5-8-4. سرویس DPD
IPsec دارای نوعی پیام های دوره ای Keep Alive به نام DPD یا Dead Peer Detection است که از آن برای مطلع شدن از وضعیت مسیریاب های همسایه استفاده میکند
حالت های ارسال پیام های DPD:
پیام های DPD به دو صورت قابل ارسال هستند .
- Periodic : در این حالت مسیریاب به صورت منظم در فواصل زمانی تنظیم شده توسط تایمر، اقدام به ارسال DPD میکند که مزیت این روش کشف زودهنگام peer از دسترس خارج شده است
- On-demand: ارسال آپدیت های DPD در این حالت منوط به ترافیک موجود در شبکه است و در صورتی که تقاضایی برای ارسال ایجاد شود، مسیریاب اقدام به ارسال DPD مینماید و قبل از اینکه ترافیک را ارسال کند باید از صحت موجود بودن مسیریاب مقصد اطمینان حاصل کند. در صورتی که ترافیک برای ارسال وجود نداشته باشد DPD Hello هم ارسال نمیشود
تنظیم سرویس DPD :
با اعمال دستور اول در سطح پیکربندی سراسری این سرویس فعال میگردد و با اعمال دستور دوم غیرفعال میگردد
1 2 |
Zharf(config)# crypto isakmp keepalive <10-3600> [ <2-60> | on-demand | periodic ] Zharf(config)# no crypto isakmp keepalive |
انتخاب عددی در بازه 10 تا 3600 ثانیه جهت تعیین فواصل زمانی بین ارسال بسته های KeepAlive است
انتخاب عددی در بازه 2 تا 60 ثانیه جهت تعیین زمانی است که بسته های KeepAlive به مقصد نرسیده انده و باید مجددا ارسال شوند.
مثال :
دستور زیر تنظیم DPD در حالت On-Demand است که در این حالت زمانی که نیاز به ارسال بسته DPD باشد مسیریاب در هر 10 ثانیه اقدام به ارسال آن میکند (برای غیرفعالسازی از دستور دوم استفاده میشود)
1 2 |
Zharf(config)# crypto isakmp keepalive 10 on-demand Zharf(config)# no crypto isakmp keepalive 10 on-demand |
مثال :
دستور زیر تنظیم DPD در حالت Periodic است که در این حالت مادامی که ارتباط IPSec بین دو مسیریاب برقرار است، مسیریاب در هر 10 ثانیه اقدام به ارسال بسته های DPD میکند (برای غیرفعالسازی از دستور دوم استفاده میشود)
1 2 |
Zharf(config)# crypto isakmp keepalive 10 Periodic Zharf(config)# no crypto isakmp keepalive 10 Periodic |