আজকের টিউটরিয়ালে আমরা দেখবো কিভাবে একটি Cisco ডিভাইসকে নিরাপদে এ্যাকসেস করা যায়। আমরা যখন কোন Cisco রাউটার বা সুইচ নিয়ে কাজ করি তখন আমাদেরকে ঐ ডিভাইসটিতে লগইন করে কাজ করতে হয়। এই লগইন বা এ্যাকসেস দুই ধরণের হতে পারে।
1. Local Access: প্রায় সব ধরণের নেটওয়ার্ক ডিভাইসসমূহকেই Locally এ্যাকসেস করা যায়। Local এ্যাকসেসের ক্ষেত্রে সাধারণত ডিভাইসটিকে সরাসরি Console পোর্টের মাধ্যমে কানেক্ট করে Terminal Emulation সফটওয়্যারের মাধ্যমে এ্যাকসেস করা হয়। 2. Remote Access: Local এ্যাকসেসের পাশাপাশি নেটওয়ার্ক ডিভাইসসমূহকে অন্য আরেকটি ডিভাইস থেকে Telnet, SSH, HTTP, HTTPS বা SNMP এর মাধ্যমে Remote লগইন করা যায়। রিমোট এ্যাকসেসের ক্ষেত্রে কিছু কিছু প্রটোকল যেমন Telnet ব্যবহার করলে যাবতীয় ডাটা (ইউজার নেম ও পাসওয়ার্ড সহ) Plaintext এ ট্রান্সমিট হয়। এক্ষেত্রে কোন এ্যাটাকার/হ্যাকার যদি এই তথ্য হাতিয়ে নিতে পারে তাহলে তা নেটওয়ার্কের নিরাপত্তার জন্য অনেক বড় হুমকিস্বরূপ। এজন্য নেটওয়ার্ক ডিভাইসসমূহকে Locally এ্যাকসেস করাই বেশি নিরাপদ। তবে কাজের সুবিদার্থে অনেক সময়ই রিমোট এ্যাকসেসের প্রয়োজন পড়ে। তাই কোন ডিভাইসসমূহে রিমোট এ্যাকসেসের জন্য কিছু সতর্কতামূলক পদক্ষেপ গ্রহণ করা উচিত। যেমনঃ
i. আদান-প্রদানকৃত ডাটা (ইউজার নেম ও পাসওয়ার্ডসহ) যাতে এনক্রিপ্টেডভাবে ট্রান্সমিট হয় সেজন্য Telnet ও HTTP এর পরিবর্তে যথাক্রমে SSH ও HTTPS ব্যবহার করা। ii. একটি ডেডিকেটেড ম্যানেজমেন্ট নেটওয়ার্ক গড়ে তোলা যে নেটওয়ার্কে শুধুমাত্র অনুমোদিত হোষ্ট/ডিভাইসসমূহই থাকবে। iii. নির্দিষ্ট কয়েকটি কম্পিউটার ব্যতীত অন্যান্য অপ্রয়োজনীয় কম্পিউটার থেকে যাতে নেটওয়ার্ক ডিভাইসসমূহ এ্যাকসেসে করা না যায় সেজন্য প্রয়োজনীয় ব্যবস্থা গ্রহণ করা।
কোন ডিভাইসের নিরাপত্তা নিশ্চিত করার জন্য একটি অন্যতম প্রধান ও গুরুত্বপূর্ণ পদক্ষেপ হলো নিরাপত্তা পাসওয়ার্ড ব্যবহার করা। রাউটার ও সুইচসমূহের নিরাপত্তা পাসওয়ার্ড নির্বাচন করার ক্ষেত্রে নিম্ন লিখিত কয়েকটি নিয়ম অনুসরণ করা উচিত যা পাসওয়ার্ডটিকে শক্তিশালী করে তুলবে এবং বিভিন্ন পাসওয়ার্ড ক্র্যাকিং টুলস এর কার্যক্ষমতা হ্রাস করে ডিভাইসটিকে অধিকতর নিরাপদ করে তুলবে।
i. পাসওয়ার্ডের একটি নূন্যতম দৈর্ঘ্য থাকা উচিত, যেমনঃ ৮ ক্যারেক্টার বা তার বেশি। পাসওয়ার্ড যত বড় হবে তা হ্যাক করাও তত কঠিন হবে। ii. পাসওয়ার্ডটি কিছুটা জটিল হওয়া উচিত। এক্ষেত্রে Uppercase, Lowercase, Number, Special Character সবগুলো মিলিয়ে পাসওয়ার্ড দেওয়া ভাল। iii. পাসওয়ার্ড নির্ধারণের ক্ষেত্রে কমন নাম, ডিকশনারীর শব্দ, জায়গায় নাম, জন্ম তারিখ ইত্যাদির ব্যবহার পরিহার করা উচিত। iv. কোন পাসওয়ার্ডই কাগজে লিখে যেখানে সেখানে ফেলে রাখা উচিত নয়। এছাড়া পাসওয়ার্ডসমূহ কিছু দিন পর পর পরিবর্তন করে নেওয়া ভাল অভ্যাস।
Cisco ডিভাইসসমূহে বেশ কিছু এ্যাকসেস পোর্টে পাসওয়ার্ড কনফিগার করা জরুরী। যেমনঃ Console Port, Auxiliary port, Virtual Terminal Connection প্রভৃতি। এখন আমরা দেখবো কিভাবে এই পাসওয়ার্ডসমূহ কনফিগার করা হয়।
Console Line PasswordRouter#configure terminal Router(config)#line console 0 Router(config-line)#password c!$C0 Router(config-line)#login
Router#configure terminal Router(config)#line aux 0 Router(config-line)#password c!$C0 Router(config-line)#login
Router#configure terminal Router(config)#line vty 0 4 Router(config-line)#password c!$C0 Router(config-line)#login
এই Enable Secret Password এর মাধ্যমে Privileged EXEC mode এর এ্যাকসেস নিয়ন্ত্রন করা হয়। Enable Secret পাসওয়ার্ডের ক্ষেত্রে Message Digest 5 (MD5) Hashing এ্যালগরিদম ব্যবহৃত হয় যা পাসওয়ার্ডটিকে এ্যানক্রিপ্টেড অবস্থায় রাখে।
Router#configure terminal Router(config)#enable secret p@ssW09d
বাই ডিফল্ট, Enable Secret Password ব্যতীত অন্যান্য পাসওয়ার্ডসমূহ কনফিগারেশন ফাইলের মধ্যে Plaintext এ থাকে।
Router#show running-config Building configuration... Current configuration : 584 bytes ! version 12.4 no service timestamps log datetime msec no service timestamps debug datetime msec no service password-encryption ! hostname Router ! enable secret 5 $1$mERr$nExXm0cPh02z1MS4uURis0 ! line con 0 password c!$C0 login ! line aux 0 password c!$C0 login ! line vty 0 4 password c!$C0 login ! end
যদি অননুমোদিত কোন ব্যক্তি এই কনফিগারেশন ফাইলটি পেয়ে যায় বা ফাইলের কন্টেন্ট দেখে ফেলে তাহলে পাসওয়ার্ডগুলো বেহাত হয়ে যেতে পারে। এজন্য নিচের কমান্ডটি ব্যবহার করতে হবে।
Router#configure terminal Router(config)#service password-encryption
এই কমান্ডের মাধ্যমে ডিভাইসটিতে বর্তমানে কনফিগার করা আছে ও ভবিষ্যতে কনফিগার করা হবে এমন পাসওয়ার্ডগুলোর সবগুলোই এ্যানক্রীপ্টেড হয়ে যাবে। যদি no service password-encryption কমান্ডটি প্রয়োগ করা হয় তবে শুধুমাত্র ভবিষ্যতের পাসওয়ার্ডগুলো আন-এ্যানক্রীপ্টেড হবে, কিন্তু বর্তমানে কনফিগার করা আছে এমন পাসওয়ার্ড সমূহ এ্যানক্রীপ্টেডই থেকে যাবে। এখন যদি আমরা কনফিগারেশন ফাইলটি দেখি তাহলে দেখা যাবে পাসওয়ার্ডগুলো আর Plaintext এ দেখা যাচ্ছে না।
Router#show running-config Building configuration... Current configuration : 584 bytes ! version 12.4 no service timestamps log datetime msec no service timestamps debug datetime msec no service password-encryption ! hostname Router ! enable secret 5 $1$mERr$nExXm0cPh02z1MS4uURis0 ! line con 0 password 7 08220D0A2A49 login ! line aux 0 password c!$C0 login ! line vty 0 4 password 7 08220D0A2A49 login ! end
service password-encryption কমান্ডের মাধ্যমে পাসওয়ার্ডগুলো Standard Type 7 (S7) এ্যালগরিদমের সাহায্যে এ্যানক্রীপ্ট করা হয়। কিন্তু কিছু পাসওয়ার্ড ক্র্যাকিং টুলস আছে যার মাধ্যমে অরিজিনাল পাসওয়ার্ডটি বের করা সম্ভব। নিচে এমন একটি অনলাইন টুলস এর উদাহরণ দেওয়া হলোঃ
http://www.ifm.net.nz/cookbooks/passwordcracker.html
ওয়েবপেজটির টেক্সট বক্সে যদি আমরা এ্যানক্রীপ্টেড পাসওয়ার্ড 08220D0A2A49 কে এন্ট্রি দিয়ে Crack Password বাটনটিতে ক্লিক করি তাহলে অরিজিনাল পাসওয়ার্ড c!$C0 দেখা যাবে। কিন্তু MD5 এ্যালগরিদম ব্যহার করে এ্যানক্রীপ্টেড হওয়া Enable Secret পাসওয়ার্ডটি বের করা অনেক কঠিন। এজন্য আমাদের সব সময় Enable Secret পাসওয়ার্ড ব্যবহার করা উচিত যা অননুমোদিত ব্যক্তিদেরকে Privileged EXEC mode এ ঢুকার জন্য Restrict করবে।
অনেক সময় দেখা যায় আমরা ডিভাইসসমূহে কাজ করার সময় উঠে এখানে সেখানে যাই এবং কনসোল খোলা থাকে। এ সুযোগে অন্য কেউ আমাদের মূল কনফিগারেশন দেখে নিতে পারে বা ইচ্ছাকৃত/অনিচ্ছাকৃতভাবে ভূল কমান্ড দিতে পারে। বাই ডিফল্ট একটি টার্মিনাল ১০ মিনিট সময় স্ট্যান্ডবাই হিসেবে এ্যাক্টিভ থাকে। আমরা চাইলে এসময় আরো কমিয়ে আনতে পারি।
Router#configure terminal Router(config)#line console 0 Router(config-line)#exec-timeout 2
উপরের কমান্ডের মাধ্যমে আমরা কনসোলের exec-timeout দুই মিনিট করলাম। এছাড়া যদি exec-timeout 2 30 কমান্ডটি দেই তাহলে exec-timeout হবে দুই মিনিট ত্রিশ সেকেন্ড। আমরা no exec-timeout কমান্ডের মাধ্যমে আবার ডিফল্ট অবস্থায় ফিরতে পারি।
Cisco ডিভাইসসমূহে এটা এমন একটি অপশন যার মাধ্যমে পাসওয়ার্ডের নূন্যতম দৈর্ঘ্য নির্ধারণ করে দেওয়া যায়।
Router#configure terminal Router(config)#security passwords min-length 10
অর্থাৎ আমরা যদি নূন্যতম দৈর্ঘ্য ১০ নির্ধারণ করে দেই তাহলে ডিভাইসসমূহ পাসওয়ার্ড তৈরীর সময় ১০ এর কম ক্যারেক্টারের পাসওয়ার্ড কখনোই গ্রহণ করবে না এবং একটি Error Message দেখাবে।
% Password too short - must be at least 10 characters. Password not configured.
কোন একটি রাউটার/সুইচে একই সাথে একাধিক ব্যক্তির লগইন করার প্রয়োজন হতে পারে। এজন্য উক্ত রাউটার/সুইচে একাধিক ইউজার তৈরী করা যায়।
Router#configure terminal Router(config)#username admin secret @dmiN13479 Router(config)#username support password $uPPt13579 Router(config)#line console 0 Router(config-line)#login local
আমরা রাউটারটিতে admin ও support নামে দুইটি ইউজার করলাম এবং তাদের পাসওয়ার্ড দিলাম। পাসওয়ার্ড দেওয়ার সময় যদি আমরা secret কী-ওয়ার্ড ব্যবহার করি তাহলে পাসওয়ার্ডটি MD5 এ্যালগরিদমের সাহায্যে এ্যানক্রীপ্ট হবে আর যদি password কী-ওয়ার্ড ব্যবহার করি তাহলে তা S7 এ্যালগরিদমের সাহায্যে এ্যানক্রীপ্ট হবে। যেহেতু S7 এর চেয়ে MD5 অধিকতর শক্তিশালী তাই ইউজার তৈরীর সময় secret কী-ওয়ার্ডটি ব্যবহার করা উচিত। তৈরী হওয়া ইউজারনেম ও পাসওয়ার্ডসমূহ ডিভাইসের লোকাল ডাটাবেসে সংরক্ষিত থাকে তাই কনসোল দিয়ে লগইনের সময় যাতে ডিভাইস তার লোকাল ডাটাবেস চেক করে ইউজারদের অথেনটিকেশন দেয় সেজন্য login local কমান্ডটি ব্যবহার করা হয়েছে।
শুধুমাত্র বড় ও জটিল পাসওয়ার্ড ব্যবহার করেই কোন ডিভাইসকে নিরাপদ করা যায় না। এজন্য আরো বেশ কিছু পদক্ষেপ নেওয়া জরুরী। হ্যাকাররা বিভিন্ন টুলস ব্যবহার করে প্রতি মিনিটে হাজার হাজার ইউজারনেম এ পাসওয়ার্ডের কম্বিনেশন তৈরী করে ডিভাইসে এ্যাকসেস নেওয়ার চেষ্টা করে। হ্যাকাররা যদি ডিভাইসে এ্যাকসেস না ও নিতে পারে তারপরও তাদের সেই DoS এ্যাটাকের সময় ডিভাইসটি যেহেতু অনেক Busy থাকে তাই ডিভাইস/নেটওয়ার্ক ধীর গতির হয়ে যেতে পারে। এ ধরণের সমস্যা থেকে মুক্তি পাওয়ার জন্য ডিভাইসটিকে এমনভাবে কনফিগার করা উচিত যাতে করে কোন কম্পিউটার থেকে কোন একজন ইউজার যদি একটি নির্দিষ্ট সময়ের মধ্যে (১ মিনিট) পর পর একটি নির্দিষ্ট সংখ্যক বার (৫ বার) ভূল ইউজারনেম/পাসওয়ার্ড দিয়ে লগইনের চেষ্টা করে তাহলে ডিভাইসটিতে নির্দিষ্ট সময়ের (১ মিনিট) জন্য লগইন ব্যবস্থা ব্লক হয়ে যায়। এতে করে হ্যাকারদের Dictionary/Bruit-Force এ্যাটাকের কার্যকারিতা অনেকাংশে হ্রাস পায়।
Router#configure terminal Router(config)#login block-for 60 attempts 5 within 60
উপরের কমান্ডের মাধ্যমে আমরা রাউটারটিকে এমনভাবে কনফিগার করলাম যাতে কেউ 60 সেকেন্ড সময়ের মধ্যে 5 বার ভুল ইউজারনেম/পাসওয়ার্ড দেয় তাহলে ডিভাইসটিতে লগইন ব্যবস্থা 60 সেকেন্ডের জন্য বন্ধ হয়ে যাবে। এজন্য রাউটারটিতে অবশ্যই VTY লগইনের জন্য লোকাল ইউজারনেম কনফিগার করা থাকতে হবে। অন্যথায় এই ফিচারটি কাজ করবে না। তবে সমস্যা হলো, এই ব্লকিং পিরিয়ডে অন্যান্য Valid User রাও ডিভাইসে লগইন করতে পারবে না। এজন্য Valid User দের কিছু নির্দিষ্ট আই.পি কে Special Permission দিতে হয়।
সম্পূর্ণ কনফিগারেশনঃ
Router#configure terminal Router(config)#username admin secret @dmiN13479 Router(config)#username support secret $uPPt13579 Router(config)#line vty 0 4 Router(config-line)#login local Router(config-line)#exit Router(config)#login block-for 60 attempts 5 within 60 Router(config)#ip access-list standard PERMIT-VTY Router(config-std-nacl)#permit 192.168.1.11 Router(config-std-nacl)#permit 192.168.1.12 Router(config-std-nacl)#remark PERMIT VTY ADMIN ONLY Router(config-std-nacl)#exit Router(config)#login quiet-mode access-class PERMIT-VTY Router(config)#login delay 3 Router(config)#login on-success log Router(config)#login on-failure log Router(config)#exit
Cisco ভিভাইসসমূহে বাই ডিফল্ট এই ফিচারটি বন্ধ থাকে, এটিকে login block-for কমান্ডের মাধ্যমে এনাবল করতে হয়। এই ফিচারটি দুইটি মুডে কাজ করেঃ
i. Watch Mode: এই মুডে ডিভাইসটি একটি নির্দিষ্ট সময়ের মধ্যে ব্যর্থ লগইনের চেষ্টাগুলো গননা করে। যদি নির্ধারিত সংখ্যকবার লগইনের জন্য ব্যর্থ চেষ্টা করা হয় তাহলে ডিভাইসটি Quiet Mode এ চলে যায়।
ii. Quiet Mode: ডিভাইসটি একটি নির্দিষ্ট সময় পর্যন্ত এই মুডে থাকে এবং পরে আবার Watch Mode এ গমন করে। Quiet Mode এ থাকাকালীন অবস্থায় বাই ডিফল্ট কেউ ডিভাইসে লগইন করতে পারে না। তবে উপরের কনফিগারেশনে ACL ব্যবহারের মাধ্যমে কিছু নির্দিষ্ট আই.পি কে এই মুডে থাকাকালীন অবস্থায় লগইনের পারমিশন দেওয়া হয়েছে। লগইন প্রচেষ্টা একবার ব্যর্থ হলে ডিভাইসসমূহ বাই ডিফল্ট ১ সেকেন্ড পর পরবর্তী কমান্ড গ্রহন করে। এখানে তা পরিবর্তন করে ৩ সেকেন্ড করা হয়েছে। এতে কেউ একবার ব্যর্থ চেষ্টা করলে পরবর্তী চেষ্টা করার জন্য তাকে ৩ সেকেন্ড অপেক্ষা করতে হবে। এছাড়া প্রতিটি ব্যর্থ বা সফল লগইনের ক্ষেত্রে Log জেনারেট হবে যাতে করে নেটওয়ার্ক এ্যাডমিনিষ্ট্রেটর দেখতে পারে কে, কখন, কোথা থেকে লগইন করেছে বা লগইনের চেষ্টা করেছে।
কিছু কমান্ড নিম্নরূপঃ
#show users #show login #show login failures
আশাকরি আপনারা এই টিউটোরিয়ালটি দেখে Cisco ডিভাইসসমূহকে কিভাবে আরো নিরাপদ করা যায় সে সম্পর্কে কিছু ধারণা পাবেন। ভাল থাকবেন। আল্লাহ হাফেজ।