هنگام آماده سازی زیرساخت، اغلب نصب و راه اندازی برنامه هایتان اصلی ترین نگرانی شماست. با این حال، اگر بدون توجه به نیاز های امنیتی زیرساختتان سعی در راه اندازی صحیح نرم افزار های خود داشته باشید، ممکن است پیامد های ویرانگری در پی داشته باشد.
آرتا گستر در این مقاله ، در مورد برخی از شیوه های امنیتی اولیه صحبت می کند که برای تنظیم قبل یا همزمان با نصب برنامه هایتان بهترین هستند.پس در ادامه ما را همراهی کنید...
کلید های SSH
کلید SSH یک جفت کلید رمزنگاری شده است که می تواند برای تأیید اعتبار به یک سرور SSH به عنوان جایگزین برای ورودهای مبتنی بر رمز عبور استفاده شود. یک جفت کلید خصوصی و عمومی قبل از احراز هویت ایجاد می شود. کلید خصوصی مخفی و امن توسط کاربر نگهداری می شود، در حالی که کلید عمومی را می توان با هر کسی به اشتراک گذاشت. برای پیکربندی احراز هویت (تصدیق) کلید SSH، باید کلید عمومی کاربر را روی سرور در یک پوشه خاص قرار دهید. هنگامی که کاربر به سرور متصل می شود، سرور مدرکی درخواست می کند مبنی بر اینکه سرویس گیرنده دارای کلید خصوصی مرتبط است یا خیر. کلاینت SSH از کلید خصوصی برای پاسخ دادن به شیوه ای استفاده می کند که مالکیت کلید خصوصی را ثابت می کند. پس از آن سرور به کلاینت اجازه می دهد بدون رمز عبور لاگین کند.

کلید های SSH چگونه باعث افزایش امنیت می شوند؟
با استفاده از SSH، هر نوع احراز هویتی، از جمله احراز هویت توسط رمز عبور، به طور کامل رمزگذاری می شود. اگرچه، زمانی که لاگین های مبتنی بر رمز عبور مجاز باشد، کاربران مخرب می توانند بارها و بارها برای دسترسی به سرور تلاش کنند. با استفاده از قدرت محاسباتی مدرن، می توان از طریق خودکار سازی این تلاش ها به سرور دسترسی پیدا کرد و اینقدر ترکیب های مختلف پسورد امتحان می شود تا بالاخره پسورد صحیح پیدا شود. راه اندازی احراز هویت کلید SSH به شما اجازه غیر فعال کردن احراز هویت مبتنی بر رمز عبور را می دهد. به طور کلی کلیدهای SSH تعداد بیت بیشتری از داده ها نسبت به رمز عبور دارند، برخورداری از تعداد بیت بیشتر بدین معناست که یک کاربر مخرب برای ورود باید ترکیبات بسیار بیشتری را امتحان کند. بسیاری از الگوریتم های کلید SSH به دلیل سخت افزار محاسباتی مدرن، غیرقابل تشخیص هستند، چون اگر هکر بخواهد از روش ترکیبات احتمالی برای ورود استفاده کند به زمان زیادی احتیاج دارد تا بتواند پسورد را حدس بزند.

فایروال ها
فایروال یک قطعه سخت افزاری (یا نرم افزاری) است که کارش کنترل خدماتی است که باید در شبکه در دسترس قرار گیرد. این به معنی مسدود کردن یا محدود کردن دسترسی به هر پورت به جز مواردی است که باید در دسترس عموم قرار بگیرند. روی یک سرور معمولی، تعدادی از خدمات ممکن است به صورت پیش فرض اجرا شود.
این خدمات را می توان به گروه های زیر تقسیم کرد:
دسته اول، خدمات عمومی، این خدمات می تواند توسط هر کسی در اینترنت مورد دسترسی قرار گیرد، اغلب هم به صورت ناشناس دسترسی صورت می پذیرد. یک مثال خوب از این نوع، وب سروریست که ممکن است اجازه دسترسی به سایت شما را بدهد.
دسته دوم، خدمات خصوصیست که فقط باید توسط یک گروه انتخاب شده از اکانت های مجاز یا از مکان های خاص قابل دسترس باشد. مثال این نوع خدمات می تواند کنترل پنل پایگاه داده باشد.
دسته سوم، خدمات داخلی هستند که فقط باید از درون سرور قابل دسترس باشند، بدون ارائه خدمات به جهان خارج. مثال این نوع خدمات می تواند یک پایگاه داده باشد که تنها اتصالات محلی را می پذیرد.
کار یک فایروال این است که اطمینان حاصل کند، دسترسی به نرم افزار شما با توجه به دسته های بالا محدود شده است. خدمات عمومی را می توان برای هر کس باز و در دسترس قرار داد و خدمات خصوصی را می توان بر اساس معیارهای مختلف محدود کرد. خدمات داخلی می تواند برای جهان خارح به طور کامل غیر قابل دسترس شود. برای پورت هایی که استفاده نمی شوند، دسترسی به طور کامل در اکثر تنظیمات مسدود می شود.

چگونه فایروال می تواند باعث افزایش امنیت شود؟
فایروال ها بخش مهمی از پیکربندی هر سرور هستند. حتی اگر سرویس دهنده شما ویژگی های امنیتی را خودش اجرا کرده باشد یا آنها را روی رابط هایی که شما برای اجرا انتخاب کردید، محدود کرده باشد، باز هم فایروال به عنوان یک لایه محافظ اضافه عمل می کند.
فایروالی که به درستی پیکربندی شده باشد دسترسی به همه چیز را محدود می کند به غیر از خدمات خاصی که نیاز دارید تا باز بماند. نمایش تنها قسمتهای کمی از نرم افزار و محدود کردن اجزای آسیب پذیر در مقابل بهره برداری، سطح حمله به سرور را کاهش می دهد.

پیکربندی فایروال چقدر پیچیدگی دارد؟
فایروال های زیادی برای سیستم های لینوکس وجود دارند، بعضی از آنها منحنی یادگیری سریع تر از بقیه دارند. هرچند، به طور کلی، تنظیم فایروال فقط چند دقیقه طول می کشد و فقط هنگام تنظیم اولیه سرور و یا زمانی که تغییری در خدماتی که روی سرور ارائه می دهید اتفاق می افتد، نیاز است انجام شود.

VPN ها و شبکه های خصوصی
شبکه های خصوصی شبکه هایی هستند که فقط برای سرورها یا کاربران خاص در دسترس هستند. به عنوان مثال، در DigitalOcean، شبکه خصوصی در بعضی از مناطق به عنوان یک شبکه گسترده دیتاسنتر وجود دارد.
VPN یا شبکه خصوصی مجازی راهی برای ایجاد ارتباط ایمن بین کامپیوترهای راه دور و برقرای اتصال به عنوان یک شبکه محلی خصوصی است. این امکان، راهی را برای پیکربندی سرویس های شما فراهم می کند بطوریکه آنها در یک شبکه خصوصی قرار دارند و سرور های راه دور را از طریق اتصالات ایمن به آنها وصل می شوند.

چگونه VPN باعث افزایش امنیت می شود؟
در انتخاب بین دو گزینه، استفاده از شبکه خصوصی به جای عمومی برای ارتباطات داخلی تقریبا همیشه ترجیح داده می شود. با این حال، به خاطر اینکه دیگر کاربران آن دیتاسنتر به همان شبکه دسترسی دارند، شما هنوز هم باید اقدامات لازم برای امنیت ارتباطات بین سرورهای خود را انجام دهید.
استفاده از VPN، به طور موثر، راهی برای طراحی یک شبکه خصوصی است که فقط سرورهای شما می توانند ببینند. بنابراین ارتباطات کاملا خصوصی و ایمن خواهند بود. برنامه های دیگر می توانند طوری پیکربندی شوند که ترافیک خود را از طریق رابط مجازی که نرم افزار VPN ایجاد کرده است عبور دهند. به این ترتیب، تنها خدماتی که به وسیله مشتریان در اینترنت عمومی مصرف می شوند، باید در شبکه عمومی قرار بگیرند. 
پیکر بندیVPN چقدر پیچیدگی دارد؟
استفاده از شبکه های خصوصی در دیتاسنتری که دارای این قابلیت است به همان اندازه فعال سازی رابط کاربری در خلال ایجاد سرور و تنظیم برنامه های کاربردی و فایروال برای استفاده از شبکه خصوصی، ساده است. به یاد داشته باشید که شبکه های خصوصی گسترده دیتاسنتر، فضا را با دیگر سرور هایی که از همان شبکه استفاده می کنند به اشتراک می گذارند.
همانطور که برای VPN، راه اندازی اولیه کمی بیشتر زمان می برد، به همان اندازه امنیت افزایش می یابد که در بسیاری موارد این امنیت ارزشمند است. هر سرور در یک VPN باید داده ها و تنظیمات مشترک مورد نیاز برای نصب و پیکربندی یک اتصال ایمن را داشته باشد. پس از اینکه VPN نصب رو راه اندازی شد، برنامه ها باید برای استفاده از تونل VPN پیکربندی شوند.

زیرساخت کلید عمومی و رمزگذاری SSL/TLS
زیرساخت کلید عمومی یا PKI به سیستمی اطلاق می شود که برای ایجاد، مدیریت و تایید گواهی شناسایی افراد و ارتباطات رمزگذاری شده طراحی شده است. گواهینامه های SSL یا TLS می تواند برای تأیید هویت های مختلف به یکدیگر استفاده شود. پس از احراز هویت، همچنین می توانند برای برقراری ارتباط رمز شده استفاده شوند.

گواهینامه های SSL/TLS چگونه باعث افزایش امنیت می شوند
ایجاد یک مجوز گواهینامه و مدیریت این گواهینامه ها روی سرورهای شما، به هر موجودیت در زیرساخت اجازه می دهد، هویت دیگر اعضا را اعتبار سنجی کرده و ترافیک آنها را رمزگذاری کند. این کار از حملات میان راهی که یک مهاجم در زیرساخت شما نقش یک سرور را برای ردگیری ترافیک تقلید می کند، جلوگیری می کند.
هر سرور می تواند برای اعتماد به یک مجوز گواهینامه متمرکز پیکربندی شود. پس از آن، هر گواهی نامه ای که به آن مجوز داده شود، می تواند به صورت ضمنی مورد اعتماد شناخته شود. اگر برنامه ها و پروتکل هایی که برای برقراری ارتباط استفاده می کنید از رمزگذاری TLS / SSL پشتیبانی کند، این روشی رمزگذاری سیستم شما را بدون سربار تونل VPN رمزگذاری می کند. (که اغلب از SSL نیز به طور داخلی استفاده می کند)

پیاده سازی رمزگذاری SSL/TSLچقدر پیچیدگی دارد؟
پیکربندی یک مجوز گواهینامه و تنظیم بقیه زیرساخت کلیدی عمومی تقریبا بخش کمی از راه اندازی ابتدایی را شامل می شود. علاوه بر این، مدیریت گواهینامه ها می تواند هنگامی که گواهینامه های جدید ایجاد، امضا یا لغو می شوند بار اضافی مدیریتی ایجاد کند. برای بسیاری از کاربران، پیاده سازی یک زیرساخت کلیدی کامل، منطقی به نظر می رسد چون زیرساخت آنها نیاز به رشد دارد. ایمن سازی ارتباطات بین اجزا با استفاده از VPN ممکن است وسیله موقت خوبی باشد تا زمانی که شما به این نقطه برسید که PKI ارزش هزینه های اضافی اجرایی را دارد.

حسابرسی خدمات
آرتاگستر تا اینجا، در مورد تکنولوژی هایی صحبت کرد که برای افزایش امنیت می توانید از آنها استفاده کنید. هرچند، بخش بزرگی از امنیت ، تجزیه و تحلیل سیستم ها، یافتن سطوح حمله قابل دسترس و برقراری امنیت اجزا به بهترین نحو ممکن است.
حسابرسی سرویس ها فرآیند یافتن سرویس هایی است که روی سرورهای زیرساخت شما اجرا می شوند. در اغلب موارد، سیستم عامل پیش فرض طوری پیکربندی شده است که سرویس های خاصی را هنگام بوت اجرا کند. گاهی اوقات نصب نرم افزار اضافی می تواند باعث اجرای فرآیند های وابسته ای می شود که به صورت خودکار شروع به کار می کنند.
حسابرسی سرویس ها راهی برای دانستن اینست چه سرویس هایی در سیستم شما اجرا می شود، از کدام پورت ها برای ارتباط استفاده می شود، و چه پروتکل هایی پذیرفته می شوند. این اطلاعات می تواند در تنظیم فایروال به شما کمک کنند.

حسابرسی سرویس ها چگونه امنیت را افزایش می دهد؟
سرورها فرآیندهای زیادی را برای اهداف داخلی و برای رسیدگی به کلاینت های خارجی آغاز می کنند. هر یک از این فرآیند ها یک سطح حمله گسترش یافته در اختیار کاربران مخرب می گذارد. هرچقدر سرویس هایی بیشتری روی سرور در حال اجرا باشد، احتمال آسیب پذیری نرم افزار قابل دسترس شما بیشتر است. هر وقت لیست سرویس های شبکه ای که باید روی ماشین شما اجرا شود را به دست آوردید، شروع به تجزیه و تحلیل این سرویس ها کنید. 

پیاده سازی حسابرسی سرویس ها چقدر پیچیدگی دارد؟
انجام حسابرسی سرویس پایه، فوق العاده ساده است. با استفاده از دستور netstat می توانید ببینید که چه سرویس هایی از کدام پورت های رابط کاربری استفاده می کنند. در زیر مثال ساده ای می بینید که نام برنامه، PID و آدرس هایی که برای گوش دادن به ترافیک TCP و UDP استفاده می شوند، را نشان می دهد:
sudo netstat -plunt
خروجی که مشاهده می کنید به شکل زیر است:
Active Internet connections (only servers)

Proto bRecv-Q Send-Q Local Address   Foreign Address    State    PID/Program name

tcp 0    0 0.0.0.0:22    0.0.0.0:*     LISTEN    887/sshd

tcp 0    0 0.0.0.0:80     0.0.0.0:*      LISTEN   919/nginx

tcp6 0  0 :::22            :::*              LISTEN  887/sshd

tcp6 0  0 :::80            :::*              LISTEN    919/nginx

ستون های اصلی حتما باید به آنها توجه داشته باشید، Proto، Local Addressو PID/Program name است. اگر آدرس ۰٫۰٫۰٫۰ باشد، پس این سرویس اتصالات در تمام رابط ها را می پذیرد.

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

یک سیستم تشخیص نفوذ، یا IDS، بخشی از یک نرم افزار است که بر سیستم یا شبکه از لحاظ فعالیت های غیر مجاز دارد. بسیاری از نسخه های IDS مبتنی بر هاست از حسابرسی فایل به عنوان یک روش برای بررسی اینکه آیا سیستم تغییر کرده است یا نه استفاده می کنند.

حسابرسی فایل و سیستم های تشخیص نفوذ چگونه امنیت را افزایش می دهد؟
همانند حسابرسی سطح سرویس فوق ، اگر شما در مورد تضمین امنیت سیستم جدی هستید، اینکه بتوانید حسابرسی سطح فایل سیستم خود را اجرا کنید، بسیار مفید است. این کار می تواند به صورت دوره ای توسط مدیر یا به عنوان بخشی از فرآیندهای خودکار در IDS انجام شود.
این استراتژی ها راه هایی هستند که شما را کاملا مطمئن می کنند، فایل سیستم توسط کاربر یا فرایندی تغییر داده نمی شود. به دلایل بسیار، مزاحمان اغلب تمایل دارند پنهان باقی بمانند تا بتوانند مدت طولانی تری از سرور سوء استفاده کنند. ممکن است نسخه های باینری را با نسخه های خطرناک جایگزین کنند. اگر هر یک از فایل ها تغییر داده شده باشد، حسابرسی فایل سیستم شما را از آن مطلع می کند و شما را لحاظ یکپارچگی محیط سرورتان آسوده خاطر می کند.

پیاده سازی حسابرسی فایل چقدر پیچیدگی دارد؟
پیاده سازی یک IDS یا انجام حسابرسی فایل می تواند فرآیند فشرده ای باشد. پیکربندی اولیه شامل این می شود که هرگونه تغییر غیر استانداردی که روی سرور ایجاد کردید به سیستم حسابرسی بگویید و مسیرهایی که باید برای ایجاد خط مشی اصلی حذف شوند را تعریف کنید.
همچنین این کار عملیات روزانه بیشتری را درگیر می کند. و روال های به روز رسانی را پیچیده تر می کند، چون قبل از به روز رسانی باید سیستم را مجددا بررسی کنید و بعد از به روز رسانی هم برای اعمال تغییرات به نسخه های جدید نرم افزار، پایگاه اولیه را دوباره بسازید. همچنین باید گزارش را به مکان دیگری بفرستید تا نفوذگر نتواند حسابرسی را برای پوشش دادن اهداف خود تغییر دهد.
درحالی که ممکن است این کار بار مدیریتی شما را افزایش دهد، قابلیت چک کردن سیستم در برابر یک کپی خوب و شناخته شده یکی از معدود راه های تضمین عدم دستکاری فایل ها بدون اطلاع شماست. برخی از سیستم های حسابرسی فایل و تشخیص نفوذ فایل های رایج و محبوب Tripwire و Aide هستند.

محیط های اجرایی جداگانه
جداسازی محیط های اجرایی به هر روشی اطلاق می شود که در آن اجزای مجزا در فضای اختصاصی خود اجرا می شوند.
این روش می تواند به معنای منحصر کردن اجزای اجرایی گسسته شما به سرورهای خودشان باشد یا ممکن است به پیکربندی سرویس ها برای کار در محیط ها یا ظروف chroot اشاره کند. سطح انزوا به شدت به نیازهای برنامه و واقعیت زیرساخت شما وابسته است.

محیط های اجرایی جداگانه چگونه باعث افزایش امنیت می شود؟
منحصر کردن فرآیندها به محیط های اجرایی مجزا، توانایی شما را برای جلوگیری از بروز هرگونه مشکل امنیتی که ممکن است بوجود آید، افزایش می دهد. دقیقا شبیه دیوار ها و محفظه ها که قسمت های مختلف کشتی را درمقابل حریق محافظت می کنند، جدا کردن اجزای سیستم از هم، می تواند دسترسی یک مزاحم را به دیگر بخش های زیرساخت شما محدود کند.

پیاده سازی محیط اجرایی جداگانه تا چه حد سخت و پیچیده است ؟
بسته به نوع جداسازی که انتخاب می کنید، تقسیم برنامه ها به همان نسبت ساده می شود. با اختصاص اجزای منحصر به فرد به محفظه ها ، به سرعت معیار های جداسازی دستتان می آید. اما توجه داشته باشید که Docker کانتینرینگ خود را به عنوان یک ویژگی امنیتی در نظر نمی گیرد. ایجاد یک محیط chroot برای هر قطعه می تواند بخشی از فرآیند جداسازی را فراهم کند، اما این روش ، راه بدون خطایی برای جداسازی نیست، بطوریکه همیشه راه هایی برای شکستن مرز امنیتی یک محیط chroot وجود دارد. اجزای متحرک ماشین های اختصاصی بهترین سطح جداسازی هستند و در بسیاری موارد ممکن است ساده ترین راه نیز باشند ولی ممکن است برای ماشین های اضافی هزینه بیشتری داشته باشند.