如何基于配置SFTP集成AD域?

FTP & SFTP & FTPS

1 前言

一个问题,一篇文章,一出故事。
笔者最近接到需要在SFTP集成AD的任务,于是整理此章节。

2 最佳实践

2.1 环境配置

2.1.1 准备SFTP服务器

如何基于Oracle Linux 9.x配置独立的SFTP服务?

2.1.2 集成AD认证

如何实现Oracle Linux 9.x客户端加入AD域?


然后,你需要使用如下命令确定可以查询到用户的sftponly组,

id will@cmdschool.org

可见如下显示,

uid=1554803174(will@cmdschool.org) gid=1554800513(domain users@cmdschool.org) groups=1554800513(domain users@cmdschool.org),1554802735(sftponly@cmdschool.org)

如果正确配置仍然无法看到用户组,你需要使用如下命令清理缓存,

sss_cache -E

2.2 配置SFTP与AD集成

2.2.1 修改SSSD配置

cp /etc/sssd/sssd.conf /etc/sssd/sssd.conf.default
vim /etc/sssd/sssd.conf

配置修改如下,

[sssd]
domains = cmdschool.org
config_file_version = 2
services = nss, pam

[domain/cmdschool.org]
default_shell = /bin/false
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = cmdschool.org
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /data/sftp/%u@%d/myhome
ad_domain = cmdschool.org
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
ad_gpo_access_control = disabled

配置修改后,你需要使用如下命令重启服务使配置生效,

systemctl restart sssd.service

另外,如需附加非同林AD域,请参阅如下章节,

如何实现Oracle Linux 9.x客户端加入非同林AD域?

2.2.2 修改SFTP配置

cp /etc/ssh/sftpd_config /etc/ssh/sftpd_config.default
vim /etc/ssh/sftpd_config

配置修改如下,

Port 115
PidFile /var/run/sftpd.pid
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp -l INFO -f AUTH
AllowGroups "sftp_users@cmdschool.org"
Match Group "domain users@cmdschool.org"
        ChrootDirectory /data/sftp/%u
        AllowTcpForwarding no
        AuthorizedKeysFile /etc/ssh/sftpd_authorized_keys/%u/.ssh/authorized_keys
        ForceCommand internal-sftp -u 0007
        X11Forwarding no

配置修改后,你需要使用如下命令重启服务使配置生效,

systemctl restart sftpd.service

2.3 配置登录自动执行的脚本

2.3.1 修改SSSD配置

vim /etc/sssd/sssd.conf

注解掉如下参数,

#fallback_homedir = /data/sftp/%u@%d/myhome

注:该参数会自动创建不符合要求的用户目录

2.3.2 创建如下脚本

curl https://raw.githubusercontent.com/tanzhenchao/sftptool-for-ad-user/main/loginShell > /usr/local/bin/loginShell
chomd +x /usr/local/bin/loginShell
chmod 755 /usr/local/bin/loginShell

2.3.3 配置模块调用脚本

vim /etc/pam.d/password-auth

修改如下配置,

#session     optional                                     pam_oddjob_mkhomedir.so
session     optional                                     pam_exec.so debug /usr/local/bin/loginShell

2.4 登录测试

sftp -P 115 'cmdschool.org\will'@sftp.cmdschool.org
(cmdschool.org\will@sftp.cmdschool.org) Password: ********
Connected to sftp.cmdschool.org.
sftp> ls
myhome  
sftp> cd myhome/
sftp>
没有评论

发表回复

FTP & SFTP & FTPS
如何解决Windows SFTP命令的权限提示?

1 前言 一个问题,一篇文章,一出故事。 今天笔者使用windows系统如下命令连接sftp服务器时 …

Bash
如何实现SFTP自动上传下载?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需要实现sftp自动上传下载,于是整理此文。 以下 …

FTP & SFTP & FTPS
如何基于Oracle Linux 9.x实现SFTP邮件认证2FA?

1 前言 一个问题,一篇文章,一出故事。 笔者想实现SFTP的2FA以便增强SFTP服务的安全性,于 …