چنانچه پستهای تخصصی من رو خونده باشید، بیشتر اونها حول محور لینوکس میچرخند. سیستمعاملی که از ده سال پیش، ترجیح و انتخاب من برای هرکاری بوده (و بعضیها هم معتقدند گنو/لینوکس اسم درستشه؛ من برای کوتاه شدن ماجرا میگم لینوکس. پس خواهشا جنگ اسم رو شروع نکنید که جنگ بزرگتری در پیشه!). لپتاپ من، همین الان که دارم این مطلب رو مینویسم نسخه development از Ubuntu رو اجرا میکنه. یک سیستم عامل با هسته لینوکس، فضای کاربر GNU و کلی ابزار دیگر که افراد زیادی از سراسر دنیا، توسعه دادند.
این سیستم عامل، به خودی خود با ساختاری که ارائه کرده از سیستمعامل ویندوز امنیت بیشتری رو به همراه داره. مثال خیلی ساده بخوام بزنم، اینه که بدافزارهایی که به نام «ویروس» میشناسیم، نمیتونن روی لینوکس (یا هر سیستمعامل دیگری با ساختار یونیکسی) اجرا بشن و خرابکاری کنند. گرچه بدافزارها همهجا هستند و نمیشه از وجودشون غافل شد.
اما داستان این پست چیه؟ داستان این پست بر میگرده به اتفاقی که چند روز پیش برای من افتاد. با من همراه بشید تا یک خاطره بگم و کمی مقایسه انجام بدم.
چند روز پیش، من بالاخره تونستم یک سرور با سیستم عامل FreeBSD تهیه کنم. بعد از مکافات فراوان داشتن، تونستم بهش متصل بشم (حالا این داستان که تامینکننده سرور، خودش نمیتونست پیکربندی لازم رو روی سیستمعامل داشته باشه رو بعدها شاید تعریف کنم) و کاربرم رو ساختم.
از فایل id_rsa.pub که روی لپتاپم بود، یک کپی گرفتم و در پوشه :
~/.ssh
در قالب یک فایل با نام authorized_keys اون رو ذخیره کردم. از سرور خارج شدم و دوباره با SSH متصل شدم. حرفی که به من زد این بود:
«علیرغم این که شما کلید خودتون رو اضافه کردید، اما مجوز اون فایل طوریه که خیلیا میتونن بهش دسترسی داشته باشن. لطفا مجوز بهتری روی اون فایل قرار بدید».
گرچه میدونستم authorized_keys معمولا مجوز شماره ۴۰۰ باید داشته باشه، اما در فعالیتهای قبلی در سرورهای لینوکسی، هیچوقت چنین اروری دریافت نکرده بودم. این من رو خیلی به فکر فرو برد. ترجیح دادم در قالب این مطلب، در مورد این قضیه توضیح بدم.
موضوع دوستی با کاربر، الزامی در «همهپسند» بودن اون ایجاد نمیکنه هیچوقت. اما یک چیزی برای من سوال شد، این بود که چرا تقریبا همه سرورهای لینوکسی که داشتم - فارغ از توزیع - هیچوقت انقدر اهمیت ندادن به این که کلید من، مجوزش فلانه؟ این دو حالت داره :
حالت اول اشتباهه، چرا که لینوکس خیلی وقته اون شکل «سیستمعامل هکری» رو به خودش نمیگیره و در خیلی موارد، حتی افرادی که معمولا در استفاده از ویندوز هم ناتوانن، سراغش میرن. استفاده خیلی از آشنایان غیرکامپیوتری من از اوبونتو یا لینوکس مینت، گواهی بر این ادعاست.
حالت دوم به شدت اشتباهتره. اوبونتو گرچه روی دسکتاپ، خیلی از موارد امنیتی رو میتونه رعایت نکنه و اون رو به کاربر واگذار کنه که با توجه به سطح سوادش و حساسیتش روی اطلاعات شخصی، اونا رو لحاظ کنه؛ اما روی سرور ماجرا تا حد زیادی متفاوت میشه. پیشفرض سرور باید اینطور باشه که «بالاترین سطوح امنیتی ممکن» همیشه فراهم بشن. این، کاریه که در سیستمعاملهای خانواده BSD مثل FreeBSD و OpenBSD میشه.
لینوکس (حالا هر توزیعی، به جز موارد محدود) معمولا Secure-By-Default نیست چون کارکرد دسکتاپش مختل میشه تا حد زیادی (تازه لازمه ذکر کنم اگر با اونایی که Secure-By-Default هستند کار کرده باشید این قضیه رو درک میکنید). اما BSDها - مثل OpenBSD - به این شکل عرضه میشن. حتی روی سطوح بالاتر، اتفاقاتی میفته که امنتر هم بشن. مثلا HardenedBSD به این شکله که مقدار زیادی از تنظیمات امنیتی FreeBSD رو روی کد اعمال کرده و حتی اون رو امنتر از پیش کرده.
کل حرف اینه، لینوکس به صورت پیشفرض امن نیست. حواستون به کارهایی که میکنید باشه. در ادامه نکاتی رو مطرح میکنم که شاید به دردتون بخوره و بتونه بهتون در درک بهتر امنیت سیستم عاملی که استفاده میکنید؛ کمک کنه.
حقیقتا این عنوان، عنوان جنجالبرانگیزیه. امن بودن یا نبودن، حتی در سیستمعاملها و ابزارهای secure-by-default یک امر نسبیه. امنیت در شبکه و ... هم هیچوقت ۱۰۰٪ نیست و همیشه نسبی تامین میشه. موضوع مهم، اینه که سیستم از پایه چطور ساخته بشه و نگهدارندههای اون، چطور باهاش برخورد کنند.
متاسفانه در سالهای اخیر، با توجه به علاقمندیهایی که توسط کمپانیهای بزرگ به لینوکس نشان داده شده (مثل مایکروسافت)، «توسعه سریع» به شدت بیش از پیش در برنامه توسعهدهندگان لینوکس (هسته) و ابزارهای دور و برش قرار گرفته. به حدی که بعضا برای خودم سوال میشه «اینا تستش هم میکنن؟» یا هرچیزی شبیه به این.
در واقع بحثی که مطرحه اینه که این سختشدگی (Hardening) و یا امن-پیشفرض بودن (secure-by-default) فدا شده تا کارکرد و پرفرمنس بهتری ارائه بشه. شاید هم همین ماجرا، باعث شده که روی لپتاپم به جای FreeBSD، یکی از توزیعهای لینوکس نصب باشه؟ بهرحال برای داشتن یک سری چیزها، همیشه لازمه یه چیزای دیگه فدا بشن و خب حتی بهترینها هم از این قاعده مستثناء نیستند.