CentOS 7-ൽ സുരക്ഷിതമായ ഫയൽ കൈമാറ്റത്തിനായി SSL/TLS ഉപയോഗിച്ച് ഒരു FTP സെർവർ എങ്ങനെ സുരക്ഷിതമാക്കാം


അതിന്റെ യഥാർത്ഥ രൂപകൽപ്പന പ്രകാരം, FTP (ഫയൽ ട്രാൻസ്ഫർ പ്രോട്ടോക്കോൾ) സുരക്ഷിതമല്ല, അതായത് ഉപയോക്താവിന്റെ ക്രെഡൻഷ്യലുകൾക്കൊപ്പം രണ്ട് മെഷീനുകൾക്കിടയിൽ കൈമാറുന്ന ഡാറ്റ എൻക്രിപ്റ്റ് ചെയ്യുന്നില്ല. ഇത് ഡാറ്റയ്ക്കും സെർവർ സുരക്ഷയ്ക്കും വൻ ഭീഷണി ഉയർത്തുന്നു.

ഈ ട്യൂട്ടോറിയലിൽ, CentOS/RHEL 7, Fedora എന്നിവയിലെ ഒരു FTP സെർവറിൽ ഡാറ്റ എൻക്രിപ്ഷൻ സേവനങ്ങൾ എങ്ങനെ സ്വമേധയാ പ്രവർത്തനക്ഷമമാക്കാമെന്ന് ഞങ്ങൾ വിശദീകരിക്കും; SSL/TLS സർട്ടിഫിക്കറ്റുകൾ ഉപയോഗിച്ച് VSFTPD (വളരെ സുരക്ഷിതമായ FTP ഡെമൺ) സേവനങ്ങൾ സുരക്ഷിതമാക്കുന്നതിനുള്ള വിവിധ ഘട്ടങ്ങളിലൂടെ ഞങ്ങൾ കടന്നുപോകും.

  1. നിങ്ങൾ CentOS 7-ൽ ഒരു FTP സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്തിരിക്കണം

ഞങ്ങൾ ആരംഭിക്കുന്നതിന് മുമ്പ്, ഈ ട്യൂട്ടോറിയലിലെ എല്ലാ കമാൻഡുകളും റൂട്ട് ആയി പ്രവർത്തിക്കും, അല്ലാത്തപക്ഷം, റൂട്ട് അക്കൗണ്ട് ഉപയോഗിച്ച് നിങ്ങൾ സെർവറിനെ നിയന്ത്രിക്കുന്നില്ലെങ്കിൽ റൂട്ട് പ്രത്യേകാവകാശങ്ങൾ നേടുന്നതിന് sudo കമാൻഡ് ഉപയോഗിക്കുക.

ഘട്ടം 1. SSL/TLS സർട്ടിഫിക്കറ്റും സ്വകാര്യ കീയും സൃഷ്ടിക്കുന്നു

1. ഞങ്ങൾ SSL/TLS സർട്ടിഫിക്കറ്റും കീ ഫയലുകളും സംഭരിക്കുന്ന /etc/ssl/ എന്നതിന് കീഴിൽ ഒരു ഉപഡയറക്uടറി സൃഷ്uടിച്ചുകൊണ്ട് ആരംഭിക്കേണ്ടതുണ്ട്:

# mkdir /etc/ssl/private

2. തുടർന്ന് ഒരൊറ്റ ഫയലിൽ vsftpd-നുള്ള സർട്ടിഫിക്കറ്റും കീയും സൃഷ്ടിക്കാൻ താഴെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കുക, ഉപയോഗിച്ച ഓരോ ഫ്ലാഗിന്റെയും വിശദീകരണം ഇതാ.

  1. req - X.509 സർട്ടിഫിക്കറ്റ് സൈനിംഗ് അഭ്യർത്ഥന (CSR) മാനേജ്മെന്റിനുള്ള ഒരു കമാൻഡ് ആണ്.
  2. x509 – എന്നാൽ X.509 സർട്ടിഫിക്കറ്റ് ഡാറ്റ മാനേജ്മെന്റ്.
  3. ദിവസങ്ങൾ - സർട്ടിഫിക്കറ്റ് സാധുതയുള്ള ദിവസങ്ങളുടെ എണ്ണം നിർവചിക്കുന്നു.
  4. newkey – സർട്ടിഫിക്കറ്റ് കീ പ്രോസസർ വ്യക്തമാക്കുന്നു.
  5. rsa:2048 – RSA കീ പ്രോസസർ, 2048 ബിറ്റ് പ്രൈവറ്റ് കീ ജനറേറ്റ് ചെയ്യും.
  6. കീഔട്ട് - കീ സ്റ്റോറേജ് ഫയൽ സജ്ജമാക്കുന്നു.
  7. out - സർട്ടിഫിക്കറ്റ് സ്റ്റോറേജ് ഫയൽ സജ്ജീകരിക്കുന്നു, സർട്ടിഫിക്കറ്റും കീയും ഒരേ ഫയലിൽ സംഭരിച്ചിരിക്കുന്നുവെന്നത് ശ്രദ്ധിക്കുക: /etc/ssl/private/vsftpd.pem.

# openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

ചുവടെയുള്ള ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകാൻ മുകളിലുള്ള കമാൻഡ് നിങ്ങളോട് ആവശ്യപ്പെടും, നിങ്ങളുടെ സാഹചര്യത്തിന് ബാധകമായ മൂല്യങ്ങൾ ഉപയോഗിക്കാൻ ഓർമ്മിക്കുക.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

ഘട്ടം 2. SSL/TLS ഉപയോഗിക്കുന്നതിന് VSFTPD കോൺഫിഗർ ചെയ്യുന്നു

3. ഏതെങ്കിലും VSFTPD കോൺഫിഗറേഷനുകൾ നടത്തുന്നതിന് മുമ്പ്, TLS കണക്ഷനുകളും നിഷ്ക്രിയ പോർട്ടുകളുടെ പോർട്ട് ശ്രേണിയും VSFTPD കോൺഫിഗറേഷൻ ഫയലിൽ യഥാക്രമം നിർവചിക്കാൻ അനുവദിക്കുന്നതിന് നമുക്ക് 990, 40000-50000 എന്നീ പോർട്ടുകൾ തുറക്കാം:

# firewall-cmd --zone=public --permanent --add-port=990/tcp
# firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
# firewall-cmd --reload

4. ഇപ്പോൾ, VSFTPD കോൺഫിഗറേഷൻ ഫയൽ തുറന്ന് അതിൽ SSL വിശദാംശങ്ങൾ വ്യക്തമാക്കുക:

# vi /etc/vsftpd/vsftpd.conf

SSL-ന്റെ ഉപയോഗം സജീവമാക്കുന്നതിന് ssl_enable ഓപ്uഷൻ നോക്കി അതിന്റെ മൂല്യം YES ആയി സജ്ജീകരിക്കുക, കൂടാതെ, TSL SSL-നേക്കാൾ സുരക്ഷിതമായതിനാൽ, ssl_tlsv1_2 ഓപ്uഷൻ ഉപയോഗിച്ച് TLS ഉപയോഗിക്കുന്നതിന് പകരം VSFTPD-നെ ഞങ്ങൾ നിയന്ത്രിക്കും:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. തുടർന്ന്, SSL സർട്ടിഫിക്കറ്റിന്റെയും കീ ഫയലിന്റെയും സ്ഥാനം നിർവചിക്കുന്നതിന് ചുവടെയുള്ള വരികൾ ചേർക്കുക:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6. അടുത്തതായി, അജ്ഞാതരായ ഉപയോക്താക്കളെ SSL ഉപയോഗിക്കുന്നതിൽ നിന്ന് ഞങ്ങൾ തടയണം, തുടർന്ന് ഡാറ്റാ കൈമാറ്റത്തിനും ലോഗിൻ സമയത്ത് പാസ്uവേഡ് അയയ്uക്കുന്നതിനും സുരക്ഷിതമായ SSL കണക്ഷൻ ഉപയോഗിക്കുന്നതിന് എല്ലാ അജ്ഞാത ലോഗിനുകളെയും നിർബന്ധിക്കുക:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. കൂടാതെ, FTP സെർവർ സുരക്ഷ വർധിപ്പിക്കാൻ നമുക്ക് താഴെയുള്ള ഓപ്ഷനുകൾ ചേർക്കാവുന്നതാണ്. ആവശ്യമായ_എസ്uഎസ്uഎൽ_റെഉപയോഗം അതെ ആയി സജ്ജീകരിക്കുമ്പോൾ, SSL സെഷൻ പുനരുപയോഗം പ്രദർശിപ്പിക്കുന്നതിന് എല്ലാ SSL ഡാറ്റാ കണക്ഷനുകളും ആവശ്യമാണ്; കൺട്രോൾ ചാനലിന്റെ അതേ പ്രധാന രഹസ്യം അവർക്കറിയാമെന്ന് തെളിയിക്കുന്നു.

അതിനാൽ, ഞങ്ങൾ അത് ഓഫ് ചെയ്യണം.

require_ssl_reuse=NO

വീണ്ടും, ssl_ciphers ഓപ്ഷനുള്ള എൻക്രിപ്റ്റ് ചെയ്ത SSL കണക്ഷനുകൾക്കായി VSFTPD അനുവദിക്കുന്ന SSL സൈഫറുകൾ തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്. ഒരു പ്രത്യേക സൈഫർ അടിച്ചേൽപ്പിക്കാൻ ശ്രമിക്കുന്ന ആക്രമണകാരികളുടെ ശ്രമങ്ങളെ ഇത് വളരെയധികം പരിമിതപ്പെടുത്തും:

ssl_ciphers=HIGH

8. ഇപ്പോൾ, നിഷ്ക്രിയ പോർട്ടുകളുടെ പോർട്ട് ശ്രേണി (മിനിറ്റും പരമാവധി പോർട്ടും) സജ്ജമാക്കുക.

pasv_min_port=40000
pasv_max_port=50000

9. ഓപ്ഷണലായി, SSL ഡീബഗ്ഗിംഗ് അനുവദിക്കുക, അതായത് openSSL കണക്ഷൻ ഡയഗ്നോസ്റ്റിക്സ് debug_ssl ഓപ്uഷൻ ഉപയോഗിച്ച് VSFTPD ലോഗ് ഫയലിലേക്ക് രേഖപ്പെടുത്തുന്നു:

debug_ssl=YES

എല്ലാ മാറ്റങ്ങളും സംരക്ഷിച്ച് ഫയൽ അടയ്ക്കുക. അപ്പോൾ നമുക്ക് VSFTPD സേവനം പുനരാരംഭിക്കാം:

# systemctl restart vsftpd

ഘട്ടം 3: SSL/TLS കണക്ഷനുകൾ ഉള്ള FTP സെർവർ പരിശോധിക്കുന്നു

10. മുകളിലുള്ള എല്ലാ കോൺഫിഗറേഷനുകളും ചെയ്തതിന് ശേഷം, ഇനിപ്പറയുന്ന രീതിയിൽ കമാൻഡ് ലൈനിൽ നിന്ന് FTP ഉപയോഗിക്കാൻ ശ്രമിച്ചുകൊണ്ട് VSFTPD SSL/TLS കണക്ഷനുകൾ ഉപയോഗിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

മുകളിലെ സ്ക്രീൻ ഷോട്ടിൽ നിന്ന്, എൻക്രിപ്ഷൻ സേവനങ്ങളെ പിന്തുണയ്ക്കുന്ന ക്ലയന്റുകളിൽ നിന്ന് മാത്രമേ VSFTPD ഉപയോക്താവിനെ ലോഗിൻ ചെയ്യാൻ അനുവദിക്കൂ എന്ന് ഞങ്ങളെ അറിയിക്കുന്നതിൽ ഒരു പിശക് ഉണ്ടെന്ന് നമുക്ക് കാണാൻ കഴിയും.

കമാൻഡ് ലൈൻ എൻക്രിപ്ഷൻ സേവനങ്ങൾ നൽകുന്നില്ല, അങ്ങനെ പിശക് സൃഷ്ടിക്കുന്നു. അതിനാൽ, സെർവറിലേക്ക് സുരക്ഷിതമായി കണക്റ്റുചെയ്യുന്നതിന്, FileZilla പോലുള്ള SSL/TLS കണക്ഷനുകളെ പിന്തുണയ്ക്കുന്ന ഒരു FTP ക്ലയന്റ് ഞങ്ങൾക്ക് ആവശ്യമാണ്.

ഘട്ടം 4: ഒരു FTP സെർവറിലേക്ക് സുരക്ഷിതമായി ബന്ധിപ്പിക്കുന്നതിന് FileZilla ഇൻസ്റ്റാൾ ചെയ്യുക

11. SSL/TLS കണക്ഷനുകളെ ഡിഫോൾട്ടായി പിന്തുണയ്ക്കുന്ന ആധുനികവും ജനപ്രിയവും പ്രധാനപ്പെട്ടതുമായ ക്രോസ്-പ്ലാറ്റ്ഫോം FTP ക്ലയന്റാണ് FileZilla.

ലിനക്സിൽ FileZilla ഇൻസ്റ്റാൾ ചെയ്യാൻ, താഴെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

--------- On CentOS/RHEL/Fedora --------- 
# yum install epel-release filezilla

--------- On Debian/Ubuntu ---------
$ sudo apt-get install  filezilla   

12. ഇൻസ്റ്റാളേഷൻ പൂർത്തിയാകുമ്പോൾ (അല്ലെങ്കിൽ നിങ്ങൾ ഇത് ഇതിനകം ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ), അത് തുറന്ന് ഫയൽ=>സൈറ്റ് മാനേജറിലേക്ക് പോകുക അല്ലെങ്കിൽ (Ctrl+S അമർത്തുക) സൈറ്റ് മാനേജർ ഇന്റർഫേസ് ചുവടെ ലഭിക്കും.

ഒരു പുതിയ സൈറ്റ്/ഹോസ്റ്റ് കണക്ഷൻ വിശദാംശങ്ങൾ ചേർക്കാൻ പുതിയ സൈറ്റ് ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക.

13. അടുത്തതായി, ഹോസ്റ്റ്/സൈറ്റ് പേര് സജ്ജീകരിക്കുക, IP വിലാസം ചേർക്കുക, ഉപയോഗിക്കേണ്ട പ്രോട്ടോക്കോൾ നിർവചിക്കുക, എൻക്രിപ്ഷൻ, താഴെയുള്ള സ്ക്രീൻ ഷോട്ടിലെ ലോഗൺ തരം എന്നിവ (നിങ്ങളുടെ സാഹചര്യത്തിന് ബാധകമായ മൂല്യങ്ങൾ ഉപയോഗിക്കുക):

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. തുടർന്ന് വീണ്ടും പാസ്uവേഡ് നൽകുന്നതിന് കണക്uറ്റ് ക്ലിക്ക് ചെയ്യുക, തുടർന്ന് SSL/TLS കണക്ഷനുപയോഗിക്കുന്ന സർട്ടിഫിക്കറ്റ് പരിശോധിച്ച് FTP സെർവറിലേക്ക് കണക്റ്റുചെയ്യുന്നതിന് ഒരിക്കൽ കൂടി OK ക്ലിക്ക് ചെയ്യുക:

ഈ ഘട്ടത്തിൽ, ഞങ്ങൾ ഒരു TLS കണക്ഷനിലൂടെ FTP സെർവറിലേക്ക് വിജയകരമായി ലോഗിൻ ചെയ്തിരിക്കണം, താഴെയുള്ള ഇന്റർഫേസിൽ നിന്നുള്ള കൂടുതൽ വിവരങ്ങൾക്ക് കണക്ഷൻ സ്റ്റാറ്റസ് വിഭാഗം പരിശോധിക്കുക.

15. അവസാനമായി പക്ഷേ, ലോക്കൽ മെഷീനിൽ നിന്ന് ഫയലുകൾ ഫോൾഡറിലെ FTP സെവറിലേക്ക് ഫയലുകൾ ട്രാൻസ്ഫർ ചെയ്യാൻ ശ്രമിക്കുക, ഫയൽ കൈമാറ്റം സംബന്ധിച്ച റിപ്പോർട്ടുകൾ കാണുന്നതിന് FileZilla ഇന്റർഫേസിന്റെ താഴത്തെ അറ്റത്ത് നോക്കുക.

അത്രയേയുള്ളൂ! ഈ ട്യൂട്ടോറിയലിൽ ഞങ്ങൾ കാണിച്ചത് പോലെ SSL/TLS കണക്ഷനുകൾ ഉപയോഗിക്കുന്നതിനായി ഞങ്ങൾ കോൺഫിഗർ ചെയ്യുന്നില്ലെങ്കിൽ, സ്ഥിരസ്ഥിതിയായി FTP സുരക്ഷിതമല്ലെന്ന് എപ്പോഴും ഓർമ്മിക്കുക. ഈ ട്യൂട്ടോറിയൽ/വിഷയത്തെക്കുറിച്ചുള്ള നിങ്ങളുടെ ചിന്തകൾ ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം വഴി പങ്കിടുക.