zoukankan      html  css  js  c++  java
  • 限制SSH远程登录用户仅能只读访问Linux中指定的目录

    背景需求:
    在TOMCAT服务器上建立一个普通帐号log_user,只能查看TOMCAT日志,不能删改任何文件,不能执行fdisk、df、dd、mkdir、yum等命令,不能访问日志目录以外的路径。
    系统:centos6.6
    tomcat安装路径:/opt/apache-tomcat
    tomcat日志路径:/opt/apache-tomcat/logs
     
     
    操作过程:
     
    一、使用mknod命令在/opt建立/dev下的文件:
    mkdir /opt/dev   //该步骤可省略。/opt被设定为log_user的“根目录”
    cd /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
     
    二、设置log_user用户的根目录权限:
    chown root:root /opt
    chmod 0755 /opt
     
    三、为远程SSH设置交互式shell:
    mkdir /opt/bin
    mkdir /opt/lib64   //用于调用shell命令的共享库
    cp -v /bin/bash /opt/bin   //复制bash文件到log_user目录
    ldd /bin/bash   //查询bash所需的共享库文件名及路径
    cp -v /lib64/{linux-vdso.so.1 libtinfo.so.5 libdl.so.2 libc.so.6 ld-linux-x86-64.so.2} /opt/lib64/
    //将共享库文件复制到log_user的lib库中
     
    四、创建log_user用户:
    useradd log_user && echo 'log_user' | passwd --stdin log_user
     
    五、创建log_user用户的配置目录:
    mkdir /opt/etc
    cp -vf /etc/{passwd,group} /opt/etc    //当新增类似用户时,要及时更新这两个文件
     
    六、编辑passwd和group文件,只保留log_user相关的那行,如下图所示:
     
    七、配置ssh与chroot关联起来:
    将下面两行追加到/etc/ssh/sshd_config文件:
    Match User log_user   //添加要被chroot的用户
    ChrootDirectory /opt   //指定log_user的根路径,它将被限制在该路径下
    保存退出,restart或reload SSH服务
     
    八、创建用户log_user的家目录,添加LINUX命令:
    mkdir -p /opt/home/log_user   //建立log_user的家目录
    chown -R log_user:log_user /opt/home/log_user   //家目录属主和属组必须是log_user自己
    chmod -R 0700 /opt/home/log_user   //家目录读写权限通常是0700
    cp -v /bin/{ls,date,cat,grep} /opt/bin   //让log_user用户能使用常用命令
    通过ldd /bin/ls查找该的共享库文件路径,并复制到/opt/lib64中:
    ldd /bin/ls
    cp -v /lib64/{linux-vdso.so.1,libselinux.so.1,librt.so.1,libcap.so.2,libacl.so.1,libc.so.6,libdl.so.2,libpthread.so.0.libattr.so.1} /opt/lib64/
    //遇到提示是否overwrite,选‘yes’(如果不复制这些文件,则log_user用户在执行命令时可能会报错,提示缺少xxxx文件)
     
    九、用ACL重新设置下tomcat帐号的权限:
    yum install acl //安装ACL
    vi /etc/fstab,给根分区添加,acl,如下图所示:
    mount -o remount,rw /
    setfacl -R -m u:log_user:rx /opt   //设置log_user帐号的权限
    setfacl -R -m u:tomcat:rwx /opt/apache-tomcat   //设置tomcat帐号的权限。
     
    十、登录方式:
    只能通过SSH@服务器方式登录,限制才会生效。如果是在本地直接登录log_user,则无效!
    在本机或其它机器上:ssh log_user@服务器IP
    输入:ls pwd cd /
    输入:mkdir df -h fdisk -l
    操作成功!!!可以看到,用户已经被限制在/opt目录下,输入:cd /看到的其实是/opt目录的内容。
     

    不再需要该用户,并使系统回退到之前的状态:
    cd /opt
    rmdir dev/ lib64/ etc/ home/ bin/ usr/
    setfacl -b -R ./
    userdel log_user
    chown tomcat:tomcat /opt/apache-tomcat

     
    如果在ssh时报错:
    Write failed: Broken pipe
    这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。可通过查看/var/log/secure日志来准确判断是哪个路径的权限出错。
    执行以下命令排错试试:
    chown -Rroot:root /opt/   //opt为log_user用户的根路径
    setfacl -R -m u:log_user:rx /opt
     
    注:将/opt/apache-tomcat/logs目录设置为log_user的“根”应该更符合要求。
  • 相关阅读:
    oracle安装
    Jmeter入门篇
    DOS常用命令
    SpringBoot中使用JNnit4(一)之Mockito的使用
    SpringBoot中使用JNnit4(入门篇)
    SpringBoot搭建
    SpringBoot中集成Swagger2
    jpa使用过程中出现问题记录[持续更新]
    Python逆向(五)—— Python字节码解读
    Python逆向(四)—— Python内置模块dis.py源码详解
  • 原文地址:https://www.cnblogs.com/hy007x/p/6812728.html
Copyright © 2011-2022 走看看