ভূমিকা: Telnet কি এবং কেন এটি এখন পড়বেন?
গুরুত্বপূর্ণ সতর্কতা: Telnet একটি অত্যন্ত অনিরাপদ প্রোটোকল। এটি আপনার ইউজারনেম, পাসওয়ার্ড, কমান্ড সহ সবকিছু প্লেইন টেক্সটে পাঠায়। প্রোডাকশন সার্ভারে কখনোই Telnet ব্যবহার করবেন না। সর্বদা SSH ব্যবহার করুন। এই টিউটোরিয়ালটি শুধুমাত্র লিগ্যাসি সিস্টেম, ল্যাব টেস্টিং এবং একাডেমিক শিক্ষার জন্য।
Telnet (Teletype Network) হলো একটি Application Layer প্রোটোকল যা 1969 সালে RFC 15 এর মাধ্যমে ডেভেলপ করা হয়। এটি TCP পোর্ট 23 ব্যবহার করে রিমোট কম্পিউটারে ভার্চুয়াল টার্মিনাল অ্যাক্সেস দেয়।
এই আর্টিকেলে যা শিখবেন:
- Ubuntu/CentOS/RHEL এ Telnet Server ইনস্টল ও কনফিগার
- Firewall ও SELinux সেটিংস
- Telnet এর ডিরেক্টরি স্ট্রাকচার ও ফাইল
- একাডেমিক সিকিউরিটি অ্যানালাইসিস ও Wireshark প্র্যাকটিক্যাল
- Telnet vs SSH এর বিস্তারিত তুলনা
১. পূর্বশর্ত ও প্রয়োজনীয় প্যাকেজ
পূর্বশর্ত:
- একটি Linux সার্ভার: Ubuntu 22.04 / CentOS 9 / RHEL 9
sudoবাrootঅ্যাক্সেস- ২টি মেশিন: একটি সার্ভার, একটি ক্লায়েন্ট টেস্টের জন্য
প্রয়োজনীয় প্যাকেজ:
| প্যাকেজের নাম | কাজ | ইনস্টল কমান্ড |
|---|---|---|
telnet-server | Telnet ডেমন in.telnetd চালায় | CentOS/RHEL এ লাগে |
telnetd | Ubuntu তে সার্ভার প্যাকেজ | Ubuntu/Debian এ লাগে |
xinetd | Super Server Daemon, পোর্ট 23 এ রিকোয়েস্ট আসলে telnetd চালু করে | সব ডিস্ট্রোতে লাগে |
telnet | ক্লায়েন্ট, অন্য সার্ভারে কানেক্ট করার জন্য | সব ডিস্ট্রোতে লাগে |
ইনস্টলেশন কমান্ড:
Ubuntu 22.04 / Debian 12:
sudo apt update
sudo apt install telnetd xinetd telnet -y
CentOS 9 / RHEL 9 / Rocky Linux:
Bash
sudo dnf install telnet-server telnet xinetd -y
ক্লারিফিকেশন: telnet-server প্যাকেজটি শুধু সার্ভার মেশিনে লাগবে। যে মেশিন থেকে কানেক্ট করবেন সেটায় শুধু telnet ক্লায়েন্ট হলেই হবে।
২. ডিরেক্টরি স্ট্রাকচার ও গুরুত্বপূর্ণ ফাইল
Telnet কনফিগার করার সময় এই ফাইলগুলো সম্পর্কে জানা জরুরি:
/etc/xinetd.d/telnet # Telnet সার্ভিস কনফিগারেশন। এখানে disable = no করতে হয়।
/etc/xinetd.conf # xinetd এর গ্লোবাল সেটিংস। সব সার্ভিসের জন্য কমন।
/etc/services # পোর্ট ডাটাবেস। এখানে telnet 23/tcp লেখা থাকে।
/usr/sbin/in.telnetd # Telnet ডেমনের আসল বাইনারি ফাইল।
/var/log/secure # RHEL/CentOS এ Telnet লগইন/ফেইল লগ থাকে।
/var/log/auth.log # Ubuntu/Debian এ Telnet লগইন/ফেইল লগ থাকে।
৩. স্টেপ বাই স্টেপ কনফিগারেশন
Step 1: Telnet সার্ভিস এনাবল করুন
xinetd এর অধীনে Telnet ডিফল্টভাবে disable থাকে।
Bash
sudo nano /etc/xinetd.d/telnet
ফাইলটি খুলে disable = yes লাইনটি disable = no করে দিন।
ফাইনাল কনফিগারেশন:
INI
#default: on
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
only_from = 10.0.0.0/24 # স্পেশাল ইনস্ট্রাকশন: শুধু আপনার লোকাল নেটওয়ার্ক এলাও করুন
}
ক্লারিফিকেশন: only_from দিয়ে IP রেস্ট্রিকশন করা সিকিউরিটির জন্য বেস্ট প্র্যাকটিস। wait = no মানে মাল্টি-ইউজার কানেকশন এলাও করবে।
Step 2: xinetd সার্ভিস চালু ও এনাবল করুন
sudo systemctl start xinetd
sudo systemctl enable xinetd
sudo systemctl status xinetd # Active (running) দেখাবে
পোর্ট 23 লিসেন হচ্ছে কিনা চেক করুন:
Bash
sudo ss -tulpn | grep :23
আউটপুট: tcp LISTEN 0 64 *:23 *:* users:(("xinetd",pid=1234,fd=5))
Step 3: ফায়ারওয়াল কনফিগারেশন
পোর্ট 23 ডিফল্টভাবে বন্ধ থাকে। খুলে দিতে হবে।
Ubuntu/UFW:
sudo ufw allow 23/tcp
sudo ufw reload
sudo ufw status
CentOS/RHEL/firewalld:
sudo firewall-cmd –permanent –add-port=23/tcp
sudo firewall-cmd –reload
sudo firewall-cmd –list-ports
Step 4: SELinux ও ইউজার তৈরি – CentOS/RHEL এর জন্য
Telnet রুট ইউজারকে লগইন করতে দেয় না। একটি টেস্ট ইউজার বানান:
sudo adduser telnetuser
sudo passwd telnetuser # একটি পাসওয়ার্ড দিন, যেমন: Telnet@123
SELinux যদি Enforcing মোডে থাকে, তাহলে পলিসি অ্যাড করতে হতে পারে:
Bash
sudo setsebool -P telnetd_connect_network 1
৪. টেস্টিং ও ব্যবহারের উদাহরণ
ধরুন আপনার সার্ভারের IP: 10.0.0.1। ক্লায়েন্ট মেশিন থেকে কমান্ড দিন:
Bash
telnet 10.0.0.1
সফল আউটপুট:
Trying 10.0.0.1…
Connected to 10.0.0.1.
Escape character is ‘^]’.
Ubuntu 22.04.3 LTS
server01 login: telnetuser
Password:
Welcome to Ubuntu 22.04.3 LTS
telnetuser@server01:~$
সেশন থেকে বের হতে: exit লিখুন অথবা Ctrl + ] চেপে quit লিখুন।
৫. Academic Discussion: Telnet এর সিকিউরিটি অ্যানালাইসিস
৫.১. কেন Telnet অনিরাপদ? OSI মডেলের আলোকে
Telnet OSI Layer 7 – Application Layer এ কাজ করে। এর নিচের লেয়ারগুলোতে কোনো এনক্রিপশন নেই।
Wireshark প্র্যাকটিক্যাল: VM-Beta তে Wireshark চালু করে telnet 10.0.0.1 করুন এবং telnetuser দিয়ে লগইন করুন। Wireshark এ telnet ফিল্টার দিলে দেখবেন:
Code
TELNET Data: Password: Telnet@123
এখানে পাসওয়ার্ডটি সম্পূর্ণ প্লেইন টেক্সটে দেখা যাচ্ছে। এটি CIA Triad এর Confidentiality এবং Integrity দুটোই ভঙ্গ করে।
৫.২. Telnet vs SSH: একাডেমিক তুলনা
| বৈশিষ্ট্য | Telnet | SSH (Secure Shell) | একাডেমিক তাৎপর্য |
|---|---|---|---|
| স্ট্যান্ডার্ড | RFC 854, 1969 | RFC 4251, 2006 | প্রোটোকল বিবর্তন |
| এনক্রিপশন | নেই | AES-256, ChaCha20 | Cryptography এর প্রয়োগ |
| পোর্ট | 23/TCP | 22/TCP | Well-known ports |
| অথেনটিকেশন | Plaintext Password | Password, Public-Key, GSSAPI | Authentication Methods |
| ব্যান্ডউইথ | কম লাগে | এনক্রিপশনের জন্য বেশি | Performance vs Security Trade-off |
| আধুনিক ব্যবহার | ০% প্রোডাকশনে | ৯৯% প্রোডাকশনে | Industry Standard |
একাডেমিক উপসংহার: NIST SP 800-123 এবং ISO/IEC 27001 অনুযায়ী Telnet ব্যবহার করা একটি High Severity Vulnerability। তাই কম্পিউটার নেটওয়ার্ক ও সাইবার সিকিউরিটি কোর্সে Telnet পড়ানো হয় “Legacy Protocol Vulnerability Analysis” এর কেস স্টাডি হিসেবে।
৬. কমন এরর ও ট্রাবলশুটিং
| এরর মেসেজ | কারণ | সমাধান |
|---|---|---|
telnet: Unable to connect to remote host: Connection refused | xinetd চলছে না 2. পোর্ট 23 ফায়ারওয়ালে বন্ধ | sudo systemctl start xinetd, sudo ufw allow 23/tcp |
telnet: Unable to connect to remote host: No route to host | নেটওয়ার্ক সমস্যা বা IP ভুল | ping 10.0.0.1 দিয়ে চেক করুন |
Login incorrect | ভুল পাসওয়ার্ড 2. রুট দিয়ে লগইন ট্রাই করছেন | নন-রুট ইউজার ব্যবহার করুন। Telnet রুট এলাও করে না |
telnetd: No login program found | /usr/sbin/in.telnetd ফাইল মিসিং | প্যাকেজ রি-ইনস্টল করুন: sudo apt install --reinstall telnetd |
৭. উপসংহার ও পরবর্তী ধাপ
আমরা এই টিউটোরিয়ালে ল্যাব এনভায়রনমেন্টে Telnet সেটআপ করা শিখলাম এবং একাডেমিক দৃষ্টিকোণ থেকে এর সিকিউরিটি রিস্ক অ্যানালাইসিস করলাম।
ফাইনাল রেকমেন্ডেশন: লিগ্যাসি সিস্টেম মেইনটেইন করা ছাড়া কখনোই Telnet ব্যবহার করবেন না। প্রোডাকশন সার্ভারের জন্য SSH একমাত্র নিরাপদ অপশন।
সিরিজের পরবর্তী পর্ব: SSH Key-Based Authentication in Linux - পাসওয়ার্ড ছাড়া সিকিউর লগইন। সেখানে আমরা শিখব কিভাবে ssh-keygen ও ssh-copy-id ব্যবহার করে সবচেয়ে সিকিউর উপায়ে সার্ভারে লগইন করতে হয়।
আপনার কোনো প্রশ্ন থাকলে ToLearnTeam.com এর কমেন্ট সেকশনে জানান।
nano কি এবং কেন ব্যবহার করবেন?
| বিষয় | ব্যাখ্যা |
|---|---|
| পুরো নাম | GNU nano |
| কাজ | টার্মিনালের ভিতরেই .txt, .conf, .sh এর মতো ফাইল তৈরি ও এডিট করা |
| কেন জনপ্রিয় | খুবই সহজ, Notepad এর মতো 2. সব লিনাক্সে ডিফল্ট থাকে 3. মাউস লাগে না |
| বিকল্প | vi/vim, emacs, micro। কিন্তু vim নতুনদের জন্য কঠিন |
nano এর বেসিক ব্যবহার – Telnet ফাইলের উদাহরণে
আপনি যখন এই কমান্ড দেন:
Bash
sudo nano /etc/xinetd.d/telnet
১. ইন্টারফেস দেখতে কেমন:
GNU nano 6.2 /etc/xinetd.d/telnet
default: on
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify
নিচে ^X মানে Ctrl + X। এগুলোই শর্টকাট।
২. সবচেয়ে দরকারি ৫টি শর্টকাট:
| শর্টকাট | কাজ | কখন লাগবে |
|---|---|---|
Ctrl + O | Write Out = ফাইল সেভ করা | এডিট করার পর সেভ করতে |
Ctrl + X | Exit = nano থেকে বের হওয়া | কাজ শেষ হলে |
Ctrl + W | Where Is = কোনো লেখা খোঁজা | disable লাইনটা খুঁজতে |
Ctrl + K | Cut = লাইন কেটে দেওয়া/ডিলিট | কোনো লাইন মুছতে |
Ctrl + U | Paste = কাট করা লাইন পেস্ট | লাইন কপি-পেস্ট করতে |
৩. Telnet ফাইল এডিট করার সম্পূর্ণ প্রসেস:
Step 1: ফাইল ওপেন করুন
Bash
sudo nano /etc/xinetd.d/telnet
Step 2: Ctrl + W চাপুন, তারপর disable লিখে Enter দিন। কার্সর disable = yes লাইনে চলে যাবে।
Step 3: yes কেটে no লিখুন। এখন হবে disable = no
Step 4: Ctrl + O চাপুন → Enter চাপুন → ফাইল সেভ হবে
Step 5: Ctrl + X চাপুন → nano থেকে বের হয়ে যাবেন
nano vs vim: নতুনদের জন্য কোনটা?
| ফিচার | nano | vim |
|---|---|---|
| শেখা | 2 মিনিটে শেখা যায় | 2 সপ্তাহ লাগতে পারে |
| বের হওয়া | Ctrl + X | :q! বা :wq – অনেকে আটকে যায় |
| মোড | কোনো মোড নেই, ডাইরেক্ট টাইপ | Normal, Insert, Visual মোড আছে |
| কাদের জন্য | বিগিনার, সার্ভার কনফিগ | প্রো ডেভেলপার, দ্রুত কোডিং |
সারসংক্ষেপ: nano হলো লিনাক্সের Notepad। কনফিগ ফাইল এডিট করার সবচেয়ে সহজ উপায়। sudo দিয়ে ওপেন করলে সিস্টেম ফাইল এডিট করতে পারবেন।
GNU nano 6.2 শুধু দেখাচ্ছে এবং ফাইল খালি, মানে /etc/xinetd.d/telnet ফাইলটা এখনো তৈরি হয়নি।
কেন এমন হচ্ছে?
১. telnet-server ইনস্টল করেননি
Ubuntu তে telnetd ইনস্টল করলে সবসময় এই ফাইল অটো তৈরি হয় না।
২. ফাইলের নাম ভুল
৩. xinetd ইনস্টল নেই
সমাধান: স্টেপ বাই স্টেপ
Step 1: প্যাকেজগুলো আছে কিনা চেক করুন
Bash
dpkg -l | grep -E 'telnet|xinetd'
আউটপুটে telnetd এবং xinetd থাকতে হবে। না থাকলে ইনস্টল করুন:
Ubuntu/Debian:
Bash
sudo apt updatesudo apt install telnetd xinetd -y
CentOS/RHEL:
Bash
sudo dnf install telnet-server xinetd -y
Step 2: xinetd.d ডিরেক্টরি আছে কিনা চেক করুন
Bash
ls /etc/xinetd.d/
যদি No such file or directory দেখায়, তাহলে xinetd ইনস্টল হয়নি।
Step 3: ফাইলটি ম্যানুয়ালি তৈরি করুন
প্যাকেজ ইনস্টল করার পরও ফাইল না থাকলে নিজে বানিয়ে নিন:
Bash
sudo nano /etc/xinetd.d/telnet
এবার nano তে এই পুরো কনফিগটা কপি করে পেস্ট করুন:
INI
#default: on
#description: The telnet server serves telnet sessions
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
instances = 100
}
তারপর সেভ করুন: Ctrl + O → Enter → Ctrl + X
Step 4: in.telnetd ফাইল আছে কিনা চেক করুন
xinetd এই বাইনারি ফাইলটা রান করে। লোকেশন চেক করুন:
Bash
ls /usr/sbin/in.telnetd
No such file আসলে telnetd প্যাকেজ ঠিকমতো ইনস্টল হয়নি। রি-ইনস্টল করুন:
Bash
sudo apt install --reinstall telnetd -y
Step 5: সার্ভিস রিস্টার্ট করুন
Bash
sudo systemctl restart xinetdsudo systemctl enable xinetdsudo ss -tulpn | grep :23
*:23 লিসেন দেখালে কাজ শেষ।
সংক্ষেপে আপনার করণীয়:
sudo apt install telnetd xinetd -yরান করুনsudo nano /etc/xinetd.d/telnetদিয়ে উপরের কনফিগ পেস্ট করুনsudo systemctl restart xinetd
গুরুত্বপূর্ণ: CentOS 9/RHEL 9 এ telnet-server ডেপ্রিকেটেড। অনেক সময় dnf install telnet-server দিলেও ফাইল আসে না। সেক্ষেত্রে ম্যানুয়ালি বানানোই সমাধান।
sudo ss -tulpn | grep :23 এ কিছু না দেখানো মানে পোর্ট 23 এ কোনো সার্ভিস লিসেন করছে না। অর্থাৎ Telnet/xinetd চালু হয়নি বা এরর খাচ্ছে।
স্টেপ বাই স্টেপ ট্রাবলশুটিং
Step 1: xinetd চলছে কিনা চেক করুন
Bash
sudo systemctl status xinetd
৩ ধরনের আউটপুট আসতে পারে:
Case A: Active: inactive (dead)
Bash
sudo systemctl start xinetd
sudo systemctl enable xinetd
Case B: Active: active (running) কিন্তু পোর্ট 23 নাই
মানে xinetd চলছে কিন্তু telnet সার্ভিস লোড হয়নি। Step 2 দেখুন।
Case C: Failed with result 'exit-code'
কনফিগে এরর আছে। লগ দেখুন:
Bash
sudo journalctl -u xinetd -n 20 --no-pager
Step 2: telnet কনফিগ ফাইল ঠিক আছে কিনা চেক করুন
Bash
cat /etc/xinetd.d/telnet
মাস্ট থাকতে হবে:
INI
service telnet
{ disable = no # এটা `no` হতে হবে, `yes` হলে চলবে না
server = /usr/sbin/in.telnetd # এই ফাইল থাকতে হবে
}
in.telnetd ফাইল আছে কিনা চেক করুন:
Bash
ls -l /usr/sbin/in.telnetd
No such file আসলে প্যাকেজ মিসিং:
Bash
# Ubuntu
sudo apt install --reinstall telnetd -y
# CentOS/RHEL
sudo dnf reinstall telnet-server -y
Step 3: xinetd রিস্টার্ট দিয়ে এরর চেক করুন
Bash
sudo systemctl restart xinetd
যদি এরর দেয়, তাহলে ডিটেইল লগ দেখুন:
Bash
sudo journalctl -xeu xinetd
কমন এরর:
line 3: exec of /usr/sbin/in.telnetd failed→telnetdপ্যাকেজ ইনস্টল নেইservice/protocol error in /etc/xinetd.d/telnet→ ফাইলে সিনট্যাক্স এরর, ব্র্যাকেট মিসিং
Step 4: ম্যানুয়ালি টেস্ট করুন
xinetd ছাড়া in.telnetd চলে কিনা দেখুন:
Bash
sudo /usr/sbin/in.telnetd
যদি in.telnetd: command not found আসে, তাহলে প্যাকেজ ইনস্টল হয়নি।
Step 5: Ubuntu 22.04+ এর স্পেশাল কেস
নতুন Ubuntu তে telnetd ইনস্টল করলেও অনেক সময় systemd socket ইউজ করে। xinetd লাগে না।
চেক করুন systemd socket আছে কিনা:
Bash
sudo systemctl status telnet.socket
যদি থাকে, তাহলে এটা এনাবল করুন:
Bash
sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket
এক্ষেত্রে xinetd লাগবে না। ss -tulpn | grep :23 এ এখন দেখাবে।
কুইক ফিক্স সামারি – Ubuntu এর জন্য
আপনার জন্য সবচেয়ে সহজ সমাধান:
1. পুরানো কনফিগ ক্লিন করুন
sudo systemctl stop xinetd
sudo apt purge telnetd xinetd -y
2. নতুন করে ইনস্টল করুন
sudo apt update
sudo apt install telnetd xinetd -y
3. ফাইল ম্যানুয়ালি বানান
echo ‘service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}’ | sudo tee /etc/xinetd.d/telnet
4. চালু করুন
sudo systemctl restart xinetd
sudo systemctl enable xinetd
5. চেক করুন
sudo ss -tulpn | grep :23
এখন tcp LISTEN 0 64 *:23 *:* users:(("xinetd",...)) দেখাবে।
Server /usr/sbin/in.xinetd is not executable file এরর মানে /etc/xinetd.d/telnet ফাইলে server এর পাথ ভুল লিখেছেন।
আপনি লিখেছেন /usr/sbin/in.xinetd কিন্তু আসল ফাইল হবে /usr/sbin/in.telnetd।
xinetd হলো সুপার সার্ভার, আর in.telnetd হলো আসল telnet ডেমন।
সমাধান: ফাইল এডিট করুন
Step 1: ফাইল ওপেন করুন
Bash
sudo nano /etc/xinetd.d/telnet
Step 2: ভুল লাইন ঠিক করুন
ভুল কনফিগ:
INI
service telnet
{
disable = no
server = /usr/sbin/in.xinetd # এটা ভুল
}
সঠিক কনফিগ:
INI
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd # telenetd, xinetd না
log_on_failure += USERID
}
in.xinetd কেটে in.telnetd লিখুন। x এর জায়গায় tel হবে।
সেভ করুন: Ctrl + O → Enter → Ctrl + X
Step 3: in.telnetd ফাইল আছে কিনা নিশ্চিত হন
Bash
ls -l /usr/sbin/in.telnetd
আউটপুট এমন হওয়া উচিত:
Code
-rwxr-xr-x 1 root root 12345 Jan 10 2025 /usr/sbin/in.telnetd
যদি No such file or directory আসে, তাহলে প্যাকেজ ইনস্টল হয়নি:
Ubuntu/Debian:
Bash
sudo apt install telnetd -y
CentOS/RHEL:
Bash
sudo dnf install telnet-server -y
Step 4: xinetd রিস্টার্ট করুন
Bash
sudo systemctl restart xinetd
sudo systemctl status xinetd
এখন Active: active (running) দেখাবে, এরর থাকবে না।
Step 5: পোর্ট 23 চেক করুন
Bash
sudo ss -tulpn | grep :23
আউটপুট:
Code
tcp LISTEN 0 64 *:23 *:* users:(("xinetd",pid=2345,fd=5))
কেন এই ভুল হয়?
xinetd এবং in.telnetd নাম দুটো কাছাকাছি। xinetd হলো ম্যানেজার, আর in.telnetd হলো ওয়ার্কার। xinetd পোর্ট 23 এ শোনে, কেউ কানেক্ট করলে in.telnetd চালু করে দেয়।
সহজ মনে রাখার উপায়:
xinetd= Extended Internet Services Daemon = ম্যানেজারin.telnetd= Internet Telnet Daemon = আসল সার্ভার
কুইক ফিক্স ওয়ান-লাইনার:
Bash
sudo sed -i 's/in\.xinetd/in.telnetd/g' /etc/xinetd.d/telnet && sudo systemctl restart xinetd
এই কমান্ড in.xinetd খুঁজে in.telnetd দিয়ে রিপ্লেস করে xinetd রিস্টার্ট করবে।
