Има няколко причини да ограничаване на потребителска сесия на SSH към определена директория, особено на уеб сървъри, но очевидната е защитата на системата. За да заключим SSH потребителите в определена директория, можем да използваме chroot механизъм.
промяна на корен (chroot) в Unix-подобни системи като Linux, е средство за отделяне на конкретни потребителски операции от останалата част на Linux системата; променя очевидната коренна директория за текущия работещ потребителски процес и нейния дъщерен процес с нова коренна директория, наречена a хротиран затвор.
В този урок ще ви покажем как да ограничите достъпа на SSH потребител до дадена директория в Linux. Имайте предвид, че ще изпълняваме всички команди като root, използвайте команда sudo ако сте влезли в сървъра като нормален потребител.
1. Започнете, като създадете затвора chroot, като използвате командата mkdir по -долу:
# mkdir -p /home /тест.
2. След това идентифицирайте необходимите файлове според
sshd_config man страница,ChrootDirectory
опцията посочва името на пътя на директорията, към която да се даде хроут след удостоверяване. Директорията трябва да съдържа необходимите файлове и директории, за да поддържа сесията на потребителя.
За интерактивна сесия това изисква поне черупка, обикновено ш
, и основни /dev
възли като null, zero, stdin, stdout, stderr и tty устройства:
# ls -l /dev /{null, zero, stdin, stdout, stderr, random, tty}
3. Сега създайте /dev
файлове, както следва, като използвате команда mknod. В командата по -долу, -м
flag се използва за определяне на битовете за разрешения на файлове, ° С
означава символен файл и двете числа са големи и малки числа, към които сочат файловете.
# mkdir -p/home/test/dev/ # cd/home/test/dev/ # mknod -m 666 нула c 1 3. # mknod -m 666 tty c 5 0. # mknod -m 666 нула c 1 5. # mknod -m 666 случайно c 1 8.
4. След това задайте подходящото разрешение в хроотния затвор. Обърнете внимание, че затворът chroot и неговите поддиректории и подфайлове трябва да бъдат собственост на корен потребител и не може да се записва от нормален потребител или група:
# chown root: root /home /тест. # chmod 0755 /home /test. # ls -ld /home /test.
5. Първо, създайте кошче
директория и след това копирайте /bin/bash
файлове в кошче
директория, както следва:
# mkdir -p/home/test/bin. # cp -v/bin/bash/home/test/bin/
6. Сега идентифицирайте споделено bash libs
, както по -долу, и ги копирайте в lib
директория:
# 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/
7. Сега създайте SSH потребител с командата useradd и задайте защитена парола за потребителя:
# useradd tecmint. # passwd tecmint.
8. Създайте директорията на общите конфигурации на затвора chroot, /home/test/etc
и копирайте актуализираните файлове на акаунта (/etc/passwd и /etc/group) в тази директория, както следва:
# mkdir/home/test/и т.н. # cp -vf/etc/{passwd, group}/home/test/etc/
Забележка: Всеки път, когато добавяте повече SSH потребители към системата, ще трябва да копирате актуализираните файлове на акаунта в /home/test/etc
директория.
9. Сега отворете sshd_config
файл.
# vi/etc/ssh/sshd_config.
и добавете/променете редовете по -долу във файла.
#define потребителско име, към което да се приложи chroot затвора. Съвпадение на потребителя tecmint #посочете затвора chroot. ChrootDirectory /home /test
Запазете файла и излезте и рестартирайте SSHD услугите:
# systemctl рестартирайте sshd. ИЛИ. # услуга sshd рестартиране.
10. На този етап проверете дали настройката на хроотния затвор работи според очакванията:
# ssh [защитен имейл]
-bash-4.1 $ ls. -bash-4.1 $ дата. -bash-4.1 $ uname.
От горната снимка на екрана можем да видим, че потребителят на SSH е заключен в хромирания затвор и не може да изпълнява никакви външни команди (ls, дата, uname и т.н.).
Потребителят може да изпълнява само bash и неговите вградени команди като (pwd, history, echo и т.н.), както се вижда по -долу:
# ssh [защитен имейл]-bash-4.1 $ pwd. -bash -4.1 $ echo "Tecmint -Най -бързо развиващ се сайт на Linux" -bash-4.1 $ история.
11. От предишната стъпка можем да забележим, че потребителят е заключен в главната директория, можем да създадем домашна директория за SSH потребителя така (направете това за всички бъдещи потребители):
# mkdir -p/home/test/home/tecmint. # chown -R tecmint: tecmint/home/test/home/tecmint. # chmod -R 0700/home/test/home/tecmint.
12. След това инсталирайте няколко потребителски команди като 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/
14. Направете последен тест, използвайки sftp; проверете дали командите, които току -що сте инсталирали, работят.
Добавете реда по -долу в /etc/ssh/sshd_config
файл:
#Разрешаване на sftp към хротиран затвор ForceCommand internal-sftp.
Запазете файла и излезте. След това рестартирайте SSHD услугите:
# systemctl рестартирайте sshd. ИЛИ. # услуга sshd рестартиране.
15. Сега, тествайте с помощта на SSH, ще получите следната грешка:
# ssh [защитен имейл]
Опитайте да използвате SFTP, както следва:
# sftp [защитен имейл]
Предложено четиво:Ограничете SFTP потребителите до начални директории, използвайки chroot Jail
Това е засега!. В тази статия ви показахме как да ограничите SSH потребител в дадена директория (хрониран затвор) в Linux. Използвайте секцията за коментари по -долу, за да ни предложите вашите мисли за това ръководство.