实现chroot限制ssh及sftp至指定目录 Linux教程 安全防御


---普通用户登陆到服务器上只能执行ssh,ls,cat等有限的基础命令,另外要求把用户锁定在特定目录中,不能看到其他任何目录下文件


-建立一个指定目录

mkdir -p  /data/opt/


-列出指定目录必须包含支持用户会话所必需的文件和目录

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

crw-rw-rw- 1 root root 1, 3  4月  6 21:35 /dev/null

crw-rw-rw- 1 root root 1, 8  4月  6 21:35 /dev/random

lrwxrwxrwx 1 root root   15  4月  6 21:35 /dev/stderr -> /proc/self/fd/2

lrwxrwxrwx 1 root root   15  4月  6 21:35 /dev/stdin -> /proc/self/fd/0

lrwxrwxrwx 1 root root   15  4月  6 21:35 /dev/stdout -> /proc/self/fd/1

crw-rw-rw- 1 root tty  5, 0  4月  6 21:35 /dev/tty

crw-rw-rw- 1 root root 1, 5  4月  6 21:35 /dev/zero


-用 mknod 命令创建 /dev 下的文件。

-m 标志用来指定文件权限位,

-c意思是字符文件,

-两个数字分别是文件指向的主要号和次要号

mkdir -p  /data/opt/dev/

cd  /data/opt/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

ls

null  random  tty  zero


-在 chroot 监狱中设置合适的权限。

-注意 chroot 监狱和它的子目录以及子文件必须被 root 用户所有,

-并且对普通用户或用户组不可写

chown root:root   /data/opt/

chmod 755  /data/opt/


-为SSH设置交互式shell

mkdir -p /data/opt/bin

cp -v /bin/bash /data/opt/bin/

->'/bin/bash' -> '/data/opt/bin/bash'

mkdir -p /data/opt/lib64

ldd /bin/bash

linux-vdso.so.1 (0x00007ffc2cd9f000)

libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f7a7c826000)

libc.so.6 => /lib64/libc.so.6 (0x00007f7a7c600000)

/lib64/ld-linux-x86-64.so.2 (0x00007f7a7c9b8000)


-将识别出的共享库复制到lib64目录下方

cp -v /lib64/libtinfo.so.6 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2  /data/opt/lib64


-创建并配置opt用户并设置安全密码, 注:若添加更多用户,则需要执行操作

useradd opt

passwd opt  

-> QazWsx

mkdir /data/opt/etc

cp -vf  /etc/{group,passwd}  /data/opt/etc/


-配置ssh使用chroot

vi /etc/ssh/sshd_config

-> Match User opt

-> ChrootDirectory  /data/opt/

-配置sftp

-找到如下行,并注释掉

#Subsystem  sftp    /usr/libexec/openssh/sftp-server

Subsystem   sftp  internal-sftp  #指定使用sftp服务使用系统自带的internal-sftp

Match Group  opt   #之前默认创建的组

ForceCommand    internal-sftp  #指定sftp命令


-重启

systemctl restart sshd


-测试

ssh  opt@192.168.1.4

-可以看到当前目录已经是“根目录”


-属于root用户组,所以无写权限。进行如下处理

mkdir  /data/opt/app/

chown opt:opt  /data/opt/app/

chmod 777 /data/opt/app/


-接下来,在 bin 目录中安装几个用户命令,如 ls、date、mkdir

cp -v /bin/ls /data/opt/bin/

cp -v /bin/date /data/opt/bin/

cp -v /bin/mkdir /data/opt/bin/

-检查上面命令的共享库并将它们移到 chroot 监狱的库目录中:

ldd /bin/ls   

linux-vdso.so.1 (0x00007ffc91246000)

libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6087b18000)

libcap.so.2 => /lib64/libcap.so.2 (0x00007f6087b0e000)

libc.so.6 => /lib64/libc.so.6 (0x00007f6087800000)

libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f6087a72000)

/lib64/ld-linux-x86-64.so.2 (0x00007f6087b72000)

....

-将识别出的共享库复制到lib64目录下方

cp -v .....  /data/opt/lib64



签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回