পূর্ববর্তী টিউটোরিয়ালে আমরা দেখেছিলাম কিভাবে Cisco ডিভাইসসমূহে Privilege Level ও Role Based Access Control (RBAC) এর মাধ্যমে বিভিন্ন ইউজারকে বিভিন্ন লেভেলের পারমিশন দেওয়া যায়। Privilege Level ও RBAC এর একটি অসুবিধা হলো, এরা ডিভাইসের লোকাল ডাটাবেজের উপর ভিত্তি করে কাজ করে। অর্থাৎ admin নামের যে ইউজারটি আমরা ব্যবহার করবো তা সংশ্লিষ্ট নেটওয়ার্কের সকল ডিভাইসেই কনফিগার করা থাকতে হবে। ধরি, একটি নেটওয়ার্কে একশটিরও বেশি ডিভাইস (রাউটার/সুইচ) আছে। যদি দশ জন নেটওয়ার্ক প্রফেশনালকে ঐ ডিভাইসসমূহে কাজের এ্যাকসেস দিতে হয় এবং প্রত্যেকের পারমিশন লেভেল বিভিন্ন রকম হয় তাহলে তা কনফিগার করা কতটা সময়সাপেক্ষ ও পরিশ্রমলব্ধ ব্যাপার তা সহজেই অনুমেয়। আবার ধরি একজন ইউজারের পারমিশন যদি Level 5 থেকে Level 6 এ উন্নীত করতে হয় তাহলে প্রতিটি ডিভাইসেই তা কনফিগার করতে হবে। এ সমস্যা থেকে মুক্তি পাওয়ার জন্য প্রতিটি ডিভাইসের লোকাল ডাটাবেজের পরিবর্তে একটি সেন্ট্রাল ডাটাবেজ ব্যবহার করা যেতে পারে। আর এ সেন্ট্রাল অথেনটিকেশন সার্ভার হিসেবে AAA ব্যবহৃত হয়।
AAA এর পূর্ণরূপ হলো Authentication, Authorization and Accounting । AAA হলো এমন একটি সেন্ট্রাল এ্যাকসেস কন্ট্রোল সিস্টেম যা প্রতিটি ডিভাইসে ইউজার এ্যাকসেস নিয়ন্ত্রনের জন্য ব্যবহৃত হয়। এর তিনটি Functional Component রয়েছে।
১. Authentication: এর মাধ্যমে কোন কোন ইউজার নেটওয়ার্কে এ্যাকসেস করতে পারবে তা নির্দিষ্ট করা যায়। এ্যাকসেসের সময় ইউজাররা তাদের নির্দিষ্ট ইউজারনেম ও পাসওয়ার্ড দিয়ে লগইনের চেষ্টা করে। এ সময় AAA সার্ভার চেক করে দেখে যে, ডিভাইসে এ্যাকসেস করার জন্য উক্ত ইউজারের পারমিশন আছে কি না। যদি থাকে তাহলে AAA সার্ভার উক্ত ইউজারকে ডিভাইসে এ্যাকসেস করার জন্য Authenticate করে। AAA সার্ভারে দুই ধরণের অথেনটিশেন ব্যবস্থা রয়েছে।
i. Character Mode: এই মুড এ ইউজারসমূহ কোন ডিভাইসে এ্যাডমিনিষ্ট্রেটিভ কাজের জন্য (EXEC Mode Process অর্থাৎ console, line, vty, aux ইত্যাদি) লগইন করার জন্য চেষ্টা করে।
ii. Packet Mode: এই মুডে ইউজারসমূহ নেটওয়ার্কের কোন একটি ডিভাইসে Dial-up বা VPN এ্যাকসেসের জন্য চেষ্টা করে।
এই টিউটোরিয়ালে আমরা Character Mode এর উপর আলোকপাত করবো।
যদিও AAA হলো একটি সেন্ট্রাল অথেনটিকেশন সিস্টেম (Server-Based) তারপরও ইহা লোকাল ডাটাবেজ নিয়েও কাজ করতে পারে। লোকাল অথেনটিকেশনের ক্ষেত্রে ইউজারনেম ও পাসওয়ার্ডসমূহ রাউটারের লোকাল ডাটাবেজে সংরক্ষিত থাকে। ইহা Privilege Level ও RBAC এর মতো কাজ করে যা ছোট আকারের নেটওয়ার্কে ব্যবহার করা যেতে পারে। সেন্ট্রাল অথেনটিকেশনের (Server-Based) ক্ষেত্রে ইউজারের তথ্যসমূহ একটি এক্সটার্নাল ডাটাবেজে রাখা হয় যা RADIUS বা TACACS+ (সাধারণত Linux বেসড সার্ভার) প্রটোকল ব্যবহার করে কনফিগার করা হয়। একটি বড় আকারের নেটওয়ার্কের জন্য ইহা একটি আদর্শ পদ্ধতি।
২. Authorization: যখন AAA সার্ভার একজন ইউজারকে Authenticate করে তখন উক্ত ইউজার ডিভাইসে কাজ করার সুযোগ পায়। কিন্তু ইউজার কাজ করার ক্ষেত্রে কি লেভেলের পারমিশন পাবে তা এই Authorization সার্ভিসের মাধ্যমে নির্দিষ্ট করা হয়। ইহা অনেকটা Privilege Level ও RBAC এর মাধ্যমে ইউজারের পারমিশন সেট করার মতোই ব্যাপার। AAA সার্ভারের এই Authorization সার্ভিসটি শুধুমাত্র Server-Based সলিউশনের ক্ষেত্রে কাজ করে।
৩. Accounting: এই সার্ভিসের মাধ্যমে একটি AAA সার্ভার ইউজারদের কর্মকান্ড মনিটর করে ও এর হিসেব রাখে। অর্থাৎ একজন ইউজার নেটওয়ার্কে কখন লগইন করলো, কতক্ষন লগইন অবস্থায় ছিল, সে কি কি কাজ করলো অর্থাৎ কি কি কমান্ড প্রয়োগ করলো তার একটি Log রাখে। এর ফলে একজন নেটওয়ার্ক এ্যাডমিনিস্ট্রেটর সমগ্র নেটওয়ার্কে ইউজারদের কাজ-কর্মের বিস্তারিত রিপোর্ট রাখতে পারেন। AAA সার্ভারের এই Accounting সার্ভিসটি শুধুমাত্র Server-Based সলিউশনের ক্ষেত্রে কাজ করে।
এখন আমরা দেখবো একটি AAA সার্ভার কিভাবে লোকাল ডাটবেজের উপর ভিত্তি করে ইউজারদের এ্যাকসেস নিয়ন্ত্রন করে এবং কিভাবে এই Local AAA Server কনফিগার করা হয়। Local AAA Server এর মাধ্যমে শুধুমাত্র ইউজারদের Authenticate করা যায়, এক্ষেত্রে Authorization ও Accounting সার্ভিস কাজ করে না। একটি Local AAA সার্ভার ছোট আকারের নেটওয়ার্কের জন্য কনফিগার করা যেতে পারে যেখানে একটি বা দুইটি রাউটার আছে এবং ইউজার সংখ্যাও খুব সীমিত।
ধাপ- ১: প্রথমে রাউটারে লোকাল ইউজারনেম ও পাসওয়ার্ড কনফিগার করতে হবে।
SVR#conf t SVR(config)#username admin secret admin@123 SVR(config)#username noc secret noc@123 SVR(config)#username support secret support@123
ধাপ- ২: রাউটারসমূহে বাই ডিফল্ট AAA ফিচারটি ডিসএ্যাবল থাকে, নিচের কমান্ডের মাধ্যমে এই ফিচারটি এনাবল করতে হবে।
SVR(config)#aaa new-model
ধাপ- ৩: রাউটারে AAA এনাবল করার পর Authentication মেকানিজম কনফিগার করতে হবে। এজন্য #aaa authentication login কমান্ডের সাথে একটি List-name ও Method-list যুক্ত করতে হয়। List-name হলো Authentication method সমূহের একটি কাষ্টমাইজড নাম। আর Method-list হলো Authentication method সমূহের একটি ধারাবাহিক তালিকা। Authentication method সমূহের সংক্ষিপ্ত বর্ণনা নিম্নরূপঃ
i) enable: | এই মেথডে অথেনটিকেশনের জন্য enable পাসওয়ার্ড ব্যবহৃত হয়। |
ii) line: | এই মেথডে অথেনটিকেশনের জন্য line পাসওয়ার্ড ব্যবহৃত হয়। |
iii) local: | এই মেথডে অথেনটিকেশনের জন্য লোকাল ইউজারনেম ও পাসওয়ার্ড ব্যবহৃত হয়। |
iv) local-case: | এই মেথডে অথেনটিকেশনের জন্য লোকাল ইউজারনেম (case-sensitive) ও পাসওয়ার্ড ব্যবহৃত হয়। |
v) none: | এই মেথডে অথেনটিকেশনের জন্য কোন পাসওয়ার্ড লাগে না। |
vi) group radius: | এই মেথডে অথেনটিকেশনের জন্য RADIUS সার্ভার ব্যবহৃত হয়। |
vii) group tacacs+: | এই মেথডে অথেনটিকেশনের জন্য TACACS+ সার্ভার ব্যবহৃত হয়। |
viii) krb5: | এই মেথডে অথেনটিকেশনের জন্য Kerberos5 ব্যবহৃত হয়। |
SVR(config)#aaa authentication login REMOTE_USER local-case enable none
উপরিউক্ত কমান্ডটি প্রয়োগ করলে ইউজার অথেনটিকেশনের সময় প্রথম মেথড অনুযায়ী ডিভাইসের লোকাল ইউজারনেম (case-sensitive) ডাটাবেজ চেক করা হবে। এক্ষেত্রে যদি প্রথম মেথড থেকে কোন রেসপন্স পাওয়া না যায় তাহলে দ্বিতীয় মেথড অর্থাৎ enable পাসওয়ার্ড ব্যবহার করে অথেনটিকেশন সম্পন্ন হবে। যদি কোন কারণে দ্বিতীয় মেথডটিও রেসপন্স না করে তাহলে সবশেষে কোন ধরণের পাসওয়ার্ড ছাড়াই (none) অথেনটিকেশন সম্পন্ন হবে এবং রাউটারে লগইন করা যাবে। প্রোডাকশন নেটওয়ার্কে কখনোই এই none মেথডটি ব্যবহার করা উচিত নয়। এভাবে একটি Method-list এ সর্বনিম্ন একটি এবং সর্বোচ্চ চারটি Method ব্যবহার করা যায়। সবশেষে REMOTE_USER নামে যে List-name টি তৈরী করা হল তা একটি নির্দিষ্ট ইন্টারফেসে (line, vty, tty, aux ইত্যাদি) প্রয়োগ করতে হবে।
SVR#conf t SVR(config)#line vty 0 4 SVR(config-line)#login authentication REMOTE_USER
এভাবে একাধিক List-name তৈরী করে প্রয়োজন অনুযায়ী বিভিন্ন ইন্টারফেসে প্রয়োগ করা যায়। এক্ষেত্রে একটি ইন্টারফেসে শুধুমাত্র একটি List-name প্রয়োগ করা যাবে। যখন কোন একটি রাউটারের AAA ফিচারটি এনাবল করা হয় তখন ঐ রাউটারে স্বয়ংক্রীয়ভাবে “default” নামে একটি ডিফল্ট List-name তৈরী হয় এবং তা রাউটারের সকল ইন্টারফেসে (line, vty, tty, aux ইত্যাদি) এনাবল হয়ে যায়। কিন্তু এতে কোন Method-list থাকে না। “default” List-name এ একাধিক Authentication method যুক্ত করার জন্য নিচের কমান্ডটি দেওয়া যেতে পারে।
SVR(config)#aaa authentication login default [method1] [method2]………
যতক্ষন না পর্যন্ত কোন কাষ্টমাইজড List-name তৈরী করে ইন্টারফেসসমূহে এ্যাকটিভ করা না হয় ততক্ষন পর্যন্ত ইন্টারফেসসমূহে “default” List-name টি এ্যাকটিভ থাকে।
AAA এর ক্ষেত্রে কিছু বাড়তি রিাপত্তা ব্যবস্থা গ্রহণ করা যায়। যেমনঃ
SVR(config)#aaa local authentication attempts max-fail 3
এক্ষেত্রে একজন ইউজার যদি লগইনের সময় পরপর তিন বার ভূল পাসওয়ার্ড দিয়ে চেষ্টা করে তাহলে ঐ ইউজারটি Locked হয়ে যাবে। যতক্ষন না পর্যন্ত এ্যাডমিনিষ্ট্রেটর ইউজারটিকে Unlock না করবে ততক্ষন পর্যন্ত তা Locked অবস্থায় থাকবে। Locked হওয়া ইউজারসমূহের তালিকা দেখার জন্যঃ
SVR#show aaa local user lockout Local-user Lock time noc 22:24:16 UTC Sat Oct 18 2014
Locked হওয়া কোন একটি ইউজার বা সকল ইউজারকে Unlock করার জন্যঃ
SVR#clear aaa local user lockout username noc অথবা SVR#clear aaa local user lockout all
একটি নেটওয়ার্কে অনেক সময় একজন Valid User ভূলবশত ভূল পাসওয়ার্ড দিয়ে ফেলতে পারে। সেক্ষেত্রে এই ঘন ঘন Lockout সমস্যা থেকে মুক্তি পেতে এই ফিচারটি ব্যবহার না করে Login delay ফিচারটি ব্যবহার করা যেতে পারে।
SVR(config)#login delay 5
এক্ষেত্রে কোন ইউজার ভূল পাসওয়ার্ড দিলে তা Locked হবে না কিন্তু লগইন চেষ্টা পাঁচ সেকেন্ডের জন্য ইন্টারাপ্ট হবে। এর মাধ্যমে ডিভাইসে অননুমোদিত লগইনের জন্য Brute-force এ্যাটাককে Slow করে দেওয়া সম্ভব হয়।
নিচের কমান্ডের মাধ্যমে আমরা AAA সেশন সংক্রান্ত বিভিন্ন তথ্য দেখতে পারি।
SVR#show aaa sessions Total sessions since last reload: 8 Session Id: 8 Unique Id: 10 User Name: noc IP Address: 192.168.10.12 Idle Time: 0 CT Call Handle: 0
আশাকরি আপনারা এই টিউটোরিয়ালটি দেখে Cisco ডিভাইসসমূহে Local AAA Server কনফিগার করতে পারবেন। আল্লাহ হাফেজ।