zoukankan      html  css  js  c++  java
  • [最佳实践]配置sshd只允许sftp登录

    sftp 是 Secure File Transfer Protocol 的缩写,即安全文件传送协议,可为传输文件提供一种安全的加密方法。
    sftp 为 SSH 的一部分,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低,如果对网络安全性要求高,可使用 SFTP 代替 FTP。
    因为安全需要,有时需要配置sshd以使得只允许sftp登录,而同时不允许ssh直接登录。
    以下操作步骤在CentOS 7.6实际测试通过,可放心参考使用。

    ■ 添加用户组sftpgroup

    groupadd sftpgroup

    ■ 添加用户sftpuser

    useradd -g sftpgroup -d /home/sftp -s /sbin/nologin sftpuser
    -s 指定不允许ssh登陆

    ■ 修改用户密码

    passwd sftpuser

    ■ 配置sshd_config文件

    vim /etc/ssh/sshd_config
    增加或修改如下配置:

    Subsystem sftp internal-sftp
    Match Group sftpgroup
            ChrootDirectory /home/sftp
            X11Forwarding no
            AllowTcpForwarding no
            ForceCommand internal-sftp
    

    Match Group sftpgroup 指定以下的子行配置是匹配 sftpgroup 用户组的。Match user userA,userB 则是匹配用户
    ChrootDirectory /data/sftp/%u 设定用户访问的根文件夹。%h 代表用户 home 目录,%u 代表用户名
    ForceCommand internal-sftp 该行强制执行内部 sftp,并忽略任何 ~/.ssh/rc 文件中的命令
    AllowTcpForwarding no 是否允许 TCP 转发,默认值为 "yes"
    X11Forwarding no 是否允许进行 X11 转发,默认值是 "no"

    ■ 设置正确的目录权限

    要实现 Chroot 功能,目录权限设置非常重要,否则无法登录,给出的错误提示也很奇怪,难以排查、修正,导致踩坑半天,浪费很多时间!
    以下为最佳设置实践,务必以此为准!

    chown root:sftpgroup /home/sftp
    chmod 755 /home/sftp
    

    可以看到,ChrootDirectory的目录属主必须为root,属组必须为sftpgroup,其他用户或用户组为"只读+执行"

    ■ 重启sshd服务

    systemctl restart sshd

    ■ 此时可以sftp登录

    [root@node1:1 /home]# sftp sftpuser@node1
    sftpuser@node1's password: 
    Connected to node1.
    sftp> ls
    sftp> 
    sftp> 
    sftp> pwd
    Remote working directory: /
    

    此时可以在sftp的根目录下建立指定用户的读写目录,即可正常使用sftp了,以下操作可参考。

    sftp> mkdir test
    Couldn't create directory: Permission denied
    sftp> exit
    [root@node1:1 /home]# cd /home/sftp
    [root@node1:1 /home/sftp]# mkdir upload
    [root@node1:1 /home/sftp]# chown -R sftpuser:sftpgroup upload
    [root@node1:1 /home/sftp]# chmod -R 700 upload
    [root@node1:1 /home/sftp]# ll
    总用量 0
    drwx------ 2 sftpuser sftpgroup 6 12月 22 10:55 upload
    [root@node1:1 /home/sftp]# sftp sftpuser@node1               
    sftpuser@node1's password: 
    Connected to node1.
    sftp> pwd
    Remote working directory: /
    sftp> cd upload
    sftp> mkdir test
    sftp> ls
    test  
    

    作者后注:

    网上搜到好几个类似的文章,都不能直接参考使用,再次验证了网文水平的参差不齐,真是让人头疼,浪费大家的时间。所以建议大家发出来的网文,一定要保证是确实可参考使用的,否则只会让人瞧不起

  • 相关阅读:
    听说你的MES系统又失败了?
    GROUP BY你都不会!ROLLUP,CUBE,GROUPPING详解
    对 MES 感兴趣?赶紧看过来!
    SQL 高级查询(层次化查询,递归)
    智能制造概念
    简单又实用的分享!SharePoint母版页引用(实战)
    原创分享!SharePoint母版页修改(实战)
    入门者必看!SharePoint之CAML总结(实战)
    新手必看!Office Web Apps 2013 安装与配置(实战)
    SharePoint布局页引用(实战)
  • 原文地址:https://www.cnblogs.com/likingzi/p/15721997.html
Copyright © 2011-2022 走看看