Kako ograničiti SFTP korisnike na kućne direktorije koristeći chroot Jail


U ovom vodiču raspravljat ćemo o tome kako ograničiti SFTP korisnike na njihove matične direktorije ili određene direktorije. To znači da korisnik može pristupiti samo svom matičnom direktoriju, a ne cijelom datotečnom sustavu.

Ograničavanje korisničkih početnih direktorija je od vitalnog značaja, posebno u okruženju zajedničkog poslužitelja, tako da neovlašteni korisnik ne bi zavirio u datoteke i mape drugog korisnika.

Važno: Također imajte na umu da je svrha ovog članka pružiti samo SFTP pristup, a ne SSH prijave, slijedeći ovaj članak imat ćete dopuštenja za prijenos datoteka, ali nije dopuštena udaljena SSH sesija.

Predloženo za čitanje: Ograničite korisnički pristup SSH određenim direktorijima pomoću Chrooted Jaila

Najjednostavniji način da to učinite je stvoriti chrooted jail okruženje za SFTP pristup. Ova metoda je ista za sve Unix/Linux operativne sustave. Koristeći chrooted okruženje, možemo ograničiti korisnike ili na njihov matični direktorij ili na određeni direktorij.

Ograničite korisnike na kućne direktorije

U ovom odjeljku stvorit ćemo novu grupu pod nazivom sftpgroup i dodijeliti ispravno vlasništvo i dopuštenja korisničkim računima. Postoje dva izbora za ograničavanje korisnika na kućne ili određene direktorije, a oba ćemo načina vidjeti u ovom članku.

Stvorite ili izmijenite korisnike i grupe

Ograničimo postojećeg korisnika, na primjer tecmint, na njegov/njezin matični direktorij pod nazivom /home/tecmint. Za ovo morate stvoriti novu grupu sftpgroup pomoću naredbe groupadd kao što je prikazano:

groupadd sftpgroup

Zatim dodijelite korisnika ‘tecmint’ grupi sftpgroup.

usermod -G sftpgroup tecmint

Također možete stvoriti novog korisnika pomoću naredbe useradd, na primjer senthil i dodijeliti korisnika grupi sftpusers.

adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint

Izmijenite SSH konfiguracijsku datoteku

Otvorite i dodajte sljedeće retke u konfiguracijsku datoteku /etc/ssh/sshd_config.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Spremite i izađite iz datoteke, ponovno pokrenite sshd uslugu kako bi nove promjene stupile na snagu.

systemctl restart sshd
OR
service sshd restart

Ako chrootate više korisnika u isti direktorij, trebali biste promijeniti dopuštenja matičnog direktorija svakog korisnika kako biste spriječili sve korisnike da pregledavaju početne direktorije drugih korisnika.

chmod 700 /home/tecmint

Provjerite SSH i SFTP korisničku prijavu

Sada je vrijeme da provjerite prijavu s lokalnog sustava. Pokušajte ssh vaš udaljeni sustav s lokalnog sustava.

ssh [email 

Ovdje,

  1. tecmint – korisničko ime udaljenog sustava.
  2. 192.168.1.150 – IP adresa udaljenog sustava.
Uzorak rezultata:
[email 's password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

Zatim pristupite udaljenom sustavu koristeći SFTP.

sftp [email 
Uzorak rezultata:
[email 's password: 
Connected to 192.168.1.150.
sftp>

Provjerimo trenutni radni direktorij:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Ovdje je tecmint početni direktorij. Pređite u direktorij tecmint i stvorite datoteke ili mape po svom izboru.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Ograničite korisnike na određeni imenik

U našem prethodnom primjeru ograničavamo postojeće korisnike na početni direktorij. Sada ćemo vidjeti kako ograničiti novog korisnika na prilagođeni direktorij.

Stvorite grupu i nove korisnike

Napravite novu grupu sftpgroup.

groupadd sftpgroup

Zatim stvorite direktorij za SFTP grupu i dodijelite dozvole za root korisnika.

mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/

Zatim stvorite nove direktorije za svakog korisnika, kojima će imati puni pristup. Na primjer, stvorit ćemo tecmint korisnika i njegov novi matični direktorij s ispravnim grupnim dopuštenjem koristeći sljedeći niz naredbi.

adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/

Konfigurirajte SSH za SFTP pristup

Izmijenite ili dodajte sljedeće retke na kraju datoteke:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Spremite i izađite iz datoteke. Ponovo pokrenite sshd uslugu da stupe na snagu spremljene promjene.

systemctl restart sshd
OR
service sshd restart

To je to, možete provjeriti tako da se prijavite na svoj udaljeni SSH i SFTP poslužitelj pomoću gore navedenog koraka u Provjeri SSH i SFTP prijavu.

Imajte na umu da će ova metoda onemogućiti pristup ljusci, tj. ne možete pristupiti sesiji ljuske udaljenog sustava koristeći SSH. Udaljenim sustavima možete pristupiti samo putem SFTP-a i izvršiti prijenos datoteka na i s lokalnih i udaljenih sustava.

Zaključak

Sada znate kako ograničiti početne direktorije korisnika pomoću Chroot okruženja u Linuxu. Ako smatrate da je ovo korisno, podijelite ovaj članak na svojim društvenim mrežama i javite nam u odjeljku za komentare u nastavku postoje li druge metode za ograničavanje korisničkih početnih imenika.