CentOS 7-ൽ FTP സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം, കോൺഫിഗർ ചെയ്യാം, സുരക്ഷിതമാക്കാം - [സമഗ്ര ഗൈഡ്]


FTP (ഫയൽ ട്രാൻസ്ഫർ പ്രോട്ടോക്കോൾ) ഒരു നെറ്റ്uവർക്കിലൂടെ സെർവറിനും ക്ലയന്റുകൾക്കുമിടയിൽ ഫയലുകൾ കൈമാറുന്നതിനുള്ള പരമ്പരാഗതവും വ്യാപകമായി ഉപയോഗിക്കുന്നതുമായ ഒരു സാധാരണ ഉപകരണമാണ്, പ്രത്യേകിച്ചും ആധികാരികത ആവശ്യമില്ലാത്തിടത്ത് (അജ്ഞാത ഉപയോക്താക്കളെ ഒരു സെർവറിലേക്ക് കണക്റ്റുചെയ്യാൻ അനുവദിക്കുന്നു). FTP ഡിഫോൾട്ടായി സുരക്ഷിതമല്ലെന്ന് നമ്മൾ മനസ്സിലാക്കണം, കാരണം അത് എൻക്രിപ്ഷൻ കൂടാതെ ഉപയോക്തൃ ക്രെഡൻഷ്യലുകളും ഡാറ്റയും കൈമാറുന്നു.

ഈ ഗൈഡിൽ, CentOS/RHEL 7, Fedora ഡിസ്ട്രിബ്യൂഷനുകളിൽ ഒരു FTP സെർവർ (VSFTPD എന്നാൽ വളരെ സുരക്ഷിതമായ FTP ഡെമൺ) ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനും കോൺഫിഗർ ചെയ്യുന്നതിനും സുരക്ഷിതമാക്കുന്നതിനുമുള്ള ഘട്ടങ്ങൾ ഞങ്ങൾ വിവരിക്കും.

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

ഘട്ടം 1: FTP സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

1. vsftpd സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നത് നേരെ മുന്നോട്ട്, ടെർമിനലിൽ ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# yum install vsftpd

2. ഇൻസ്റ്റാളേഷൻ പൂർത്തിയായ ശേഷം, സേവനം ആദ്യം പ്രവർത്തനരഹിതമാക്കും, അതിനാൽ ഞങ്ങൾ ഇത് തൽക്കാലം സ്വമേധയാ ആരംഭിക്കുകയും അടുത്ത സിസ്റ്റം ബൂട്ടിൽ നിന്നും സ്വയമേവ ആരംഭിക്കാൻ പ്രാപ്തമാക്കുകയും വേണം:

# systemctl start vsftpd
# systemctl enable vsftpd

3. അടുത്തതായി, ബാഹ്യ സിസ്റ്റങ്ങളിൽ നിന്ന് FTP സേവനങ്ങളിലേക്ക് പ്രവേശനം അനുവദിക്കുന്നതിന്, FTP ഡെമണുകൾ ഇനിപ്പറയുന്ന രീതിയിൽ കേൾക്കുന്ന പോർട്ട് 21 തുറക്കണം:

# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-service=ftp
# firewall-cmd --reload

ഘട്ടം 2: FTP സെർവർ കോൺഫിഗർ ചെയ്യുന്നു

4. ഇപ്പോൾ നമ്മുടെ എഫ്uടിപി സെർവർ സജ്ജീകരിക്കുന്നതിനും സുരക്ഷിതമാക്കുന്നതിനുമായി കുറച്ച് കോൺഫിഗറേഷനുകൾ നടത്താൻ ഞങ്ങൾ നീങ്ങും, യഥാർത്ഥ കോൺഫിഗറേഷൻ ഫയലായ /etc/vsftpd/vsftpd.conf ബാക്കപ്പ് ചെയ്തുകൊണ്ട് നമുക്ക് ആരംഭിക്കാം:

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

അടുത്തതായി, മുകളിലുള്ള കോൺഫിഗറേഷൻ ഫയൽ തുറന്ന് ഈ അനുബന്ധ മൂല്യങ്ങൾ ഉപയോഗിച്ച് ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ സജ്ജമാക്കുക:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. ഉപയോക്തൃ ലിസ്റ്റ് ഫയൽ /etc/vsftpd.userlist അടിസ്ഥാനമാക്കി ഉപയോക്താക്കൾക്ക് FTP ആക്സസ് അനുവദിക്കുന്നതിന്/നിരസിക്കാൻ ഇപ്പോൾ FTP കോൺഫിഗർ ചെയ്യുക.

സ്ഥിരസ്ഥിതിയായി, userlist_file=/etc/vsftpd.userlist എന്നതിൽ ലിസ്uറ്റ് ചെയ്uതിരിക്കുന്ന ഉപയോക്താക്കൾക്ക് userlist_enable=YES ആണെങ്കിൽ YES എന്ന് സജ്ജീകരിച്ചിരിക്കുന്ന userlist_deny ഓപ്uഷൻ ഉപയോഗിച്ച് ലോഗിൻ ആക്uസസ് നിരസിക്കപ്പെട്ടു.

എന്നിരുന്നാലും, userlist_deny=NO ക്രമീകരണം മാറ്റുന്നു, അതായത് userlist_file=/etc/vsftpd.userlist-ൽ വ്യക്തമായി ലിസ്റ്റുചെയ്തിരിക്കുന്ന ഉപയോക്താക്കൾക്ക് മാത്രമേ ലോഗിൻ ചെയ്യാൻ അനുമതിയുള്ളൂ.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

അത്രയൊന്നും അല്ല, ഉപയോക്താക്കൾ എഫ്uടിപി സെർവറിലേക്ക് ലോഗിൻ ചെയ്യുമ്പോൾ, അവരെ ഒരു ക്രോട്ട് ജയിലിൽ പാർപ്പിക്കും, ഇത് എഫ്uടിപി സെഷനായി മാത്രം അവരുടെ ഹോം ഡയറക്uടറിയായി പ്രവർത്തിക്കുന്ന ലോക്കൽ റൂട്ട് ഡയറക്uടറിയാണ്.

അടുത്തതായി, FTP ഉപയോക്താക്കൾക്കുള്ള ഹോം ഡയറക്uടറികളിലേക്ക് (ലോക്കൽ റൂട്ട്) ഡയറക്uടറിയിലേക്ക് FTP ഉപയോക്താക്കളെ എങ്ങനെ ക്രോട്ട് ചെയ്യാം എന്നതിന്റെ സാധ്യമായ രണ്ട് സാഹചര്യങ്ങൾ ഞങ്ങൾ പരിശോധിക്കും, ചുവടെ വിശദീകരിച്ചിരിക്കുന്നു.

6. ഇപ്പോൾ FTP ഉപയോക്താക്കളെ അവരുടെ ഹോം ഡയറക്uടറികളിലേക്ക് പരിമിതപ്പെടുത്തുന്നതിന് ഇനിപ്പറയുന്ന രണ്ട് ഓപ്ഷനുകൾ ചേർക്കുക.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=അതെ അർത്ഥമാക്കുന്നത് പ്രാദേശിക ഉപയോക്താക്കളെ സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങൾ വഴി ലോഗിൻ ചെയ്ത ശേഷം അവരുടെ ഹോം ഡയറക്ടറിയായ chroot ജയിലിൽ പാർപ്പിക്കുമെന്നാണ്.

കൂടാതെ സ്ഥിരസ്ഥിതിയായി, vsftpd സുരക്ഷാ കാരണങ്ങളാൽ chroot ജയിൽ ഡയറക്uടറി എഴുതാൻ അനുവദിക്കുന്നില്ല, എന്നിരുന്നാലും, ഈ ക്രമീകരണം അസാധുവാക്കാൻ നമുക്ക് allow_writeable_chroot=YES ഓപ്ഷൻ ഉപയോഗിക്കാം.

ഫയൽ സംരക്ഷിച്ച് അത് അടയ്ക്കുക.

SELinux ഉപയോഗിച്ച് FTP സെർവർ സുരക്ഷിതമാക്കുന്നു

7. ഇപ്പോൾ, ഒരു ഉപയോക്താവിന്റെ ഹോം ഡയറക്uടറിയിലെ ഫയലുകൾ വായിക്കാൻ FTP-യെ അനുവദിക്കുന്നതിന് താഴെ SELinux boolean സജ്ജമാക്കാം. കമാൻഡ് ഉപയോഗിച്ചാണ് ഇത് ആദ്യം ചെയ്തതെന്ന് ശ്രദ്ധിക്കുക:

# setsebool -P ftp_home_dir on

എന്നിരുന്നാലും, ഈ ബഗ് റിപ്പോർട്ടിൽ വിശദീകരിച്ചിരിക്കുന്നതുപോലെ, ftp_home_dir നിർദ്ദേശം ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

ഉപയോക്താവിന്റെ ഹോം ഡയറക്uടറി വായിക്കാനും എഴുതാനും FTP-യെ അനുവദിക്കുന്നതിന് SELinux റൂൾ സജ്ജീകരിക്കാൻ ഇപ്പോൾ നമ്മൾ semanage കമാൻഡ് ഉപയോഗിക്കും.

# semanage boolean -m ftpd_full_access --on

ഈ ഘട്ടത്തിൽ, ഞങ്ങൾ ഇതുവരെ മുകളിൽ വരുത്തിയ എല്ലാ മാറ്റങ്ങളും പ്രാബല്യത്തിൽ വരുത്തുന്നതിന് vsftpd പുനരാരംഭിക്കേണ്ടതുണ്ട്:

# systemctl restart vsftpd

ഘട്ടം 4: FTP സെർവർ പരിശോധിക്കുന്നു

8. ഇപ്പോൾ നമ്മൾ userradd കമാൻഡ് ഉപയോഗിച്ച് ഒരു FTP ഉപയോക്താവിനെ സൃഷ്ടിച്ചുകൊണ്ട് FTP സെർവർ പരിശോധിക്കും.

# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
# passwd ravi

അതിനുശേഷം, ഇനിപ്പറയുന്ന രീതിയിൽ echo കമാൻഡ് ഉപയോഗിച്ച് ഞങ്ങൾ ഉപയോക്താവ് രവിയെ /etc/vsftpd.userlist ഫയലിലേക്ക് ചേർക്കേണ്ടതുണ്ട്:

# echo "ravi" | tee -a /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist

9. മുകളിലുള്ള ഞങ്ങളുടെ ക്രമീകരണങ്ങൾ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കാനുള്ള സമയമാണിത്. അജ്ഞാത ലോഗിനുകൾ പരീക്ഷിച്ചുകൊണ്ട് നമുക്ക് ആരംഭിക്കാം, അജ്ഞാത ലോഗിനുകൾ അനുവദനീയമല്ലെന്ന് ചുവടെയുള്ള സ്ക്രീൻ ഷോട്ടിൽ നിന്ന് നമുക്ക് കാണാൻ കഴിയും:

# 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) : anonymous
530 Permission denied.
Login failed.
ftp>

10. /etc/vsftpd.userlist ഫയലിൽ ലിസ്റ്റ് ചെയ്യാത്ത ഒരു ഉപയോക്താവിന് ലോഗിൻ ചെയ്യാനുള്ള അനുമതി ലഭിക്കുമോ എന്ന് പരിശോധിക്കാം, അത് താഴെയുള്ള സ്ക്രീൻ ഷോട്ടിലെ പോലെയല്ല:

# 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) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. /etc/vsftpd.userlist ഫയലിൽ ലിസ്റ്റുചെയ്തിരിക്കുന്ന ഒരു ഉപയോക്താവ്, ലോഗിൻ ചെയ്തതിന് ശേഷം യഥാർത്ഥത്തിൽ അവന്റെ/അവളുടെ ഹോം ഡയറക്ടറിയിൽ സ്ഥാപിച്ചിട്ടുണ്ടോ എന്ന് ഇപ്പോൾ അന്തിമ പരിശോധന നടത്തുക:

# 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
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

നിങ്ങൾ എന്താണ് ചെയ്യുന്നതെന്ന് കൃത്യമായി അറിയാമെങ്കിൽ മാത്രം ഈ ഓപ്ഷൻ സജീവമാക്കുക. ഈ സുരക്ഷാ പ്രത്യാഘാതങ്ങൾ vsftpd നിർദ്ദിഷ്uടമല്ല, പ്രാദേശിക ഉപയോക്താക്കളെ chroot ജയിലുകളിൽ അടയ്ക്കാൻ വാഗ്ദാനം ചെയ്യുന്ന എല്ലാ FTP ഡെമണുകൾക്കും അവ ബാധകമാണ് എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്.

അതിനാൽ, അടുത്ത വിഭാഗത്തിൽ മറ്റൊരു നോൺ-റൈറ്റബിൾ ലോക്കൽ റൂട്ട് ഡയറക്uടറി സജ്ജീകരിക്കുന്നതിനുള്ള കൂടുതൽ സുരക്ഷിതമായ മാർഗം ഞങ്ങൾ നോക്കും.

ഘട്ടം 5: വ്യത്യസ്ത FTP ഉപയോക്തൃ ഹോം ഡയറക്ടറികൾ കോൺഫിഗർ ചെയ്യുക

12. vsftpd കോൺഫിഗറേഷൻ ഫയൽ വീണ്ടും തുറന്ന് താഴെയുള്ള സുരക്ഷിതമല്ലാത്ത ഓപ്ഷൻ കമന്റ് ചെയ്തുകൊണ്ട് ആരംഭിക്കുക:

#allow_writeable_chroot=YES

തുടർന്ന് ഉപയോക്താവിനായി ഇതര പ്രാദേശിക റൂട്ട് ഡയറക്uടറി സൃഷ്uടിക്കുക (ravi, നിങ്ങളുടേത് ഒരുപക്ഷേ വ്യത്യസ്തമായിരിക്കും) കൂടാതെ ഈ ഡയറക്uടറിയിലേക്ക് എല്ലാ ഉപയോക്താക്കൾക്കും എഴുതാനുള്ള അനുമതികൾ നീക്കം ചെയ്യുക:

# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp

13. അടുത്തതായി, ഉപയോക്താവ് അവന്റെ/അവളുടെ ഫയലുകൾ സംഭരിക്കുന്ന ലോക്കൽ റൂട്ടിന് കീഴിൽ ഒരു ഡയറക്ടറി സൃഷ്ടിക്കുക:

# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/

തുടർന്ന് ഈ മൂല്യങ്ങളുള്ള vsftpd കോൺഫിഗറേഷൻ ഫയലിൽ ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ ചേർക്കുക/പരിഷ്uക്കരിക്കുക:

user_sub_token=$USER         # inserts the username in the local root directory 
local_root=/home/$USER/ftp   # defines any users local root directory

ഫയൽ സംരക്ഷിച്ച് അത് അടയ്ക്കുക. ഒരിക്കൽ കൂടി, പുതിയ ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് നമുക്ക് സേവനം പുനരാരംഭിക്കാം:

# systemctl restart vsftpd

14. ഇപ്പോൾ വീണ്ടും ഒരു ഫൈനൽ ടെസ്റ്റ് നടത്തുക, ഉപയോക്താക്കൾ ലോക്കൽ റൂട്ട് ഡയറക്uടറി അവന്റെ ഹോം ഡയറക്uടറിയിൽ ഞങ്ങൾ സൃഷ്uടിച്ച FTP ഡയറക്uടറിയാണെന്ന് കാണുക.

# 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
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

അത്രയേയുള്ളൂ! ഈ ലേഖനത്തിൽ, CentOS 7-ൽ ഒരു എഫ്uടിപി സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും കോൺഫിഗർ ചെയ്യാമെന്നും സുരക്ഷിതമാക്കാമെന്നും ഞങ്ങൾ വിവരിച്ചു, ഈ ഗൈഡിനെ കുറിച്ച് ഞങ്ങൾക്ക് തിരികെ എഴുതാൻ/ഈ വിഷയത്തെക്കുറിച്ചുള്ള എന്തെങ്കിലും ഉപയോഗപ്രദമായ വിവരങ്ങൾ പങ്കിടാൻ ചുവടെയുള്ള അഭിപ്രായ വിഭാഗം ഉപയോഗിക്കുക.

അടുത്ത ലേഖനത്തിൽ, CentOS 7-ലെ SSL/TLS കണക്ഷനുകൾ ഉപയോഗിച്ച് ഒരു FTP സെർവർ എങ്ങനെ സുരക്ഷിതമാക്കാമെന്നും ഞങ്ങൾ കാണിച്ചുതരാം, അതുവരെ TecMint-ലേക്ക് കണക്uറ്റ് ചെയ്uതിരിക്കുക.