תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

המצב

קיבלתי גרסת הדגמה של מוצרי C-Terra VPN גרסה 4.3 למשך שלושה חודשים. אני רוצה לברר אם חיי ההנדסה שלי יהפכו לקלים יותר לאחר המעבר לגרסה החדשה.

היום זה לא קשה, שקית אחת של קפה נמס 3 ב-1 אמורה להספיק. אני אגיד לך איך להשיג הדגמות. אני אנסה לבנות את סכימות GRE-over-IPsec ו-IPsec-over-GRE.

איך להשיג הדגמה

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

מהאיור עולה שכדי לקבל הדגמה אתה צריך:

  • כתבו מכתב לכתובת presale@s-terra.ru מכתובת החברה שלכם;
  • במכתב, ציין את ה-TIN של הארגון שלך;
  • רשום את המוצרים וכמותם.

ההדגמות תקפות לשלושה חודשים. הספק אינו מגביל את הפונקציונליות שלהם.

הרחבת התמונה

ההדגמה של שער האבטחה היא תמונת מכונה וירטואלית. אני משתמש ב-VMWare Workstation. רשימה מלאה של היפרוויזורים וסביבות וירטואליזציה נתמכות זמינה באתר האינטרנט של הספק.

לפני שתתחיל, שים לב שאין ממשקי רשת בתמונת ברירת המחדל של המחשב הווירטואלי:

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

ההיגיון ברור, המשתמש צריך להוסיף כמה ממשקים שהוא צריך. אני אוסיף ארבעה בבת אחת:

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

עכשיו אני מפעיל את המכונה הוירטואלית. מיד לאחר ההשקה, השער דורש שם משתמש וסיסמה.

ישנן מספר קונסולות ב-S-Terra Gateway עם חשבונות שונים. אני אספור את מספרם במאמר נפרד. לעת עתה:
Login as: administrator
Password: s-terra

אני מאתחל את השער. האתחול הוא רצף של פעולות: הזנת רישיון, הקמת מחולל מספרים אקראיים ביולוגיים (סימולטור מקלדת - השיא שלי הוא 27 שניות) ויצירת מפת ממשק רשת.

מפה של ממשקי רשת. זה נעשה קל יותר

גרסה 4.2 קיבלה את פני המשתמש הפעיל בהודעות:

Starting IPsec daemon….. failed
ERROR: Could not establish connection with daemon

משתמש פעיל (לפי מהנדס אנונימי) הוא משתמש שיכול להגדיר כל דבר במהירות וללא תיעוד.

משהו השתבש לפני שניסית להגדיר כתובת IP בממשק. הכל קשור למפת ממשק הרשת. היה צורך לעשות:

/bin/netifcfg enum > /home/map
/bin/netifcfg map /home/map
service networking restart

כתוצאה מכך, נוצרת מפת ממשק רשת המכילה את המיפוי של שמות ממשקים פיזיים (0000:02:03.0) והייעודים הלוגיים שלהם במערכת ההפעלה (eth0) ובקונסולה דמוית סיסקו (FastEthernet0/0):

#Unique ID iface type OS name Cisco-like name

0000:02:03.0 phye eth0 FastEthernet0/0

הייעודים הלוגיים של ממשקים נקראים כינויים. כינויים מאוחסנים בקובץ /etc/ifaliases.cf.
בגרסה 4.3, כאשר המחשב הוירטואלי מופעל לראשונה, נוצרת אוטומטית מפת ממשק. אם תשנה את מספר ממשקי הרשת במכונה הוירטואלית, אנא צור מחדש את מפת הממשק:

/bin/netifcfg enum > /home/map
/bin/netifcfg map /home/map
systemctl restart networking

תכנית 1: GRE-over-IPsec

אני פורס שני שערים וירטואליים, אני מחליף כפי שמוצג באיור:

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

שלב 1. הגדר כתובות IP ומסלולים

VG1(config) #
interface fa0/0
ip address 172.16.1.253 255.255.255.0
no shutdown
interface fa0/1
ip address 192.168.1.253 255.255.255.0
no shutdown
ip route 0.0.0.0 0.0.0.0 172.16.1.254

VG2(config) #
interface fa0/0
ip address 172.16.1.254 255.255.255.0
no shutdown
interface fa0/1
ip address 192.168.2.254 255.255.255.0
no shutdown
ip route 0.0.0.0 0.0.0.0 172.16.1.253

בדיקת קישוריות IP:

root@VG1:~# ping 172.16.1.254 -c 4
PING 172.16.1.254 (172.16.1.254) 56(84) bytes of data.
64 bytes from 172.16.1.254: icmp_seq=1 ttl=64 time=0.545 ms
64 bytes from 172.16.1.254: icmp_seq=2 ttl=64 time=0.657 ms
64 bytes from 172.16.1.254: icmp_seq=3 ttl=64 time=0.687 ms
64 bytes from 172.16.1.254: icmp_seq=4 ttl=64 time=0.273 ms

--- 172.16.1.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.273/0.540/0.687/0.164 ms

שלב 2: הגדר את GRE

אני לוקח דוגמה של הגדרת GRE מתסריטים רשמיים. אני יוצר קובץ gre1 בספרייה /etc/network/interfaces.d עם התוכן.

עבור VG1:

auto gre1
iface gre1 inet static
address 1.1.1.1
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre remote 172.16.1.254 local 172.16.1.253 key 1 ttl 64 tos inherit
pre-up ethtool -K gre1 tx off > /dev/null
pre-up ip link set gre1 mtu 1400
post-down ip link del gre1

עבור VG2:

auto gre1
iface gre1 inet static
address 1.1.1.2
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre remote 172.16.1.253 local 172.16.1.254 key 1 ttl 64 tos inherit
pre-up ethtool -K gre1 tx off > /dev/null
pre-up ip link set gre1 mtu 1400
post-down ip link del gre1

אני מעלה את הממשק במערכת:

root@VG1:~# ifup gre1
root@VG2:~# ifup gre1

בודק:

root@VG1:~# ip address show
8: gre1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
    link/gre 172.16.1.253 peer 172.16.1.254
    inet 1.1.1.1/30 brd 1.1.1.3 scope global gre1
       valid_lft forever preferred_lft forever

root@VG1:~# ip tunnel show
gre0: gre/ip remote any local any ttl inherit nopmtudisc
gre1: gre/ip remote 172.16.1.254 local 172.16.1.253 ttl 64 tos inherit key 1

ל-C-Terra Gateway יש רחרח מנות מובנה - tcpdump. אני אכתוב dump תנועה לקובץ pcap:

root@VG2:~# tcpdump -i eth0 -w /home/dump.pcap

אני מתחיל לעשות פינג בין ממשקי GRE:

root@VG1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
64 bytes from 1.1.1.2: icmp_seq=1 ttl=64 time=0.918 ms
64 bytes from 1.1.1.2: icmp_seq=2 ttl=64 time=0.850 ms
64 bytes from 1.1.1.2: icmp_seq=3 ttl=64 time=0.918 ms
64 bytes from 1.1.1.2: icmp_seq=4 ttl=64 time=0.974 ms

--- 1.1.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 0.850/0.915/0.974/0.043 ms

מנהרת GRE פועלת:

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

שלב 3. הצפין עם GOST GRE

אני קובע את סוג הזיהוי - לפי כתובת. אימות עם מפתח מוגדר מראש (על פי תנאי השימוש, יש להשתמש בתעודות דיגיטליות):

VG1(config)#
crypto isakmp identity address
crypto isakmp key KEY address 172.16.1.254

הגדרתי את הפרמטרים של IPsec Phase I:

VG1(config)#
crypto isakmp policy 1
encr gost
hash gost3411-256-tc26
auth pre-share
group vko2

הגדרתי את הפרמטרים של IPsec Phase II:

VG1(config)#
crypto ipsec transform-set TSET esp-gost28147-4m-imit
mode tunnel

אני יוצר רשימת גישה להצפנה. תנועה ממוקדת - GRE:

VG1(config)#
ip access-list extended LIST
permit gre host 172.16.1.253 host 172.16.1.254

אני יוצר מפת קריפטו ומקשר אותה לממשק ה-WAN:

VG1(config)#
crypto map CMAP 1 ipsec-isakmp
match address LIST
set transform-set TSET
set peer 172.16.1.253
interface fa0/0
  crypto map CMAP

עבור VG2, התצורה היא שיקוף, ההבדלים הם:

VG2(config)#
crypto isakmp key KEY address 172.16.1.253
ip access-list extended LIST
permit gre host 172.16.1.254 host 172.16.1.253
crypto map CMAP 1 ipsec-isakmp
set peer 172.16.1.254

בודק:

root@VG2:~# tcpdump -i eth0 -w /home/dump2.pcap
root@VG1:~# ping 1.1.1.2 -c 4
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
64 bytes from 1.1.1.2: icmp_seq=1 ttl=64 time=1128 ms
64 bytes from 1.1.1.2: icmp_seq=2 ttl=64 time=126 ms
64 bytes from 1.1.1.2: icmp_seq=3 ttl=64 time=1.07 ms
64 bytes from 1.1.1.2: icmp_seq=4 ttl=64 time=1.12 ms

--- 1.1.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 1.077/314.271/1128.419/472.826 ms, pipe 2

סטטיסטיקות ISAKMP/IPsec:

root@VG1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 1 (172.16.1.253,500)-(172.16.1.254,500) active 1086 1014

IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 1 (172.16.1.253,*)-(172.16.1.254,*) 47 ESP tunn 480 480

אין מנות במזבלה של התעבורה של GRE:

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

מסקנה: ערכת GRE-over-IPsec פועלת כהלכה.

איור 1.5: IPsec-over-GRE

אני לא מתכנן להשתמש ב-IPsec-over-GRE ברשת. אני אוסף כי אני רוצה.

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

כדי לפרוס את ערכת GRE-over-IPsec להיפך:

  • תקן רשימת גישה להצפנה - תעבורה ממוקדת מ-LAN1 ל-LAN2 ולהיפך;
  • הגדר ניתוב דרך GRE;
  • תלה מפת קריפטו בממשק GRE.

כברירת מחדל, אין ממשק GRE בקונסולת השער דמוי Cisco. זה קיים רק במערכת ההפעלה.

אני מוסיף את ממשק GRE לקונסולה דמויית סיסקו. כדי לעשות זאת, אני עורך את הקובץ /etc/ifaliases.cf:

interface (name="FastEthernet0/0" pattern="eth0")
interface (name="FastEthernet0/1" pattern="eth1")
interface (name="FastEthernet0/2" pattern="eth2")
interface (name="FastEthernet0/3" pattern="eth3")
interface (name="Tunnel0" pattern="gre1")
interface (name="default" pattern="*")

כאשר gre1 הוא ייעוד הממשק במערכת ההפעלה, Tunnel0 הוא ייעוד הממשק בקונסולה דמויית סיסקו.

אני מחשב מחדש את ה-hash של הקובץ:

root@VG1:~# integr_mgr calc -f /etc/ifaliases.cf

SUCCESS:  Operation was successful.

כעת הממשק Tunnel0 הופיע בקונסולה דמויית סיסקו:

VG1# show run
interface Tunnel0
ip address 1.1.1.1 255.255.255.252
mtu 1400

תיקון רשימת הגישה להצפנה:

VG1(config)#
ip access-list extended LIST
permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255

אני מגדיר ניתוב דרך GRE:

VG1(config)#
no ip route 0.0.0.0 0.0.0.0 172.16.1.254
ip route 192.168.3.0 255.255.255.0 1.1.1.2

אני מסיר את ה-cryptomap מ-Fa0 / 0 ומקשר אותו לממשק GRE:

VG1(config)#
interface Tunnel0
crypto map CMAP

עבור VG2 זה דומה.

בודק:

root@VG2:~# tcpdump -i eth0 -w /home/dump3.pcap

root@VG1:~# ping 192.168.2.254 -I 192.168.1.253 -c 4
PING 192.168.2.254 (192.168.2.254) from 192.168.1.253 : 56(84) bytes of data.
64 bytes from 192.168.2.254: icmp_seq=1 ttl=64 time=492 ms
64 bytes from 192.168.2.254: icmp_seq=2 ttl=64 time=1.08 ms
64 bytes from 192.168.2.254: icmp_seq=3 ttl=64 time=1.06 ms
64 bytes from 192.168.2.254: icmp_seq=4 ttl=64 time=1.07 ms

--- 192.168.2.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 1.064/124.048/492.972/212.998 ms

סטטיסטיקות ISAKMP/IPsec:

root@VG1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 2 (172.16.1.253,500)-(172.16.1.254,500) active 1094 1022

IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 2 (192.168.1.0-192.168.1.255,*)-(192.168.2.0-192.168.2.255,*) * ESP tunn 352 352

במזבלה של תעבורת ESP, החבילות מובלעות ב-GRE:

תוכניות 1.5 ב-IPsec VPN מקומי. בדיקות הדגמות

מסקנה: IPsec-over-GRE פועל כהלכה.

תוצאות של

כוס קפה אחת הספיקה. שרטטתי הוראות להשגת גרסת הדגמה. הוגדר GRE-over-IPsec ופריסה להיפך.

מפת ממשקי הרשת בגרסה 4.3 היא אוטומטית! אני בודק עוד.

מהנדס אנונימי
t.me/anonymous_engineer


מקור: www.habr.com