چگونه یک URL یکبار مصرف برای ورود به DirectAdmin ایجاد کنیم


یکی از روش های ارائه شده استفاده از URL های یکبار مصرف می باشد که برای کاربر مورد نظر ما ایجاد می گردد و بوسیله آن می تواند در کنترل پنل دایرکت ادمین لاگین نماید.

نکته: کلید ورودی فعالی که برای یوزر ایجاد می گردد، می بایست در فایل user.conf ، آن یوزر حتما تعریف شده باشد.

بطور مثال برای کسی اگر قرار است دسترسی یوزر ادمین ارسال شود با دستور زیر

/usr/local/directadmin/directadmin --create-login-url user=admin

اقدام به ایجاد یک URL بشکل زیر می گردد

URL: http://1.2.3.4:2222/CMD_LOGIN_URL?hash=cJbIk9GNsXk43....xmAHSTaKFiFe

که کلید رمزنگاری hash آن بصورت رندوم و بین 120 تا 148 کاراکتر می باشد

فازعملیاتی

الف) کلید hash تولید شده در مسیر زیر بصورت global قرار می گیرد

/usr/local/directadmin/data/admin/login_hashes.conf

اما مجدد بصورت نمایه سمت چپ رمزنگاری می گردد که جزییات کلید hash در سمت راست آن قرار دارد.

بنابراین، جستجوی یک hash معین باید در هر آیتم جست و جو نماید و رمز را تا زمانی که پیدا شود آزمایش کند.

این عملیات یک کد رمزنگاری شده را بصورت "key=hash" ذخیره می کند که نشان دهنده ی یک ULR برای لاگین می باشد.

ب) وقتی یک کلید hash تایید شد، کلید ورود با یک رمز عبور رمزگذاری شده واقعی تعویض می شود و رمز عبور جدید در session فایل ذخیره می شود.

· رمز عبور نهایی قابل مشاهده نیست

· کلید عبور hash از فایل login_hashes حذف می شود.

· کوکی ارسال می شود و عملیات لاگین صورت می گیرد.

مدت زمان (اعتبار رمز)

بصورت پیش فرض این کلید hash و رمز عبور کدگذاری تا 3 روز معتبر است. بنابراین شما 3 روز زمان برای login و logout فرصت دارید. و با تبدیل کد hash به رمز عبور نیز تمدید نمی گردد.

این زمان را نیز با استفاده از دستور زیر می توانید تغییر دهید

expiry=1d

در مسیر --create-login-url واحد های زمانی معتبر به صورت s,m,h,d,M,y بوده و نسبت به کوچک و بزرگی حروف نیز حساس می باشند.

اعمال محدودیت

و در عبارت زیر می توانید یک یا تعدادی آی پی را نیز محدود نمایید.

ips=1.2.3.4,5.6.7.8-9

مشابه کلید های لاگین می توانید دستورات CMD را نیز محدود یا مجاز نمایید

deny=ALL_RESELLER,CMD_LOGIN_KEYS,CMD_API_LOGIN_KEYS

در این دستور تمامی عملیات که محدود به admin می باشد برای URL hash تولید شده بلاک می نماید. دقت نمایید اگر ALL_ADMIN را بلاک نمایید دستورات ادمین اجرا نمی شود . مثال : شمارش ajax

وقتی با کلید hash لاگین می نمایید، زمانیکه “logout” (CMD_LOGOUT) را کلیک نمایید. Session از بین می رود و کلید نیز حذف می گردد.

JSON

همچنین می توانید خروجی json با فراخوانی json=yes: مشاهده نمایید،

/usr/local/directadmin/directadmin --create-login-url user=admin json=yes

که خروجی مشابه زیر می باشد

{
"allow_htm": "yes",
"clear_key": "yes",
"expiry_timestamp": "1566096767",
"hash": "QTyjeGyhIDpZLit4....abZ2UJCczm1U",
"keyname": "HASHURLvicJDn5L",
"max_uses": "0",
"url": "http://1.2.3.4:2222/CMD_LOGIN_URL?hash=QTyjeGyhIDpZLit4....abZ2UJCczm1U"
}