আমরা সাধারণত SSH এর মাধ্যমে বিভিন্ন সার্ভার, রাউটার, ফায়ারওয়ালে লগইন করার জন্য পাসওয়ার্ড ভিত্তিক অথেন্টিকেশন পদ্ধতি ব্যবহার করি। কিন্তু বিভিন্ন অ্যাটাক (Brut force, Dictionary, Session hijack) জনিত কারণে পাসওয়ার্ড ভিত্তিক অথেন্টিকেশন পদ্ধতির ব্যবহার রিস্কি হয়ে দাঁড়ায়। এজন্য আমরা অ্যাডভান্স অথেন্টিকেশন পদ্ধতি যেমন পাবলিক এবং প্রাইভেট কী (Key Based) অথেন্টিকেশন ব্যবহার করে থাকে। তবে SSH ছাড়াও অন্যান্য পাসওয়ার্ড ভিত্তিক অথেন্টিকেশন পদ্ধতি এবং Key Based অথেন্টিকেশন পদ্ধতি আরো সিকিউর করার জন্য Two-Factor Authentication (2FA) পদ্ধতি ব্যবহার করতে পারি। বর্তমানে Google, Facebook, Microsoft সহ অধিকাংশ প্রতিষ্ঠান Two-Factor Authentication (2FA) ব্যবহার করে।
Two-Factor (2FA) Authentication System:
Two-Factor Authentication (2FA) পদ্ধতি ব্যবহার করতে পাসওয়ার্ডের পাশাপাশি OTP (One Time Password) কোড ব্যবহার করতে হবে। OTP সিস্টেম TOTP (Time-based One-Time password) অ্যালগরিদম ব্যবহার করে One Time Password জেনারেট করে, যেটা ‘IETF’ স্ট্যান্ডার্ড মেনে চলে। OTP জেনারেট করার জন্য আমারা স্মার্ট ফোন ব্যবহার করতে পারি। মার্কেটে বিভিন্ন ধরনের OTP জেনারেটর অ্যাপস আছে, আমরা আমাদের এই টপিকসে Google Authenticator ব্যবহার করে OTP জেনারেট করা হবে। এজন্য আমাদের স্মার্টফোনে Google Authenticator অ্যাপস ইন্সটল করতে হবে।
Step 01: Install Required Packages
Google Authenticator একটি EPEL (Extra Packages for Enterprise Linux) সার্ভিস সুতরাং এখানে EPEL এর RPM টি ইন্সটল করতে হবে। EPEL ইন্সটল শেষ হলে Google Authenticator এবং QR কোডের জন্য প্রয়োজনীয় প্যাকেজ (qrencode) ইন্সটল করতে হবে।
[rooot@desktop ~]# yum install -y epel-release
[rooot@desktop ~]# yum install -y google-authenticator qrencode
ns160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.11.151 netmask 255.255.255.0 broadcast 172.25.11.255
inet6 fe80::609f:b30a:22d0:878d prefixlen 64 scopeid 0x20
ether 00:0c:29:1e:33:f1 txqueuelen 1000 (Ethernet)
RX packets 200461 bytes 42956206 (40.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13257 bytes 1104211 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:1e:33:fb txqueuelen 1000 (Ethernet)
RX packets 177800 bytes 11733544 (11.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 204 bytes 38844 (37.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 38844 (37.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collision
Note: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
Step 02: Configure Google Authenticator
প্যাকেজ ইন্সটল শেষ হলে প্রথমে ‘root’ ইউজারের হোম ডিরেক্টরীতে ‘.ssh’ নামে একটি Hidden ডিরেক্টরী তৈরী করতে হবে। এরপরে নিচের স্ক্রীনশট অনুযায়ী ‘google-authenticator -s’ কমান্ড টি রান করলে কমান্ডের আউটপুট অনুযায়ী ‘y’ প্রেস করতে হবে।
Figure: Google Authenticator QR Code (CentOS 8)
এখন স্মার্টফোনে Google Authenticator নামের প্যাকেজ ইন্সটল করতে হবে। ‘Google Authenticator’ অ্যাপস টি রান করলে নিচের স্ক্রীনশট অনুযায়ী ‘+’ সাইনে ক্লিক করে নতুন একাউন্ট অ্যাড করা যাবে।
উপরের দুইটা লাইন যোগ করে সেভ করে বের হয়ে যেতে হবে।
Restart SSH Service :
সকল কনফিগারেশন শেষ হলে এখন SSH সার্ভিসটি পুনরায় রিস্টার দিতে হবে।