პირველი ჩატვირთვა: WireGuard მოწყობილობების ფლოტის რეგისტრაცია
ერთი იმიჯი, თითო გასაღები თითო დაფაზე და ავტორიზაციის საფეხური, რომელიც არ ენდობა მოწყობილობის საკუთარ მტკიცებას. ოთხი ეტაპი ჩატვირთვიდან დადასტურებულ peer-მდე.
დაფა იტვირთება საერთო იმიჯიდან, იღებს DHCP იჯარას და მომზადების სკრიპტი მუშაობს მანამდე, სანამ ვინმე მოწყობილობას შეეხება. სადღაც ამ სკრიპტში მან უნდა მიიღოს WireGuard იდენტობა, რომელიც ეკუთვნის ამ დაფას და არცერთ სხვას, გაატაროს ეს იდენტობა ავტორიზაციაზე და დაწეროს პროფილი, რომელსაც კარიბჭე მიიღებს. იმიჯს შეუძლია ატაროს კლიენტის პროგრამული უზრუნველყოფა, გადამოწმებული შაბლონი და კარიბჭის საჯარო გასაღები. რაც მან არასდროს უნდა ატაროს, ეს არის ერთი კერძო გასაღები, რომელსაც მთელი ფლოტი იზიარებს, რადგან ეს ერთ მოპარულ დაფას მთელი ფლოტის ინციდენტად აქცევს. ქვემოთ მოცემული რიგი იდენტობას ლოკალურ, ხოლო ავტორიზაციას გამოკვეთილს ტოვებს.
რას ატარებს იმიჯი და რას არა
გაგზავნეთ პაკეტი, შაბლონი შესავსები ადგილებით, კარიბჭის საჯარო გასაღები და რეგისტრაციის კლიენტი. შაბლონი ფორმაა და არა საიდუმლო: ის უნდა იყოს წაკითხვადი მომამზადებელი მომხმარებლისთვის და არ შეიცავდეს გასაღების მასალას.
კერძო გასაღები გენერირდება მოწყობილობაზე პირველი ჩატვირთვისას და არასდროს ტოვებს მას. მოგზაურობს მხოლოდ საჯარო ნახევარი, რეგისტრაციის მოთხოვნის შიგნით, რომელიც ავტორიზდება სხვა რაღაცით და არა მოწყობილობის საკუთარი მტკიცებით იმის შესახებ, თუ ვინ არის ის. სწორედ ეს განსხვავება უშლის ხელს მოპარულ დაფას გახდეს მთელი ფლოტის პრობლემა. და სწორედ ეს ნაწილი კეთდება არასწორად პირველი ჩატვირთვის სკრიპტების უმეტესობაში.
ნაბიჯი 1: გასაღების ლოკალურად გენერირება
შეასრულეთ გენერირება დაცულ დირექტორიაში მას შემდეგ, რაც ძირითადი ქსელური კავშირი დამტკიცდება და მუშაობს. ქვეშელი ინახავს umask-ის ცვლილებას ლოკალურად ამ ოპერაციისთვის, და set -C უარყოფს არსებული ფაილის გადაწერას:
(
umask 077
set -C
wg genkey > /etc/wireguard/device.key &&
wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)
WireGuard სწრაფი დაწყება აღწერს გასაღების გენერირების იმ კავშირს, რომელსაც ეს ორი ბრძანება ეყრდნობა. თუ გენერირება შეწყდება, დატოვეთ მოწყობილობა არარეგისტრირებული და მიეცით სამუშაო ნაკადს ფაილების შეჯერების საშუალება. არ წაშალოთ არსებული იდენტობა მხოლოდ იმისთვის, რომ სკრიპტი თავიდან სუფთად გაიაროს.
შეინახეთ მოლოდინში მყოფი გასაღები განმეორებით ცდებს შორის. იდენტობის ხელახლა გენერირება ყოველი დროებითი ქსელური ჩავარდნის შემდეგ არის ის გზა, რომლითაც ფლოტს რჩება ობოლი peer-ები, რომლებსაც ვერავინ დაუკავშირებს მოწყობილობას.
ნაბიჯი 2: მოწყობილობის ჩანაწერის ავტორიზაცია
დავუშვათ, ინვენტარი ამ დაფას უწოდებს device-042-ს და ანიჭებს მას 10.90.0.42/32-ს. რეგისტრაციის სერვისმა უნდა გადაამოწმოს, რომ ამ მომთხოვნს აქვს უფლება ამ ჩანაწერზე. ფორმაში აკრეფილი სერიული ნომერი მტკიცებულება არ არის, რადგან სერიული ნომრები ყუთის გარე მხარეს იბეჭდება.
თითო მოწყობილობის ბუტსტრაპ ავტორიზაცია, ოპერატორის დამტკიცება ან ტექნიკით მხარდაჭერილი ატესტაცია შეიძლება დაამყაროს მტკიცება. დაიცავით მოთხოვნის მთლიანობა და პასუხის ნამდვილობა, და არ შეცვალოთ ერთი საერთო VPN საიდუმლო ერთი საერთო ქარხნული ავტორიზაციით.
რეგისტრირებული ჩანაწერი აკავშირებს მოწყობილობას, მის საჯარო გასაღებს, მინიჭებულ მისამართს და დაშვებულ ადმინისტრირების როლს. WireGuard თავად არ განსაზღვრავს რეგისტრაციის API-ს, ამიტომ ეს სერვისი არის ის, რასაც შეგნებულად აშენებთ და მართავთ.
ნაბიჯი 3: ორი შესაბამისი კონფიგურაციის დაწერა
მოწყობილობას სჭირდება პროფილი, რომელიც ადმინისტრირების პრეფიქსებს გვირაბში მიმართავს, ხოლო კარიბჭეს სჭირდება peer ჩანაწერი, რომელიც მხოლოდ ამ მოწყობილობის საკუთარ წყაროს მისამართს უშვებს. როცა კარიბჭე 10.90.0.1-ზეა და ადმინისტრირების ქსელი 10.60.0.0/16, მოწყობილობის მხარე ასე გამოიყურება:
[Interface]
PrivateKey = <device-042 private key>
Address = 10.90.0.42/32
[Peer]
PublicKey = <trusted gateway public key>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.90.0.1/32, 10.60.0.0/16
PersistentKeepalive = 25
კვადრატულ ფრჩხილებში მოცემული მნიშვნელობები შემავსებელია და არა გასაღებები. keepalive მნიშვნელოვანია, როცა დაფა NAT-ის უკან ზის და ხელმისაწვდომი უნდა დარჩეს; ის ყველგან საჭირო არ არის, და ჩვევის გამო დამატება რადიოს უმიზეზოდ ღვიძილს ინახავს.
კარიბჭეზე peer ჩანაწერი განზრახ ვიწროა:
[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32
არ დააკოპიროთ მოწყობილობის დანიშნულების სია კარიბჭის peer-ში. მოწყობილობაზე ეს სია ამბობს, რა უნდა გაიგზავნოს გვირაბში; კარიბჭეზე ის ამბობს, რომელი წყაროს მისამართები შეიძლება გამოიყენოს ამ peer-მა, და ეს სხვადასხვა მტკიცებებია.
გადაცემა, firewall-ის წესები და ადმინისტრირების ქსელისკენ დაბრუნების გზა ჯერ კიდევ უნდა უშვებდეს დამტკიცებულ წვდომას. რეგისტრირებული peer არ არის ნებართვა მის უკან მდგარი ყოველი აპლიკაციისთვის.
ნაბიჯი 4: რეგისტრაციის სასიცოცხლო ციკლის მდგომარეობად დაფიქსირება
გამოიყენეთ კარიბჭის ჩანაწერი და მოწყობილობის პროფილი იმის მეშვეობით, ვინც ფლობს შესაბამის კონფიგურაციას, შემდეგ მონიშნეთ რეგისტრაცია დასრულებულად მხოლოდ მაშინ, როცა განკუთვნილი იდენტობა და მისამართი მიიღება. განმეორებითმა ცდებმა უნდა შეაჯეროს იგივე ჩანაწერი და არა გამოყოს მეორე peer ან მეორე მისამართი.
შეინახეთ აღდგენის გზა შეწყვეტილი მომზადებისთვის, მათ შორის იმ შემთხვევისთვის, როცა კარიბჭემ გასაღები მიიღო, ხოლო მოწყობილობამ თავისი პროფილი არასდროს დაწერა.
როცა დაფა იცვლება ან გამოდის ექსპლუატაციიდან, წაშალეთ მისი საჯარო გასაღები და მისი ავტორიზაცია ერთად. ახალი გასაღები განზრახ ხელახალი რეგისტრაციის მოვლენაა და არა ხელახალი იმიჯის გვერდითი ეფექტი. სამუშაო რიგი: ლოკალურად გენერირება, ინვენტარის მიმართ ავტორიზაცია, ორივე მხარის დაწერა, მდგომარეობის დაფიქსირება, შემდეგ გვირაბით ერთი ადმინისტრირების მოთხოვნის გამოცდა.