როგორ დავიცვათ დოკერი წარმოების გარემოსთვის?

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


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

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

  • კონფიგურაციის ხარვეზები
  • დისტანციური კოდის შესრულება
  • ბუფერის გადაფრქვევები
  • სურათის გაყალბება და ა.შ..

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

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

რა არის კონტეინერის ტექნოლოგია?

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

ბაზარზე არსებობს მრავალი კონტეინერის ტექნოლოგია, მაგალითად Apache Mesos, რაკეტა, lxc, და დოკერი. მიუხედავად იმისა, რომ ისინი შედის კონტეინერის ტექნოლოგიის კატეგორიაში, ისინი განსხვავებულად ფუნქციონირებენ.

განსხვავება VM- ს შორის & VE

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

რა არის დოკერი?

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

დოკერის ძრავა

Docker ძრავა შედგება სამი კომპონენტისგან.

  • სერვერი: ეს კომპონენტი არის გრძელვადიანი პროცესი ან დემონი, რომელიც პასუხისმგებელია სურათებისა და კონტეინერების მართვისთვის.
  • REST API: ეს ინტერფეისი შესაძლებელს ხდის docker daemon- ს და docker კლიენტის ხელსაწყოს კომუნიკაციას.
  • Docker Client ინსტრუმენტი: Docker კლიენტის ინსტრუმენტი იყენებს REST API კომპონენტს, რათა აცნობოს დოქტერის დემონს, რომ მოახდინოს კონტეინირებული პროგრამა.

დოკერის სანდო რეესტრი

Docker Trusted Registry არის Docker– ის გამოსახულების შესანახი გადაწყვეტა საწარმოს პლატფორმის ბიზნესისთვის. იგი განსხვავდება დოკერის კერა.  ხოლო docker- ის ჰაბი მასპინძლობს ღრუბელში, დოკერის სანდო რეესტრი არის ნაშთების შენახვის შიდა გადაწყვეტა დოკერის საწარმოს გამოცემა.

დოკერის შინაარსის ნდობა

Docker Content Trust საშუალებას გაძლევთ გამოიყენოთ მონაცემების ხელმოწერები გამოიყენოს და გაგზავნილ და მიღებულ სურათებზე დოკერის დისტანციური რეესტრებიდან, როგორიცაა დოკერის ჰაბი.

Linux სახელების ადგილები

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

Linux კონტროლის ჯგუფები (ჯგუფები)

Linux Control Groups არის Linux ბირთვის მახასიათებელი, რომლის საშუალებითაც შეგიძლიათ გამოყოთ ისეთი რესურსები, როგორიცაა CPU დრო, ქსელის გამტარობა, სისტემის მეხსიერება და ა.შ., მასპინძელ აქტიურ პროცესებზე..

შესაძლებლობები

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

მოდით, ყურადღება გაამახვილოთ უსაფრთხოებაზე.

Docker- ის ჰოსტინგი

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

Linux- ის ბირთვის სკანირება

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

კოპირება ან კლონირება Lynis პროექტი Github– დან git კლონის ბრძანების გამოყენებით.

git clone https://github.com/CISOfy/lynis.git

შემდეგი, გამოიყენეთ ქვემოთ მოცემული ბრძანება, რომ გადაადგილდეთ lynis დირექტორიაში და გადაამოწმოთ Linux სისტემა.

cd lynis; ./lynis აუდიტის სისტემა

ჰარდენ ლინუქსის ბირთვის

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

  • ბუფერის გადინების ექსპლუატაციის პრევენცია
  • / tmp რასის დაუცველობის პრევენცია
  • / გამოაცხადეთ შეზღუდვები, რომლებიც არ გამოაქვეყნებენ ინფორმაციას პროცესის მფლობელთა შესახებ.
  • ბირთვის თვითნებური შესრულების პრევენცია და ა.შ..

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

დააინსტალირეთ დოკერი VM- ში

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

Root პრივილეგიების დაცვა

სტანდარტულად, Docker მოითხოვს root შეღავათებს კონტეინერების შექმნისა და მართვისთვის. მავნე სკრიპტს შეუძლია ამ შეტევის ზედაპირზე ბერკეტი მოახდინოს Linux- ის მასპინძელზე სუპერ სერვისზე გადასვლისკენ და საბოლოოდ წვდომა მგრძნობიარე ფაილების / საქაღალდეების, სურათების, სერთიფიკატების და ა.შ..

ამის თავიდან ასაცილებლად, ჩვენ შეგვიძლია გამოვიყენოთ შემდეგი ბრძანება. ჩვენ შეგვიძლია გადავწყვიტოთ ჩამოვარდნა ისეთი შესაძლებლობები, როგორიცაა setgid და setuid, რათა სხვა პროგრამები ან პროცესები არ შეცვალონ GID– ზე სხვა GID– ზე, რამაც შეიძლება გამოიწვიოს ესკალაციის პრივილეგია. ასევე შეგიძლიათ შეამოწმოთ აქ Linux შესაძლებლობების განსაზღვრის ჩამონათვალისთვის.

ქვემოთ მოცემულ ბრძანებას ახორციელებს apache webserver კონტეინერი და ჩამოაგდებს setgid და setuid შესაძლებლობებს – cap-drop- ით, რათა აპაჩის კონტეინერი შეცვალოს მისი GID და UID სხვა UID და GID.

GID და UID ამ კონტექსტში ეხება ჯგუფის პირადობას და მომხმარებლის ID შესაბამისობას.

docker run-d –cap-drop SETGID – cap-drop SETUID apache

დოკერის მომხმარებელი

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

თქვენ შეგიძლიათ დაამატოთ ან შექმნათ docker მომხმარებელი შემდეგი საშუალებით:

sudo groupadd docker

ზემოთ მოცემული ბრძანება ქმნის ჯგუფს, რომელსაც ეწოდება docker

შემდეგი, შექმენით მომხმარებელი ქვემოთ მოცემული ბრძანების გამოყენებით:

sudo useradd მაიკ

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

sudo usermod -aG docker mike

კონტეინერის მენეჯმენტი Cgroups- ით

წარმოების გარემოში შეიძლება ერთზე მეტი კონტეინერი გქონდეთ.

თუ თქვენს მასპინძელზე არ გაქვთ დამონტაჟებული ჯგუფები, შეგიძლიათ გამოიყენოთ შემდეგი ბრძანება, რომ დააინსტალიროთ და შემდეგ შეამოწმოთ აქ (Ubuntu- სთვის), თუ როგორ უნდა კონფიგურაცია.

sudo apt-get install cgroup-bin cgroup-lite cgroup-ინსტრუმენტები cgroupfs-Mount libcgroup1

კონტეინერებს შეგვიძლია გამოვყოთ CPU- ს შეზღუდული რესურსები – cpu- აქციების და – cpuset-cpus– ის საშუალებით.

შემდეგი ბრძანების მაგალითი გვიჩვენებს, რომ prodnginx კონტეინერის პროცესი შესრულებულია მხოლოდ პირველ ბირთვზე – cpuset-cpus– ით და გამოყოფს 20 CPU– ს მეშვეობით – აქციების საშუალებით, ხოლო პროქსინქსის კონტეინერის პროცესი შესრულებულია CPU– ს პირველ ორ ბირთვზე და ასევე გამოიყოფა 20 პროცესორი.

docker run -d – სახელი prodnginx – cpuset-cpus = 0 –cpu-sharing = 20 nginx
docker run -d – name testnginx – cpuset-cpus = 2 – cpu-sharing = 20 nginx

შემდეგ ჩაწერეთ ბრძანება docker- ის სტატისტიკა, რომ ნახოთ CPU– ს გამოყენება prodnginx და testnginx კონტეინერების მიერ

კონტეინერის ID CPU% MEM გამოყენება / LEMIT MEM% NET I / O BLOCK I / O
845bea7263fb prodnginx 57.69% 1.258MiB / 985.2MiB 0.13% 578B / 0B 1.33MB / 0B
189ba15e8258 testnginx 55.85% 1.25MiB / 985.2MiB 0.13% 578b / 0B 1.33MB / 0B

კარგი იდეა CPU- აქციების განსაზღვრა დოკერის მასპინძლისთვის, როდესაც მასზე ერთზე მეტი კონტეინერი გაქვთ.

კონტეინერების სახელების სახელების მენეჯმენტი

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

ჩვენ შეგვიძლია გავააქტიუროთ სახელების სივრცე დოკერში / / etc / subuid და / etc / subgid ფაილების გამოყენებით, როგორც ეს მოცემულია ქვემოთ.

  • შექმენით მომხმარებელი adduser ბრძანების გამოყენებით

sudo adduser dockremap

  • მომხმარებლის dockremap- ისთვის შექმენით ქვედანაყოფი

sudo sh -c ‘echo dockremap: 400000: 65536 > / etc / subuid ‘

  • შემდეგ შექმენით ქვედიდი მომხმარებლისთვის dockremap

sudo sh -c ‘echo dockremap: 400000: 65536 > / etc / subgid ‘

  • გახსენით daemon.json ფაილი და შეავსეთ იგი შემდეგი შინაარსით, რათა დააკავშიროთ userns-remap ატრიბუტი მომხმარებლის dockremap

vi /etc/docker/daemon.json
{

"userns-remap": "დოქრემაპი"

}

  • დააჭირეთ ღილაკს: wq შეინახეთ და დახურეთ daemon.json ფაილი და ბოლოს განაახლეთ დოკერი, რათა დოკერის მასპინძელზე მდებარეობების სახელები შექმნათ.

sudo /etc/init.d/docker გადატვირთვა

Docker Daemon- ის უზრუნველყოფა

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

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

vi daemon.json
{
"დებიუტი": ყალბი,
"ტლი": მართალია,
"ტლის კონცერტი": "/var/docker/server.pem",
"ტლიცკი": "/var/docker/serverkey.pem",
"მასპინძლები": ["TCP: //192.168.16.5: 2376"]
}

დოკერის კომპონენტების უზრუნველყოფა

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

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

გადაამოწმეთ სურათები სანოტარო სერვერთან

სანამ ნოტარიუსის სერვერს გამოვიყენებთ სურათების დასაწერად, ჩვენ უნდა ჩამოვწეროთ და დავაყენოთ დოკერ-კომპოზიცია. ჩვენ ვიყენებთ Docker Compose– ს სანოტარო სერვერის დასახატად.

  • აწარმოეთ ბრძანება ქვემოთ, რომ ჩამოტვირთოთ Docker Compose უახლესი ვერსია

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s) – $ (uname -m)" -o / usr / local / bin / docker-compose

  • გამოიყენეთ შესრულებითი ნებართვები დოქტორ-კომპოზიციაში, როგორც ქვემოთ მოცემულია

sudo chmod 700 / usr / local / bin / docker-compose

  • შეგიძლიათ შეამოწმოთ, თუ წარმატებით დააინსტალირეთ დოკერის კომპოზიცია შემდეგი ბრძანების საშუალებით

დოკერ-კომპოზიცია – შეცვლა

  • ახლა ჩვენ შეგვიძლია დავაყენოთ სანოტარო სერვერი დოკერ-კომპოზიციის საშუალებით

git clone https://github.com/theupdateframework/notary.git

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

docker-compose build
დოკერი-კომპოზიცია up -d

  • შემდეგ დააკოპირეთ კონფიგურაცია და სცადეთ სერთიფიკატები თქვენს ადგილობრივ სანოტარო ცნობარში ქვემოთ მოცემული ბრძანების გამოყენებით

mkdir -p ~ /. ნოტარიული && cp cmd / notary / config.json cmd / notary / root-ca.crt ~ /. ნოტარიული

  • ახლა შეასრულეთ შემდეგი ბრძანება, რომ დაუკავშიროთ ნოტარიუსის სერვერი დოკერ კლიენტთან

ექსპორტი DOCKER_CONTENT_TRUST = 1
ექსპორტზე DOCKER_CONTENT_TRUST_SERVER = https: // ნოტარიუსის სერვერი: 4443

  • შექმენით დელეგაციის ძირითადი წყვილი ქვემოთ მოცემულ ბრძანებაში

docker trust key generate mike –dir ~. / docker / trust

  • მოდით შევქმნათ სამიზნე ახალი კლავიშები იმ შემთხვევაში, თუ საცავი არ არსებობს

დოკერის ნდობის ხელმოწერის დამატება – კლავიატურა ~ / .დამოკიდებული / ნდობა / mike.pub mike mikedem0 / whalesay

  • ამის შემდეგ შეგიძლიათ ხელი მოაწეროთ თქვენს დოკერის სურათს, ბრძანების დოკერის ნდობის ნიშნის გამოყენებით. თქვენ უნდა გაიყვანოთ დოკერის სურათი დოკერის კერადან და ხელახლა დაასახელოთ ბრძანება docker pull და docker tag შესაბამისად..

docker trust sign mikedem0 / nginx: უახლესი

ასევე შეგიძლიათ სკანირება მოახდინოთ დოკერის სურათებზე დაუცველობებისა და კონფიგურაციის ხარვეზებისთვის. აქ შეგიძლიათ შეამოწმოთ, თუ როგორ გამოიყენოთ Anchor ძრავა დაუცველების სკანირებისთვის Docker Bench Security კონფიგურაციის ხარვეზების შესამოწმებლად.

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

ტეგები:

  • დოკერი

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map