FTP Port 21: নিরাপত্তা ঝুঁকি, ভালন্যারেবিলিটি এবং মিটিগেশন স্ট্র্যাটেজি
FTP (File Transfer Protocol) এবং পোর্ট ২১ কী?
FTP হলো ফাইল ট্রান্সফারের জন্য একটি পুরনো প্রোটোকল (RFC 959)। এটি দুটি পোর্ট ব্যবহার করে:
- Port 21 (Command/Control Channel): কমান্ড, অথেনটিকেশন, সেশন ম্যানেজমেন্ট
- Port 20 (Data Channel): আসল ফাইল ট্রান্সফার (Active Mode-এ)
FTP Port 21 কেন নিরাপদ নয় (Security Risks)?
| ঝুঁকি | বিবরণ |
|---|---|
| Clear-text Authentication | Username/Password প্লেইন টেক্সটে ট্রান্সমিট হয় (Sniffing/Wireshark-এ দৃশ্যমান) |
| No Encryption | কমান্ড এবং ডেটা উভয়ই আনএনক্রিপ্টেড — MitM আক্রমণের ঝুঁকি |
| Anonymous Login | অননিমাস অ্যাক্সেস দিয়ে ফাইল ব্রাউজ/ডাউনলোড সম্ভব (Anonymous/ftp) |
| Directory Traversal | ../ দিয়ে রেস্ট্রিক্টেড ডিরেক্টরি অ্যাক্সেস |
| Cross-Site Scripting (XSS) | FTP সার্ভারের ওয়েব ইন্টারফেসে XSS ভালন্যারেবিলিটি |
| Bounce Attack | FTP সার্ভারকে প্রক্সি হিসেবে ব্যবহার করে অন্য হোস্ট স্ক্যান/আক্রমণ |
| Brute Force | দুর্বল পাসওয়ার্ড علیه ব্রুট-ফোর্স আক্রমণ |
পোর্ট ২১ খোলা থাকলে কী করবেন? (Immediate Actions)
- প্রয়োজন নেইলে বন্ধ করুন: ফায়ারওয়ালে Inbound Port 21 ব্লক করুন
- প্রয়োজন হলে সিকিউর করুন: নিচের মিটিগেশন লাগু করুন
- সার্ভিস বন্ধ করুন:
systemctl stop vsftpd / proftpd / pure-ftpd
FTP সিকিউর করার সেরা পদ্ধতি (Mitigation Strategies)
১. SFTP (SSH File Transfer Protocol) ব্যবহার করুন — সেরা বিকল্প
- পোর্ট ২২ (SSH) ব্যবহার করে
- ফুল এনক্রিপশন (কমান্ড + ডেটা)
- পাবলিক কি অথেনটিকেশন (Passwordless, More Secure)
- ফায়ারওয়াল ফ্রেন্ডলি (সিঙ্গল পোর্ট)
২. FTPS (FTP over SSL/TLS) ব্যবহার করুন
- Explicit FTPS (Port 21 + AUTH TLS) বা Implicit FTPS (Port 990)
- সার্টিফিকেট প্রয়োজন (Let's Encrypt বা Paid)
- ফায়ারওয়ালে Passive Mode Port Range খোলা লাগে (কনফিগারেশন জটিল)
৩. যদি FTP বাধ্যতামূলক হয় (Legacy System), তবে:
- Anonymous Login Disable করুন (
anonymous_enable=NO) - Chroot Jail Enable করুন (
chroot_local_user=YES) - শক্তিশালী পাসওয়ার্ড পলিসি + Fail2Ban (Brute Force Protection)
- IP Whitelisting (শুধু নির্দিষ্ট IP থেকে অ্যাক্সেস)
- TLS/SSL Enforce করুন (FTPS)
- Logging & Monitoring Enable করুন (SIEM-এ লগ ফরওয়ার্ড)
- File Integrity Monitoring (FIM) আপলোড করা ফাইল স্ক্যান করুন (ClamAV)
FTP সার্ভার হার্ডেনিং চেকলিস্ট (vsftpd / ProFTPD / Pure-FTPd)
# vsftpd.conf例
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
pasv_address=YOUR_PUBLIC_IP
hide_ids=YES
max_clients=50
max_per_ip=5
পোর্ট ২১ ও ২০-এর পার্থক্য
- Port 21: Control Channel — কনেকশন স্থাপন, অথেনটিকেশন, কমান্ড (LIST, RETR, STOR)
- Port 20: Data Channel (Active Mode) — আসল ফাইল ট্রান্সফার
- Passive Mode-এ: ক্লায়েন্ট PASV কমান্ড দিয়ে র্যান্ডম হাই পোর্টে কানেক্ট করে (ফায়ারওয়াল ফ্রেন্ডলি)
পোর্ট ২২ (SSH/SFTP) FTP-এর পরিবর্তে ব্যবহার করুন কিনা?
হ্যাঁ, আমদানি সুপারিশ করা হয়। SFTP (SSH File Transfer Protocol) পোর্ট ২২-এ চলে, একটি পোর্ট, ফুল এনক্রিপশন, কি-ভিত্তিক অথেনটিকেশন, এবং ফায়ারওয়াল-ফ্রেন্ডলি। FTPS-এর চেয়েও SFTP কনফিগার করা সহজ এবং নিরাপদ।
নেটওয়ার্ক স্ক্যানে পোর্ট ২১ দেখালে কী করবেন? (Incident Response)
- সার্ভিস শনাক্ত করুন:
nmap -sV -p 21 target - Anonymous লগইন টেস্ট করুন:
ftp target> user: anonymous, pass: anonymous - ভালন্যারেবিলিটি স্ক্যান:
nmap --script ftp-vuln* -p 21 target - লগ চেক করুন:
/var/log/vsftpd.log /var/log/xferlog - অননুমোদিত হলে: ফায়ারওয়ালে ব্লক করুন, সার্ভিস বন্ধ করুন, SFTP-এ মাইগ্রেট করুন
সিদ্ধান্ত: FTP (Port 21) একটি লিগেসি প্রোটোকল যা আধুনিক সিকিউরিটি মানদণ্ড পূরণ করে না। SFTP (Port 22) ব্যবহার করুন। যদি লিগেসি সিস্টেমের জন্য FTP বাধ্যতামূলক হয়, তবে FTPS + চরম হার্ডেনিং + স্ট্রিক্ট মনিটরিং নিশ্চিত করুন।