• Sftp服务器搭建和限制用户目录


    摘自:https://blog.csdn.net/pdw2009/article/details/51189748

    在centos6.5中使用sshd自带sftp服务配置 sftp。

    概述:公司对外客户上传账户清单,以前每个月都是用FTP上传,出于安全考虑改用sftp上传但又要限制用户根目录,为此在网上查了很多资料,在此记录下自己心得。

    目录:

    什么sftp服务器

    怎么搭建sftp服务器

    怎么限制用户目录

    常见错误

    什么sftp服务器

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。本身没有守护进程,是包含在ssh中,端口也是22.

    怎么搭建sftp服务器

       在主流linux系统版本当中,默认都有安装openssl和openssh包,都有ssh命令,也就是说默认安装好了SFTP服务器和sftp命令。

       没有的安装,安装方法很简单,在centos/redhat等,直接安装:

    [root@rd168 ~]# yum -y install openssl

    [root@rd168 ~]# yum -y install openssh-server

    [root@rd168 ~]# yum -y install openssh-clients

       有安装但版本太低, 想sftp服务用户只能访问特定的文件目录,版本需要4.8以上:

    以下源为码升级方法,是以centos5.11为例。

    0. 先查看当前安装的版本

     用 ssh -V 命令查看ssh版本 和 用openssl version 命令查看openssl版本

    [root@rd168 ~]# ssh  -V

    OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

    [root@rd168 ~]# openssl version

    OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

    1.官网下载新版的源码包

         openssh: http://www.openssh.com/portable.html 这里, 官网上找到的下载有两种, 一种是直接下载OpenBSD的(附带openssh, 显然不是我等需要的), 另外一种就是这种portable版的

         openssl:  http://www.openssl.org/source/

    2. 安装openssl

     一定要先安装openssl, 一定记得加上--shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配

     [root@rd168 ~]#tar -zxvf openssl-1.0.1j.tar.gz

    [root@rd168 ~]# cd  cd openssl-1.0.1j

    [root@rd168 openssl-1.0.1j]#  ./config --prefix=/usr –shared

     [root@rd168 openssl-1.0.1j]#  make
    [root@rd168 openssl-1.0.1j]#  make test(这一步很重要哦!是进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用,后果很严重哦!)
    [root@rd168 openssl-1.0.1j]#  make install

     完毕后查看openssl版本安装是否正确

    [root@rd168 openssl-1.0.1j]#  openssl version

    OpenSSL 1.0.1j 15 Oct 2014

    3. 安装openssh

    [root@rd168 ]# cd ../openssh-5.3p1

    [root@rd168 ]# tar zxvf openssh-5.3p1.tar.gz

    [root@rd168 ]# cd ../openssh-5.3p1

     [root@rd168 openssh-5.3p1]# ./configure --prefix=/usr --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers (使用这个选项源码安装才支持libwrap.so.0库,才可以使用/hosts.allow和host.deny哦!)

     [root@rd168 openssh-5.3p1]#     make
     [root@rd168 openssh-5.3p1]#    make install

    完毕后查看openssh版本安装是否正确

    [root@rd168 openssl-1.0.1j]#  ssh  -V

    OpenSSH_5.3p1, OpenSSL 1.0.1j 15 Oct 2014

    这种安装会把sshd的配置文件放在/usr/etc/sshd_config

    4.生成/etc/init.d/sshd服务管理脚本

    进入ssh解压目录

     [root@rd168 openssh-5.3p1]#  #cd /contrib/redhat

     [root@rd168 redhat]#  cp sshd.init /etc/init.d/sshd

     [root@rd168 redhat]#  chmod +x /etc/init.d/sshd

     [root@rd168 redhat] #  chkconfig –add sshd

    最后,启动 SSH 服务使修改生效:
     [root@rd168 redhat] # /etc/init.d/sshd restart

    怎么限制用户目录

    1.新增用户,限制用户只能通过sftp访问


    [root@rd168 home]# useradd -m  -s /sbin/nologin delcom03

    2.限制用户通过sftp登录进来时只能进入主目录或某一个目录,

    如果是用yum和rpm包安装的修改/etc/ssh/sshd_config文件,我这是个源码安装的且为—perfix=/usr,所以要修改/usr/etc/ssh/sshd_config.

    [root@rd168 home]# vim /usr/etc/ssh/sshd_config


    #Subsystem      sftp    /usr/libexec/sftp-server

    Subsystem       sftp    internal-sftp

    # Example of overriding settings on a per-user basis

    #Match User anoncvs

    #       X11Forwarding no

    #       AllowTcpForwarding no

    #       ForceCommand cvs server

            Match User delcom03

            X11Forwarding no

            ChrootDirectory /home/delcom03

    #       AllowTcpForwarding no

            ForceCommand  internal-sftp

    3.测试访问


    [root@test  home]# sftp -oport=22 delcom03@192.168.1.67

    Connecting to 192.168.1.67

    The authenticity of host '192.168.1.67 (192.168.1.67)' can't be established.

    RSA key fingerprint is 97:e1:59:e6:89:4f:a0:72:dd:5d:ba:0b:15:75:b6:a8.

    Are you sure you want to continue connecting (yes/no)?

    Warning: Permanently added '192.168.1.67' (RSA) to the list of known hosts.

    delcom03@192.168.1.67's password:

    Read from remote host 192.168.1.67: Connection reset by peer

    Couldn't read packet: Connection reset by peer

    4.发现连接不上,查看日志


    [root@test  home]# tail /var/log/messages

    Dec 11 08:58:41 localhost sshd[4907]: fatal: bad ownership or modes for chroot directory "/home/delcom03"

    Dec 11 08:58:41 localhost sshd[4905]: pam_unix(sshd:session): session closed for user delcom03

    解决方法:

    目录权限设置要遵循2点:

    ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

    ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。

    如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。

    [root@rd168  home]# ll

    drwxr--- --- 3  delcom03  delcom03 4096 Dec 10 16:42 delcom03

    [root@rd168  home]# chown root delcom03

    [root@rd168  home]# chmod 755 delcom03

    [root@rd168  home]# ll

    drwxr-xr-x 3  root   delcom03 4096 Dec 10 16:42 delcom03   

    这里可以看出delcom03账户sftp登录后没有删除和写权限,下面就来解决。

    [root@rd168  home]# mkdir sftp &&chown delcom03 sftp

    [root@rd168  home]# ll delcom03/

    drwxr-xr-x 3  delcom03  root  4096 Dec 10 18:58 sftp  上传文件到sftp目录,就有写权限了

    然后在测试通过

    [root@test  home]# sftp -oport=22 delcom03@192.168.1.67

    Connecting to 192.168.1.67

    delcom03@192.168.1.67's password:

    sftp>

    sftp> cd  /

    sftp> pwd

    Remote working directory: /

    sftp> ls

    sftp

    sftp> ls /

    /sftp

    sftp> cd sftp

    sftp> pwd

    Remote working directory: /sftp

    sftp> lls

    test.txt

    sftp> put  test.txt

    Uploading  test.txt  to /sftp/test.txt

    Test.txt                       100%  31KB  31.4KB/s   00:00   

    可以看到用户delcom03可以上传文件到根/sftp目录,且已经限制用户在家目录,同时该用户也不能登录该机器。

    客户端使用sftp上文件如报:Permission denied

    这样解决:

    nano /etc/selinux/config
    SELINUX=disabled
    #reboot system
    重启
    http://blog.chinaunix.net/uid-26683523-id-3078694.html
    ————————————————
    版权声明:本文为CSDN博主「pdw2009」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/pdw2009/article/details/51189748

  • 相关阅读:
    [资料]PHP中的__autoload
    [转]php 5.3新增的闭包语法介绍function() use() {}
    [资料]PHP中的ReflectionClass
    [资料]PHP中的命名空间
    Mysql Event
    PHP转换成对像
    [转]Win7自带便签怎么恢复内容
    [转]Windows7便笺妙用
    [转]ASP.NET下MVC1.0>2.0>3.0>4.0
    PHP类动态属性问题
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/12464032.html
Copyright © 2020-2023  润新知