14 مرحله مهم در افزایش امنیت پنل مدیریت دایرکت ادمین

پورت پنل دایرکت ادمین 2222 را با SSL ایمن کنید

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

استفاده از یک اتصال امن برای سرویس ها و خود پنل دایرکت ادمین بسیار مهم است: پورت پنل دایرکت ادمین 2222 را با SSL ایمن کنید.

سوالات امنیتی یا احراز هویت دو مرحله ای پس از ورود به دایرکت ادمین

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

برای فعال کردن سؤالات یا افزودن/تغییر سؤالات، به عنوان کاربر اصلی شوید و به آدرس زیر بروید:

Dashboard -> Change your Password -> Manage Security Questions

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

Dashboard -> Change your Password -> Two-Step Authentication

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

توجه: هر سوال 2FA/امنیتی ناموفق در فایل “failed_logins” (جایی که رمزهای عبور اشتباه شمارش می شود) شمارش می شود. این یعنی در صورت اشتباه وارد کردن اطلاعات ورود دو مرحله ای IP شما به عنوان یک وارد کننده اشتباه پسورد تلقی می شود و در صورت اشتباه وارد کردن ممکن هست آی پی شما بلاک شود و در بلک لیست ورود به دایرکت ادمین به صورت خودکار قرار گیرد که در مسیر زیر می باشد:  (/usr/local/directadmin/data/admin/ip_blacklist) قرار می گیرید، جایی که IP ها bruteforcing می کنند.

برای حذف خود از لیست در صورتی که به اشتباه مسدود شدید:

/usr/local/directadmin/data/admin/ip_blacklist

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

/usr/local/directadmin/data/admin/ip_whitelist

احراز هویت دو مرحله ای

این ویژگی به هر حساب DirectAdmin اجازه می دهد تا با استفاده از یک کد مبتنی بر زمان از یک برنامه تلفن هوشمند (به عنوان مثال، Google Authenticator، FreeOTP، Authy و غیره) به احراز هویت دو مرحله ای نیاز داشته باشد.

 از این مسیر به این ویژگی دسترسی دارید: Password Icon -> Two-Step Authentication

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

directadmin.conf تنظیمات قابل اجرا شامل موارد زیر است:

				
					twostep_auth=0|1   default 1
block_ip_after_failed_twostep_auth=0|1|2  default 0
max_twostep_auth_attempts=5
twostep_auth_discrepancy=1
twostep_auth_trust_days=30

				
			

در جایی که twostep_auth=1 احراز هویت دو مرحله‌ای را فعال می‌کند.

max_twostep_auth_attempts=5 اجازه می‌دهد 5 تلاش برای احراز هویت از طریق این ویژگی انجام شود.

block_ip_after_failed_twostep_auth این است که آیا IP پس از عدم موقیت در احراز هویت دو مرحله‌ای مسدود می‌شود یا نه، در جایی که تنظیم روی 0 (تنظیم پیش‌فرض) به این معنی است که هیچ مسدودی رخ نخواهد داد، 1 به این معنی است که یک هشدار به کاربر داده می شود که IP وی در آخرین تلاش او در لیست سیاه قرار می گیرد و 2 به این معنی است که در صورت مسدود شدن هیچ هشداری داده نخواهد شد. البته، فعال کردن مسدود کردن IP مستلزم آن است که لیست سیاه را در تنظیمات مدیریت خود فعال کنید.

مقدار twostep_auth_discrepancy باید یک عدد صحیح مثبت باشد که نشان‌دهنده تعداد 30 ثانیه زمانی است که می‌توانید از آن خارج شوید (قبل یا بعد). بنابراین پیش فرض 1 به یک کد اجازه می دهد تا قبل از 30 ثانیه قبل و 30 ثانیه پس از شمارش معکوس تایمر تلفن معتبر باشد.

دکمه “تست کد” DA ممکن است پیامی در مورد معتبر بودن کد را به شما نشان دهد، اما برای زمان دیگری. برای مثال، اگر اختلاف زمانی را به صورت “-4” مشاهده کردید، به این معنی است که کد شما 2 دقیقه پیش منقضی شده است.

اگر نمی توانید زمان سرور خود را اصلاح کنید، این تنظیم را به “4” (مثبت 4) تغییر دهید، و DA دامنه وسیع تری از -4 تا +4 را برای ورود به سیستم اجازه می دهد. همچنین اگر ساعت تلفن شخصی دقیق نباشد مفید است.

مقدار twostep_auth_trust_days=30 نشان‌دهنده مدت زمانی است که یک کوکی قابل اعتماد مجاز است در مرورگر مشتری فعال بماند.

فایل های کاربری تغییرات:

/usr/local/directadmin/data/users/username/twostep_auth_secret.txt
/usr/local/directadmin/data/users/username/twostep_auth_scratch_codes.list

user.conf تنظیمات مستقیم در فایل کابری دایرکت ادمین (هر یوزر دایرکت ادمین یک فایل تنظیمات دارد):

				
					twostep_auth=no
twostep_auth_description=user@host.domain.com
notify_on_all_twostep_auth_failures=yes

				
			

محدود کردن دستورات سطح مدیریت به IP های خاص

از آنجایی که تعداد ادمین‌ها روی سرور معمولاً به تعداد انگشت شماری محدود می‌شود، محدود کردن دسترسی به حساب‌های Admin به IP آن افراد ممکن است کاری باشد که یک ادمین بخواهد انجام دهد، که حتی اگر به اشتباه پسورد سرور به کاربر اشتباهی افتاد امکان انجام کاری نباشد.

برای این کار می توانیم از all_pre.sh استفاده کنیم باز کردن در پنجره جدید به منظور بررسی IP وارد شونده و اجرا کننده دستورات برای اطمینان از اینکه مجاز به ورود به سیستم هستند. همچنین، توصیه می شود all_pre.sh را در فایل های HTM فعال کنید.باز کردن در پنجره جدید، نه فقط به عنوان فایل های CMD.

ایجاد یک فایل با در مسیر و نام زیر یعنی شما در SSH توسط ویرایشگر nano باز کنید  /usr/local/directadmin/scripts/custom/all_pre.sh کنید و کد را در آن اضافه کنید:

				
					#!/bin/sh
USERTYPE=`grep usertype= /usr/local/directadmin/data/users/${username}/user.conf | cut -d= -f2`

if [ "${USERTYPE}" = "admin" ]; then
   if [ "$caller_ip" = "1.2.3.4" ]; then
       exit 0;
   fi

   if [ "$caller_ip" = "5.6.7.8" ]; then
       exit 0;
   fi

   #repeat the check on the IP as many times as desired.

   echo "IP $caller_ip is not allowed to be logged in as an Admin";
   exit 1;
fi
exit 0;

				
			

که در آن 1.2.3.4 و 5.6.7.8 IP هایی هستند که می خواهید به آنها اجازه ورود به عنوان Admin را بدهید. در صورت نیاز می توانید لیست بیشتری برای IP های بیشتری اضافه کنید. و برای اجرا شدن آن دستور زیر وارد کنید در SSH سرور خودتان.

				
					chown diradmin:diradmin /usr/local/directadmin/scripts/custom/all_pre.sh
chmod 700 /usr/local/directadmin/scripts/custom/all_pre.sh

				
			

توجه: اگر IP شما تغییر کرد، باید این فایل را ویرایش کنید و IP جدید خود را به لیست اضافه کنید، در غیر این صورت نمی توانید به عنوان مدیر وارد شوید.

همین راهنما را می‌توان به روش‌های بسیار دیگری تغییر داد، مانند مسدود کردن همه دسترسی‌ها به دایرکت ادمین، به جز آی پی های خاص. این را می توان به سادگی با حذف عبارت “if” که USERTYPE را بررسی می کند، انجام داد، به طوری که بررسی IP برای همه نوع کاربری اعمال می شود.

استفاده از login_pre برای مجاز کردن IP های خاص

این ویژگی اسکریپتی است که قبل از هر درخواست (در صورت وجود) فراخوانی می شود. اگر می خواهید به بیش از یک IP اجازه دهید، اسکریپت باید تغییر کند. توجه داشته باشید که در صورت تمایل می توانید از PHP استفاده کنید و اگر می خواهید سیستم بررسی IP همه کاره تری داشته باشید، به پایگاه داده IP متصل شوید.

اسکریپت زیر نحوه ایجاد یک فایل متنی برای اجازه دادن به IP های متعدد را با فهرستی با قابلیت ویرایش آسان توضیح می دهد.

  1. مشابه اسکریپت نمونه، ما ایجاد می کنید در مسیر زیر و نام نوشته شده یعنی فقط با ویرایشگر nano باز کنید مسیر و فایل را به صورت کامل /usr/local/directadmin/scripts/custom/login_pre.sh در این اسکریپت، کد را اضافه می کنید:
				
					#!/usr/local/bin/php
<?php

$user = getenv('username');
$ip = getenv('ip');

$ip_list = "/usr/local/directadmin/scripts/custom/ip_list.txt";

if ($user == 'demo_user' || $user == 'demo_reseller' || $user == 'demo_admin')
{
          //not worried about demos
           exit(0);
}

$lines = file($ip_list);

foreach ($lines as $ip_val)
{
       $ip_val = trim($ip_val); //remove trailing newlines
       if ($ip == $ip_val)
       {
                  exit(0);
       }
}

echo "Invalid IP";
exit(1);

?>

				
			

ذخیره کنید اطلاعات بالا را  و دسترسی را به این شکل قرار دهید که را قابل اجرا باشد با دستور زیر در سرور دایرکت ادمین:

				
					chmod 755 /usr/local/directadmin/scripts/custom/login_pre.sh
				
			
  • همانطور که ممکن است حدس زده باشید، مرحله بعدی ایجاد لیست مجاز به ورود خودتان است. ویرایش /usr/local/directadmin/scripts/custom/ip_list.txt و اضافه کردن یک عدد IP استاتیک در هر خط برای IP هایی که می خواهید به دایرکت ادمین اجازه دهید.

از ایجاد یک اکانت مدیر دیگر جلوگیری کنید

اگر فقط 1 حساب ادمین دارید و می خواهید مطمئن شوید که هیچ حساب ادمین دیگری ایجاد نشده است، می توانید از آن all_pre.sh برای بررسی فرمان در حال اجرا استفاده کنید و اگر ایجاد یک مدیر است، آن را مسدود کنید.

ایجاد کنید فایل و مسیر زیر را مطابق آموزش های قبل با استفاده از ویرایشگر nano  یا هر ویرایشگر دیگر: /usr/local/directadmin/scripts/custom/all_pre.sh و کد را اضافه کنید:

				
					#!/bin/sh
if [ "$command" = "/CMD_API_ACCOUNT_ADMIN" ]; then
    echo "Cannot use this command";
    exit 1;
fi
if [ "$command" = "/CMD_ACCOUNT_ADMIN" ]; then
    echo "Cannot use this command";
    exit 1;
fi
exit 0;

				
			

دسترسی آن فراهم و اجرا کنید:

				
					chown diradmin:diradmin /usr/local/directadmin/scripts/custom/all_pre.sh
chmod 700 /usr/local/directadmin/scripts/custom/all_pre.sh

				
			

شناسایی و جلوگیری از حملات Brute-force

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

برای جلوگیری از این تهاجم، می‌توانیم از سیستم تشخیص ورود brute force استفاده کنیم. دایرکت ادمین 2 سیستم از این دست برای این حملات دارد.

  1. ویژگی اصلی در DA 1.25.5 ایجاد شده است و تلاش‌های ورود به سیستم را در خود DA شناسایی و مسدود می‌کند (پورت 2222):

این ویژگی فقط برای پورت 2222 اعمال می شود . فقط IP های این پورت را مسدود می کند. آی پی های پورت های دیگر را مسدود نمی کند.

برای فعال کردن این ویژگی، به Admin Level -> Admin Settings -> Blacklist IP برای تلاش‌های بیش از حد برای ورود به سیستم حداکثری تایید کنید که مناسب باشید از مقدار 10-20 استفاده کنید.

  1. سیستم جدیدتر در پشت سر هم با سیستم قبلی کار می کند و گزارش ها را برای سایر سرویس ها (Apache، Dovecot، Exim، ProFTPd، SSHd) اسکن می کند.

هنگامی که یک حمله شناسایی می شود، DA به مدیران روی جعبه اطلاع می دهد که حمله در حال انجام است.

آی پی دایرکت ادمین را مسدود نمی کند زیرا به فایروال نیاز دارد و DA فایروال ها را مدیریت نمی کند ( برای دیدن لیست بلاک شده ها به این فایل مراجعه block_ip.sh کنید).

برای فعال کردن گزارش شناسایی، به:

Admin Level -> Admin Settings -> Parse service logs for brute force attacks

صفحه نمایشگر brute force (BFM) را می توان در مسیر Admin Level -> Brute Force Monitor مشاهده کرد.

اعلان‌های brute-force را مخفی کنید

از آنجایی که حملات brute force نسبتاً رایج هستند، و ابزارهای جلوگیری از آن حملات نسبتاً قابل اعتماد هستند، برخی از مدیران مایل نیستند در مورد این عملات اعلان های جلوگیری و یا بلاک شدن ها مشاهده کنند که بی جهت وقت گیر باشد و پنل مدیریت آنها با اخطار های زیادی مواجه شود.

از آنجایی که راه‌اندازی brute_force_notice_ip.shتنها با اعلان‌ها اتفاق می‌افتد، گزینه‌ای را برای جلوگیری از ارسال اعلان‌ها اضافه شده است، اما همچنان اسکریپت‌ها را به طور معمول برای مسدود کردن IP فراخوانی می شوند.

در فایل directadmin.conf به صورت دیفایل به این شکل هست:

				
					hide_brute_force_notifications=0

				
			

که پیش‌فرض داخلی است ( اعلان‌ها نشان داده خواهند شد).

اگر می‌خواهید از ارسال اعلان‌ها جلوگیری کنید، اما همچنان IP‌ها مسدود شوند، این را در directadmin.conf خود تنظیم کنید:

				
					hide_brute_force_notifications=1
				
			

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