Kako omejiti uporabnike SFTP na domače imenike s pomočjo chroot Jail
V tej vadnici bomo razpravljali o tem, kako uporabnike SFTP omejiti na njihove domače ali določene imenike. To pomeni, da lahko uporabnik dostopa samo do svojega domačega imenika, ne pa tudi do celotnega datotečnega sistema.
Omejevanje domačih imenikov uporabnikov je bistvenega pomena, zlasti v skupnem strežniškem okolju, tako da nepooblaščeni uporabnik ne bo prikradel pogledov v datoteke in mape drugega uporabnika.
Pomembno: Upoštevajte tudi, da je namen tega članka zagotoviti le SFTP dostop, ne pa tudi SSH prijave, tako da bo po tem članku imel dovoljenja za prenos datotek, vendar ne sme izvajati oddaljene seje SSH.
To najpreprosteje naredimo tako, da ustvarimo chrootirano zaporniško okolje za dostop do SFTP. Ta metoda je enaka za vse operacijske sisteme Unix/Linux. Z uporabo chrootiranega okolja lahko uporabnike omejimo na njihov domači imenik ali na določen imenik.
Omejite uporabnike na domače imenike
V tem razdelku bomo ustvarili novo skupino, imenovano sftpgroup, in uporabniškim računom dodelili pravilno lastništvo in dovoljenja. Obstajata dve možnosti, kako uporabnike omejiti na domače ali določene imenike, v tem članku bomo videli oboje.
Omejimo obstoječega uporabnika, na primer tecmint
, na njegov/njen domači imenik z imenom /home/tecmint
. Za to morate z ukazom groupadd ustvariti novo skupino sftpgroup, kot je prikazano:
# groupadd sftpgroup
Nato uporabnika 'tecmint' dodelite skupini sftpgroup.
# usermod -G sftpgroup tecmint
Ustvarite lahko tudi novega uporabnika z ukazom useradd, na primer senthil
in ga dodelite skupini sftpusers.
# adduser senthil -g sftpgroup -s /sbin/nologin # passwd tecmint
Odprite in dodajte naslednje vrstice v konfiguracijsko datoteko /etc/ssh/sshd_config
.
Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /home ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
Shranite in zapustite datoteko, znova zaženite storitev sshd, da začnejo veljati nove spremembe.
# systemctl restart sshd OR # service sshd restart
Če v isti imenik shranite več uporabnikov, spremenite dovoljenja domačega imenika vsakega uporabnika, da preprečite vsem uporabnikom brskanje po domačih imenikih drugih uporabnikov.
# chmod 700 /home/tecmint
Zdaj je čas, da preverite prijavo iz lokalnega sistema. Poskusite odstraniti oddaljeni sistem iz lokalnega sistema.
# ssh [email
Tukaj,
- tecmint - uporabniško ime oddaljenega sistema.
- 192.168.1.150 - Naslov IP oddaljenega sistema.
[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.
Nato dostopite do oddaljenega sistema s pomočjo SFTP.
# sftp [email
[email 's password: Connected to 192.168.1.150. sftp>
Preverimo trenutni delovni imenik:
sftp> pwd Remote working directory: / sftp> ls tecmint
Tu je tecmint
domači imenik. Cd v imenik tecmint in ustvarite datoteke ali mape po vaši izbiri.
sftp> cd tecmint Remote working directory: / sftp> mkdir test tecmint
Omeji uporabnike na določen imenik
V prejšnjem primeru smo obstoječe uporabnike omejili na domači imenik. Zdaj bomo videli, kako novega uporabnika omejiti na imenik po meri.
Ustvarite novo skupino sftpgroup
.
# groupadd sftpgroup
Nato ustvarite imenik za skupino SFTP in dodelite dovoljenja korenskemu uporabniku.
# mkdir -p /sftpusers/chroot # chown root:root /sftpusers/chroot/
Nato ustvarite nove imenike za vsakega uporabnika, do katerih bo imel popoln dostop. Na primer, ustvarili bomo uporabnika tecmint
in to je novi domači imenik s pravilnim dovoljenjem za skupino z uporabo naslednjih nizov ukazov.
# adduser tecmint -g sftpgroup -s /sbin/nologin # passwd tecmint # mkdir /sftpusers/chroot/tecmint # chown tecmint:sftpgroup /sftpusers/chroot/tecmint/ # chmod 700 /sftpusers/chroot/tecmint/
Na koncu datoteke spremenite ali dodajte naslednje vrstice:
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /sftpusers/chroot/ ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
Shranite in zapustite datoteko. Znova zaženite storitev sshd, da uveljavite shranjene spremembe.
# systemctl restart sshd OR # service sshd restart
To je vse, lahko preverite tako, da se prijavite v oddaljeni strežnik SSH in SFTP, tako da uporabite zgornji korak pri preverjanju prijave SSH in SFTP.
Upoštevajte, da bo ta metoda onemogočila dostop do lupine, tj. Do seje lupine oddaljenega sistema ne morete dostopati s pomočjo SSH. Do oddaljenih sistemov lahko dostopate samo prek SFTP in prenašate datoteke v lokalne in oddaljene sisteme in iz njih.
Zaključek
Zdaj veste, kako uporabnikom omejiti domače imenike z uporabo okolja Chroot v Linuxu. Če se vam zdi to koristno, delite ta članek v svojih družabnih omrežjih in nam v spodnjem oddelku za komentar sporočite, ali obstajajo še kakšne druge metode za omejevanje domačih imenikov uporabnikov.