linux

نکات ساده برای افزایش امنیت سرور لینوکس

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

ستاره فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

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

در این مقاله نکات ساده ای را بیان خواهیم کرد که شما با رعایت این موارد امنیت سرور لینوکس خود را تا حد قابل قبولی ارتقا خواهید داد.

 

1- چیزهایی را نصب کنید که به آن نیاز دارید

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

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

2- چیزهایی را اجرا کنید که به آن نیاز دارید

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

netstat -npl

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

systemctl list-unit-files --type=service | grep enabled

 

بر اساس نوع سیستم، شما ممکن است یک خروجی شبیه به آن چه در تصویر بالا مشاهده می‎کنید را دریافت کنید. اگر با هر نوع سرویس ناخواسته مواجه شدید می‎توانید آن را با فرمان قدرتمند systemctl غیر فعال کنید:

systemctl disable service_name

3- محدود کردن دسترسی به سرور

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

هیچ گاه با حساب کاربری Root به سرور وارد نشوید

استفاده از حساب کاربری مدیریت ارشد یا همان روت برای ورود به سرور از طریق ssh به هیچ وجه کار درستی نیست. بنابراین بهترین کار این است که امکان دسترسی کاربر روت به سرور را از طریق ssh غیر فعال کنید. اما قبل از انجام این کار باید یک حساب کاربری ایجاد کنید که بتوانید با این حساب از طریق ssh به سرور وارد شده و وظایف مدیریتی را انجام دهید. به یاد داشته باشید که همیشه بعد از لاگین کردن به سرور می‎توانید در صورت نیاز به کاربر روت منتقل شوید.

برای اضافه کردن یک کاربر جدید در توزیع‎های مختلف لینوکس شیوه‎های متفاوتی وجود دارد. به عنوان مثال، توزیع Red Hat/CentOS از فرمان useradd و توزیع Ubuntu/Debian از فرمان adduser استفاده می‎کنند.

برای ایجاد یک کاربر جدید در Red Hat/CentOS از فرمان زیر استفاده کنید (swapnil نام کاربر فرضی ما است):

useradd swapnil

 

سپس با استفاده از فرمان زیر یک کلمه عبور برای این کاربر تعریف کنید:

 

passwd swapnil

بعد از وارد کردن این فرمان از شما درخواست می‎شود که یک کلمه عبور جدید برای این کاربر وارد کنید. حالا باید به این کاربر امکان برخورداری از توانایی‎های sudo را اعطا کنید. برای این منظور فرمان زیر را اجرا کنید:

EDITOR=nano visudo

سپس طبق تصویر زیر به دنبال این خط بگردید

# %wheel ALL=(ALL) ALL

 

خط را از حالت کامنت خارج کنید. نماد # در ابتدای هر خط نشان دهنده کامنت بودن (توضیحات) آن خط است و با برداشتن این نماد خط نیز از حالت کامنت خارج و به فرمان تبدیل می‎شود. بعد از انجام این کار خط شما به این شکل در خواهد آمد:

%wheel ALL=(ALL) ALL

حالا فایل را ذخیره و از آن خارج شوید. اگر این کاربر به گروه wheel تعلق ندارند شما می‎توانید به راحتی با استفاده از فرمان زیر آن را به این گروه اضافه کنید:

# usermod -aG wheel swapnil

در سیستم‎های اوبونتو از این فرمان استفاده کنید:

adduser swapnil

 

به سوالاتی که سیستم از شما می‎پرسد پاسخ دهید که شامل ایجاد یک کلمه عبور جدید برای این کاربر است. بعد از ساخته شدن این کاربر با استفاده از فرمان زیر قدرت‎های sudo را به او اعطا کنید:

gpasswd -a swapnil sudo

یک پنجره ترمینال جدید دیگر باز کنید و سعی کنید با این کاربر جدیدی که ساخته‎اید وارد سرور شوید و از طریق sudo فرامین مدیریتی را انجام دهید. اگر این کار به درستی انجام شد مراحل بعد را دنبال کنید.

4- غیرفعال کردن امکان ورود با کاربر root

بعد از طی کردن مراحل قبل حالا نوبت آن است که امکان دسترسی کاربر root را غیرفعال کنیم. با این کار دیگر هیچ کس نمی‎تواند از طریق ssh یا روش‎های دیگر به عنوان کاربر روت وارد سیستم شود. برای انجام این کار فایل پیکربندی sshd را باز کنید:

nano /etc/ssh/sshd_conf

سپس خط زیر را پیدا کرده و آن را از حالت کامنت خارج کنید:

#PermitRootLogin no

حالا فایل را ذخیره کرده و از آن خارج شوید، بعد سرویس را با استفاده از فرمان زیر ری‎استارت کنید:

service ssh restart

یا:

systemctl restart sshd

توجه: در این مرحله هنوز نباید از سرور خارج شوید. ابتدا باید امتحان کنید که آیا می‎توانید با موفقیت و با استفاده از حساب کاربری که قبلا ساخته‎اید از طریق ssh وارد سرور شوید. یک پنجره جدید از ترمینال باز کرده و با استفاده از حساب کاربری که قبلا ایجاد کرده بودید به سرور لاگین کنید، اگر همه چیز به خوبی کار کرد حالا می‎توانید با خیال راحت از حساب کاربری روت خارج شوید.

5- تغییر دادن پورت

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

فایل sshd_config را باز کنید (این بار از طریق فرمان sudo، چرا که دیگر شما نمی‎توانید با استفاده از حساب کاربری روت به سرور وارد شوید):

sudo nano /etc/ssh/sshd_conf

سپس این خط را پیدا کنید:

#Port 22

خط را از حالت کامنت خارج کرده و یک شماره پورت دیگر را برای آن انتخاب کنید. قبل از انتخاب یک شماره جدید اطمینان حاصل کنید که این پورت توسط سرویس دیگری روی سرور شما استفاده نشده باشد. برای بدست آوردن شماره پورت‎های رایج و استفاده نکردن از آنها می‎توانید از مقاله موجود در ویکی پدیا استفاده کنید. برای نمونه می‎توانید از پورت1977 استفاده کنید:

Port 1977

سپس فایل را ذخیره کرده و از آن خارج شوید و یک بار سرویس sshd را ری‎استارت کنید. یک بار دیگر قبل از خارج شدن از سرور با باز کردن یک پنجره ترمینال دیگر و لاگین کردن با استفاده از الگوی زیر تنظیمات خود را بررسی کنید:

ssh -p{port_number}@server_IP

مثال:

ssh -p1977

اگر توانستید با موفقیت به سرور وارد شوید کارها به درستی انجام شده است.

6- لاگین کردن بدون نیاز به کلمه عبور

شما می‎توانید با غیرفعال کردن نیاز به وارد کردن کلمه عبور راحت‎تر و سریع‎تر به ssh لاگین کنید. همچنین با غیرفعال کردن کامل احرازهویت به وسیله کلمه عبور یک لایه امنیتی دیگر را نیز اضافه کنید. به یاد داشته باشید که با فعال کردن این قابلیت تنها می‎توانید از طریق سیستمی‎ که کلیدهای ssh را در آن ایجاد کرده‎اید به سرور خود متصل شوید.

برای شروع ابتدا کلید ssh را با استفاده از فرمان زیر در سیستم محلی خود ایجاد کنید:

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

cat ~/.ssh/id_rsa.pub | ssh -p 1977 swapnil@remote-server ";mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

حالا سعی کنید با استفاده از یک پنجره ترمینال دیگر به سرور دسترسی پیدا کنید. اگر همه چیز به درستی انجام شده باشد دیگر برای ورود از شما کلمه عبور پرسیده نخواهد شد.

انجام این مرحله بیشتر از این که جنبه افزایش امنیت داشته باشد برای سهولت در انجام کار مورد استفاده قرار می‎گیرد. اما در مجموع با غیرفعال کردن کامل احراز هویت به وسیله کلمه عبور شما می‎توانید مقداری امنیت سرور خود را نیز بالا ببرید. فایل sshd_config را باز کرده و این خط کامنت شده را پیدا کنید:

#PasswordAuthentication yes

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

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

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


Cache Server چیست ؟ اموزش راه اندازی

نحوه گرفتن Full Backup از لینوکس توسط کامند tar

نصب PHP در لینوکس

وب سرور آپاچی (Apache) چیست؟

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد