زمانیکه ما سرور لینوکس خود را نصب و راه اندازی کردیم، بسیار حیاتی است که اتفاقاتی که بر روی سرورها روی می دهد و لاگ های سرور را به دلیل مسائل امنیتی بررسی کنیم. به این دلیل که اگر کسی با کاربر root و با استفاده از تاکتیک brute force تحت ssh به سرور شما لاگین کند، در مورد ویران کردن سرورتان فکر خواهد کرد. هر کاربری که دسترسی root دارد هر کاری می تواند برروی سیستم انجام دهد. برای بلاک کردن این چنین attack های ssh ی مقالات زیر را مطالعه بفرمایید که در آن نحوه ی محافظت از سرورها را در مقابل این چنین حملاتی توضیح خواهیم داد :
نحوه فعال کردن احراز هویت دو مرحله ای هنگام ssh (توسط Google Authentication)
5 راهکار برای امنیت و محافظت کردن از سرورهای ssh
بلاک یا مسدود کردن حملات brute force روی سرورهای لینوکس با استفاده از denyhosts
استفاده از pam_tally2 برای block کردن و unblock کردن دسترسی های غیر مجاز به ssh
بنابراین لاگین با کاربر root از طریق ssh کار خوبی نیست و توصیه می شود که با کاربر غیر root و با دسترسی sudo لاگین شود. بنابراین هر زمان که نیاز به استفاده از دسترسی روت باشد ابتدا به عنوان یک کاربر معمولی login میکنیم و سپس با استفاده از su به یوزر root سوییچ میکنیم. برای غیرفعال کردن login های مستقیم root مقاله زیر را دنبال کنید که در آن نحوه غیر فعال و محدود کردن login کاربر root در ssh را نمایش میدهیم :
غیرفعال کردن و محدود کردن دسترسی یوزر root در ssh
به هر حال در این مقاله یک راه ساده برای شناسایی فردی که با کاربر root یا کاربر معمولی به سیستم لاگین کرده است را توسط ارسال یک ایمیل notification alert به آدرس ایمیل مشخص شده و به همراه ip address که آخرین بار لاگین کرده نشان خواهیم داد. بنابراین هنگامی که شما آدرس ای پی آخرین لاگین را توسط کاربر ناشناس بدانید می توانید لاگین ssh را برای آن آی پی خاص روی فایروال iptables بلاک کنید.
نحوه block کردن port در iptable (به زودی)
نحوه تعریف کردن ارسال ایمیل هشدار برای login های ssh در linux
برای انجام این کار شما باید دسترسی root و دانشی اولیه درباره ی ادیتورهای vi و یا nano و همچنین mailx یا mail client نصب شده بر روی سرور برای ارسال ایمیل داشته باشید. شما با توجه به توزیعی که استفاده می کنید می توانید mailx را برروی سرور خود نصب کنید.
بر روی Debian/Ubuntu/Linux Mint
برروی RHEL/CentOS/Fedora
تنظیمات ارسال ایمیل هشدار هنگام لاگین کردن کاربر Root
حالا به عنوان کاربر root لاگین کرده و با استفاده از دستور زیر به دایرکتوری home کاربر در /root می رویم.
سپس یک خط در فایل .bashrc اضافه می کنیم. این فایل متغیرهای محیطی local را برای کاربران تعریف میکند و یک سری task های login را نیز انجام میدهد. برای مثال در اینجا ما یک ایمیل برای login تعریف میکنیم.
فایل .bashrc را باز کنید. توجه کنید که این یک فایل hidden است و شما نمی توانید با ls -l ان را ببینید. برای نمایش فایل های مخفی در لینوکس میتوانیم از آپشن -a استفاده کنیم.
خط زیر را در انتهای فایل اضافه کنید و اطمینان حاصل کنید که ServerName موجود در کامند زیر را با hostname سرورتان جایگزین کرده و به جای your@yourdomain.com آدرس ایمیل خودتان را قرار دهید.
سپس فایل را ذخیره و آن را ببندید در نهایت از سرور logout کنید و مجددا login کنید. هنگامیکه با ssh لاگین کردید یک فایل .bashrc به صورت پیش فرض اجرا میشود، و ایمیلی مبتنی بر login یوزر root به شما ارسال خواهد کرد.
یک نمونه ایمیل هشدار :
تنظیمات ارسال ایمیل هشدار برای لاگین کاربران معمولی
به عنوان کاربر معمولی لاگین کنید و با استفاده از دستور زیر به دایرکتوری home کاربر بروید.
سپس فایل .bashrc را باز کرده و خط زیر را در انتهای آن وارد کنید. مطمئن شوید که مقدارهایی که در بالا نشان داده شد را به درستی جایگزین کنید :
فایل را ذخیره کرده و فایل را ببندید. و سپس logout کرده و مجدد با کاربر معمولی لاگین کنید. هنگامیکه لاگین شدید فایل .bashrc اجرا خواهد شد و هشداری را به آدر س ایمیل ذکر شده ارسال خواهد کرد.
نحوه فعال کردن احراز هویت دو مرحله ای هنگام ssh (توسط Google Authentication)
5 راهکار برای امنیت و محافظت کردن از سرورهای ssh
بلاک یا مسدود کردن حملات brute force روی سرورهای لینوکس با استفاده از denyhosts
استفاده از pam_tally2 برای block کردن و unblock کردن دسترسی های غیر مجاز به ssh
بنابراین لاگین با کاربر root از طریق ssh کار خوبی نیست و توصیه می شود که با کاربر غیر root و با دسترسی sudo لاگین شود. بنابراین هر زمان که نیاز به استفاده از دسترسی روت باشد ابتدا به عنوان یک کاربر معمولی login میکنیم و سپس با استفاده از su به یوزر root سوییچ میکنیم. برای غیرفعال کردن login های مستقیم root مقاله زیر را دنبال کنید که در آن نحوه غیر فعال و محدود کردن login کاربر root در ssh را نمایش میدهیم :
غیرفعال کردن و محدود کردن دسترسی یوزر root در ssh
به هر حال در این مقاله یک راه ساده برای شناسایی فردی که با کاربر root یا کاربر معمولی به سیستم لاگین کرده است را توسط ارسال یک ایمیل notification alert به آدرس ایمیل مشخص شده و به همراه ip address که آخرین بار لاگین کرده نشان خواهیم داد. بنابراین هنگامی که شما آدرس ای پی آخرین لاگین را توسط کاربر ناشناس بدانید می توانید لاگین ssh را برای آن آی پی خاص روی فایروال iptables بلاک کنید.
نحوه block کردن port در iptable (به زودی)
نحوه تعریف کردن ارسال ایمیل هشدار برای login های ssh در linux
برای انجام این کار شما باید دسترسی root و دانشی اولیه درباره ی ادیتورهای vi و یا nano و همچنین mailx یا mail client نصب شده بر روی سرور برای ارسال ایمیل داشته باشید. شما با توجه به توزیعی که استفاده می کنید می توانید mailx را برروی سرور خود نصب کنید.
بر روی Debian/Ubuntu/Linux Mint
کد:
# apt-get install mailx
برروی RHEL/CentOS/Fedora
کد:
# yum install mailx
تنظیمات ارسال ایمیل هشدار هنگام لاگین کردن کاربر Root
حالا به عنوان کاربر root لاگین کرده و با استفاده از دستور زیر به دایرکتوری home کاربر در /root می رویم.
کد:
# cd /root
سپس یک خط در فایل .bashrc اضافه می کنیم. این فایل متغیرهای محیطی local را برای کاربران تعریف میکند و یک سری task های login را نیز انجام میدهد. برای مثال در اینجا ما یک ایمیل برای login تعریف میکنیم.
فایل .bashrc را باز کنید. توجه کنید که این یک فایل hidden است و شما نمی توانید با ls -l ان را ببینید. برای نمایش فایل های مخفی در لینوکس میتوانیم از آپشن -a استفاده کنیم.
کد:
# vi .bashrc
خط زیر را در انتهای فایل اضافه کنید و اطمینان حاصل کنید که ServerName موجود در کامند زیر را با hostname سرورتان جایگزین کرده و به جای your@yourdomain.com آدرس ایمیل خودتان را قرار دهید.
کد:
echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" your@yourdomain.com
سپس فایل را ذخیره و آن را ببندید در نهایت از سرور logout کنید و مجددا login کنید. هنگامیکه با ssh لاگین کردید یک فایل .bashrc به صورت پیش فرض اجرا میشود، و ایمیلی مبتنی بر login یوزر root به شما ارسال خواهد کرد.
یک نمونه ایمیل هشدار :
کد:
ALERT - Root Shell Access (Database Replica) on: Thu Nov 28 16:59:40 IST 2013 mohammad pts/0 2013-11-28 16:59 (172.16.25.125)
تنظیمات ارسال ایمیل هشدار برای لاگین کاربران معمولی
به عنوان کاربر معمولی لاگین کنید و با استفاده از دستور زیر به دایرکتوری home کاربر بروید.
کد:
# cd /home/mohammad
سپس فایل .bashrc را باز کرده و خط زیر را در انتهای آن وارد کنید. مطمئن شوید که مقدارهایی که در بالا نشان داده شد را به درستی جایگزین کنید :
کد:
echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" [EMAIL="your@yourdomain.com"]your@yourdomain.com[/EMAIL]
فایل را ذخیره کرده و فایل را ببندید. و سپس logout کرده و مجدد با کاربر معمولی لاگین کنید. هنگامیکه لاگین شدید فایل .bashrc اجرا خواهد شد و هشداری را به آدر س ایمیل ذکر شده ارسال خواهد کرد.