დაუკავშირდით 2.x კლიენტით და პროფილი მუშაობს; გადასცით იგივე ფაილი 3.x კლიენტს და ის პაროლის მოთხოვნაზე ჩერდება. გადასცით --auth-user-pass creds.txt openvpn3 session-start-ს და შედეგი იგივეა, რადგან უფრო ახალ კლიენტს არ აქვს ეტაპი, რომელიც ფაილს წაიკითხავს. უარი განზრახ არის: საკრედიტო მონაცემები სესიას ეკუთვნის, ხოლო სესიას ქმნის სერვისი და არა პროცესი თქვენს ტერმინალში. აირჩიეთ ინტერაქტიულ მოთხოვნასა და autoload დამხმარეს შორის და იცოდეთ, რას ინახავს თითოეული.

რატომ არ აქვს შენახულ ფაილს სად წავიდეს

უფრო ახალ დიზაინში კონფიგურაციის მართვა და სესიების მართვა ცალკეული სერვისებია, რომლებიც სისტემური ავტობუსით ურთიერთობენ. სწორედ ეს განცალკევება საშუალებას აძლევს ჩვეულებრივ მომხმარებელს დაიწყოს სესია იმის გარეშე, რომ პრივილეგირებულმა დემონმა მის ნაცვლად დაცული პაროლის ფაილი წაიკითხოს. ფაილზე დაფუძნებულ საკრედიტო მონაცემებს ამ მოდელში ადგილი არ აქვს, რადგან არ არსებობს დემონის მხრიდან გაშვება, რომელიც მათ წაიკითხავს. უარი არქიტექტურის შედეგია და არა დაკარგული ფუნქცია.

ძველი ნიმუშის დასახელება ღირს, რათა მისი მიტოვება გაადვილდეს: პროფილი მიუთითებს საკრედიტო მონაცემების ფაილზე და დემონი მას გვირაბის გაშვებისას კითხულობს. ახალ მოდელში საკრედიტო მონაცემები სესიას ეკუთვნის და მიეწოდება მაშინ, როცა ეს სესია იწყება. openvpn3 session-start --config work.ovpn მათ ითხოვს, ხოლო --auth-user-pass creds.txt უარყოფილია, რადგან ამ გზაზე ვერაფერი გახსნიდა ფაილს. ყველა 2.x რეცეპტი, რომელსაც იპოვით, ითვალისწინებს ეტაპს, რომელიც აღარ არსებობს.

კონფიგურაცია და საიტის ლოკალური პარამეტრებიც განცალკევებულია, რაც მეორე სიურპრიზს ხსნის. პროფილი შეიძლება სრულყოფილად გამოიყურებოდეს, მაშინ როცა მის მიერ შექმნილ კავშირს მარშრუტიზაციისა და რეზოლვერის კონფიგურაცია აკლია. ეს ნაწილები საიტის ლოკალურ პარამეტრებად გამოიყენება, იმპორტირებული ფაილისგან დამოუკიდებლად.

მოთხოვნის გზა და სესია, რომელსაც ის ტოვებს

პაროლის მიწოდება სესიის დაწყებისას არის განზრახული სამუშაო პროცესი. კლიენტი ერთხელ ითხოვს, გადასცემს საკრედიტო მონაცემებს სესიის ბექენდს და აგრძელებს:

openvpn3 session-start --config work.ovpn
openvpn3 sessions-list

ამ გზით დისკზე არაფერი იწერება. სესია აგრძელებს მუშაობას ტერმინალის დახურვის შემდეგაც, რაც აკვირვებს მათ, ვინც ელოდება, რომ პროცესი მათ გარსთან ერთად მოკვდება. სწორედ ეს არის სესიების დამუშავების სერვისში გადატანის აზრი. სესია უფრო დიდხანს ცოცხლობს, ვიდრე ტერმინალი, რომელმაც ის მოითხოვა, და ის ცალსახად უნდა შეჩერდეს.

სამუშაო სადგურისთვის, რომლის წინაშეც ადამიანი ზის, ეს ასევე ყველაზე უსაფრთხო ვარიანტია, რადგან არ არსებობს შენახული საიდუმლო, რომელიც უნდა დავიცვათ ან დავივიწყოთ. ის უვარგისია მხოლოდ იქ, სადაც არავინ არის საბეჭდად.

ავტომატიზაცია კლავიატურასთან ადამიანის გარეშე

სადაც მანქანამ ადამიანის გარეშე უნდა დაუკავშირდეს, პროექტი გთავაზობთ openvpn3-autoload-ს. ის კითხულობს პროფილების დირექტორიას და თითოეული პროფილის შესაბამის დესკრიპტორს, ხოლო დესკრიპტორი საკრედიტო მონაცემებს ღია ტექსტით აწვდის. დამხმარე ცალკე ბინარული ფაილია, ჩვეულებრივ /usr/sbin/openvpn3-autoload-ში, და არა session-start-ის დროშა. მისი დაყენება ნიშნავს დირექტორიის შექმნას, პროფილის იმ სახელით კოპირებას, რომელსაც დესკრიპტორი მოელის, და დესკრიპტორის დაწერას.

მომხმარებლის მიხედვით კონფიგურაცია ასე გამოიყურება და ის იმ ანგარიშით უნდა გაეშვას, რომელიც სესიას დაეუფლება. დირექტორიის რეჟიმი სხვა ლოკალურ მომხმარებლებს გარეთ ტოვებს:

mkdir -m700 -p ~/.openvpn3/autoload
cp work.ovpn ~/.openvpn3/autoload/client.conf
$EDITOR ~/.openvpn3/autoload/client.autoload

დესკრიპტორი ასახელებს საკრედიტო მონაცემებს და ითხოვს ავტომატურ გაშვებას. პაროლის მნიშვნელობა ვერსიების კონტროლის გარეთ შეინახეთ:

{
  "autostart": true,
  "user-auth": {
    "autologin": true,
    "username": "svc-vpn",
    "password": "change-this-value"
  }
}

შემდეგ ერთხელ გამოიძახეთ დამხმარე და დაადასტურეთ, რომ სესია გამოჩნდა. მეორე ბრძანება შემოწმებაა და არა კიდევ ერთი დაყენების ნაბიჯი:

/usr/sbin/openvpn3-autoload --directory ~/.openvpn3/autoload
openvpn3 sessions-list

ჩატვირთვისას პაკეტირებული ერთეული სახელად openvpn3-autoload.service იყენებს სისტემურ დირექტორიას /etc/openvpn3/autoload და არა მომხმარებლისას. ამ ადგილს სჭირდება root-ის საკუთრება და უფრო მკაცრი რეჟიმი, ხოლო დესკრიპტორი კვლავ ღია ტექსტით ინახავს პაროლს. კომპრომისი ცხადია: პაროლი ახლა დისკზე დევს, ამიტომ ეს დირექტორია საიდუმლოდ მოექეცით, გამორიცხეთ იგი ჰოსტის გარეთ არსებული სარეზერვო ასლებიდან და აირჩიეთ ინტერაქტიული გზა ყოველთვის, როცა ადამიანია წარმოდგენილი.

ავტობუსის ხარვეზები, რომლებიც პაროლის ხარვეზებს ჰგავს

ზოგიერთი ხარვეზი, რომელსაც საკრედიტო მონაცემებს მიაწერენ, სულაც არ არის ასეთი. ნებართვის შეცდომა, რომელიც სერვისის გააქტიურების გზას ასახელებს, ორიდან ერთს ნიშნავს: ბექენდი არ მუშაობს, ან გამომძახებელს არ აქვს მისი გააქტიურების ნებართვა. პროფილის რედაქტირება არც ერთს შეცვლის. კონფიგურაციაზე ხელის დაჭერამდე შეამოწმეთ სერვისის მდგომარეობა და მოწოდებული ავტობუსის პოლიტიკა.

ქვემოთ მოცემული ბრძანებები ამ ორს ჰყოფს. პირველი იტყობინება, მუშაობს თუ არა ბექენდი; მეორე აჩვენებს ბოლო ავტობუსის შეცდომებს:

systemctl status openvpn3-service-client
journalctl -b -u openvpn3-service-client --no-pager | tail -20

კიდევ ერთი ხშირი არასწორი წაკითხვაა სესია, რომელიც ჩნდება და მაშინვე ქრება. ეს ნიმუში ჩვეულებრივ ნიშნავს, რომ საიტის ლოკალური პარამეტრები არასოდეს გამოყენებულა, ამიტომ გვირაბი ავიდა მარშრუტებისა და რეზოლვერის ცვლილებების გარეშე, რომლებიც მას სასარგებლოს ხდის. წაიკითხეთ მიმდევრობა და არა ბოლო ხაზი: შეიქმნა თუ არა სესია, მიაღწია თუ არა დაკავშირებულ მდგომარეობას და გადაურჩა თუ არა, სამი ცალკე ფაქტია.

როცა ძველი კლიენტი ჯერ კიდევ გამოიყენება

2.x კლიენტი კვლავ იღებს საკრედიტო მონაცემების ფაილს და გასაღებების რგოლი შეუძლია უპასუხოს მის მოთხოვნას ისე, რომ საიდუმლო დისკზე არასოდეს მოხვდეს. გარსი წყვეტს ჩანაწერს, ამიტომ ფაილი პაროლის ნაცვლად ძიებას ასახელებს. ეს მოწყობა დამოკიდებულია გახსნილ გასაღებების რგოლზე, რომელსაც ვერ უზრუნველყოფს კონტეინერი შესვლის სესიის გარეშე ან ერთეული, რომელიც ირთვება მანამ, სანამ ვინმე შევა სისტემაში. შემდეგ ძიების ინსტრუმენტი იტყობინება კოლექციაზე, რომელშიც ვერ ჩაწერს, ამიტომ შეცდომა საკრედიტო მონაცემების ხარვეზად გამოიყურება, მაშინ როცა ის გასაღებების რგოლის ხარვეზია.

სანამ რომელიმეს ააგებთ, შეამოწმეთ, ხსნის თუ არა პროფილში keepalive პარამეტრი გადატვირთვის საჭიროებას საერთოდ. სესია, რომელიც ჩართული რჩება, ვერასოდეს მიაღწევს იმ მოთხოვნას, რომლის ავტომატიზაციასაც ცდილობთ.

დაკავშირებული სტატიები