چگونه می توان از Docker برای محیط تولید استفاده کرد؟

بیایید ببینیم چگونه Docker را برای محیط تولید سخت و ایمن کنیم.


با اينكه داکر این امکان را برای توسعه دهندگان نرم افزار و مهندسان DevOps فراهم کرده است که بتوانند برنامه های کاربردی را به سرعت بسازند و مستقر کنند ، همچنین با استفاده از یک سطح بزرگ حمله برای هکرهای سایبری امکان نفوذ.

در ادامه چگونگی تأمین امنیت Docker بر روی پلتفرم لینوکس را از موارد زیر بررسی خواهیم کرد.

  • نقص پیکربندی
  • اجرای کد از راه دور
  • سرریز بافر
  • جعل تصویر و غیره.

ما از ابزارهای زیر مانند موارد زیر استفاده خواهیم کرد سرور اسناد رسمی داکر برای امضای تصاویر و امنیت نیمکت داکر برای بررسی میزبان ، پیکربندی شبح و غیره.

قبل از شروع امنیت ، اجازه دهید اصول اولیه را لمس کنیم.

فناوری کانتینر چیست?

فناوری کانتینر به توسعه دهندگان یا مهندسان DevOps اجازه می دهد تا یک برنامه را بسته بندی کنند تا بتواند با وابستگی های جدا شده از فرآیندهای دیگر اجرا شود.

تعدادی از فن آوری های کانتینر در بازار وجود دارد ، مانند آپاچی مزوس, موشک, lxc, و داکر. اگرچه آنها در رده فناوری ظروف قرار می گیرند ، اما عملکرد متفاوتی دارند.

تفاوت بین VM & VE

یک میزبان ماشین مجازی کاملاً متفاوت از یک میزبان محیط مجازی است. در دستگاه های مجازی ، هر برنامه کانتینر شده دارای مجموعه ای از کتابخانه ها و سیستم عامل خاص خود است ، در حالی که برنامه ها به طور پیش فرض روی یک میزبان محیط مجازی مانند lxc قرار می گیرند ، و docker هسته Linux را نیز به اشتراک می گذارد..

داکر چیست؟?

Docker یک فناوری کانتینر است که توسط میلیون ها نفر برای ایجاد یک برنامه وب و استقرار آن از یک آزمایش به یک محیط تولید استفاده می شود.

موتور داکر

موتور Docker از سه جزء تشکیل شده است.

  • A سرور: این مؤلفه یک پروسه طولانی مدت یا Daemon است که وظیفه مدیریت تصاویر و ظروف را بر عهده دارد.
  • REST API: این رابط امکان برقراری ارتباط با Daemon Docker و ابزار مشتری docker را فراهم می آورد.
  • Docker Client tool: ابزار سرویس گیرنده Docker با استفاده از مؤلفه REST API برای اطلاع رسانی از Docker Docker برای اجرای یک برنامه کانتینر شده.

رجیستری قابل اعتماد Docker

Docker Trusted Registry یک راه حل ذخیره سازی تصویر از Docker برای تجارت پلت فرم شرکت است. این متفاوت از داکتر هاب.  در حالی که مرکز docker در ابر میزبانی می شود ، رجیستری قابل اعتماد docker یک راه حل ذخیره سازی پیش فرض برای نسخه شرکت داکر.

اعتماد به محتوا داکر

Docker Content Trust امکان استفاده از امضاهای داده را برای تصاویر ارسال شده و دریافت شده به و از ثبت های docker از راه دور مانند مرکز docker فراهم می کند..

نام های لینوکس

نام های لینوکس یک ویژگی هسته لینوکس است که یک برنامه یا پردازش شده کانتینر شده توسط میزبان محیط مجازی را از دیگر فرآیندهای جدا شده جدا می کند.

گروه های کنترل لینوکس (گروه ها)

Linux Control Groups یک ویژگی هسته لینوکس است که به شما امکان می دهد منابعی از قبیل زمان CPU ، پهنای باند شبکه ، حافظه سیستم و غیره را به فرآیندهای فعال روی یک میزبان اختصاص دهید..

توانایی ها

در لینوکس ، یک ویژگی امنیتی در زیر سیستم هسته وجود دارد که می تواند برای محدود کردن فرآیند ممتاز چنین فرآیندی که توسط کاربر با UID انجام شده باشد ، تنظیم یا اجرا شود. قوانین قابلیت ها.

اکنون بیایید روی امنیت توجه کنیم.

امنیت میزبان داکر

در این بخش خواهیم دید که چگونه میزبان را در جایی که داکر در آن قرار دارد ، ایمن کنیم.

اسکن هسته لینوکس

قبل از میزبانی یک docker در یک سیستم عامل لینوکس ، ابتدا باید هسته را بازرسی کنید. چندین ابزار منبع باز مانند وجود دارد لینس و OpenVAS می توانید برای اسکن هسته لینوکس استفاده کنید.

پروژه Lynis را از Github با استفاده از دستور gon clone کپی یا کلون کنید.

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

بعد ، از دستور زیر برای حرکت به فهرست lynis و ممیزی سیستم لینوکس استفاده کنید.

cd lynis؛ ./lynis سیستم حسابرسی

هسته هارد لینوکس

بعد از اینکه هسته لینوکس را برای آسیب پذیری های مبتنی بر سیستم اسکن کردید ، می توانید یک لایه محافظ اضافی دیگر به هسته از طریق عدم امنیت. این ویژگی های امنیتی مانند موارد زیر را ارائه می دهد.

  • جلوگیری از سوء استفاده از سرریز بافر
  • / پیشگیری از آسیب پذیری نژاد tmp
  • / محدودیت هایی را که اطلاعاتی درباره صاحبان فرآیند به شما نشان نمی دهد ، اعلام کنید.
  • جلوگیری از اجرای کد دلخواه در هسته و غیره.

در ابتدا می توانید دانلود تکه هایی به صورت رایگان از عدم امنیت و استفاده از آن در هسته فعلی شما. اما این مجوزهای مجانی را نمی دهد.

Docker را در یک VM نصب کنید

به جای نصب مستقیم Docker روی میزبان لینوکس ، می توانید با نصب آن در داخل یک ماشین مجازی ، یک لایه محافظ اضافی اضافه کنید. با انجام این کار ، حتی اگر یک مشکل آسیب پذیری با هسته میزبان وجود داشته باشد ، روی ظروف docker تأثیر نمی گذارد.

محافظت از امتیازات Root

به طور پیش فرض ، داکر برای ایجاد و مدیریت ظروف نیاز به امتیازات اصلی دارد. اسکریپت مخرب می تواند این سطح حمله را به خود جلب کند تا در یک میزبان لینوکس به یک superuser تبدیل شود و در نهایت به پرونده ها / پوشه ها ، تصاویر ، گواهی ها و غیره حساس شود..

برای جلوگیری از آن می توانیم از دستور زیر استفاده کنیم. ما می توانیم تصمیم بگیریم قابلیت هایی مانند setgid و setuid را برای جلوگیری از تغییر سایر برنامه ها یا فرآیندهای GID خود به GID دیگری که می تواند منجر به امتیاز پایدار شود ، رها کنیم. شما همچنین می توانید بررسی کنید اینجا برای لیستی از تعریف قابلیت های لینوکس.

دستور زیر ، ظروف سرور apache را اجرا می کند و قابلیت های setgid و setuid را از طریق –cap-drop رها می کند تا از تغییر ظرف ظرفشویی GID و UID خود به UID و GID دیگر جلوگیری کند..

GID و UID در این زمینه به ترتیب به شناسه گروه و شناسه کاربر اشاره دارند.

docker run -d –cap-drop SETGID – آپاچی SEP-drop-drop

کاربر داکر

به غیر از جلوگیری از برنامه ها یا فرآیندهای دیگر ، می توانید به جای مدیریت آن از طریق یک superuser ، یک کاربر را نیز برای مدیریت عملیات docker مانند docker run ایجاد کنید..

می توانید از طریق موارد زیر یک کاربر docker اضافه یا ایجاد کنید:

docker sudo groupadd

دستور بالا گروهی به نام docker ایجاد می کند

بعد ، با استفاده از دستور زیر کاربر را ایجاد کنید:

sudo useradd mike

در آخر از دستور زیر استفاده کنید تا یک کاربر مایک به داکر گروه اضافه شود تا عملیات docker را انجام دهد.

sudo usermod -aG mike docker

مدیریت کانتینر با Cgroups

در یک محیط تولید ، شما ممکن است بیش از یک ظرف داشته باشید.

اگر دسته های نصب شده روی هاست خود ندارید ، می توانید از دستور زیر برای نصب آن استفاده کنید و سپس بررسی کنید اینجا (برای اوبونتو) در مورد چگونگی پیکربندی آن.

sudo apt-get نصب cgroup-bin cgroup-lite cgroup-tool cgroupfs-Mount libcgroup1

ما می توانیم ظروف را به منابع CPU محدود از طریق –cpu-سهام و – cpuset-cpus اختصاص دهیم

مثال فرمان زیر نشان می دهد که فرآیند ظروف prodnginx فقط در هسته اول از طریق – cpuset-cpus انجام می شود و 20 CPU را از طریق –cpu-سهام اختصاص می دهد در حالی که فرایند ظرف proxnginx در دو هسته CPU اول اجرا می شود و 20 نیز اختصاص داده می شود. پردازنده.

docker run -d – name prodnginx – cpuset-cpus = 0 –cpu-sharing = 20 nginx
docker run -d – name testnginx – cpuset-cpus = 2 –cpu-sharing = 20 nginx

سپس آمار docker command را تایپ کنید تا میزان استفاده از CPU توسط ظروف prodnginx و testnginx را مشاهده کنید

CONTEINER ID نام CPU٪ MEM استفاده / LIMIT 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 برای میزبان docker هنگامی که بیش از یک ظرف در حال کار بر روی آن هستید.

مدیریت کانتینرها با نام های نام

فضای نام می تواند مانع از اجرای ظروف به عنوان کاربر ممتاز شود ، که می تواند به جلوگیری از حملات افزایش امتیاز کمک کند.

ما می توانیم با استفاده از پرونده های / etc / subuid و / etc / subgid همانطور که در زیر نشان داده شده است ، فضای نام را در docker فعال کنیم..

  • با استفاده از دستور adduser یک کاربر ایجاد کنید

dockremap sudo adduser

  • یک subuid را برای dockremap کاربر تنظیم کنید

sudo sh-c ‘echo dockremap: 400000: 65536 > / و غیره / subuid ‘

  • سپس subgid را برای dockremap کاربر تنظیم کنید

sudo sh-c ‘echo dockremap: 400000: 65536 > / و غیره / فرعی ‘

  • پرونده daemon.json را باز کنید و آن را با محتوای زیر پر کنید تا ویژگی userns-remap را به کاربر dockremap مرتبط کنید.

vi /etc/docker/daemon.json
{

"userns-remap": "dockremap"

}

  • برای ذخیره و بستن پرونده daemon.json ، فشار دهید: و در نهایت مجدد docker را فعال کنید تا بتوانید مکان های نام را در میزبان docker فعال کنید

sudo /etc/init.d/docker راه اندازی مجدد

امنیت Docker Daemon

همچنین برای پیاده سازی ارتباط ایمن بین مشتری docker و docker daemon از طریق TLS ، همچنین باید از Daemon Demoner پیکربندی شود..

برای باز کردن پرونده daemon.json از دستور زیر استفاده کنید و مطابق شکل زیر ، محتوای زیر را کپی و جایگذاری کنید (IP را جایگزین واقعی خود کنید)

vi daemon.json
{
"اشکال زدایی": نادرست,
"TLS": درست است، واقعی,
"Tlscert": "/var/docker/server.pem",
"تلیسکی": "/var/docker/serverkey.pem",
"میزبان": ["tcp: //192.168.16.5: 2376"]
}

تأمین قطعات Docker

بیایید ببینیم چگونه می توان از ابزارهایی مانند استفاده کرد CodeNotary و سرور دفتر اسناد رسمی برای جلوگیری از جعل تصویر ، تصاویر را امضا کنید. علاوه بر این ، همچنین لازم است که تصاویر را اسکن کنید تا مطمئن شوید که تصاویر دارای آسیب پذیری نیستند

ما از سرور اسناد رسمی Docker برای امضا و تأیید صحت تصاویر و استفاده استفاده خواهیم کرد موتور لنگر برای اسکن تصاویر برای آسیب پذیری.

تصاویر را با سرور اسناد رسمی تأیید کنید

قبل از استفاده از سرور Notary برای امضای تصاویر ، باید docker-compose را بارگیری و نصب کنیم. ما از 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-آهنگسازی

  • همانطور که در زیر آمده است ، مجوزهای اجرایی را در تنظیمات docker اعمال کنید

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

  • می توانید تست کنید که docker-آهنگسازی را با موفقیت از طریق دستور زیر نصب کرده اید

docker-آهنگسازی – تغییر شکل

  • اکنون می توانیم سرور اسناد رسمی را از طریق docker-compose نصب کنیم

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

  • دستور فوق کلون می کند یا سرور اسناد رسمی را از. کپی می کند مخزن اسناد رسمی
  • سرور اسناد رسمی و امضای را از طریق دستورات زیر شروع کنید:

docker-compose build
docker-compose up-d

  • سپس پیکربندی را کپی کرده و گواهی های آزمایش را با استفاده از دستور زیر در فهرست دفتر اسناد رسمی محلی خود کپی کنید

mkdir -p / .notary && cp cmd / notary / config.json cmd / notary / root-ca.crt ~ / .notary

  • حالا دستور زیر را اجرا کنید تا سرور اسناد رسمی را به مشتری docker وصل کنید

صادرات DOCKER_CONTENT_TRUST = 1
صادرات DOCKER_CONTENT_TRUST_SERVER = https: // دفتر اسناد رسمی: 4443

  • از طریق فرمان زیر یک جفت کلید هیئت را ایجاد کنید

کلید اعتماد docker تولید mike –dir ~. / docker / trust

  • اکنون در صورت وجود مخزن ، یک کلید جدید هدف را ایجاد خواهیم کرد

docker trust signer add –key / .docker / trust / mike.pub mike mikedem0 / whalesay

  • سپس می توانید با استفاده از علامت اعتماد فرمان docker ، تصویر docker خود را امضا کنید. باید تصویر docker را از مرکز docker بکشید و با استفاده از برچسب فرمان docker و برچسب docker ، دوباره تگ کنید..

docker trust sign mikedem0 / nginx: آخرین

همچنین می توانید تصاویر docker را برای آسیب پذیری ها و نقص تنظیمات اسکن کنید. شما می توانید اینجا را بررسی کنید تا دریابید که چگونه از موتور Anchor برای اسکن آسیب پذیری ها استفاده می کنید Docker Bench Security برای بررسی نقص تنظیمات.

امیدوارم موارد فوق ایده ای درباره Docker 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