配置FTP服务器和pam.d以使用AD对用户进行身份验证(CentOS/RHEL 7/8)
在本文中,我将分享配置FTP服务器和/etc/pam.d
文件以从Active Directory验证用户身份的步骤。
我已经在CentOS/RHEL 7和8 Linux上执行了这些步骤。
在RHEL 8上,需要执行一些添加步骤才能通过AD和登录对用户进行身份验证。
强制性准备工作
确保已将Linux节点与Active Directory集成在一起。
我们可以使用Windows Active Directory或者使用FreeIPA的基于Linux的Active Directory。
我已经将RHEL 7和CentOS 8与运行在Windows Server 2012上的Windows Active Directory集成在一起。
分步教程:在CentOS/RHEL 8中安装和配置Windows目录备用FreeIPA服务器分步教程:在Windows XP中安装和配置Windows AD备用FreeIPA服务器和客户端(RHEL/CentOS 7)
分步教程,使用Realm和Adcli将RHEL/CentOS 7添加到Windows Active Directory域中分步教程,使用Winbind将RHEL/CentOS 8添加或者添加到Windows Domain Controller中
其中我在Active Directory上创建了一个用户amit
来演示本文。
在RHEL 7主机上
[root@rhel-7 ~]# getent passwd amit amit:*:1407601118:1407600513:admit:/home/theitroad.COM/amit:
在CentOS 8主机上
# getent passwd theitroad+amit theitroad+amit:*:2001118:2000513:admit:/home/theitroad/amit:/bin/bash
重要的提示:
对于RHEL/CentOS 7和8,配置FTP服务器(vsftpd)和/etc/pam.d/vsftpd的步骤相同。
配置FTP服务器(vsftpd)
我将使用vsftpd
服务器在我的RHEL/CentOS 7和8 Linux中配置FTP服务器。
第一步是安装vsftpd
rpm。
说明:
在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum
软件包管理器可以安装提供的rpm及其依赖项。
[root@rhel-7 ~]# yum -y install vsftpd [root@centos-8 ~]# yum -y install vsftpd
我将无法其中解释" vsftpd"配置(" /etc/vsftpd/vsftpd.conf"),因为我们将集中精力通过Active Directory对用户进行身份验证。
以下是我的示例" vsftpd"配置文件
# egrep -v "^#|^$" /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES listen_ipv6=NO pam_service_name=vsftpd userlist_enable=YES userlist_log=YES tcp_wrappers=NO session_support=YES
接下来,重新启动" vsftpd"服务以激活更改
# systemctl restart vsftpd
打开vsftpd服务器的端口21
# firewall-cmd --zone=public --permanent --add-service=ftp
配置/etc/pam.d/vsftpd
接下来,将使用Active Directory对用户进行身份验证的主文件是/etc/pam.d/vsftpd
。
以如下格式添加以下突出显示的行:
提示:
我们可以将/etc/pam.d/vsftpd
的全部内容与安装程序的文件进行比较。
# cat /etc/pam.d/vsftpd #%PAM-1.0 auth required pam_env.so auth sufficient pam_sss.so account sufficient pam_sss.so session required pam_loginuid.so session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
从Active Directory验证用户
在CentOS/RHEL 7中
让我们尝试使用FTP客户端从CentOS/RHEL 7中的Windows AD对用户进行身份验证。
如果尚未安装ftp客户端,请安装
[root@rhel-7 ~]# yum -y install ftp
接下来执行ftp客户端并使用amit
用户连接到本地主机
[root@rhel-7 ~]# ftp ftp> open localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 3.0.2) Name (localhost:root): amit 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (127,0,0,1,56,127). 150 Here comes the directory listing. 226 Directory send OK. ftp> exit
如我们所见,我们能够使用Linux中的Active Directory用户成功连接localhost。
在CentOS/RHEL 8中
接下来,让我们尝试使用FTP客户端从CentOS/RHEL 8中的Windows AD对用户进行身份验证。
同样其中我们也需要安装FTP客户端
[root@centos-8 ~]# yum -y install ftp
在CentOS/RHEL 8中,我还必须创建AD用户的主目录,否则该用户登录失败。
[root@centos-8 ~]# mkdir -p /home/theitroad/amit
向AD用户授予其主目录的登录权限
[root@centos-8 ~]# chown -R theitroad+amit:theitroad+amit /home/theitroad/
接下来尝试使用su
登录到AD用户。
[root@centos-8 ~]# su - theitroad+amit Last login: Sun Nov 24 04:59:14 IST 2019 on pts/0 [theitroad+amit@centos-8 ~]$pwd /home/theitroad/amit [theitroad+amit@centos-8 ~]$logout
由于正常登录成功,因此我不会使用Active Directory用户amit连接到FTP服务器
[root@centos-8 ~]# ftp ftp> open localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 3.0.3) Name (localhost:root): theitroad+amit 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (127,0,0,1,120,213). 150 Here comes the directory listing. 226 Directory send OK. ftp> exit 221 Goodbye.
因此,我们能够使用amit
用户成功连接FTP(vsftpd
)服务器。