ക്രോട്ടഡ് ജയിൽ ഉപയോഗിച്ച് ചില ഡയറക്ടറികളിലേക്കുള്ള എസ്എസ്എച്ച് ഉപയോക്തൃ പ്രവേശനം നിയന്ത്രിക്കുക


ഒരു പ്രത്യേക ഡയറക്ടറിയിലേക്ക്, പ്രത്യേകിച്ച് വെബ് സെർവറുകളിൽ, ഒരു SSH ഉപയോക്തൃ സെഷൻ പരിമിതപ്പെടുത്തുന്നതിന് നിരവധി കാരണങ്ങളുണ്ട്, എന്നാൽ വ്യക്തമായത് ഒരു സിസ്റ്റം സുരക്ഷയാണ്. ഒരു നിശ്ചിത ഡയറക്ടറിയിൽ SSH ഉപയോക്താക്കളെ ലോക്ക് ചെയ്യുന്നതിനായി, നമുക്ക് chroot മെക്കാനിസം ഉപയോഗിക്കാം.

ലിനക്സ് പോലുള്ള യുണിക്സ് പോലുള്ള സിസ്റ്റങ്ങളിൽ റൂട്ട് മാറ്റുക (chroot), ലിനക്സ് സിസ്റ്റത്തിന്റെ ബാക്കി ഭാഗങ്ങളിൽ നിന്ന് നിർദ്ദിഷ്ട ഉപയോക്തൃ പ്രവർത്തനങ്ങളെ വേർതിരിക്കുന്നതിനുള്ള ഒരു മാർഗമാണ്; നിലവിലുള്ള യൂസർ പ്രോസസിനായി വ്യക്തമായ റൂട്ട് ഡയറക്uടറിയും അതിന്റെ ചൈൽഡ് പ്രോസസും ക്രോട്ടഡ് ജയിൽ എന്ന പുതിയ റൂട്ട് ഡയറക്uടറി ഉപയോഗിച്ച് മാറ്റുന്നു.

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

ഘട്ടം 1: SSH Chroot ജയിൽ സൃഷ്ടിക്കുക

1. താഴെയുള്ള mkdir കമാൻഡ് ഉപയോഗിച്ച് chroot ജയിൽ സൃഷ്ടിച്ചുകൊണ്ട് ആരംഭിക്കുക:

# mkdir -p /home/test

2. അടുത്തതായി, ആവശ്യമായ ഫയലുകൾ തിരിച്ചറിയുക, sshd_config മാൻ പേജ് അനുസരിച്ച്, ChrootDirectory ഓപ്uഷൻ, പ്രാമാണീകരണത്തിന് ശേഷം chroot ചെയ്യാനുള്ള ഡയറക്uടറിയുടെ പാത്ത് നെയിം വ്യക്തമാക്കുന്നു. ഒരു ഉപയോക്താവിന്റെ സെഷനെ പിന്തുണയ്ക്കുന്നതിന് ആവശ്യമായ ഫയലുകളും ഡയറക്uടറികളും ഡയറക്ടറിയിൽ ഉണ്ടായിരിക്കണം.

ഒരു ഇന്ററാക്ടീവ് സെഷനായി, ഇതിന് കുറഞ്ഞത് ഒരു ഷെല്ലെങ്കിലും ആവശ്യമാണ്, സാധാരണയായി sh, കൂടാതെ null, zero, stdin, stdout, stderr, tty ഉപകരണങ്ങൾ പോലുള്ള അടിസ്ഥാന /dev നോഡുകൾ:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. ഇപ്പോൾ, mknod കമാൻഡ് ഉപയോഗിച്ച് ഇനിപ്പറയുന്ന രീതിയിൽ /dev ഫയലുകൾ സൃഷ്ടിക്കുക. ചുവടെയുള്ള കമാൻഡിൽ, ഫയൽ പെർമിഷൻസ് ബിറ്റുകൾ വ്യക്തമാക്കാൻ -m ഫ്ലാഗ് ഉപയോഗിക്കുന്നു, c എന്നാൽ പ്രതീക ഫയൽ എന്നാണ് അർത്ഥമാക്കുന്നത്, രണ്ട് സംഖ്യകൾ ഫയലുകൾ ചൂണ്ടിക്കാണിക്കുന്ന വലുതും ചെറുതുമായ സംഖ്യകളാണ്. .

# mkdir -p /home/test/dev/		
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8

4. അതിനുശേഷം, ക്രോട്ട് ജയിലിൽ ഉചിതമായ അനുമതി സജ്ജമാക്കുക. chroot ജയിലും അതിന്റെ ഉപഡയറക്uടറികളും സബ്uഫയലുകളും റൂട്ട് ഉപയോക്താവിന്റെ ഉടമസ്ഥതയിലായിരിക്കണം, കൂടാതെ ഏതെങ്കിലും സാധാരണ ഉപയോക്താവിനോ ഗ്രൂപ്പിനോ എഴുതാൻ കഴിയില്ലെന്നത് ശ്രദ്ധിക്കുക:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

ഘട്ടം 2: SSH ക്രോട്ട് ജയിലിനായി ഇന്ററാക്ടീവ് ഷെൽ സജ്ജീകരിക്കുക

5. ആദ്യം, bin ഡയറക്uടറി സൃഷ്uടിക്കുക, തുടർന്ന് /bin/bash ഫയലുകൾ bin ഡയറക്uടറിയിലേക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ പകർത്തുക:

# mkdir -p /home/test/bin
# cp -v /bin/bash /home/test/bin/

6. ഇപ്പോൾ, ബാഷ് ആവശ്യമുള്ള പങ്കിട്ട libs, താഴെ പറയുന്നതുപോലെ തിരിച്ചറിയുകയും അവ lib ഡയറക്uടറിയിലേക്ക് പകർത്തുകയും ചെയ്യുക:

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

ഘട്ടം 3: SSH ഉപയോക്താവിനെ സൃഷ്uടിക്കുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യുക

7. ഇപ്പോൾ, userradd കമാൻഡ് ഉപയോഗിച്ച് SSH ഉപയോക്താവിനെ സൃഷ്uടിക്കുകയും ഉപയോക്താവിനായി ഒരു സുരക്ഷിത പാസ്uവേഡ് സജ്ജമാക്കുകയും ചെയ്യുക:

# useradd tecmint
# passwd tecmint

8. chroot ജയിൽ ജനറൽ കോൺഫിഗറേഷൻ ഡയറക്uടറി സൃഷ്uടിക്കുക, /home/test/etc കൂടാതെ അപ്uഡേറ്റ് ചെയ്uത അക്കൗണ്ട് ഫയലുകൾ (/etc/passwd, /etc/group) ഇനിപ്പറയുന്ന രീതിയിൽ ഈ ഡയറക്uടറിയിലേക്ക് പകർത്തുക:

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

ശ്രദ്ധിക്കുക: ഓരോ തവണയും നിങ്ങൾ കൂടുതൽ SSH ഉപയോക്താക്കളെ സിസ്റ്റത്തിലേക്ക് ചേർക്കുമ്പോൾ, നിങ്ങൾ അപ്ഡേറ്റ് ചെയ്ത അക്കൗണ്ട് ഫയലുകൾ /home/test/etc ഡയറക്ടറിയിലേക്ക് പകർത്തേണ്ടതുണ്ട്.

ഘട്ടം 4: Chroot ജയിൽ ഉപയോഗിക്കുന്നതിന് SSH കോൺഫിഗർ ചെയ്യുക

9. ഇപ്പോൾ, sshd_config ഫയൽ തുറക്കുക.

# vi /etc/ssh/sshd_config

ഫയലിൽ താഴെയുള്ള വരികൾ ചേർക്കുക/പരിഷ്uക്കരിക്കുക.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

ഫയൽ സംരക്ഷിച്ച് പുറത്തുകടക്കുക, SSHD സേവനങ്ങൾ പുനരാരംഭിക്കുക:

# systemctl restart sshd
OR
# service sshd restart

ഘട്ടം 5: Chroot ജയിൽ ഉപയോഗിച്ച് SSH പരിശോധിക്കുന്നു

10. ഈ സമയത്ത്, chroot ജയിൽ സജ്ജീകരണം പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുക:

# ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

മുകളിലെ സ്ക്രീൻഷോട്ടിൽ നിന്ന്, SSH ഉപയോക്താവ് ക്രോട്ട് ചെയ്ത ജയിലിൽ പൂട്ടിയിട്ടിരിക്കുന്നതായി നമുക്ക് കാണാൻ കഴിയും, കൂടാതെ ബാഹ്യ കമാൻഡുകളൊന്നും പ്രവർത്തിപ്പിക്കാൻ കഴിയില്ല (ls, date, uname മുതലായവ).

ഉപയോക്താവിന് താഴെ കാണുന്നത് പോലെ (pwd, history, echo മുതലായവ) ബാഷും അതിന്റെ ബിൽട്ടിൻ കമാൻഡുകളും മാത്രമേ എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയൂ:

# ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

ഘട്ടം 6. എസ്എസ്എച്ച് ഉപയോക്താവിന്റെ ഹോം ഡയറക്ടറി സൃഷ്ടിച്ച് ലിനക്സ് കമാൻഡുകൾ ചേർക്കുക

11. മുമ്പത്തെ ഘട്ടത്തിൽ നിന്ന്, ഉപയോക്താവ് റൂട്ട് ഡയറക്uടറിയിൽ ലോക്ക് ചെയ്uതിരിക്കുന്നതായി നമുക്ക് കാണാൻ കഴിയും, SSH ഉപയോക്താവിനായി നമുക്ക് ഒരു ഹോം ഡയറക്uടറി സൃഷ്uടിക്കാം (ഭാവിയിലെ എല്ലാ ഉപയോക്താക്കൾക്കും ഇത് ചെയ്യുക):

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

12. അടുത്തതായി, bin ഡയറക്uടറിയിൽ ls, date, mkdir പോലുള്ള കുറച്ച് ഉപയോക്തൃ കമാൻഡുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക:

# cp -v /bin/ls /home/test/bin/
# cp -v /bin/date /home/test/bin/
# cp -v /bin/mkdir /home/test/bin/

13. അടുത്തതായി, മുകളിലെ കമാൻഡുകൾക്കായി പങ്കിട്ട ലൈബ്രറികൾ പരിശോധിച്ച് അവയെ ക്രോട്ട് ചെയ്ത ജയിൽ ലൈബ്രറി ഡയറക്ടറിയിലേക്ക് നീക്കുക:

# ldd /bin/ls
# cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

ഘട്ടം 7. Chroot ജയിൽ ഉപയോഗിച്ച് SFTP പരിശോധിക്കുന്നു

14. sftp ഉപയോഗിച്ച് ഒരു അന്തിമ പരിശോധന നടത്തുക; നിങ്ങൾ ഇപ്പോൾ ഇൻസ്റ്റാൾ ചെയ്ത കമാൻഡുകൾ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുക.

/etc/ssh/sshd_config ഫയലിൽ താഴെയുള്ള വരി ചേർക്കുക:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

ഫയൽ സംരക്ഷിച്ച് പുറത്തുകടക്കുക. തുടർന്ന് SSHD സേവനങ്ങൾ പുനരാരംഭിക്കുക:

# systemctl restart sshd
OR
# service sshd restart

15. ഇപ്പോൾ, SSH ഉപയോഗിച്ച് പരീക്ഷിക്കുക, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന പിശക് ലഭിക്കും:

# ssh [email 

ഇനിപ്പറയുന്ന രീതിയിൽ SFTP ഉപയോഗിക്കാൻ ശ്രമിക്കുക:

# sftp [email 

തൽക്കാലം അത്രമാത്രം!. ഈ ലേഖനത്തിൽ, Linux-ൽ നൽകിയിരിക്കുന്ന ഡയറക്ടറിയിൽ (ക്രോട്ടഡ് ജയിൽ) ഒരു SSH ഉപയോക്താവിനെ എങ്ങനെ നിയന്ത്രിക്കാമെന്ന് ഞങ്ങൾ കാണിച്ചുതന്നു. ഈ ഗൈഡിനെക്കുറിച്ചുള്ള നിങ്ങളുടെ ചിന്തകൾ ഞങ്ങൾക്ക് നൽകുന്നതിന് ചുവടെയുള്ള അഭിപ്രായ വിഭാഗം ഉപയോഗിക്കുക.