HomeLinuxLimit SSH Person Entry to Dwelling Listing Utilizing Chrooted Jail

Limit SSH Person Entry to Dwelling Listing Utilizing Chrooted Jail


There are a number of causes to limit an SSH consumer session to a specific listing, particularly on net servers, however the apparent one is system safety. With the intention to lock SSH customers in a sure listing, we will use chroot mechanism.

change root (chroot) in Unix-like programs corresponding to Linux, is a way of separating particular consumer operations from the remainder of the Linux system; adjustments the obvious root listing for the presently working consumer course of and its baby (dad or mum) course of with a brand new root listing known as a chrooted jail.

On this tutorial, we’ll present you learn how to limit SSH consumer entry to a given listing in Linux. Be aware that we’ll run all of the instructions as root, use the sudo command in case you are logged into the server as a standard consumer.

Step 1: Create SSH Chroot Jail

1. Begin by creating the chroot jail utilizing the mkdir command beneath:

# mkdir -p /residence/check

2. Subsequent, determine required recordsdata, based on the sshd_config man web page, the ChrootDirectory choice specifies the pathname of the listing to chroot to after authentication. The listing should include the required recordsdata and directories to assist a consumer’s session.

For an interactive session, this requires at the very least a shell, generally sh, and fundamental /dev nodes corresponding to null, zero, stdin, stdout, stderr, and tty units:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
Listing Required Files
Itemizing Required Information

3. Now, create the /dev recordsdata as follows utilizing the mknod command. Within the command beneath, the -m flag is used to specify the file permissions bits, c means character file and the 2 numbers are main and minor numbers that the recordsdata level to.

# mkdir -p /residence/check/dev/		
# cd /residence/check/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
Create /dev and Required Files
Create /dev and Required Information

4. Afterwards, set the suitable permission on the chroot jail. Be aware that the chroot jail and its subdirectories and subfiles should be owned by the root consumer, and never writable by any regular consumer or group:

# chown root:root /residence/check
# chmod 0755 /residence/check
# ls -ld /residence/check
Set Permissions on Directory
Set Permissions on Listing

Step 2: Setup Interactive Shell for SSH Chroot Jail

5. First, create the bin listing after which copy the /bin/bash recordsdata into the bin listing utilizing the cp command as follows:

# mkdir -p /residence/check/bin
# cp -v /bin/bash /residence/check/bin/
Copy Files to bin Directory
Copy Information to bin Listing

6. Now, determine the bash required for shared libs, as beneath, and replica them into the lib listing:

# ldd /bin/bash
# mkdir -p /residence/check/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /residence/check/lib64/
Copy Shared Library Files
Copy Shared Library Information

Step 3: Create and Configure SSH Person

7. Now, create the SSH consumer with the useradd command and set a safe password for the consumer:

# useradd tecmint
# passwd tecmint

8. Create the chroot jail normal configurations listing, /residence/check/and so on and replica the up to date account recordsdata (/and so on/passwd and /and so on/group) into this listing as follows:

# mkdir /residence/check/and so on
# cp -vf /and so on/{passwd,group} /residence/check/and so on/
Copy Password Files
Copy Password Information

Be aware: Every time you add extra SSH customers to the system, you will have to repeat the up to date account recordsdata into the /residence/check/and so on listing.

Step 4: Configure SSH to Use Chroot Jail

9. Now, open the sshd_config file.

# vi /and so on/ssh/sshd_config

and add/modify the strains beneath within the file.

#outline username to use chroot jail to
Match Person tecmint
#specify chroot jail
ChrootDirectory /residence/check
Configure SSH Chroot Jail
Configure SSH Chroot Jail

Save the file and exit, and restart the SSHD providers:

# systemctl restart sshd
OR
# service sshd restart

Step 5: Testing SSH with Chroot Jail

10. At this level, check if the chroot jail setup is working as anticipated:

# ssh [email protected]
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname
Testing SSH User Chroot Jail
Testing SSH Person Chroot Jail

From the screenshot above, we will see that the SSH consumer is locked within the chrooted jail, and may’t run any exterior instructions (ls, date, uname, and so on).

The consumer can solely execute bash and its builtin instructions corresponding to (pwd, historical past, echo, and so on) as seen beneath:

# ssh [email protected]
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Quickest Rising Linux Website"
-bash-4.1$ historical past
SSH Built-in Commands
SSH Constructed-in Instructions

Step 6. Create SSH Person’s Dwelling Listing and Add Linux Instructions

11. From the earlier step, we will discover that the consumer is locked within the root listing, we will create a house listing for the SSH consumer like so (do that for all future customers):

# mkdir -p /residence/check/residence/tecmint
# chown -R tecmint:tecmint /residence/check/residence/tecmint
# chmod -R 0700 /residence/check/residence/tecmint
Create SSH User Home Directory
Create SSH Person Dwelling Listing

12. Subsequent, set up just a few consumer instructions corresponding to ls, date, and mkdir within the bin listing:

# cp -v /bin/ls /residence/check/bin/
# cp -v /bin/date /residence/check/bin/
# cp -v /bin/mkdir /residence/check/bin/
Add Commands to SSH User
Add Instructions to SSH Person

13. Subsequent, test the shared libraries for the instructions above and transfer them into the chrooted jail libraries listing:

# 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} /residence/check/lib64/
Copy Shared Libraries
Copy Shared Libraries

Step 7. Testing SFTP with Chroot Jail

14. Do a closing check utilizing sftp; test if the instructions you will have simply put in are working.

Add the road beneath within the /and so on/ssh/sshd_config file:

#Allow sftp to chrooted jail 
ForceCommand internal-sftp

Save the file and exit. Then restart the SSHD providers:

# systemctl restart sshd
OR
# service sshd restart

15. Now, check utilizing SSH, and also you’ll get the next error:

# ssh [email protected]
Test SSH Chroot Jail
Check SSH Chroot Jail

Attempt utilizing SFTP as follows:

# sftp [email protected]
Testing sFTP SSH User
Testing sFTP SSH Person

That’s it for now! On this article, we confirmed you learn how to limit an SSH consumer in a given listing (chrooted jail) in Linux. Use the remark part beneath to supply us your ideas about this information.

If You Admire What We Do Right here On TecMint, You Ought to Take into account:

TecMint is the quickest rising and most trusted neighborhood web site for any sort of Linux Articles, Guides and Books on the internet. Hundreds of thousands of individuals go to TecMint! to go looking or browse the 1000’s of printed articles accessible FREELY to all.

Should you like what you might be studying, please think about shopping for us a espresso ( or 2 ) as a token of appreciation.

Support Us

We’re grateful on your by no means ending assist.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments